예제 #1
0
    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");
    }
예제 #2
0
      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_);
        }
      }
예제 #3
0
    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;
    }
예제 #4
0
    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);
      };
    }