Tuple<double, double, double> CalculatePpm(String tradingTicker, String rateTicker, String currency) { if (StringUtil.IsEmpty(tradingTicker) || StringUtil.IsEmpty(rateTicker)) { logger.Warn("{0}, {1} is empty", tradingTicker, rateTicker); return new Tuple<double, double, double>(0, 0, 0); } DateTime start = new DateTime(1990, 1, 1); DateTime until = ConvertUtil.Round(DateTime.Now); String indexKey = MarketDataManager.Ins().GetKey(tradingTicker, MarketDataFieldType.PX_LAST, currency); CentralBankRateAdj adj = new CentralBankRateAdj(indexKey, rateTicker, currency, start, until); SortedList<DateTime, double> tradingTargetData = MarketDataManager.Ins().Get_PX_LAST_Data( tradingTicker, currency); SortedList<DateTime, double> adjPnls = MathUtil.GetAdjIncCum(adj.AdjIndex, tradingTargetData); SortedList<DateTime, double> pnls = MathUtil.GetIncCum(tradingTargetData, adjPnls.Keys[0].AddDays(-5)); ZooData zoo = new ZooData(); zoo.SetPivot("adjPnls", adjPnls); zoo.Append("adj", adj.AdjIndex); zoo.Append("pnls", pnls); zoo.Append("tradingTarget", tradingTargetData); zoo.Append("rate", adj.CBRates); double indexPpm = MathUtil.GetPPM(zoo.GetData("tradingTarget")); double pnlPpm = MathUtil.GetPPM(zoo.GetData("pnls")); double adjPnlPpm = MathUtil.GetPPM(zoo.GetData("adjPnls")); return new Tuple<double, double, double>(indexPpm, pnlPpm, adjPnlPpm); //zoo.ToCsv(String.Format("c:\\{0}.csv", tradingTicker)); }
static List<IAdjLogic> CreateCbrAdjSet(DateTime from, DateTime until) { List<IAdjLogic> output = new List<IAdjLogic>(); G20 g20 = new G20(); List<G20_TickerInfo> tickerInfos = g20.Data; foreach (G20_TickerInfo tickerInfo in tickerInfos) { String instKey = MarketDataManager.Ins().GetKey(tickerInfo.StockTicker, MarketDataFieldType.PX_LAST, tickerInfo.Currency); String cbrTicker = tickerInfo.CentralBankRateTicker; String currency = tickerInfo.Currency; if (StringUtil.IsEmpty(instKey) || StringUtil.IsEmpty(cbrTicker)) { continue; } CentralBankRateAdj adj = new CentralBankRateAdj(instKey, cbrTicker, currency, from, until); output.Add(adj); } return output; }