コード例 #1
0
    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;
    }
コード例 #2
0
    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;
    }