public WtsAnalysisCompareControl Display(string title_) { var ctrol = new WtsAnalysisCompareControl(); ctrol.Create(this); ctrol.DisplayInShowForm(title_); return ctrol; }
protected override void OnClick(EventArgs e) { BindingList<WtsSeriesAnalyzer.WtRestriction> list = new BindingList<WtsSeriesAnalyzer.WtRestriction>(); Array.ForEach(m_analyzer.SourceWts.ColumnHeadings, delegate(string name_) { list.Add(new WtsSeriesAnalyzer.WtRestriction(name_)); }); ShowForm sf = new ShowForm(); ApplyWeightRestrictionsControl con = new ApplyWeightRestrictionsControl(list); sf.Create(con); DialogResult result = DialogResult.Cancel; try { result = sf.ShowDialog(); } catch { result = DialogResult.Cancel; } if (result == DialogResult.Cancel) return; ConstructGen<double> processWeights = m_analyzer.WhatIfTradingRestrictions(list.ToArray()); var res = SI.Data.ReturnsFromFXWeights.DoIt_DailyWeights(processWeights); GetCov covDel = date_ => Singleton<CovarianceSource>.Instance.GetCovarianceForDateElesePrevious(date_); WtsSeriesAnalyzer w = new WtsSeriesAnalyzer( name_: string.Format("{0}_restricted",m_analyzer.Name), wts_: processWeights, dailyReturns_: res.CombinedPnl, covDelegate_: covDel ); WtsSeriesAnalyzer original = new WtsSeriesAnalyzer( m_analyzer.Name, m_analyzer.SourceWts, m_analyzer.Performance, covDel); List<WtsSeriesAnalyzer> ll = new List<WtsSeriesAnalyzer>(); ll.Add(original); ll.Add(w); WtsAnalysisCompareControl comparer = new WtsAnalysisCompareControl(); comparer.Create(ll); comparer.DisplayInShowForm(string.Format("{0} before and after restricted weights", m_analyzer.Name)); }
private void btnRunStratAgainstEnvironment_Click(object sender, EventArgs e) { var kvp = SI.Research.FXStrat.BacktestHelper.getWE(m_calc.Strat); var cum = new DatedDataCollectionGen<double>(kvp.Value.All.Dates, kvp.Value.All.CumulativeReturnSeries); var result = m_calc.Run_newPnl_changes(kvp); var newDaily = result.Item1; var multChanges = result.Item2; lineChartDataDisplayBottom.ClearSeries(); lineChartDataDisplayBottom.AddSeries(cum, "Original", 40, "##0.0#%"); lineChartDataDisplayBottom.AddSeries(newDaily.ToCumulative(), "New", 40, "##0.0#%"); var newWts = m_calc.GiveMeProcessedWeights(); var listOfControls = new List<KeyValuePair<string, Control>>(); if (cbShowAfterTransformStats.Checked) { listOfControls.Add(new KeyValuePair<string, Control>( "New performance stats", new ReturnsEval.DataSeriesEvaluator(newDaily.Dates, newDaily.Data, "New", ReturnsEval.DataSeriesType.Returns) .GetReturnsDisplay() )); } if (cbShowBeforeEval.Checked) { listOfControls.Add(new KeyValuePair<string, Control>( "Original performance stats", kvp.Value.GetReturnsDisplay() )); } if (cbShowNewWeights.Checked) { listOfControls.Add(new KeyValuePair<string, Control>( "New weights", newWts.DisplayInGrid("New weights", false) )); } if (cbShowNewWeightsAnalysis.Checked) { var contr = new WtsAnalysisCompareControl(); var listOfWts = new List<WtsSeriesAnalyzer>(); //listOfWts.Add(new Strategy.WtsAnalysis.WtsSeriesAnalyzer("Original", kvp.Key, // kvp.Value.GetInnerDailyAsConstruct(), x=>Singleton<CovarianceSource>.Instance.GetCovarianceForDateElesePrevious(x))); //listOfWts.Add(new Strategy.WtsAnalysis.WtsSeriesAnalyzer("New", newWts, // ReturnsFromFXWeights.DoIt_DailyWeights(newWts).CombinedPnl, // x => Singleton<CovarianceSource>.Instance.GetCovarianceForDateElesePrevious(x))); listOfWts.Add(new WtsSeriesAnalyzer("Original", kvp.Key, kvp.Value.GetInnerDailyAsConstruct(), null)); listOfWts.Add(new WtsSeriesAnalyzer("New", newWts, ReturnsFromFXWeights.DoIt_DailyWeights(newWts).CombinedPnl, null)); contr.Create(listOfWts); listOfControls.Add(new KeyValuePair<string, Control>("Weights analysis", contr)); //var listOfEvals = new List<ReturnsEval.DataSeriesEvaluator>(); //{ // var oldFlow = BacktestHelper.GetFlow(kvp.Key); // var eval = new ReturnsEval.DataSeriesEvaluator("Original flow", ReturnsEval.DataSeriesType.Returns); // eval.AddInnerSeries(oldFlow.Dates.ToArray(), oldFlow.ToArray(), oldFlow.ColumnHeadings); // listOfEvals.Add(eval); //} //{ // var newFlow = BacktestHelper.GetFlow(newWts); // var eval = new ReturnsEval.DataSeriesEvaluator("New flow", ReturnsEval.DataSeriesType.Returns); // eval.AddInnerSeries(newFlow.Dates.ToArray(), newFlow.ToArray(), newFlow.ColumnHeadings); // listOfEvals.Add(eval); //} //listOfControls.Add(new KeyValuePair<string, Control>( // "Before/After Flow comparison", // listOfEvals.GetComparerDisplay() // )); } if (cbShowInComparer.Checked) { var listOfEvals = new List<ReturnsEval.DataSeriesEvaluator>(); kvp.Value.Name = "Original"; listOfEvals.Add(kvp.Value); listOfEvals.Add(new ReturnsEval.DataSeriesEvaluator(newDaily.Dates, newDaily.Data, "New", ReturnsEval.DataSeriesType.Returns)); listOfControls.Add(new KeyValuePair<string, Control>( "Before/After Performance Comparison", listOfEvals.GetComparerDisplay() )); } if (listOfControls.Count > 0) listOfControls.DisplayInShowForm("Results"); //if ((ModifierKeys & Keys.Shift) != 0 && (ModifierKeys & Keys.Control) != 0) //{ // BacktestHelper.DisplayAvgFlow(kvp.Key, "Before - Average Flow"); // BacktestHelper.DisplayAvgFlow(m_calc.GiveMeProcessedWeights(), "After - Average Flow"); // return; //} //if ((ModifierKeys & Keys.Shift) != 0) //{ // kvp.Value.Display("Original"); // new ReturnsEval.DataSeriesEvaluator(newDaily.Dates, newDaily.Data, "New", ReturnsEval.DataSeriesType.Returns).Display("New"); // return; //} //if ((ModifierKeys & Keys.Control) != 0) //{ // var listOfEvals = new List<ReturnsEval.DataSeriesEvaluator>(); // kvp.Value.Name = "Original"; // listOfEvals.Add(kvp.Value); // listOfEvals.Add(new ReturnsEval.DataSeriesEvaluator(newDaily.Dates, newDaily.Data, "New", // ReturnsEval.DataSeriesType.Returns)); // listOfEvals.Display("Comparison"); // return; //} }