public OptionTribeElementListData(CallPutFlag cp, double strike)
 {
     this.ElwWEs = new List<WatchElement>();
     OptionTribe ot = ElwOptionUtil.GetOptionTribe(strike, cp);
     InitOptionDataPart(ot);
     InitElwDataPart(ot);
 }
Ejemplo n.º 2
0
        public static Detail.ProductType ConvertToDetailProductType(CallPutFlag callPut)
        {
            if (callPut == CallPutFlag.Call)
            {
                return Detail.ProductType.CallOption;
            }
            else if (callPut == CallPutFlag.Put)
            {
                return Detail.ProductType.PutOption;
            }

            return Detail.ProductType.Unknown;
        }
        /// <summary>
        /// Claculate Price With BlackScholes Algorithm
        /// </summary>
        /// <param name="callPutFlag">Call Put Flag => Send c or p</param>
        /// <param name="stockPrice">Stock Price</param>
        /// <param name="strikePrice">Strike Price </param>
        /// <param name="yearsToExpire">Years To Expire</param>
        /// <param name="riskFreeRate">Risk-Free Rate</param>
        /// <param name="volatilitys">Volatilitys</param>
        /// <returns></returns>
        public double CalculateBlackScholes(CallPutFlag callPutFlag, double stockPrice, double strikePrice, double yearsToExpire, double riskFreeRate, double volatilitys)
        {
            double d1            = 0.0;
            double d2            = 0.0;
            double dBlackScholes = 0.0;

            d1 = (Math.Log(stockPrice / strikePrice) + (riskFreeRate + volatilitys * volatilitys / 2.0) * yearsToExpire) / (volatilitys * Math.Sqrt(yearsToExpire));
            d2 = d1 - volatilitys * Math.Sqrt(yearsToExpire);
            if (callPutFlag == CallPutFlag.C)
            {
                dBlackScholes = stockPrice * CND(d1) - strikePrice * Math.Exp(-riskFreeRate * yearsToExpire) * CND(d2);
            }
            else if (callPutFlag == CallPutFlag.P)
            {
                dBlackScholes = strikePrice * Math.Exp(-riskFreeRate * yearsToExpire) * CND(-d2) - stockPrice * CND(-d1);
            }
            return(dBlackScholes);
        }
Ejemplo n.º 4
0
        public static KospiOptionInfo GetKOI(double strike, CallPutFlag callPut, DateTime maturity)
        {
            foreach (KospiOptionInfo info in KOIs.Values)
            {
                double diff = info.Strike - strike;

                if (info.CallPut == callPut && Math.Abs(diff) < 0.1)
                {
                    if (Util.IsSameDay(info.Maturity, maturity))
                    {
                        return info;
                    }
                    else
                    {
                        logger.Warn("허용되지 않은 만기 사용");
                    }
                }
            }
            return null;
        }
Ejemplo n.º 5
0
        public OptionTribe(CallPutFlag cp, double strike, DateTime maturity)
        {
            CP = cp;
            Strike = strike;
            Maturity = maturity;
            KOI = OptionUtil.GetKOI(Strike, CP, maturity);
            ElwInfos = ElwUtil.GetSameStrikeElw(Strike, CP);

            if (KOI == null)
            {
                IsValid = false;
            }
            else
            {
                IsValid = true;
                CandidateCodes = ElwOptionUtil.GetSameCandidateCodes(KOI.Code);
            }

            OtLeft = null;
            OtRight = null;
        }
 double GetDoorRefStrike(double strike, CallPutFlag cp)
 {
     if (cp == CallPutFlag.Call)
     {
         double doorStrike = 2.5 + strike;
         return doorStrike;
     }
     else
     {
         double doorStrike = strike - 2.5;
         return doorStrike;
     }
 }
Ejemplo n.º 7
0
 public static String GetKOIKey(CallPutFlag cp, double strike)
 {
     return String.Format("{0}_{1:n2}", cp.ToString(), strike);
 }
Ejemplo n.º 8
0
 public static List<double> GetSortedStrikeList(CallPutFlag cp)
 {
     if (cp == CallPutFlag.Call)
     {
         return SortedCallStrikes;
     }
     return SortedPutStrikes;
 }
