コード例 #1
0
		public ConditionalCorrelationAnalyzer(ReturnsEval.DataSeriesEvaluator eval1_, ReturnsEval.DataSeriesEvaluator eval2_)
		{
			m_eval = eval1_;
			m_eval2 = eval2_;

			// find common dates

			List<DateTime> commonDates = new List<DateTime>();
			List<DateTime> stratDates = new List<DateTime>(m_eval.Daily.Dates);
			foreach (DateTime date in m_eval2.Daily.Dates)
				if (stratDates.Contains(date))
					commonDates.Add(date);

			QuickSort.Sort<DateTime>(commonDates);

			List<double> first = new List<double>();
			List<double> second = new List<double>();

			// get the values for each of the common dates

			foreach (DateTime date in commonDates)
			{
				first.Add(m_eval.Daily.DataValueOnDate(date));
				second.Add(m_eval2.Daily.DataValueOnDate(date));
			}

			m_eval = new DataSeriesEvaluator(commonDates.ToArray(), first.ToArray(), eval1_.Name, DataSeriesType.Returns);
			m_eval2 = new DataSeriesEvaluator(commonDates.ToArray(), second.ToArray(), eval2_.Name, DataSeriesType.Returns);

			recalc();
		}
コード例 #2
0
    public void Create(ReturnsEval.DataSeriesEvaluator eval_, ReturnsEval.Period period_, int[] filterIndicies_)
    {
      dt.Rows.Clear();
      dt.Columns.Clear();
      ultraChart.ColorModel.Skin.PEs.Clear();

      if (eval_.InnerSeries.Count == 0)
        return;

      m_eval = eval_;
      m_period = period_;

      m_filterIndicies = filterIndicies_;
      if (m_filterIndicies == null)
      {
        m_filterIndicies = new int[eval_.InnerSeries.Count];
        for (int i = 0; i < m_filterIndicies.Length; ++i) m_filterIndicies[i] = i;
      }


      dt.Columns.Add("Title", typeof(string));

      for(int i=0;i<m_filterIndicies.Length;++i)
      {
        dt.Columns.Add(eval_.InnerSeries[m_filterIndicies[i]].Name, typeof(double));
        ultraChart.ColorModel.Skin.PEs.Add(new PaintElement(ColorAttribute.GetColor(i)));
      }

      ultraChart.DataSource = dt;
      ultraChart.DataBind();

      string dateFormat = EnumHelper.GetAttribute<ReturnsEval.DateDisplayFormatAttribute>(period_).Format;

      ReturnsEval.DataSeries series = eval_[period_];

      for(int j=0;j<series.Dates.Length;++j)
      {
        DataRow row = dt.NewRow();

        row[0] = series.Dates[j].ToString(dateFormat);

        for(int i=0;i<m_filterIndicies.Length;++i)
        {
          row[i + 1] = eval_.InnerSeries[m_filterIndicies[i]][period_].Data[j];
        }

        dt.Rows.Add(row);
      }

      ultraChart.DataBind();
    }
コード例 #3
0
    public void Bind(ReturnsEval.DataSeriesEvaluator evaluator_)
    {
      m_evaluator = evaluator_;
      SI.Controls.Util.ClearBindings(this);

      init();

      rebind();

      if (evaluator_.HasTag(ReturnsEval.DataSeriesEvaluator.Tag.RebalDates))
      {
        DateTime[] rebalDates = (DateTime[])evaluator_.GetTag(ReturnsEval.DataSeriesEvaluator.Tag.RebalDates);
        m_rebalDates = new List<DateTime>(rebalDates);
      }
    }
