private void handleGridHeaderClick(object sender, Infragistics.Win.UltraWinGrid.BandEventArgs e_) { if (e_.Band.SortedColumns.Count == 0) return; string key = e_.Band.SortedColumns[0].Key; switch (key) { case "Perf1Day": m_focus = SI.ReturnsEval.EvalComparer.TDType.OneDay; break; case "PerfWTD": m_focus = SI.ReturnsEval.EvalComparer.TDType.WeekToDate; break; case "PerfMTD": m_focus=SI.ReturnsEval.EvalComparer.TDType.MonthToDate; break; case "PerfQTD": m_focus = SI.ReturnsEval.EvalComparer.TDType.QuarterToDate; break; case "PerfYTD": m_focus = SI.ReturnsEval.EvalComparer.TDType.YearToDate; break; case "PerfCTD": m_focus = SI.ReturnsEval.EvalComparer.TDType.CustomToDate; break; case "PerfInception": m_focus = SI.ReturnsEval.EvalComparer.TDType.Inception; break; case "PerfOneYear": m_focus = SI.ReturnsEval.EvalComparer.TDType.OneYear; break; case "PerfTwoYear": m_focus = SI.ReturnsEval.EvalComparer.TDType.TwoYear; break; } reloadCumulatives(); reloadRollingSeries(); }
public void DoEmail(string subject_, string fromAddress_, List<string> recipients_, List<string> dailyAttInc_, List<string> mtdAttInc_, AddToEmailDelegate adder_) { MailMessage msg = new MailMessage(); msg.From = new MailAddress(fromAddress_); msg.Subject = subject_; foreach (string f in recipients_) msg.To.Add(new MailAddress(f)); msg.IsBodyHtml = true; StringBuilder bodyBuilder = new StringBuilder(); bodyBuilder.Append(string.Format("Model performance as of fix on {0}<p/>", m_comp.AsOfDate.ToString("dd-MMM-yyyy"))); //bodyBuilder.Append(SI.BindingListExtensions.ToHTML<PerfRow>(m_perfRows)); bodyBuilder.Append("<p/>"); Dictionary<string, string> mapOfResources = new Dictionary<string, string>(); string path, key; m_focus = SI.ReturnsEval.EvalComparer.TDType.MonthToDate; reloadCumulatives(); path = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache); path = path + "\\" + string.Format("{0}_cumPnls", DateTime.Today.ToString("ddMMyy")); dataCollectionDisplay1.Chart.SaveTo(path, System.Drawing.Imaging.ImageFormat.Bmp); key = "CumPnl"; LinkedResource res = new LinkedResource(path); res.ContentId = key; mapOfResources.Add(key, path); bodyBuilder.Append(string.Format("MTD Cumulative Pnls:<br/> <img src=cid:{0}><p/>", key)); if (dailyAttInc_ != null) foreach (string stratName in dailyAttInc_) { ReturnsEval.DataSeriesEvaluator e = m_comp.FindEval(stratName); if (e == null) continue; e.Evaluate(m_comp.GetDate(SI.ReturnsEval.EvalComparer.TDType.OneDay), m_comp.AsOfDate); innerTotalReturnAttributionDisplayChart1.Bind(e, SI.ReturnsEval.Period.Daily); path = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache); path = path + "\\" + string.Format("{0}_1D_{1}.bmp", e.Name, DateTime.Today.ToString("ddMMyy")); innerTotalReturnAttributionDisplayChart1.Chart.SaveTo(path, System.Drawing.Imaging.ImageFormat.Bmp); key = string.Format("{0}_1D", e.Name); bodyBuilder.Append(string.Format("{0} 1D attribution:<br/> <img src=cid:{1}><p/>", e.Name, key)); mapOfResources.Add(key, path); } if (mtdAttInc_ != null) foreach (string stratName in mtdAttInc_) { ReturnsEval.DataSeriesEvaluator e = m_comp.FindEval(stratName); if (e == null) continue; e.Evaluate(m_comp.GetDate(SI.ReturnsEval.EvalComparer.TDType.MonthToDate), m_comp.AsOfDate); innerTotalReturnAttributionDisplayChart1.Bind(e, SI.ReturnsEval.Period.Daily); path = Environment.GetFolderPath(Environment.SpecialFolder.InternetCache); path = path + "\\" + string.Format("{0}_MTD_{1}.bmp", e.Name, DateTime.Today.ToString("ddMMyy")); innerTotalReturnAttributionDisplayChart1.Chart.SaveTo(path, System.Drawing.Imaging.ImageFormat.Bmp); key = string.Format("{0}_MTD", e.Name); bodyBuilder.Append(string.Format("{0} MTD attribution:<br/> <img src=cid:{1}><p/>", e.Name, key)); mapOfResources.Add(key, path); } bodyBuilder.Append(string.Format("<p/>Correlation matrix over {0} days:<br/>", m_comp.CorrelWindow.ToString())); bodyBuilder.Append(SI.DatatableToHtml.ConvertToHTML(dtCorrels, "##0.00%;(##0.00%);-")); //bodyBuilder.AppendLine(string.Format("Generated by process run by '{0}'<br/>", Common.InvestmentTeam.GetCurrentUserInfo().FullName)); if (adder_ != null) adder_(bodyBuilder); AlternateView htmlView = AlternateView.CreateAlternateViewFromString(bodyBuilder.ToString(), null, "text/html"); foreach (string k in mapOfResources.Keys) { LinkedResource lr = new LinkedResource(mapOfResources[k]); lr.ContentId = k; htmlView.LinkedResources.Add(lr); } msg.AlternateViews.Add(htmlView); //msg.Body = bodyBuilder.ToString(); Emailer.GetClient().Send(msg); }
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); }; }