Example #1
0
        public UnlTradingData CalculateWhatIf(double ivChange, int daysLeftChange)
        {
            IVChange       = ivChange;
            DaysLeftChange = daysLeftChange;
            var positionList = UnlManager.PositionsDataBuilder.PositionDataDic.Values;
            List <BnSCalculationData> bnSCalculationDataList = new List <BnSCalculationData>();
            BnSCalcHelpper            bnSCalcHelpper         = new BnSCalcHelpper();

            foreach (OptionsPositionData position in positionList)
            {
                BnSCalculationData bnSCalculationData =
                    bnSCalcHelpper.CalculateValuesByBnS(position.OptionData, DaysLeftChange, IVChange);
                bnSCalculationData.Position = position.Position;
                bnSCalculationDataList.Add(bnSCalculationData);
            }
            WhatIfPositionsSummaryData =
                new PositionsSummaryData
            {
                CostTotal     = bnSCalculationDataList.Sum(pd => pd.Cost),
                DeltaTotal    = bnSCalculationDataList.Sum(pd => pd.DeltaTotal),
                GammaTotal    = bnSCalculationDataList.Sum(pd => pd.GammaTotal),
                ThetaTotal    = bnSCalculationDataList.Sum(pd => pd.ThetaTotal),
                VegaTotal     = bnSCalculationDataList.Sum(pd => pd.VegaTotal),
                MarketValue   = bnSCalculationDataList.Sum(pd => pd.PositionPrice),
                Shorts        = bnSCalculationDataList.Where(pd => pd.Position < 0).Sum(pd => Abs(pd.Position)),
                Longs         = bnSCalculationDataList.Where(pd => pd.Position > 0).Sum(pd => pd.Position),
                IVWeightedAvg = bnSCalculationDataList.Sum(pd => pd.ImpliedVolatilitiesForCalc * pd.Quantity) /
                                bnSCalculationDataList.Sum(pd => pd.Quantity)
            };

            WhatIfUnlTradingData.PositionsSummaryData = WhatIfPositionsSummaryData;
            return(WhatIfUnlTradingData);
        }
 public PositionsDataBuilder(ManagedSecurity managedSecurity,
                             UNLManager unlManager)
     : base(managedSecurity, unlManager)
 {
     PositionDataDic = new Dictionary <string, OptionsPositionData>();
     OptionsManager  = unlManager.OptionsManager;
     Logger.DebugFormat("{0}.OptionsManager created. Thread name: {1}.", Symbol, Thread.CurrentThread.Name);
     PositionsSummaryData = new PositionsSummaryData();
     if (UnlTradingData != null)
     {
         UnlTradingData.PositionsSummaryData = PositionsSummaryData;
     }
 }