コード例 #4
0
ファイル: Calculator.cs プロジェクト: heimanhon/researchwork
    public static void Go(ComID[] commodities_, bool dispBW_=false)
    {
      var wts = CalculateWeights(commodities_);
      //wts.DisplayInGrid("weightings");
      var pnl = DoPnl(commodities_, wts);
      //pnl.DisplayInGrid("pnl");
      //return;

      var eval = new ReturnsEval.DataSeriesEvaluator("blah", ReturnsEval.DataSeriesType.Returns);

      var weightedBW = !dispBW_ ? null : DoBW(commodities_, wts);

      for (int i = 0; i < pnl.ArrayLength; ++i)
      {
        var comPnl = pnl.GetColumnValuesAsDDC(i);
        eval.AddInnerSeries(comPnl.Dates, comPnl.Data, pnl.ColumnHeadings[i]);

        if (weightedBW != null)
        {
          var chart = new SI.Controls.LineChartDataDisplay();
          chart.AddSeries(
            dates_: comPnl.Dates,
            values_: comPnl.ToCumulative().Data,
            desc_: "pnl",
            yAxisExtent_: 40,
            yLabelFormat_: "##0.0#%",
            yAxisLeft_: true);

          var com = weightedBW.GetColumnValuesAsDDC(i);

          com = new DatedDataCollectionGen<double>(wts.Dates.ToArray(), wts.Dates.Select(x => com.ValueOnDate(x)).ToArray());

          chart.AddSeries(
            dates_: com.Dates,
            values_: com.Data,
            desc_: "bw",
            yAxisExtent_: 40,
            yLabelFormat_: "##0.0###%",
            yAxisLeft_: false);

          chart.DisplayInShowForm(commodities_[i].Mnemonic);
        }
      }

      eval.Evaluate();

      eval.Display();
    }
コード例 #5
0
    public void Bind(ReturnsEval.DataSeriesEvaluator eval_, int ddIndex_, bool drawdown_)
    {
      SI.Controls.Util.ClearBindings(this);
      ReturnsEval.DrawDown dd = (drawdown_) ? eval_.Daily.DrawDowns[ddIndex_] : eval_.Daily.DrawUps[ddIndex_];
      m_eval = eval_;
      m_ddIndex = ddIndex_;
      m_isDrawdown=drawdown_;

      lblValue.Bind(dd, "ValueDown", new Validators.DoubleValidator("#0.00%"));
      lblFrom.Bind(dd, "StartDate", new Validators.DateValidator());
      lblTo.Bind(dd, "LowDate", new Validators.DateValidator());
      lblRecovery.Bind(dd, "RecoveryDate", new Validators.DateValidator());
      lblZScore.Bind(dd, "ZScore", new Validators.DoubleValidator("#0.00"));
      lblProb.Bind(dd, "Prob", new Validators.DoubleValidator("#0.00%"));
      //lblProb.Visible = false;
    }
コード例 #6
0
ファイル: TraderFX.cs プロジェクト: heimanhon/researchwork
    protected override SI.ReturnsEval.DataSeriesEvaluator doPnl(TraderArgs args_, ConstructGen<double> wts_)
    {
      ConstructGen<double> allCcys = new ConstructGen<double>(Singleton<FXIDs>.Instance.ColumnHeadings);

      for (int i = 0; i < args_.Products.Count; ++i)
      {
        ProductFX prod = (ProductFX)args_.Products[i];
        allCcys.SetColumnValues(prod.CoreProduct.ArrayIndex, wts_.Dates.ToArray(), wts_.GetColumnValues(i));
      }

      var result = ReturnsFromFXWeights.DoIt_DailyWeights(allCcys);
      var eval = new ReturnsEval.DataSeriesEvaluator("FX pnl", ReturnsEval.DataSeriesType.Returns);

      if (args_.WtIndicators.Any())
        eval.Name = string.Format("FX : {0}", args_.WtIndicators[0].ToString());
      
      eval.AddInnerSeries(result.CombinedPnl.Dates.ToArray(), result.CombinedPnl.ToArray(), result.CombinedPnl.ColumnHeadings);

      return eval;
    }