Ejemplo n.º 9
0
 public static OptionTribe GetOptionTribe(double strike, CallPutFlag cp)
 {
     String key = OptionUtil.GetKOIKey(cp, strike);
     return GetOptionTribeFromKey(key);
 }
        ArrayList GetCCOrderViaCallPutFlag(ArrayList arr, CallPutFlag cp)
        {
            ArrayList ret = new ArrayList();

            foreach (CodeCount cc in arr)
            {
                Detail.ProductType mpt = ProductUtil.Ins().GetProductType(cc.Code);

                if (mpt == Detail.ProductType.ELW)
                {
                    ElwInfo ei = ElwUtil.GetElwInfo(cc.Code);
                    if (ei.CallPut == cp)
                    {
                        ret.Add(cc);
                    }
                }
                else if (mpt == Detail.ProductType.CallOption || mpt == Detail.ProductType.PutOption)
                {
                    KospiOptionInfo koi = OptionUtil.GetKOI(cc.Code);

                    if (koi.CallPut == cp)
                    {
                        ret.Add(cc);
                    }
                }
            }

            return ret;
        }
Ejemplo n.º 11
0
 double GetDoorStrike(double strike, CallPutFlag cp, double offset)
 {
     if (cp == CallPutFlag.Call)
     {
         double doorStrike = (offset * 2.5) + strike;
         return doorStrike;
     }
     else
     {
         double doorStrike = (-1) * (offset * 2.5) + strike;
         return doorStrike;
     }
 }
Ejemplo n.º 12
0
        EDoorEachMonitorEnterController GetController(
            Queue<EDoorEachMonitorEnterController> queue,
            CallPutFlag cp, int index)
        {
            List<EDoorEachMonitorEnterController> l =
                new List<EDoorEachMonitorEnterController>();
            l.AddRange(queue.ToArray());

            int count = 0;

            foreach (EDoorEachMonitorEnterController controller in queue)
            {
                EDoorEachMonitorEnterController_Accessor each =
                    new EDoorEachMonitorEnterController_Accessor(
                        new PrivateObject(controller));

                if (each._data.EI.CallPut == cp)
                {
                    if (count == index)
                    {
                        return controller;
                    }
                    ++count;
                }
            }
            // call, put 종류 잘 골라서 넘겨준다.
            Assert.AreEqual(true, false); // 여기 오면 안된다.
            return null;
        }
Ejemplo n.º 13
0
 public SameStrikeInstrument(double strike, CallPutFlag cp)
 {
     DateTime maturity = Util.GetSystemOptionMaturity();
     KOI = OptionUtil.GetKOI(strike, cp, maturity);
     ElwInfos = ElwUtil.GetSameStrikeElw(strike, cp);
 }
 public ArrayList GetExposure100k(CallPutFlag cp)
 {
     if (cp == CallPutFlag.Call)
     {
         ArrayList ret = GetExposureCC100k_Raw(_dicCall);
         return ret;
     }
     else
     {
         ArrayList ret = GetExposureCC100k_Raw(_dicPut);
         return ret;
     }
 }
Ejemplo n.º 15
0
 // 'n' times 걸린다. 스케줄 안에서 이것을 돌리는 일은 없도록 한다.
 public static List<ElwInfo> GetSameStrikeElw(double strike, CallPutFlag callPut)
 {
     List<ElwInfo> arr = new List<ElwInfo>();
     foreach (ElwInfo data in ElwInfos.Values)
     {
         if (Math.Abs(strike - data.Strike) <= 0.001 && callPut == data.CallPut)
         {
             arr.Add(data);
         }
     }
     return arr;
 }
Ejemplo n.º 16
0
 double GetDoorStrike(double strike, CallPutFlag cp)
 {
     if (cp == CallPutFlag.Call)
     {
         double doorStrike = (_parent.Parent.Input.DoorStrikeOffset * 2.5) + strike;
         return doorStrike;
     }
     else
     {
         double doorStrike = (-1) * (_parent.Parent.Input.DoorStrikeOffset * 2.5) + strike;
         return doorStrike;
     }
 }
Ejemplo n.º 17
0
 public WasEachController(CallPutFlag cp, double strike)
 {
     _watchElementListData = new OptionTribeElementListData(cp, strike);
     _eoDiffData = new WasEoDiffData(_watchElementListData);
     _eoDiffController = new WasEoDiffController();
 }