public static SI.ReturnsEvalDisplay.EvalComparerControl GetComparerDisplay( this IEnumerable<ReturnsEval.DataSeriesEvaluator> evals_, SI.ReturnsEval.EvalComparer.TDType initialFocus_ = EvalComparer.TDType.Inception) { var con = new ReturnsEvalDisplay.EvalComparerControl(); con.Create(new List<ReturnsEval.DataSeriesEvaluator>(evals_), initialFocus_); return con; }
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)); } }
private void toolStripMenuItemBreakOutToComparer_Click(object sender, EventArgs e) { if (m_evaluator.InnerSeries.Count == 0) return; List<ReturnsEval.DataSeriesEvaluator> evals = new List<ReturnsEval.DataSeriesEvaluator>(); foreach (ReturnsEval.DataSeriesEvaluator ev in m_evaluator.InnerSeries) if (ev.Daily.CumulativeReturn != 0.0) { ev.Evaluate(); evals.Add(ev); } EvalComparerControl ecc = new EvalComparerControl(); ecc.Create(new List<ReturnsEval.DataSeriesEvaluator>(evals)); ecc.AsOfDate = evals[0].MaxDate; SI.Controls.ShowForm.Show(ecc, string.Format("{0} inner attribution", m_evaluator.Name)); }