コード例 #7
0
    public void Bind(ReturnsEval.DataSeriesEvaluator eval_)
    {
      ReturnsEval.DataSeriesEvaluator[] comps;
      ultraChart.DataSource = null;
      // 1 row per drawdown
      // each col is component part (e.g. ccy)

      int numRow = Math.Min(5, eval_.Daily.DrawDowns.Length);
      int colNum = eval_.InnerSeries.Count;

      comps = new ReturnsEval.DataSeriesEvaluator[colNum];
      for (int i = 0; i < comps.Length; ++i)
      {
        comps[i] = new ReturnsEval.DataSeriesEvaluator(
          eval_.InnerSeries[i].Daily.Dates,
          eval_.InnerSeries[i].Daily.Data,
          eval_.InnerSeries[i].Name,
          eval_.DataType);
      }

      // add the columns (one for each component part)
      for (int i = 0; i < colNum; ++i)
      {
        dt.Columns.Add(eval_.InnerSeries[i].Name, typeof(double));
      }

      for (int rowIndex = 0; rowIndex < numRow; ++rowIndex)
      {
        DataRow row = dt.NewRow();
        for (int colIndex = 0; colIndex < colNum; ++colIndex)
        {
          comps[colIndex].Evaluate(eval_.Daily.DrawDowns[rowIndex].StartDate, eval_.Daily.DrawDowns[rowIndex].LowDate);
          row[colIndex] = comps[colIndex].Daily.TotalReturn * 100;
        }
        dt.Rows.Add(row);
      }

      ultraChart.DataSource = dt;
      ultraChart.Data.DataBind();
    }
コード例 #8
0
ファイル: TryStuffOut.cs プロジェクト: heimanhon/researchwork
    public static void GoMulti()
    {
      var data = DataRetriever.GetData(indexStart_: "ES", suffix_: "Index", contractIndex_: 1);

      var listOfEvals = new List<ReturnsEval.DataSeriesEvaluator>();

      foreach (var firstWindow in new[] {5, 10, 15, 20, 25, 50, })
      {
        var indic = new SI.Research.Technicals.MACross(firstWindow, firstWindow * 2);

        var signals = indic.GenerateWeightSeries(data, null);

        for (int i = 0; i < signals.Length; ++i)
          signals.Data[i] = signals.Data[i] < 0d ? -1d : 1d;

        signals = CollapseToChanges(signals);

        if (false)
        {
          var con = new ConstructGen<double>(new[] { "Signal", "CleanPrice" });
          con.SetColumnValues(0, signals);

          foreach (var date in con.Dates)
            con.SetValue(date, 1, data.ValueOnExactDate(date));

          con.DisplayInGrid("changes with price levels");
        }

        //signals.DisplayInGrid("changes");


        var pnl = GeneratePnl(data, signals);

        var eval = new ReturnsEval.DataSeriesEvaluator(pnl.Dates, pnl.Data, string.Format("ES_{0}", firstWindow), ReturnsEval.DataSeriesType.Returns);
        listOfEvals.Add(eval);

      }
      listOfEvals.Display("blah");
    }
コード例 #9
0
    public void Bind(ReturnsEval.DataSeriesEvaluator eval_, int drawdownIndex_, bool isDrawdown_)
    {
      ReturnsEval.DataSeriesEvaluator[] comps;
      // each col is component part (e.g. ccy)
      ultraChart.DataSource = null;

      int colNum = eval_.InnerSeries.Count;

      comps = new ReturnsEval.DataSeriesEvaluator[colNum];
      for (int i = 0; i < comps.Length; ++i)
      {
        comps[i] = new ReturnsEval.DataSeriesEvaluator(
          eval_.InnerSeries[i].Daily.Dates,
          eval_.InnerSeries[i].Daily.Data,
          eval_.InnerSeries[i].Name,
          eval_.DataType);
      }

      // add the columns (one for each component part)
      for (int i = 0; i < colNum; ++i)
      {
        dt.Columns.Add(eval_.InnerSeries[i].Name, typeof(double));
      }

      ReturnsEval.DrawDown dd = (isDrawdown_) ? eval_.Daily.DrawDowns[drawdownIndex_] : eval_.Daily.DrawUps[drawdownIndex_];

      DataRow row = dt.NewRow();
      for (int colIndex = 0; colIndex < colNum; ++colIndex)
      {
        comps[colIndex].Evaluate(dd.StartDate, dd.LowDate);
        row[colIndex] = comps[colIndex].Daily.TotalReturn * 100;
      }
      dt.Rows.Add(row);
      ultraChart.DataSource = dt;
      ultraChart.Data.DataBind();
    }
