Example #1
0
    private static DatedDataCollectionGen<double> getPnl(DatedDataCollectionGen<double> prices_,
      DatedDataCollectionGen<double> wts_)
    {
      var dates = new List<DateTime>();
      var returns = new List<double>();

      var instrumentReturns = prices_.ToReturns();

      var currentWt = 0d;

      for (int i = 0; i < instrumentReturns.Length; ++i)
      {
        var date = instrumentReturns.Dates[i];

        dates.Add(date);
        returns.Add(currentWt*instrumentReturns.Data[i]);

        if (wts_.HasDate(date))
          currentWt = wts_.ValueOnDate(date);
      }

      return new DatedDataCollectionGen<double>(dates.ToArray(), returns.ToArray());
    }
Example #2
0
    private static DatedDataCollectionGen<double> GeneratePnl(DatedDataCollectionGen<double> prices_, DatedDataCollectionGen<double> signals_, double tcost_=0d)
    {
      var prevWt = 0d;

      var returns = prices_.ToReturns();

      double[] pnl = new double[returns.Length];
      double[] tcost = new double[returns.Length];

      for (int i = 0; i < returns.Length; ++i)
      {
        pnl[i] = prevWt * returns.Data[i];

        // dollar impact weight
        prevWt*=(1d+returns.Data[i]);

        if (signals_.HasDate(returns.Dates[i]))
        {
          prevWt = signals_.ValueOnExactDate(returns.Dates[i]);
          tcost[i] = tcost_;
        }
      }

      return new DatedDataCollectionGen<double>(returns.Dates, pnl);
    }