Ejemplo n.º 1
0
 public override void MergeDependencies(MarketDataDefinition mergeData)
 {
     if (mergeData is RateMktData)
     {
         if (RateDefinitions.Count(x => x.Name.Equals(mergeData.Name)) > 0)
         {
             for (var i = 0; i < RateDefinitions.Length; i++)
             {
                 if (RateDefinitions[i].Name.Equals(mergeData.Name))
                 {
                     RateDefinitions[i] = (RateMktData)mergeData;
                 }
             }
         }
         else
         {
             var list = new List <RateMktData>();
             list.AddRange(RateDefinitions);
             list.Add((RateMktData)mergeData);
             RateDefinitions = list.ToArray();
         }
     }
     else if (mergeData is CurveConvention)
     {
         CurveConvention = (CurveConvention)mergeData;
     }
 }
Ejemplo n.º 2
0
 public override void RemoveDependencies(MarketDataDefinition mergeData)
 {
     if (mergeData is RateMktData)
     {
         RateMktData rateMkt = RateDefinitions.FirstOrDefault(x => x.Name.Equals(mergeData.Name));
         var         list    = new List <RateMktData>();
         list.AddRange(RateDefinitions);
         list.Remove(rateMkt);
         RateDefinitions = list.ToArray();
     }
 }
Ejemplo n.º 3
0
 private void RemoveMarketInfo(MarketDataDefinition mktDataDef)
 {
     if (mktDataDef is BondMktData)
     {
         _marketInfo.BondMktDatas = _marketInfo.BondMktDatas.Remove(x => x.Name.Equals(mktDataDef.Name)).ToArray();
         _mktDataDict.Remove(mktDataDef.Name);
     }
     else if (mktDataDef is FuturesMktData)
     {
         _marketInfo.FuturesMktDatas = _marketInfo.FuturesMktDatas.Remove(x => x.Name.Equals(mktDataDef.Name)).ToArray();
         _mktDataDict.Remove(mktDataDef.Name);
     }
     else if (mktDataDef is TreasuryFutureMktData)
     {
         _marketInfo.TreasuryFutureMktData = _marketInfo.TreasuryFutureMktData.Remove(x => x.Name.Equals(mktDataDef.Name)).ToArray();
         _mktDataDict.Remove(mktDataDef.Name);
     }
     else if (mktDataDef is InstrumentCurveDefinition)
     {
         _marketInfo.YieldCurveDefinitions = _marketInfo.YieldCurveDefinitions.Remove(x => x.Name.Equals(mktDataDef.Name)).ToArray();
         _mktDataDict.Remove(mktDataDef.Name);
     }
     else if (mktDataDef is RateMktData)
     {
         var yieldCurveDefinitions = _marketInfo.YieldCurveDefinitions.Where(x => x.Name.Equals(mktDataDef.Name.Split('_')[0])).ToArray();
         if (yieldCurveDefinitions.Any())
         {
             foreach (var yieldCurveDefinition in yieldCurveDefinitions)
             {
                 yieldCurveDefinition.RemoveDependencies(mktDataDef);
                 _mktDataDict[yieldCurveDefinition.Name].RemoveDependencies(mktDataDef);
             }
         }
         _mktDataDict.Remove(mktDataDef.Name);
     }
     else if (mktDataDef is StockMktData)
     {
         _marketInfo.StockMktDatas = _marketInfo.StockMktDatas.Remove(x => x.Name.Equals(mktDataDef.Name)).ToArray();
         _mktDataDict.Remove(mktDataDef.Name);
     }
     else if (mktDataDef is VolSurfMktData)
     {
         _marketInfo.VolSurfMktDatas = _marketInfo.VolSurfMktDatas.Remove(x => x.Name.Equals(mktDataDef.Name)).ToArray();
         _mktDataDict.Remove(mktDataDef.Name);
     }
 }
Ejemplo n.º 4
0
        private void SetViewModel()
        {
            EquityOption option = OptionDefinition.GetOption();

            (OptionPricingData pricingData, bool fixedData) = MarketDataDefinition.GetMarketData();

            var strategies = new List <HedgingStrategy>()
            {
                new HedgingStrategy(new DeltaHedgedPortfolio(option, 1), "Delta hedging"),
                new HedgingStrategy(new StopLossPortfolio(option, 1), "Stop-loss hedging")
            };

            if (fixedData)
            {
                ViewModel.PlotDailyPnL(new DateTime(2020, 1, 1), pricingData, strategies, Seed);
            }
            else
            {
                ViewModel.PlotDailyPnL(new DateTime(2020, 1, 1), pricingData, strategies);
            }
        }
