private void btnCombinePnl_Click(object sender, EventArgs e) { var all = spreadWeightGeneratorCollectionGrid1.ListOfGenerators; if (all.Count() == 0) return; ConstructGen<double> con = new ConstructGen<double>(all.Count()); con.ColumnHeadings = new string[con.ArrayLength]; for (int i = 0; i < con.ArrayLength; ++i) { var item = all.ElementAt(i); con.ColumnHeadings[i] = item.ToString(); con.SetColumnValues(i, item.GetSimplePnl()); } if (con.NeedsToSortKeys()) con.SortKeys(); var eval = new ReturnsEval.DataSeriesEvaluator("Combined", ReturnsEval.DataSeriesType.Returns); eval.AddInnerSeries(con.Dates.ToArray(), con.ToArray(), con.ColumnHeadings); eval.Display("Combined"); }
protected override void handleclick(EventArgs e_) { try { DatedDataCollectionGen<double> hist = null; hist = m_signal.GetSignalGridProvider().GetHistoryForCcyPair(m_ccy1, m_ccy2); if (hist == null) hist = m_signal.GetSignalGridProvider().GetHistoryForCcyPair(m_ccy2, m_ccy1, -1d); ConstructGen<double> con = new ConstructGen<double>(Singleton<FXIDs>.Instance.ColumnHeadings); for (int i = 0; i < hist.Dates.Length; ++i) { con.SetValue(hist.Dates[i], m_ccy1.ArrayIndex, hist.Data[i]); con.SetValue(hist.Dates[i], m_ccy2.ArrayIndex, -hist.Data[i]); } var rets = ReturnsFromFXWeights.DoIt_DailyWeights(dailyWts_: con); var eval = new ReturnsEval.DataSeriesEvaluator(m_signal.Name, ReturnsEval.DataSeriesType.Returns); eval.AddInnerSeries(rets.CombinedPnl.Dates.ToArray(), rets.CombinedPnl.ToArray(), rets.CombinedPnl.ColumnHeadings); eval.Evaluate(); eval.Display(string.Format("{0}: {1}/{2} signal performance",m_signal.Name,m_ccy1,m_ccy2)).Icon = Util.BmpToIcon(Properties.Resources.money); } catch (Exception ex_) { Logger.Error(string.Format("Error generating and showing pnl for signal grid ccy pair ({0}/{1})", m_ccy1.Code, m_ccy2.Code), typeof(SignalPnlOverTime), ex_); } }
public static Task<ReturnsEval.DataSeriesEvaluator> GetHistoricalPnlEvaluatorTask(this Signal sig_) { var t = new Task<ReturnsEval.DataSeriesEvaluator>(() => { ReturnsEval.DataSeriesEvaluator eval = null; try { var result = sig_.PnlResult; eval = new ReturnsEval.DataSeriesEvaluator(sig_.DisplayName, ReturnsEval.DataSeriesType.Returns); eval.AddInnerSeries(result.CombinedPnl.Dates.ToArray(), result.CombinedPnl.ToArray(), result.CombinedPnl.ColumnHeadings); //if(result.CombinedPnl.Dates.Count>260) // eval.Evaluate(result.CombinedPnl.Dates[result.CombinedPnl.Dates.Count-253],result.CombinedPnl.LastDate); //else eval.Evaluate(); } catch (Exception ex_) { Logger.Error("Error generating pnl for signal", typeof(ExtensionMethods), ex_); } return eval; }); return t; }
public virtual void Create(IList<ReturnsEval.DataSeriesEvaluator> evals_,SI.ReturnsEval.EvalComparer.TDType initialFocus_=ReturnsEval.EvalComparer.TDType.Inception) { hideInnerAttributionPanel(do_: true); m_focus = initialFocus_; m_comp = new ReturnsEval.EvalComparer(); m_comp.Create(evals_); m_workingEval = new ReturnsEval.DataSeriesEvaluator("working", ReturnsEval.DataSeriesType.Returns); for (int i = 0; i < evals_.Count; ++i) m_workingEval.AddInnerSeries(m_comp.PnlConstruct.Dates.ToArray(), m_comp.PnlConstruct.GetColumnValues(i), evals_[i].Name); m_workingEval.Evaluate(); dateTimePickerAsOfDate.Value = m_comp.AsOfDate; dateTimePickerAsOfDate.ValueChanged += dateTimePickerAsOfDate_ValueChanged; dateTimePickerCustomStartDate.Value = m_comp.CustomStartDate; dateTimePickerCustomStartDate.ValueChanged += dateTimePickerCustomStartDate_ValueChanged; //dateTimePickerAsOfDate.DataBindings.Add("Value", m_comp, "AsOfDate", false, DataSourceUpdateMode.OnPropertyChanged); m_comp.PropertyChanged += handleCompChanged; reloadPerf(); //reloadCorrels(); gridPerf.ColourNegativesRed(); gridPerf.Bind(m_perfRows, typeof(PerfRow)); gridPerf.AutoSizeGridColumns(); reloadCumulatives(); setHeaderClickAction(doSort_: false); gridPerf.AddClickHandler("Perf1Day", new SI.Controls.RowClickedEventHandler(handle1DClicked)); gridPerf.AddClickHandler("PerfWTD", new SI.Controls.RowClickedEventHandler(handleWTDClicked)); gridPerf.AddClickHandler("PerfMTD", new SI.Controls.RowClickedEventHandler(handleMTDClicked)); gridPerf.AddClickHandler("PerfYTD", new SI.Controls.RowClickedEventHandler(handleYTDClicked)); gridPerf.AddClickHandler("PerfQTD", new SI.Controls.RowClickedEventHandler(handleQTDClicked)); gridPerf.AddClickHandler("PerfInception", new SI.Controls.RowClickedEventHandler(handleInceptionClicked)); gridPerf.AddClickHandler("PerfCTD", new SI.Controls.RowClickedEventHandler(handleCTDClicked)); gridPerf.AddClickHandler("RVS_21", new SI.Controls.RowClickedEventHandler(handleRVSSharpeClicked)); gridPerf.AddClickHandler("StrategyName", new SI.Controls.RowClickedEventHandler(handleStratNameClicked)); gridPerf.AddClickHandler("PerfOneYear", new SI.Controls.RowClickedEventHandler(handle1YClicked)); gridPerf.AddClickHandler("PerfTwoYear", new SI.Controls.RowClickedEventHandler(handle2YClicked)); gridPerf.AddClickHandler("Selected", new SI.Controls.RowClickedEventHandler(handleSelectedClicked)); gridPerf.AddClickHandler("DD", new SI.Controls.RowClickedEventHandler(handleDDClicked)); innerTotalReturnAttributionDisplayChart1.Chart.EmptyChartText = "Click Strategy period to show attribution"; tbWinLength.Bind(m_extraArgs, "RetVolSharpeWindowLength", new Validators.IntValidator()); tbRollVolWin.Bind(m_extraArgs, "RollingWindowLength", new Validators.IntValidator()); tbCorrWin.Bind(m_comp, "CorrelWindow", new Validators.IntValidator()); cmbRollType.AddItems(typeof(ReturnsEval.RollingSeriesType)); cmbRollType.Bind(m_extraArgs, "RollingSeriesType", new Validators.EnumDescValidator(ReturnsEval.RollingSeriesType.Vol)); m_extraArgs.PropertyChanged += handleExtraArgsChanged; gridCorrs.ColourNegativesRed(); gridPerf.Grid.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.False; innerTotalReturnAttributionDisplayChart1.DataClicked += handleDataClicked; periodReturnsColumnChart1.ColumnClicked += handlePeriodReturnsChartClicked; periodReturnsColumnChart2.ColumnClicked += handlePeriodReturnsChartClicked; gridPerf.RowRightClicked += (a, b) => { var pr = b.ListObject as PerfRow; if (pr == null) return; getContextMenu().Items.Clear(); getContextMenu().Items.Add(new StrategyPnlDetailMenuItem(pr.StrategyName.Name, m_comp.FindEval(pr.StrategyName.Name),m_comp.GetDate(m_focus))); getContextMenu().Show(Cursor.Position); }; }