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(); }
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(); }
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); } }
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(); }
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; }
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; }
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(); }
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"); }
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(); }
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"); } }
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(); }
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; }
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; }
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); }
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"); }
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; }
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()); }