public static List<InvoiceSpreadLine> GetInvoiceSpreadsLines(string futureStart_, Symmetry.Data.Enums.KnownCurve curve_, int contractOffset_ = 0) { Logger.Debug( string.Format("Starting to generate invoice spreads for future={0}, curve={1}, offset={2}", futureStart_, curve_, contractOffset_), typeof(Generator)); var returnList = new List<InvoiceSpreadLine>(); var startDate = new DateTime(2010, 6, 1); var contractList = GetList(futureStart_: futureStart_); while (startDate < DateTime.Today) { var subList = contractList.Where(x => x.LastTrade >= startDate).ToArray(); if (subList.Length == 0) { Logger.Error(string.Format("No contract found for date={0}", startDate.ToString("dd-MMM-yyyy")), typeof(Generator)); continue; } var item = new InvoiceSpreadLine( date_: startDate, contractBondSpecifics: subList[contractOffset_], curve_: curve_); returnList.Add(item); startDate = MyCalendar.NextWeekDay(startDate); } return returnList; }
public static bool UpdateInvoiceSpreads(InvoiceSpreadCollection coll_) { var startDate = coll_.Lines == null || coll_.Lines.Count == 0 ? new DateTime(2010, 6, 1) : MyCalendar.NextWeekDay(coll_.Lines.Last().Date); bool updated = false; if (startDate >= DateTime.Today) return updated; var curve = (Symmetry.Data.Enums.KnownCurve)Enum.Parse(typeof(Symmetry.Data.Enums.KnownCurve), coll_.Curve); var contractList = GetList(futureStart_: coll_.Contract); while (startDate < DateTime.Today) { Logger.Info( string.Format("Generating {0}.{1} invoice spreads on {2}", coll_.Curve, coll_.Contract, startDate.ToString("dd-MMM-yyyy")), typeof(Generator)); var subList = contractList.Where(x => x.LastTrade >= startDate).ToArray(); if (subList.Length == 0) { Logger.Error(string.Format("No contract found for date={0}", startDate.ToString("dd-MMM-yyyy")), typeof(Generator)); continue; } Logger.DebugFormat(typeof(Generator), "Generating line for {0} over {1} on {2}", coll_.Contract, coll_.Curve, startDate.ToString("dd-MMM-yyyy")); var item = new InvoiceSpreadLine( date_: startDate, contractBondSpecifics: subList[coll_.Series], curve_: curve); coll_.Lines.Add(item); updated = true; startDate = MyCalendar.NextWeekDay(startDate); } return updated; }