public static SI.Controls.ShowForm DisplayEvals(string[] argsList_)
    {
      List<ReturnsEval.DataSeriesEvaluator> list = GetEvalListFromArgs(argsList_);

      if (list.Count == 0) return null;

      List<KeyValuePair<string, Control>> controlList = new List<KeyValuePair<string, Control>>();

      foreach (ReturnsEval.DataSeriesEvaluator eval in list)
      {
        ReturnsEvalDisplay.ReturnsDisplay rd = new ReturnsDisplay();
        rd.Bind(eval);
        controlList.Add(new KeyValuePair<string, Control>(eval.Name, rd));
      }

      return controlList.DisplayInShowForm("Returns Analysis");
    }
    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));
      }
    }
 public static void Display(ReturnsEval.DataSeriesEvaluator eval_,string title_, List<DateTime> rebalDates_)
 {
   ReturnsDisplay rd = new ReturnsDisplay();
   rd.Bind(eval_);
   rd.RebalDates = rebalDates_;
   SI.Controls.ShowForm.Show(rd, title_);
 }
 public static SI.ReturnsEvalDisplay.ReturnsDisplay GetReturnsDisplay(this SI.ReturnsEval.DataSeriesEvaluator eval_)
 {
   ReturnsEvalDisplay.ReturnsDisplay rd = new ReturnsEvalDisplay.ReturnsDisplay();
   rd.Bind(eval_);
   return rd;
 }
    private void showFXRegion(Data.FXGroup group_)
    {
      ReturnsEval.DataSeriesEvaluator eval = new ReturnsEval.DataSeriesEvaluator(group_.ToString(), m_evaluator.DataType);

      foreach (ReturnsEval.DataSeriesEvaluator innerEval in m_evaluator.InnerSeries)
      {
        Data.Currency ccy = Singleton<Data.FXIDs>.Instance[innerEval.Name];

        if (ccy == null)
          continue;

        if (ccy.IsGroup(group_))
          eval.AddInnerEvaluator(innerEval);
      }

      eval.Evaluate(eval.All.MinDate, eval.All.MaxDate);

      ReturnsDisplay rd = new ReturnsDisplay();
      rd.Bind(eval);
      SI.Controls.ShowForm.Show(rd, FormBorderStyle.Sizable, null, FindForm().Text + " - " + group_.ToString());
    }