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));
        }
Example #2
0
        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;
        }