Working through the columns output of an optimization run provides sufficient information much of the time, although sometimes it is useful to view the individual tables and graphs from the report explorer for each combination created in the optimization set.
Let’s say a simple run was optimizing Variable X, where X values range from 1 to 10, creating 10 backtests.
I can’t seem to find where in each full backtest generated in report explorer I can identify which test was with setting X = 2 vs X = 6, etc.; perhaps it is right in front of me. While these can be matched “manually” on smaller runs, but it becomes tricky on large/complicated optimizations.
If not already available, any code lines that I can insert that would write into the settings output tab of the full report the variable of X in that run?
Thanks very much
I don’t understand why one would
- make optimization slower by enabling generation of detailed reports for each optimization step (makes optimization 2-3 times slower)
- spend so many time opening individual reports
while all this information is available from optimization result list in organized table format and it can be looked up orders of magnitude faster.
It makes no sense to me. Why wait for optimization 3 times longer and click so many times to open so many reports?
It is faster just to run backtest for few interesting combinations if you wish to see charts than to generate zillions of reports that would never be read at all. Save time, energy and protect the earth.
But if you really want to waste electricity and drink 10 more cups of coffee you can do so:
x = Optimize("x", 1, 1, 10, 1 );
/* Now custom-backtest procedure follows */
if( Status("action") == actionPortfolio )
bo = GetBacktesterObject();
bo.Backtest(); // run default backtest procedure
// Here we add custom metric to backtest report
bo.AddCustomMetric( "Your Opt X", x );
Still this will be visible in the Report Viewer (on the bottom of “Statistics” page), not in Report Explorer. Report Explorer has fixed set of columns and can’t display custom metrics because each report potentially can have DIFFERENT metrics and that would not be possible to display in table (since column header is shared/common)
Thanks for the quick response. Let me clarify why I think it is worth the electrons. There are times when the summary metrics are not sufficient in summarizing what I want to evaluate, and I want to drill into a particularly backtest to view its equity curve, monthly results, etc. On an optimization run, with the right output setting, I can do that by drilling down into the full reports. However, I struggle with knowing which full report is “linked” to which iteration setting of variable “X”.
Writing the value of X via addcustommetric might be the best path, thanks for the idea.