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; } }
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(); } }
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); } }
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); } }
public void RemoveDefinitions(MarketDataDefinition mktDataDef) { _qdpMarket.RemoveMarketDataDefinition(new[] { mktDataDef }); RemoveMarketInfo(mktDataDef); }
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; } }
private void InitialiseControls() { OptionDefinition.SetOption(OptionType.EuropeanCall, 60, DateTime.Now); MarketDataDefinition.SetMarketData(new OptionPricingData(60, 0.2, 0.04, 0.02), false); }