Exemplo n.º 1
0
    private void handleStratNameClicked(object sender, SI.Controls.RowClickedEventArgs e_)
    {
      if ((ModifierKeys & Keys.Shift) != 0)
      {

        PerfRow pr = (PerfRow)e_.ListObject;

        ReturnsEval.DataSeriesEvaluator eval = m_comp.FindEval(pr.StrategyName.Name);
        eval.Evaluate();
        ReturnsDisplay rd = new ReturnsDisplay();
        rd.Bind(eval);
        SI.Controls.ShowForm.Show(rd, eval.Name + " PnL");
      }

      if ((ModifierKeys & Keys.Control) != 0)
      {
        PerfRow pr = (PerfRow)e_.ListObject;

        ReturnsEval.DataSeriesEvaluator eval = m_comp.FindEval(pr.StrategyName.Name);
        eval.Evaluate();

        DatedDataCollectionGen<double> orig = new DatedDataCollectionGen<double>(eval.All.Dates, eval.All.Data);

        int maxDays=5;
        DatedDataCollectionGen<double>[] arr = new DatedDataCollectionGen<double>[maxDays];

        for(int i=0;i<arr.Length;++i) arr[i] = (DatedDataCollectionGen<double>) orig.Clone();

        for (int i = 1; i < orig.Length; ++i)
        {
          if (orig.Dates[i].Month != orig.Dates[i - 1].Month)
          {
            int indexOfLastDay = i - 1;

            // iterate over array with j; first in array will have just last day blanked out, last in array with have 'maxDay's blanked out
            for (int j = 0; j < maxDays; ++j)
              for (int k = 0; k <= j; ++k)
              {
                int indexToBlank = indexOfLastDay - k;
                if(indexToBlank>=0)
                  arr[j].Data[indexToBlank] = 0d;
              }
          }
        }

        List<ReturnsEval.DataSeriesEvaluator> newEvals = new List<ReturnsEval.DataSeriesEvaluator>();
        newEvals.Add(new ReturnsEval.DataSeriesEvaluator(orig.Dates, orig.Data, pr.StrategyName.Name, ReturnsEval.DataSeriesType.Returns));
        for (int i = 0; i < maxDays; ++i)
          newEvals.Add(new ReturnsEval.DataSeriesEvaluator(arr[i].Dates, arr[i].Data, string.Format("{0} - {1} days month end", pr.StrategyName.Name, (i + 1).ToString()),ReturnsEval.DataSeriesType.Returns));

        EvalComparerControl con = new EvalComparerControl();
        con.Create(newEvals);
        con.DisplayInShowForm(string.Format("Month End Analysis of {0}", pr.StrategyName.Name));
      }
    }