コード例 #10
0
    public static void Test()
    {
      const int lookback = 5;
      const WeightGeneratorType genType = WeightGeneratorType.LongestZScoreOverThreshold;

      SpreadWeightGenerator[] arr = new[]
      {
        new SpreadWeightGenerator(
          new WeightGeneratorArgs()
          {
            Lookback = lookback,
            WeightGenerationType = genType,
            MinWindowLength = 50,
            ZScoreThreshold = 1.3d
          },
          new SpreadDefinition(
            new MonthYearOffset(ComIDs.Sugar, 0, MonthCode.V),
            new MonthYearOffset(ComIDs.Sugar, 1, MonthCode.K),
            false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 40,
        //    ZScoreThreshold = 1d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.Sugar, 0, MonthCode.V),
        //    new MonthYearOffset(ComIDs.Sugar, 1, MonthCode.K),
        //    false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 40,
        //    ZScoreThreshold = 1.5d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.NatGas, 0, MonthCode.H),
        //    new MonthYearOffset(ComIDs.NatGas, 0, MonthCode.X),
        //    false)),
        new SpreadWeightGenerator(
          new WeightGeneratorArgs()
          {
            Lookback = lookback,
            WeightGenerationType = genType,
            MinWindowLength = 60,
            ZScoreThreshold = 1.2d
          },
          new SpreadDefinition(
            new MonthYearOffset(ComIDs.NymexGas, 0, MonthCode.H),
            new MonthYearOffset(ComIDs.NymexGas, 0, MonthCode.X),
            false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 90,
        //    ZScoreThreshold = 1.7d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.NatGas, 0, MonthCode.H),
        //    new MonthYearOffset(ComIDs.NatGas, 0, MonthCode.X),
        //    false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 40,
        //    ZScoreThreshold = 1.6d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.Corn, 0, MonthCode.U),
        //    new MonthYearOffset(ComIDs.Corn, 0, MonthCode.Z),
        //    false)),
        new SpreadWeightGenerator(
          new WeightGeneratorArgs()
          {
            Lookback = lookback,
            WeightGenerationType = genType,
            MinWindowLength = 60,
            ZScoreThreshold = 1.3d
          },
          new SpreadDefinition(
            new MonthYearOffset(ComIDs.Corn, 0, MonthCode.U),
            new MonthYearOffset(ComIDs.Corn, 0, MonthCode.Z),
            false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 90,
        //    ZScoreThreshold = 0.8d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.Corn, 0, MonthCode.U),
        //    new MonthYearOffset(ComIDs.Corn, 0, MonthCode.Z),
        //    false)),
        new SpreadWeightGenerator(
          new WeightGeneratorArgs()
          {
            Lookback = lookback,
            WeightGenerationType = genType,
            MinWindowLength = 40,
            ZScoreThreshold = 1.5d
          },
          new SpreadDefinition(
            new MonthYearOffset(ComIDs.Wheat, 0, MonthCode.U),
            new MonthYearOffset(ComIDs.Wheat, 0, MonthCode.Z),
            false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 50,
        //    ZScoreThreshold = 1.3d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.Wheat, 0, MonthCode.U),
        //    new MonthYearOffset(ComIDs.Wheat, 0, MonthCode.Z),
        //    false)),
        //new SpreadWeightGenerator(
        //  new WeightGeneratorArgs()
        //  {
        //    Lookback = lookback,
        //    WeightGenerationType = genType,
        //    MinWindowLength = 70,
        //    ZScoreThreshold = 1.1d
        //  },
        //  new SpreadDefinition(
        //    new MonthYearOffset(ComIDs.Wheat, 0, MonthCode.U),
        //    new MonthYearOffset(ComIDs.Wheat, 0, MonthCode.Z),
        //    false)),
        new SpreadWeightGenerator(
          new WeightGeneratorArgs()
          {
            Lookback = lookback,
            WeightGenerationType = genType,
            MinWindowLength = 50,
            ZScoreThreshold = 1.6d
          },
          new SpreadDefinition(
            new MonthYearOffset(ComIDs.RBOB, 0, MonthCode.J),
            new MonthYearOffset(ComIDs.RBOB, 0, MonthCode.U),
            false)),
      };

      var comb = new SpreadWeightGeneratorCombiner(arr) {NumDaysForCovariance = 42, TargetVol = 0.06};
      comb.Go();

      {
        var combinedPnl = new ConstructGen<double>(arr.Length);

        combinedPnl.ColumnHeadings =
          arr.Select(x => string.Format("{0} / {1} / {2}", x.Spread, x.Args.MinWindowLength, x.Args.ZScoreThreshold))
            .ToArray();

        for (int i = 0; i < arr.Length; ++i)
          combinedPnl.SetColumnValues(i, arr[i].GetCombinedPnl());

        if (combinedPnl.NeedsToSortKeys())
          combinedPnl.SortKeys();


        var eval = new ReturnsEval.DataSeriesEvaluator("Combined", ReturnsEval.DataSeriesType.Returns);
        eval.AddInnerSeries(combinedPnl.Dates.ToArray(), combinedPnl.ToArray(), combinedPnl.ColumnHeadings);
        eval.Display("Combined");

        combinedPnl.SumRows().ToCumulative().DisplayLineChart("combined pnl of scaled weights");
      }

    }
コード例 #11
0
    public static void EquityCTAEnviron()
    {
      //var copperIndex = Singleton<ComIDs>.Instance.First(x => x.Name.Equals("Copper")).ArrayIndex;

      //var index =
      //  Singleton<ComIndexPrices>.Instance.GetData(DataConstants.DATA_START, DateTime.Today)
      //    .GetColumnValuesAsDDC(copperIndex);

      //var index = EquityIndexOfSorts();

      //var countries = new[] { "Germany", "US" };
      //var instruments =
      //  Singleton<DBFut_Chains>.Instance.Where(
      //    x => x.AssetClass.Equals("Fixed Income") && countries.Any(y => y.Equals(x.Country))).ToArray();

      var instruments=
        Singleton<DBFut_Chains>.Instance.Where(
          x => x.AssetClass.Equals("Equities")).ToArray();

      foreach (var v in instruments)
      {
        var px = Singleton<DBFut_ChainGenericCache>.Instance.GetGenericSeries(v);
        showCombinedStdevFromMean(px, v.BbgTicker, new[] {21, 42, 63, 89, 100, 126, 150, 189, 252, 512});
      }
      return;

      //var instruments = Singleton<DBFut_Chains>.Instance.Where(x => x.AssetClass.Equals("Equities")).ToArray();

      var con = new ConstructGen<double>(instruments.Select(x => x.BbgTicker).ToArray());

      for(int i=0;i<instruments.Length;++i)
      {
        var index = Singleton<DBFut_ChainGenericCache>.Instance.GetGenericSeries(instruments[i]);
        if (index == null || index.Length == 0) continue;

        var prop = getMADiffPercentiles(index, new PercDiffArgs[]
      {
        //new PercDiffArgs() {MA1 = 21, MA2 = 42, PercWindow = 126},
        //new PercDiffArgs() {MA1 = 21, MA2 = 63, PercWindow = 126},
        //new PercDiffArgs() {MA1 = 21, MA2 = 89, PercWindow = 126},
        new PercDiffArgs() {MA1 = 42, MA2 = 89, PercWindow = 126},
        new PercDiffArgs() {MA1 = 42, MA2 = 126, PercWindow = 126},
        new PercDiffArgs() {MA1 = 63, MA2 = 126, PercWindow = 126},
        new PercDiffArgs() {MA1 = 89, MA2 = 180, PercWindow = 126},
        new PercDiffArgs() {MA1 = 89, MA2 = 252, PercWindow = 126},
        new PercDiffArgs() {MA1 = 126, MA2 = 252, PercWindow = 126},

        //new PercDiffArgs() {MA1 = 21, MA2 = 42, PercWindow = 252},
        //new PercDiffArgs() {MA1 = 21, MA2 = 63, PercWindow = 252},
        //new PercDiffArgs() {MA1 = 21, MA2 = 89, PercWindow = 252},
        new PercDiffArgs() {MA1 = 42, MA2 = 89, PercWindow = 252},
        new PercDiffArgs() {MA1 = 42, MA2 = 126, PercWindow = 252},
        new PercDiffArgs() {MA1 = 63, MA2 = 126, PercWindow = 252},
        new PercDiffArgs() {MA1 = 89, MA2 = 180, PercWindow = 252},
        new PercDiffArgs() {MA1 = 89, MA2 = 252, PercWindow = 252},
        new PercDiffArgs() {MA1 = 126, MA2 = 252, PercWindow = 252},

        new PercDiffArgs() {MA1 = 42, MA2 = 89, PercWindow = 504},
        new PercDiffArgs() {MA1 = 42, MA2 = 126, PercWindow = 504},
        new PercDiffArgs() {MA1 = 63, MA2 = 126, PercWindow = 504},
        new PercDiffArgs() {MA1 = 89, MA2 = 180, PercWindow = 504},
        new PercDiffArgs() {MA1 = 89, MA2 = 252, PercWindow = 504},
        new PercDiffArgs() {MA1 = 126, MA2 = 252, PercWindow = 504},
      });

        //var c = new SI.Controls.LineChartDataDisplay();

        //c.AddSeries(index, "index", 40, "##0.0#");
        //c.AddSeries(dates_: prop.Dates,
        //  values_: prop.Data,
        //  desc_: "prop",
        //  yAxisExtent_: 40,
        //  yLabelFormat_: "##0.0#",
        //  color_: System.Drawing.Color.Orange,
        //  yAxisLeft_: false);

        //c.DisplayInShowForm("blah");

        con.SetColumnValues(i, index.ToReturns().MultiplyBy(prop));
      }
      con.SortKeys();

      var eval = new ReturnsEval.DataSeriesEvaluator("combined", DataSeriesType.Returns);
      eval.AddInnerSeries(con.Dates.ToArray(), con.ToArray(), con.ColumnHeadings);
      eval.Display();

    }
コード例 #12
0
    public static ReturnsEval.DataSeriesEvaluator DoCommodsPnl(ConstructGen<double> wts_, string name_)
    {
      var returns = ReturnsFromComWeights.DoIt_DailyWeights(wts_);

      var eval = new ReturnsEval.DataSeriesEvaluator(name_, DataSeriesType.Returns);
      eval.AddInnerSeries(returns.CombinedPnl.Dates.ToArray(), returns.CombinedPnl.ToArray(),
        returns.CombinedPnl.ColumnHeadings);

      return eval;
    }
コード例 #13
0
    public static ReturnsEval.DataSeriesEvaluator DoFXPnl(ConstructGen<double> wts_, string name_,double mult_=1d)
    {
      var returns = ReturnsFromFXWeights.DoIt_DailyWeights(wts_);

      var combReturns = returns.CombinedPnl.MultiplyBy(mult_);

      var eval = new ReturnsEval.DataSeriesEvaluator(name_, ReturnsEval.DataSeriesType.Returns);
      eval.AddInnerSeries(combReturns.Dates.ToArray(), combReturns.ToArray(),
        combReturns.ColumnHeadings);

      return eval;
    }
コード例 #14
0
 protected override void OnClick(EventArgs e)
 {
   ReturnsEval.DataSeriesEvaluator eval = new ReturnsEval.DataSeriesEvaluator(m_analyzer.Name, ReturnsEval.DataSeriesType.Returns);
   eval.AddInnerSeries(m_analyzer.Performance.Dates.ToArray<DateTime>(), m_analyzer.Performance.ToArray(), m_analyzer.SourceWts.ColumnHeadings);
   ReturnsEvalDisplay.ReturnsDisplay rd = new ReturnsEvalDisplay.ReturnsDisplay();
   rd.RebalDates = m_analyzer.SourceWts.Dates;
   rd.Bind(eval);
   SI.Controls.ShowForm.Show(rd, eval.Name);
 }
コード例 #15
0
ファイル: TryStuffOut.cs プロジェクト: heimanhon/researchwork
    public static void Go_multiMA3Complex_MR(string futureStart_, string suffix_, int contractIndex_)
    {
      //var data = DataRetriever.GetData("ES", "Index", contractIndex_);
      var data = DataRetriever.GetData(futureStart_, suffix_, contractIndex_);
      DataRetriever.ChartData(futureStart_, suffix_, contractIndex_);

      //data = Singleton<SI.Data.FXSpots>.Instance.GetData(new DateTime(2003, 1, 1), DateTime.Today).GetColumnValuesAsDDC(SI.Data.Currency.TWD.ArrayIndex);
      //data = BbgTalk.HistoryRequester.GetHistory(new DateTime(2009, 1, 1), "ES1 Index", "PX_LAST", true);

      var listOfEvals = new List<ReturnsEval.DataSeriesEvaluator>();

      var mas = new int[] {5, 10, 15, 20, 25, 30, 35, 40, 45, 50};

      mas = new int[] {15};

      foreach (var firstWindow in mas )
      {
        var args = new SI.Research.Technicals.MA3ComplexArgs()
        {
          MA1Win = firstWindow,
          MA2Win = firstWindow*2,
          MA3Win = firstWindow*4,
          Long = -1d,
          Long_1MA = -0.5d,
          Long_2MA = 0.5d,
          Short = 1d,
          Short_1MA = 0.5d,
          Short_2MA = -0.5d
        };

        var indic = new SI.Research.Technicals.MA3ComplexIndicator(args);

        var signals = indic.GenerateWeightSeries(data, null);

        signals = CollapseToChanges(signals);

        if (true)
        {
          var con = new ConstructGen<double>(new[] { "Signal", "CleanPrice" });
          con.SetColumnValues(0, signals);

          foreach (var date in con.Dates)
            con.SetValue(date, 1, data.ValueOnExactDate(date));

          con.DisplayInGrid("changes with price levels");
        }

        //signals.DisplayInGrid("changes");


        var pnl = GeneratePnl(data, signals);

        var eval = new ReturnsEval.DataSeriesEvaluator(pnl.Dates, pnl.Data, string.Format("{2}_{0}_{1}", contractIndex_, args.ToString(),futureStart_), ReturnsEval.DataSeriesType.Returns);
        listOfEvals.Add(eval);
        //eval.Display(eval.Name);

        //pnl.ToCumulative().DisplayLineChart("ES");
      }
      listOfEvals.Display("blah");
    }
コード例 #16
0
ファイル: TraderGen.cs プロジェクト: heimanhon/researchwork
    protected override ReturnsEval.DataSeriesEvaluator doPnl(TraderArgs args_, ConstructGen<double> wts_)
    {
      var priceReturns =
        args_.AllProductPrices(fillInGapsWithPrevious_: true)
          .ToReturns(args_.Products.Select(x => x.Convention).ToArray());


      var stratReturns = new ConstructGen<double>(priceReturns.ColumnHeadings);

      double[] appliedWeights = null;

      for (int i = 0; i < priceReturns.Dates.Count; ++i)
      {
        var date = priceReturns.Dates[i];

        var priceReturnsArr = priceReturns.GetValues(date);

        if (appliedWeights != null)
        {
          for (int j = 0; j < priceReturnsArr.Length; ++j)
            stratReturns.SetValue(date, j, appliedWeights[j]*priceReturnsArr[j]);
        }

        if (wts_.Dates.Contains(date))
        {
          appliedWeights = wts_.GetValues(date);
        }
      }

      var eval = new ReturnsEval.DataSeriesEvaluator("Gen pnl from weights", ReturnsEval.DataSeriesType.Returns);
      eval.AddInnerSeries(stratReturns.Dates.ToArray(), stratReturns.ToArray(), stratReturns.ColumnHeadings);

      return eval;
    }
コード例 #17
0
    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());
    }