//------------------------------------------------------------------------------------------------ public SpreadSeriesBuilder(string metric, FuturesSeriesBuilder rawfuturesBuilder, SwapCurveSeriesBuilder swapBuilder, Dictionary<string, TimeSeriesBondStatic> bondStatics, SpreadConventions conventions, List<DateTime> holidays=null) //------------------------------------------------------------------------------------------------ { if (holidays == null) { holidays = new List<DateTime>(); } // Setup Everything var futuresBuilder = new FuturesSeriesBuilder(rawfuturesBuilder); //use copy constructor FuturesPrices = futuresBuilder.RawFuturesPrices; FuturesStatic = futuresBuilder.FuturesStatic; BondStatic = bondStatics; CombinedStatic = SpreadSeriesBuilder.combineFuturesAndBondStatic(BondStatic, FuturesStatic); if (conventions.bForecastCurve) { ForecastCurves = swapBuilder.ForecastCurves; DiscountCurves = swapBuilder.DiscountCurves; } else { ForecastCurves = swapBuilder.DiscountCurves; DiscountCurves = swapBuilder.DiscountCurves; } SpreadMetric_ = metric; Conv_ = conventions; Holidays_ = holidays; var rawSpreads = computeFuturesSpreads(); // Now use this to get rolling futures too futuresBuilder.RawFuturesPrices = rawSpreads; futuresBuilder.interpolateRawPriceFrame(); SpreadValues = futuresBuilder.getCombinedResults(); FuturesBuilder_ = futuresBuilder; }
//--------------------------------------------------------------------------------------------------------- //[Test] public void FuturesSeriesPerfectRun() //--------------------------------------------------------------------------------------------------------- { List<String> tickers = new List<string>() { "TUZ15", "FV.Front", "TUH6", "TUM6", "TUU6", "TY.Back" }; DateTime start = new DateTime(2015,11,1); DateTime end = new DateTime(2016, 3, 11); string calendarCode = "USNY"; string futuresStaticMoniker = "BLIM.Futures.US.Static"; string carbonEnv = "PRD"; FuturesSeriesBuilder.RollMethods rollMthd = FuturesSeriesBuilder.RollMethods.LastTradeDate; var seriesBuilder = new FuturesSeriesBuilder(tickers, start, end, calendarCode, futuresStaticMoniker, mCarbonClient, carbonEnv, rollMthd); Frame<string, string> futStatic = seriesBuilder.FuturesStatic; futStatic.Print(); Assert.IsFalse(futStatic.IsEmpty); // Set Rolling prices seriesBuilder.setRollingFuturesPrices(); seriesBuilder.RollingFuturesData.Print(); // Get back the combined df Console.WriteLine(""); Console.WriteLine("#--------------------------"); Console.WriteLine("Output line"); Console.WriteLine("#--------------------------"); Console.WriteLine(""); var combined = seriesBuilder.getCombinedResults(); combined.Print(); }