public void CreateFromFileList(IEnumerable<string> fileList_) { IList<WtsSeriesAnalyzer> list = new List<WtsSeriesAnalyzer>(); foreach (string f in fileList_) { KeyValuePair<ConstructGen<double>, ReturnsEval.DataSeriesEvaluator> kvp = ExtensionMethods.ReadFromDisk<KeyValuePair<ConstructGen<double>, ReturnsEval.DataSeriesEvaluator>>(f); if (kvp.Key == null) continue; kvp.Key.SortKeys(); WtsSeriesAnalyzer wan = new WtsSeriesAnalyzer( kvp.Value.Name, expandToFullUniverse(kvp.Key), kvp.Value.GetInnerDailyAsConstruct(), delegate(DateTime date_) { return Singleton<CovarianceSource>.Instance.GetCovarianceForDateElesePrevious(date_); } ); list.Add(wan); } if (list.Count > 0) Create(list); }
public void Create(WtsSeriesAnalyzer analyzer_, DateTime? startDate_=null, DateTime? endDate_=null) { m_analyzer = analyzer_; m_startDate = startDate_; m_endDate = endDate_; if (m_wtsChart == null) { m_wtsChart = new DataCollectionDisplay(); m_wtsChart.Dock = DockStyle.Fill; panel3.ClientArea.Controls.Add(m_wtsChart); } if (m_perfAndWeightsChart == null) { m_perfAndWeightsChart = new ZoneChart(); m_perfAndWeightsChart.Dock = DockStyle.Fill; panel1.ClientArea.Controls.Add(m_perfAndWeightsChart); } if (m_c2vWeightsChart == null) { m_c2vWeightsChart = new ZoneChart(); m_c2vWeightsChart.Dock = DockStyle.Fill; panel2.ClientArea.Controls.Add(m_c2vWeightsChart); } if (m_monthlyPnlChart == null) { m_monthlyPnlChart = new SimpleWtsColumnChart(); m_monthlyPnlChart.Dock = DockStyle.Fill; panel4.ClientArea.Controls.Add(m_monthlyPnlChart); } if (m_annotatedChart == null) { m_annotatedChart = new LineChartWithAnnotations(); m_annotatedChart.Dock = DockStyle.Fill; panel5.ClientArea.Controls.Add(m_annotatedChart); } ultraListBar1.Groups[0].Items.Clear(); for(int i=0;i<m_analyzer.SourceWts.ColumnHeadings.Length;++i) { string s = m_analyzer.SourceWts.ColumnHeadings[i]; //Currency c = Singleton<FXIDs>.Instance[s]; Infragistics.Win.UltraWinListBar.Item item = ultraListBar1.Groups[0].Items.Add(key: s, text: s); item.Tag = i; } }
public void Create(WtsSeriesAnalyzer analyzer_, DateTime? startDate_=null, DateTime? endDate_=null) { m_startDate = startDate_; m_endDate = endDate_; try { add(analyzer_, pnlG10, FXGroup.G10); add(analyzer_, pnlEMEA, FXGroup.EMEA); add(analyzer_, pnlLATAM, FXGroup.LATAM); add(analyzer_, pnlNJA, FXGroup.ASIA); } catch { } }
private void add(WtsSeriesAnalyzer analyzer_, SI.Controls.Panel panel_, FXGroup group_) { ZoneChart zc = new ZoneChart(); zc.Dock = DockStyle.Fill; panel_.ClientArea.Controls.Add(zc); double[] pnl = new double[analyzer_.Performance.Dates.Count]; double[] wts = new double[analyzer_.SourceWts.Dates.Count]; for (int i = 0; i < analyzer_.Performance.ArrayLength; ++i) { Currency ccy = Singleton<FXIDs>.Instance[i]; if (ccy.IsGroup(group_) == false) continue; for (int j = 0; j < pnl.Length; ++j) { pnl[j] += analyzer_.Performance.GetValue(analyzer_.Performance.Dates[j], i); } for (int j = 0; j < wts.Length; ++j) { wts[j] += analyzer_.SourceWts.GetValue(analyzer_.SourceWts.Dates[j], i); } DatedDataCollectionGen<double> perf = new DatedDataCollectionGen<double>(analyzer_.Performance.Dates.ToArray(), pnl); DatedDataCollectionGen<double> wwww = new DatedDataCollectionGen<double>(analyzer_.SourceWts.Dates.ToArray(), wts); if (m_startDate != null && m_endDate != null) { perf = perf.GetSubValues(m_startDate.Value, m_endDate.Value); wwww = wwww.GetSubValues(m_startDate.Value, m_endDate.Value); } zc.Create( new DatedDataCollectionGen<double>(perf.Dates, perf.Data.Cumulative()), wwww, new ZoneDefinition[] { new ZoneDefinition("Short",double.MinValue,0d,Color.IndianRed), new ZoneDefinition("Long",0d,double.MaxValue,Color.LightGreen) }); } }
public ShowAsLongShortPortfolioMenuStripItem(WtsSeriesAnalyzer analyzer_) : base(analyzer_) { Text = string.Format("Split {0} performance into that achieved by long/short positions seperately", analyzer_.Name); }
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)); }
public RestrictWeightsMenuStripItem(WtsSeriesAnalyzer analyzer_) : base(analyzer_) { Text = string.Format("Apply weight restriction policy to weights..."); }
public ShowWeightsAnalysis(WtsSeriesAnalyzer analyzer_, bool isFX_) : base(analyzer_) { Text = string.Format("Show {0} weights and performance analysis", analyzer_.Name); m_isFX = isFX_; }
public ShowWeightsMenuStrip(WtsSeriesAnalyzer analyzer_) : base (analyzer_) { Text = string.Format("Show {0} weights in grid", analyzer_.Name); }
public ShowReturnsMenuStrip(WtsSeriesAnalyzer analyzer_) : base(analyzer_) { Text = string.Format("Show {0} return detail...", analyzer_.Name); }
public new void Dispose() { m_analyzer = null; }
public BaseMenuItem(WtsSeriesAnalyzer analyzer_) { m_analyzer = analyzer_; }
public void Create(WtsSeriesAnalyzer analyzer_) { Create(new List<WtsSeriesAnalyzer>(new WtsSeriesAnalyzer[] { analyzer_ })); }
public void Create(WtsSeriesAnalyzer analyzer_, DateTime? startDate_=null, DateTime? endDate_=null) { var wtsDisplay = new SimpleWtsColumnChart(); var c2vDisplay = new SimpleWtsColumnChart(); var pnlDisplay = new SimpleWtsColumnChart(); wtsDisplay.Dock = DockStyle.Fill; panel1.ClientArea.Controls.Add(wtsDisplay); c2vDisplay.Dock = DockStyle.Fill; panel2.ClientArea.Controls.Add(c2vDisplay); pnlDisplay.Dock = DockStyle.Fill; panel3.ClientArea.Controls.Add(pnlDisplay); ConstructGen<double> sourceWts = analyzer_.SourceWts; ConstructGen<double> sourceC2V = analyzer_.SourceC2V; ConstructGen<double> perf = analyzer_.Performance; if (startDate_ != null && endDate_ != null) { sourceWts = sourceWts.GetSubValues(startDate_.Value,endDate_.Value); sourceC2V = sourceC2V.GetSubValues(startDate_.Value, endDate_.Value); perf = perf.GetSubValues(startDate_.Value, endDate_.Value); } { IDictionary<string, double[]> wts = new Dictionary<string, double[]>(); for (int i = 0; i < sourceWts.ArrayLength; ++i) { double[] w = sourceWts.GetColumnValues(i); double[] vals = new double[] { w.Min(), w.Average(), w.Max() }; wts.Add(sourceWts.ColumnHeadings[i], vals); } wtsDisplay.Create<string, string>(wts, new string[] { "Min", "Avg", "Max" }); } { IDictionary<string, double[]> c2v = new Dictionary<string, double[]>(); for (int i = 0; i < sourceC2V.ArrayLength; ++i) { double[] w = sourceC2V.GetColumnValues(i); double[] vals = new double[] { w.Min(), w.Average(), w.Max() }; c2v.Add(sourceC2V.ColumnHeadings[i], vals); } c2vDisplay.Create<string, string>(c2v, new string[] { "Min", "Avg", "Max" }); } { double[] ds=new double[perf.ArrayLength]; for(int i=0;i<ds.Length;++i) ds[i]=perf.GetColumnValues(i).Sum(); pnlDisplay.Create(analyzer_.SourceWts.ColumnHeadings, ds); } }