public static DateTime[] GetCalendar(string otCode_, CarbonClient client_, ThrowBehavior behavior_=ThrowBehavior.DontThrow) { try { return client_.GetCalendarAsync(otCode_).Result.Dates.Select(x => x.ToDateTime()).ToArray(); } catch (Exception ex_) { Exceptions.Rethrow(string.Format("Error getting calendar {0}", otCode_), behavior_, ex_); } return null; }
public static async Task<IEnumerable<DateTime>> Get(string holidayCode_, CarbonClient cc_) { IEnumerable<DateTime> ret; if (_cache.TryGetValue(holidayCode_, out ret)) return ret; var result = await cc_.GetCalendarAsync(holidayCode_); _cache[holidayCode_] = result.Dates.Select(x => x.ToDateTime()).ToList(); return _cache[holidayCode_]; }
public static DateTime[] GetCalendar(string otCode_, CarbonClient client) { try { return client.GetCalendarAsync(otCode_).Result.Dates.Select(x => x.ToDateTime()).ToArray(); } catch (Exception ex_) { throw new Exception(string.Format("Error getting calendar {0}", ex_)); } return null; }
private static IList<DateTime> getEUTA_Dates(CarbonClient client_) { var v = client_.GetCalendarAsync("EUTA").Result; var list = v.Dates.Select(x => x.ToDateTime().Date).ToList(); list.Add(new DateTime(2014, 12, 24)); return list; }
//--------------------------------------------------------------------------------------------------------- //[Test] public void SpreadSeriesToArrayTests() //--------------------------------------------------------------------------------------------------------- { // Params. DateTime start = new DateTime(2016, 2, 28); DateTime end = new DateTime(2016, 3, 18); List<String> tickers = new List<string>() { "TUH6", "TUM6", "TUU6" }; string samplingFreq = "1b"; // Default Configs SpreadTimeSeriesConfigs config = new SpreadTimeSeriesConfigs("US"); string forecastCurveName = config.forecastCurveName; string discountCurveName = config.discountCurveName; string ccy = config.ccy; string calendarcode = config.calendarcode; string futuresStaticMoniker = config.futuresStaticMoniker; string carbonEnv = config.carbonEnv; BondAnalytics.Country country = config.country; BondAnalytics.DayCountType dct = config.dct; long swpfixfreq = config.swpfixfreq; long swpfloatfreq = config.swpfloatfreq; long bndCouponFreq = config.bndCouponFreq; int BlendIndex = config.BlendIndex; bool bForecastCurve = true; // Bond Static Dictionary<string, TimeSeriesBondStatic> bondstatic = new Dictionary<string, TimeSeriesBondStatic>() { {"US912828G799", new TimeSeriesBondStatic("US912828G799", new DateTime(2017,12,15), new DateTime(2015,12,15),DateTime.MinValue,1.0)}, {"US912828J686", new TimeSeriesBondStatic("US912828J686", new DateTime(2018,03,15), new DateTime(2015,03,16),DateTime.MinValue,1.0)}, {"US912828VK31", new TimeSeriesBondStatic("US912828VK31", new DateTime(2018,06,30), new DateTime(2015,07,01),DateTime.MinValue,1.0)} }; //Spread Static SpreadConventions spreadconventions = new SpreadConventions(country, dct, swpfixfreq, swpfloatfreq, bndCouponFreq, bForecastCurve, BlendIndex); // Dates var holidays = new List<DateTime>(); var dateRange = new List<DateTime>(); using (var client = new CarbonClient(carbonEnv)) { // Holidays if (calendarcode != "") { var nodaHols = client.GetCalendarAsync(calendarcode).Result.Dates; foreach (LocalDate hol in nodaHols) { holidays.Add(hol.ToDateTime()); } } // DateRange DateTime startDate = start.AddTenor(Tenor.FromString("1b"), "").AddTenor(Tenor.FromString("-1b"), ""); DateTime nextDate = end.AddTenor(Tenor.FromString("1b"), "").AddTenor(Tenor.FromString("-1b"), ""); //TimeSpan EOD = new TimeSpan(23, 59, 59); /*if (startDate > nextDate) { return "Error! Bad Inputs!"; }*/ var tenor = Tenor.FromString("-" + samplingFreq); while (nextDate >= startDate) { dateRange.Add(nextDate); nextDate = BondAnalytics.PrevBusDay(nextDate.AddTenor(tenor, ""), holidays); } } //Swap. var swapBuilder = new SwapCurveSeriesBuilder(dateRange, forecastCurveName, discountCurveName, ccy, holidays, mCarbonClient); swapBuilder.buildAllCurves(); // Futures. var seriesBuilder = new FuturesSeriesBuilder(tickers, dateRange, holidays, futuresStaticMoniker, mCarbonClient, carbonEnv); // Spread Series. Dictionary<string, double> testVals = new Dictionary<string, double>() { {"Price", 109.1015625}, {"Yield", 0.009007303 * 10000}, {"TrueSpread",6.7788999}, {"MMS", 0.009689381* 10000}, {"Spread", 6.820787365} }; Dictionary<string /*metric*/, SpreadSeriesBuilder /*builder*/> spreadbuildermap = new Dictionary<string, SpreadSeriesBuilder>(); SpreadSeriesBuilder output = null; foreach (var metric in testVals.Keys.ToList()) { output = new SpreadSeriesBuilder(metric, seriesBuilder, swapBuilder, bondstatic, spreadconventions); Console.WriteLine(metric + " :"); output.SpreadValues.Print(); var row = output.SpreadValues.GetRow<double>(new DateTime(2016, 03, 18)); double TUM6 = row.Get("TUM6"); double error = Math.Abs(TUM6 - testVals[metric]); Assert.LessOrEqual(error, Math.Pow(10, -3) * 5, "Error found in " + metric + ", test: " + testVals[metric].ToString() + ", actual: " + TUM6.ToString()); // 0.005bps Console.WriteLine("Error :{0}", error); } // Now let's look at converting this to an array if (output != null) { var objArr = output.getSpreadAsObjArr(); } }