Ejemplo n.º 5
0
 public void RemoveDefinitions(MarketDataDefinition mktDataDef)
 {
     _qdpMarket.RemoveMarketDataDefinition(new[] { mktDataDef });
     RemoveMarketInfo(mktDataDef);
 }
Ejemplo n.º 6
0
 private void UpdateMarketInfo(MarketDataDefinition mktDataDef)
 {
     if (mktDataDef is BondMktData)
     {
         var bondIndex = _marketInfo.BondMktDatas.FirstOrDefaultIndexOf(x => x.BondId.Equals(mktDataDef.Name));
         if (bondIndex != null)
         {
             _marketInfo.BondMktDatas[bondIndex.Value] = (BondMktData)(mktDataDef);
         }
         else
         {
             var list = new List <BondMktData>();
             list.AddRange(_marketInfo.BondMktDatas);
             list.Add((BondMktData)mktDataDef);
             _marketInfo.BondMktDatas = list.ToArray();
         }
         _mktDataDict[mktDataDef.Name] = mktDataDef;
     }
     else if (mktDataDef is FuturesMktData)
     {
         var futuresIndex = _marketInfo.FuturesMktDatas.FirstOrDefaultIndexOf(x => x.FuturesId.Equals(mktDataDef.Name));
         if (futuresIndex != null)
         {
             _marketInfo.FuturesMktDatas[futuresIndex.Value] = (FuturesMktData)(mktDataDef);
         }
         else
         {
             var list = new List <FuturesMktData>();
             list.AddRange(_marketInfo.FuturesMktDatas);
             list.Add((FuturesMktData)mktDataDef);
             _marketInfo.FuturesMktDatas = list.ToArray();
         }
         _mktDataDict[mktDataDef.Name] = mktDataDef;
     }
     else if (mktDataDef is TreasuryFutureMktData)
     {
         var tfIndex = _marketInfo.TreasuryFutureMktData.FirstOrDefaultIndexOf(x => x.BondId.Equals(mktDataDef.Name));
         if (tfIndex != null)
         {
             _marketInfo.TreasuryFutureMktData[tfIndex.Value] = (TreasuryFutureMktData)(mktDataDef);
         }
         else
         {
             var list = new List <TreasuryFutureMktData>();
             list.AddRange(_marketInfo.TreasuryFutureMktData);
             list.Add((TreasuryFutureMktData)mktDataDef);
             _marketInfo.TreasuryFutureMktData = list.ToArray();
         }
         _mktDataDict[mktDataDef.Name] = mktDataDef;
     }
     else if (mktDataDef is InstrumentCurveDefinition)
     {
         var instrumentCurveIndex =
             _marketInfo.YieldCurveDefinitions.FirstOrDefaultIndexOf(x => x.Name.Equals(mktDataDef.Name));
         if (instrumentCurveIndex != null)
         {
             _marketInfo.YieldCurveDefinitions[instrumentCurveIndex.Value] = (InstrumentCurveDefinition)(mktDataDef);
         }
         else
         {
             var list = new List <InstrumentCurveDefinition>();
             list.AddRange(_marketInfo.YieldCurveDefinitions);
             list.Add((InstrumentCurveDefinition)mktDataDef);
             _marketInfo.YieldCurveDefinitions = list.ToArray();
         }
         _mktDataDict[mktDataDef.Name] = mktDataDef;
     }
     else if (mktDataDef is RateMktData)
     {
         var yieldCurveDefinitions = _marketInfo.YieldCurveDefinitions.Where(x => x.Name.Equals(mktDataDef.Name.Split('_')[0])).ToArray();
         if (yieldCurveDefinitions.Any())
         {
             foreach (var yieldCurveDefinition in yieldCurveDefinitions)
             {
                 yieldCurveDefinition.MergeDependencies(mktDataDef);
                 _mktDataDict[yieldCurveDefinition.Name].MergeDependencies(mktDataDef);
             }
         }
         _mktDataDict[mktDataDef.Name] = mktDataDef;
     }
     else if (mktDataDef is CurveConvention)
     {
         foreach (var yieldCurveDefinition in _marketInfo.YieldCurveDefinitions.Where(yieldCurveDefinition => yieldCurveDefinition.CurveConvention.Name.Equals(mktDataDef.Name)))
         {
             yieldCurveDefinition.CurveConvention = (CurveConvention)mktDataDef;
             _mktDataDict[yieldCurveDefinition.Name].MergeDependencies(mktDataDef);
         }
         _mktDataDict[mktDataDef.Name] = mktDataDef;
     }
 }
Ejemplo n.º 7
0
 private void InitialiseControls()
 {
     OptionDefinition.SetOption(OptionType.EuropeanCall, 60, DateTime.Now);
     MarketDataDefinition.SetMarketData(new OptionPricingData(60, 0.2, 0.04, 0.02), false);
 }