public ProductInfo( Boolean bTested, MarketDataSetKey key, String description, double onePointAmount, BaseCurncy curncy) { this.IsTested = bTested; this.Key = key; this.Description = description; this.OnePointAmount = onePointAmount; this.Curncy = curncy; }
public KospiIntradayTester(DeltaVolInput input, MarketDataSetKey key, List<IPnLResultHandler> resultHandlers) { this.Key = key; _input = input; _onePointAmount = ProductInfoManager.Ins().GetProductInfo(key).OnePointAmount; _resultHandlers = resultHandlers; AddMATrendTester(10, 50); UseMASpreadSwitch(0.005, -0.005); }
public EquityDeltaHedger(MarketDataSetKey hedgingInstKey, DateTime startDate, DateTime endDate, double baseInvest, int hedgingInterval) { this.HedgingInstKey = hedgingInstKey; _grossDeltas = null; _startDate = startDate; _endDate = endDate; _baseInvest = baseInvest; _hedingInterval = hedgingInterval; _onePointAmount = ProductInfoManager.Ins().GetProductInfo(HedgingInstKey).OnePointAmount; }
public BandTradingHedger( MarketDataSetKey hedgingInstKey, DateTime startDate, DateTime endDate, Dictionary<DateTime, double> grossDeltas, double baseInvest) { this.HedgingInstKey = hedgingInstKey; _grossDeltas = grossDeltas; _startDate = startDate; _endDate = endDate; _baseInvest = baseInvest; _onePointAmount = ProductInfoManager.Ins().GetProductInfo(HedgingInstKey).OnePointAmount; }
public void AddKey(MarketDataSetKey key, String ticker) { if (!_keyToTicker.ContainsKey(key)) { _keyToTicker.Add(key, ticker); } if (!_tickerToKey.ContainsKey(ticker)) { _tickerToKey.Add(ticker, key); } }
public IndividualTradingSimulator(MarketDataSetKey key, double baseInvest, TradingDirection direction, PayOffType payOffType, double strikePriceDiffRate, int livePeriod, double impliedVol, bool bAmountBasis, List<PriceData> prices) { _key = key; _baseInvest = baseInvest; _direction = direction; _payoffType = payOffType; _strikePriceDiffRate = strikePriceDiffRate; _livePeriod = livePeriod; _impliedVol = impliedVol; _bAmountBasis = bAmountBasis; _priceDataList = prices; _bUseReturnModel = false; }
public SinglePnLResult( MarketDataSetKey key, string name, TradingDirection direction, bool bAmountBasis, List<RawTradingData> tradingDataList) { this.Key = key; this.Name = name; this.Direction = direction; if (!bAmountBasis) { _onePointAmount = ProductInfoManager.Ins().GetProductInfo(key).OnePointAmount; } TradingDataList = tradingDataList; TradingDataList.Sort(); StartDate = DateTime.MaxValue; EndDate = DateTime.MinValue; TotalPnL = 0; AvgInvest = 0; MaxInvest = 0; }
public bool ContainsMarketPriceData(MarketDataSetKey key) { return _priceData.ContainsKey(key); }
public static double GetKrwAmount(MarketDataSetKey ticker, double price, long size) { ProductInfo info = ProductInfoManager.Ins().GetProductInfo(ticker); double curncyRate = GetBaseCurncyToKrw(info.Curncy); double onePointAmount = info.OnePointAmount; double krwAmount = curncyRate * price * size * onePointAmount; return krwAmount; }
public static double GetTickerPrice(MarketDataSetKey ticker, double krwAmount, long size) { ProductInfo info = ProductInfoManager.Ins().GetProductInfo(ticker); double curncyRate = GetBaseCurncyToKrw(info.Curncy); double onePointAmount = info.OnePointAmount; double price = krwAmount / size / onePointAmount / curncyRate; return price; }
public String GetTicker(MarketDataSetKey key) { return _keyToTicker[key]; }
public static MarketData GetKeyMarketData(MarketDataSetKey key, DateTime startDate, DateTime endDate) { String ticker = GetTickerFromMarketDataKey(key); MarketData md = new MarketData(startDate, endDate, ticker); md.LoadDataFromDB(); return md; }
public ProductInfo GetProductInfo(MarketDataSetKey key) { foreach (ProductInfo pi in _info) { if (pi.Key.Equals(key)) { if (pi.IsTested) { //pass } else { logger.Warn("테스트 하지 않은 상품 정보를 사용하였습니다. {0}", key); } return pi; } } Trace.Assert(false, String.Format("{0} 상품 등록 필요", key)); return null; }
List<RawTradingData> SelectTradingDataList( MarketDataSetKey marketKey, List<RawTradingData> tradingList, Dictionary<DateTime, List<MarketDataSetKey>> dateKeys) { List<RawTradingData> selectedTradingList = new List<RawTradingData>(); double prevSize = 0; bool bDataExist = false; foreach (RawTradingData data in tradingList) { RawTradingData newData; if (dateKeys.ContainsKey(data.CurDate)) { List<MarketDataSetKey> keys = dateKeys[data.CurDate]; if (keys.Contains(marketKey)) { newData = data; prevSize = data.PositionSize; bDataExist = true; } else { newData = new RawTradingData(marketKey, data.CurDate, data.Price, 0); prevSize = 0; } } else { newData = new RawTradingData(marketKey, data.CurDate, data.Price, prevSize); } selectedTradingList.Add(newData); } if (bDataExist) { return selectedTradingList; } else { return new List<RawTradingData>(); } }
public PriceData(MarketDataSetKey key, DateTime curDate, double price) { this.Key = key; this.CurDate = curDate; this.Price = price; }
SelectionBaseData CalculateEquitySelectionScore( MarketDataSetKey key, DateTime targetDate, int vlookupPeriod, int mLookupPeriod) { MarketData md = _mds.GetData(key); //임시코드 : 중간에 인수합병 등으로 가격 데이터가 더이상 존재하지 않을 경우, 계산하지 않는다. if (md.EndDate < targetDate.AddDays(20) && targetDate < _endDate.AddDays(-20)) { return null; } int lookUpPeriod = 0; if (vlookupPeriod > mLookupPeriod) { lookUpPeriod = vlookupPeriod; } else { lookUpPeriod = mLookupPeriod; } List<double> dailyChangeRates = new List<double>(); int count = 0; DateTime curDate = targetDate; double lastPrice = double.MinValue; double firstPrice = double.MaxValue; double tomorrowPrice = lastPrice; while (count < lookUpPeriod) { if (curDate < md.StartDate) { return null; } if (md.IsExistDate(curDate)) { OHLC ohlc = _mds.GetData(key).GetData(curDate).OHLC; if (count == 0) { lastPrice = ohlc.Close; } else if (count < vlookupPeriod) { double changeRate = MathUtil.GetUpDownRate(ohlc.Close, tomorrowPrice); dailyChangeRates.Add(changeRate); } if (count == mLookupPeriod - 1) { firstPrice = ohlc.Close; } tomorrowPrice = ohlc.Close; count++; } curDate = curDate.AddDays(-1); } SelectionBaseData data = new SelectionBaseData(); data.toDate = targetDate; data.fromDate = curDate; data.Key = key; data.UpDownRate = MathUtil.GetUpDownRate(firstPrice, lastPrice); data.yearVol = dailyChangeRates.Count == 0 ? 0 : MathUtil.GetYearVol(dailyChangeRates); data.CompositeScore = data.yearVol == 0 ? -100 : data.UpDownRate * data.yearVol; return data; }
Dictionary<DateTime, double> GetDeltaVolAdjRates(MarketDataSetKey key, MarketData md) { DeltaVolInput input = GetDefaultDeltaVolAdjInput(key); DeltaVolTradingSimulator simulator = new DeltaVolTradingSimulator(key, input.BaseInvest, input.PayoffType, input.DefaultStrikeDiff, input.DefaultPeriod, input.IssueInterval, input.DefaultVol, input.bAmountBasis, md); if (input.bMATrendTest) { if (MarketDataSetKey.KospiFuture == key) { simulator.AddMATrendFilter(10, 50); } else if (MarketDataSetKey.KtbFuture == key) { simulator.AddMATrendFilter(15, 50); } else { simulator.AddMATrendFilter(10, 50); } if (input.bMaSpreadSwitchTest) { if (input.bMaSpreadSwitchTest) { if (MarketDataSetKey.KospiFuture == key) { simulator.UseMASpreadSwitch(0.2, -0.2); } else if (MarketDataSetKey.KtbFuture == key) { simulator.UseMASpreadSwitch(0.05, -0.05); } else { simulator.UseMASpreadSwitch(0.2, -0.2); } } } } if (input.bDeltaSwitchUpDown) { simulator.AddDeltaSwitchUpDownFilter(20); } if (input.bReturnModel) { simulator.ReplaceWithReturnModel(input.ReturnCap); } SinglePnLResult result = simulator.Simulate(); Dictionary<DateTime, double> adjRates = GetTradingInvestAdjFromResult(result); return adjRates; }
DeltaVolInput GetDefaultDeltaVolAdjInput(MarketDataSetKey key) { DeltaVolInput input = new DeltaVolInput(); input.BaseInvest = 1 * 1000 * 1000 * 1000; input.DefaultPeriod = 10; input.IssueInterval = 1; input.PayoffType = PayOffType.ShortPut; input.ReturnCap = 0.1; input.bAmountBasis = true; input.bMATrendTest = true; input.bMaSpreadSwitchTest = true; input.bDeltaSwitchUpDown = true; // 이 값이 true이면 델타에 스위치 업다운 모델 적용됨. input.bReturnModel = false; //이 값이 true 이면 Return 모델 사용, false 이면 BSM 모델 사용 String kospiFutureKey = MarketDataSetKey.KospiFuture.ToString(); String ktbFutureKey = MarketDataSetKey.KtbFuture.ToString(); if (MarketDataSetKey.KospiFuture.Equals(key)) { input.DefaultStrikeDiff = 0.05; input.DefaultVol = 0.25; input.ReturnCap = 0.1; } else if (MarketDataSetKey.KtbFuture.Equals(key)) { input.DefaultStrikeDiff = 0.01; input.DefaultVol = 0.05; input.ReturnCap = 0.05; } else if (MarketDataSetKey.DollarFuture.Equals(key)) { input.DefaultStrikeDiff = 0.01; input.DefaultVol = 0.15; input.ReturnCap = 0.1; } else { input.DefaultStrikeDiff = 0.01; input.DefaultVol = 0.2; input.ReturnCap = 0.1; } return input; }
public static string GetTickerFromMarketDataKey(MarketDataSetKey key) { switch (key) { case MarketDataSetKey.KospiFuture: return "KM1 R:00_0_R Index"; case MarketDataSetKey.KtbFuture: return "KE1 R:00_0_R Comdty"; case MarketDataSetKey.DollarFuture: return "KU1 R:00_0_R Curncy"; case MarketDataSetKey.KrxCreditDepositRate: return "KrxCreditDepositRate"; case MarketDataSetKey.DollarSpot: return "USDKRW Curncy"; case MarketDataSetKey.BokRate: return "KORP7D Index"; case MarketDataSetKey.KospiSpot: return "KOSPI Index"; case MarketDataSetKey.KtbSpot: return "KOTB3YR Index"; case MarketDataSetKey.CycleLeadingIndex: return "SKLILY Index"; case MarketDataSetKey.ConsumerPriceIndex: return "KOCPI Index"; case MarketDataSetKey.KodexETF: return "069500 KS Equity"; case MarketDataSetKey.KodexInversETF: return "114800 KS Equity"; case MarketDataSetKey.KodexLeverageETF: return "122630 KS Equity"; //kospi100 case MarketDataSetKey.YuhanCorp: return "000100 KS Equity"; case MarketDataSetKey.KoreaExpressCo: return "000120 KS Equity"; case MarketDataSetKey.DoosanCorp: return "000150 KS Equity"; case MarketDataSetKey.DaelimIndusCo: return "000210 KS Equity"; case MarketDataSetKey.HankookTireCo: return "000240 KS Equity"; case MarketDataSetKey.KiaMotorsCorp: return "000270 KS Equity"; case MarketDataSetKey.HynixSemiconduc: return "000660 KS Equity"; case MarketDataSetKey.HyundaiEngCons: return "000720 KS Equity"; case MarketDataSetKey.SamsungFireM: return "000810 KS Equity"; case MarketDataSetKey.SamsungCT: return "000830 KS Equity"; case MarketDataSetKey.HanwhaCorp: return "000880 KS Equity"; case MarketDataSetKey.CjCorp: return "001040 KS Equity"; case MarketDataSetKey.LgIntlCorp: return "001120 KS Equity"; case MarketDataSetKey.DongkukSteel: return "001230 KS Equity"; case MarketDataSetKey.CheilIndusInc: return "001300 KS Equity"; case MarketDataSetKey.SkNetworksCo: return "001740 KS Equity"; case MarketDataSetKey.OrionCorp: return "001800 KS Equity"; case MarketDataSetKey.KccCorp: return "002380 KS Equity"; case MarketDataSetKey.AmorepacificGro: return "002790 KS Equity"; case MarketDataSetKey.HyundaiSecsCo: return "003450 KS Equity"; case MarketDataSetKey.KoreanAirLines: return "003490 KS Equity"; case MarketDataSetKey.LgCorp: return "003550 KS Equity"; case MarketDataSetKey.SkHoldings: return "003600 KS Equity"; case MarketDataSetKey.SamsungFine: return "004000 KS Equity"; case MarketDataSetKey.HyundaiSteel: return "004020 KS Equity"; case MarketDataSetKey.ShinsegaeCoLtd: return "004170 KS Equity"; case MarketDataSetKey.NongshimCoLtd: return "004370 KS Equity"; case MarketDataSetKey.HyosungCorp: return "004800 KS Equity"; case MarketDataSetKey.KoreaExchngBnk: return "004940 KS Equity"; case MarketDataSetKey.LotteConfection: return "004990 KS Equity"; case MarketDataSetKey.LotteChilsung: return "005300 KS Equity"; case MarketDataSetKey.HyundaiMotor: return "005380 KS Equity"; case MarketDataSetKey.Posco: return "005490 KS Equity"; case MarketDataSetKey.SamsungElectron: return "005930 KS Equity"; case MarketDataSetKey.WooriInvtSec: return "005940 KS Equity"; case MarketDataSetKey.LsCorp: return "006260 KS Equity"; case MarketDataSetKey.GsEngineering: return "006360 KS Equity"; case MarketDataSetKey.SamsungSdiCo: return "006400 KS Equity"; case MarketDataSetKey.DaewooSecsCo: return "006800 KS Equity"; case MarketDataSetKey.SamsungElectro: return "009150 KS Equity"; case MarketDataSetKey.HyundaiHeavy: return "009540 KS Equity"; case MarketDataSetKey.HanwhaChemCorp: return "009830 KS Equity"; case MarketDataSetKey.OciCoLtd: return "010060 KS Equity"; case MarketDataSetKey.LsIndusSystems: return "010120 KS Equity"; case MarketDataSetKey.KoreaZincCo: return "010130 KS Equity"; case MarketDataSetKey.SamsungHeavyIn: return "010140 KS Equity"; case MarketDataSetKey.HyundaiHysco: return "010520 KS Equity"; case MarketDataSetKey.HyundaiMipoDoc: return "010620 KS Equity"; case MarketDataSetKey.SOilCorp: return "010950 KS Equity"; case MarketDataSetKey.LgInnotekCo: return "011070 KS Equity"; case MarketDataSetKey.HonamPetrochem: return "011170 KS Equity"; case MarketDataSetKey.HyundaiMerchant: return "011200 KS Equity"; case MarketDataSetKey.HyundaiMobis: return "012330 KS Equity"; case MarketDataSetKey.SamsungTechwin: return "012450 KS Equity"; case MarketDataSetKey.HyundaiDevelopm: return "012630 KS Equity"; case MarketDataSetKey.S1Corp: return "012750 KS Equity"; case MarketDataSetKey.KoreaElecPower: return "015760 KS Equity"; case MarketDataSetKey.SamsungSecsCo: return "016360 KS Equity"; case MarketDataSetKey.SkTelecom: return "017670 KS Equity"; case MarketDataSetKey.HallaClimate: return "018880 KS Equity"; case MarketDataSetKey.WoongjinCoway: return "021240 KS Equity"; case MarketDataSetKey.LotteShopping: return "023530 KS Equity"; case MarketDataSetKey.IndustrialBank: return "024110 KS Equity"; case MarketDataSetKey.SamsungEngineer: return "028050 KS Equity"; case MarketDataSetKey.StxPanOcean: return "028670 KS Equity"; case MarketDataSetKey.SamsungCardCo: return "029780 KS Equity"; case MarketDataSetKey.CheilWorldwide: return "030000 KS Equity"; case MarketDataSetKey.KtCorp: return "030200 KS Equity"; case MarketDataSetKey.LgUplusCorp: return "032640 KS Equity"; case MarketDataSetKey.SamsungLifeIns: return "032830 KS Equity"; case MarketDataSetKey.KtGCorp: return "033780 KS Equity"; case MarketDataSetKey.DoosanHeavy: return "034020 KS Equity"; case MarketDataSetKey.LgDisplayCo: return "034220 KS Equity"; case MarketDataSetKey.SkCC: return "034730 KS Equity"; case MarketDataSetKey.KangwonLandInc: return "035250 KS Equity"; case MarketDataSetKey.NhnCorp: return "035420 KS Equity"; case MarketDataSetKey.KoreaGasCorp: return "036460 KS Equity"; case MarketDataSetKey.NcsoftCorp: return "036570 KS Equity"; case MarketDataSetKey.MiraeAssetSec: return "037620 KS Equity"; case MarketDataSetKey.DaewooShipbldg: return "042660 KS Equity"; case MarketDataSetKey.DoosanInfracore: return "042670 KS Equity"; case MarketDataSetKey.DaewooEngCon: return "047040 KS Equity"; case MarketDataSetKey.DaewooIntlCorp: return "047050 KS Equity"; case MarketDataSetKey.LgHouseholdH: return "051900 KS Equity"; case MarketDataSetKey.LgChemLtd: return "051910 KS Equity"; case MarketDataSetKey.KepcoEngineerin: return "052690 KS Equity"; case MarketDataSetKey.WooriFinance: return "053000 KS Equity"; case MarketDataSetKey.ShinhanFinancia: return "055550 KS Equity"; case MarketDataSetKey.LgElectronics: return "066570 KS Equity"; case MarketDataSetKey.HyundaiDeptSto: return "069960 KS Equity"; case MarketDataSetKey.KoreaInvestment: return "071050 KS Equity"; case MarketDataSetKey.GsHoldings: return "078930 KS Equity"; case MarketDataSetKey.HyundaiGlovis: return "086280 KS Equity"; case MarketDataSetKey.HanaFinancialG: return "086790 KS Equity"; case MarketDataSetKey.KoreaLifeInsur: return "088350 KS Equity"; case MarketDataSetKey.AmorepacificCor: return "090430 KS Equity"; case MarketDataSetKey.SkInnovation: return "096770 KS Equity"; case MarketDataSetKey.CjCheil: return "097950 KS Equity"; case MarketDataSetKey.KbFinancialGro: return "105560 KS Equity"; case MarketDataSetKey.BsFinancialGro: return "138930 KS Equity"; //kospi100 exclued stock case MarketDataSetKey.TaihanElecWire: return "001440 KS Equity"; case MarketDataSetKey.SeoulBroadcast: return "034120 KS Equity"; case MarketDataSetKey.BusanBank: return "005280 KS Equity"; case MarketDataSetKey.HiteHoldingsCo: return "000140 KS Equity"; case MarketDataSetKey.KoreanReinsuran: return "003690 KS Equity"; case MarketDataSetKey.SamyangCorp: return "000070 KS Equity"; case MarketDataSetKey.SsangyongMotor: return "003620 KS Equity"; case MarketDataSetKey.SindohCoLtd: return "029530 KS Equity"; case MarketDataSetKey.KecHoldingsCo: return "006200 KS Equity"; case MarketDataSetKey.TrigemComputer: return "014900 KS Equity"; case MarketDataSetKey.PantechCoLtd: return "025930 KS Equity"; case MarketDataSetKey.DaesangCorp: return "001680 KS Equity"; case MarketDataSetKey.LgDacomCorp: return "015940 KS Equity"; case MarketDataSetKey.KolonCorp: return "002020 KS Equity"; case MarketDataSetKey.GreenCrossHold: return "005250 KS Equity"; case MarketDataSetKey.IsuChemicalCo: return "005950 KS Equity"; case MarketDataSetKey.DongwonSystems: return "014820 KS Equity"; case MarketDataSetKey.DaouTechnology: return "023590 KS Equity"; case MarketDataSetKey.SamYoungElectr: return "005680 KS Equity"; case MarketDataSetKey.HansolCsn: return "009180 KS Equity"; case MarketDataSetKey.HyundaiCorp: return "011760 KS Equity"; case MarketDataSetKey.SsangyongCem: return "003410 KS Equity"; case MarketDataSetKey.ChongKunDang: return "001630 KS Equity"; case MarketDataSetKey.BukwangPharmCo: return "003000 KS Equity"; case MarketDataSetKey.DaishinSecsCo: return "003540 KS Equity"; case MarketDataSetKey.DaesungGroupPa: return "005620 KS Equity"; case MarketDataSetKey.SuheungCapsule: return "008490 KS Equity"; case MarketDataSetKey.SeondoElectric: return "007610 KS Equity"; case MarketDataSetKey.LgLifeSciences: return "068870 KS Equity"; case MarketDataSetKey.DgbFinancialGr: return "139130 KS Equity"; case MarketDataSetKey.DaeguBank: return "005270 KS Equity"; case MarketDataSetKey.SkcCoLtd: return "011790 KS Equity"; case MarketDataSetKey.HanjinShipping: return "000700 KS Equity"; case MarketDataSetKey.HyundaiAutonet: return "042100 KS Equity"; case MarketDataSetKey.HanilCementCo: return "003300 KS Equity"; case MarketDataSetKey.HanjinHeavyHld: return "003480 KS Equity"; case MarketDataSetKey.KtFreetelCo: return "032390 KS Equity"; case MarketDataSetKey.PoongsanHolding: return "005810 KS Equity"; case MarketDataSetKey.KookminBank: return "060000 KS Equity"; case MarketDataSetKey.HansolPaper: return "004150 KS Equity"; case MarketDataSetKey.LgPetrochemical: return "012990 KS Equity"; case MarketDataSetKey.DaeduckElect: return "008060 KS Equity"; case MarketDataSetKey.ShinhanCardCo: return "032710 KS Equity"; case MarketDataSetKey.Dongbuelectronic: return "001830 KS Equity"; case MarketDataSetKey.SungshinCement: return "004980 KS Equity"; case MarketDataSetKey.HankukElectric: return "009720 KS Equity"; case MarketDataSetKey.MiraeCorp: return "025560 KS Equity"; case MarketDataSetKey.HankukGlass: return "002000 KS Equity"; case MarketDataSetKey.ShinhanInvestme: return "008670 KS Equity"; case MarketDataSetKey.DongaPharm: return "000640 KS Equity"; case MarketDataSetKey.LotteMidopaCo: return "004010 KS Equity"; case MarketDataSetKey.SkChemicals: return "006120 KS Equity"; case MarketDataSetKey.CitibankKorea: return "016830 KS Equity"; case MarketDataSetKey.JahwaElectronic: return "033240 KS Equity"; case MarketDataSetKey.ChohungBank: return "000010 KS Equity"; case MarketDataSetKey.SkSecurities: return "001510 KS Equity"; case MarketDataSetKey.HyundaiGreenfoo: return "005440 KS Equity"; case MarketDataSetKey.SamjinPharm: return "005500 KS Equity"; case MarketDataSetKey.NamhaeChemical: return "025860 KS Equity"; case MarketDataSetKey.KukdoChemical: return "007690 KS Equity"; case MarketDataSetKey.HitronSystems: return "019490 KS Equity"; case MarketDataSetKey.ComtecSystems: return "031820 KS Equity"; case MarketDataSetKey.DaeduckGdsCo: return "004130 KS Equity"; case MarketDataSetKey.DoosanEC: return "011160 KS Equity"; case MarketDataSetKey.WillbesCoLtd: return "008600 KS Equity"; case MarketDataSetKey.HotelShillaCo: return "008770 KS Equity"; case MarketDataSetKey.HyundaiElevator: return "017800 KS Equity"; } Trace.Assert(false); return null; }
public EquitySectorKey GetEquitySectorKey(MarketDataSetKey key) { return _sectorEquityMapping[key]; }
public MarketData GetMarketPriceData(MarketDataSetKey key) { return _priceData[key]; }
public void Add(MarketDataSetKey key, MarketData data) { _data.Add(key, data); _tickers.Add(data.Ticker, data.Ticker); _marketDataKeys.Add(key); MarketDataSetKeyManager.Ins().AddKey(key, data.Ticker); }
public MarketData GetData(MarketDataSetKey key) { return _data[key]; }
public void Add(MarketDataSetKey key, MarketData data) { _data.Add(key, data); }