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

    }