The Walk Forward Optimzation is failing when reading a null periods.get(0).runStatData.
maxDD = periods.isEmpty() ? 0 : periods.get(0).runStatData.getDouble(StatsKey.DRAWDOWN);
The Code Fix is to check if the runStatData is not null before reading the value. I've done the fixes but SQX is overwriting the code to the original version.
double maxDD = 0;
if (periods.get(0).runStatData != null)
maxDD = periods.isEmpty() ? 0 : periods.get(0).runStatData.getDouble(StatsKey.DRAWDOWN);
I've attached the fixes for all Walk Forward data columns. Could you please apply this to
Log
10:05:47.364 [Thread-7515] INFO c.s.t.project.ProgressEngine - Pre-Validation : Strategy 4.3.193 Error Cannot invoke "com.strategyquant.tradinglib.SQStats.getDouble(String)" because "java.util.ArrayList.get(int).runStatData" is null
10:05:47.365 [Thread-7515] ERROR OptimizeTask - Optimization error in strategy Strategy 4.3.193
java.lang.NullPointerException: Cannot invoke "com.strategyquant.tradinglib.SQStats.getDouble(String)" because "java.util.ArrayList.get(int).runStatData" is null
at SQ.Columns.WalkForward.WFMaxDDbyRun.compute(WFMaxDDbyRun.java:19) ~[na:na]
at com.strategyquant.tradinglib.WalkForwardColumn.compute(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.WalkForwardResult.computeStats(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.WalkForwardResult.computeRobustnessScore(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.optimization.WalkForwardMatrixResult.computeRobustnessResults(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.optimization.OptimizationEngineWF.optimizeWF(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.optimization.OptimizationEngine.optimize(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.plugin.Task.impl.Optimize.OptimizeTask.runStandardOptimization(Unknown Source) ~[na:na]
at com.strategyquant.plugin.Task.impl.Optimize.OptimizeTask.optimizeStrategy(Unknown Source) ~[na:na]
at com.strategyquant.plugin.Task.impl.Optimize.OptimizeTask.start(Unknown Source) ~[na:na]
at com.strategyquant.tradinglib.project.SQProject$1.run(Unknown Source) ~[SQTradingLib.jar:na]
Also, given the slow turnaround of fixing the defects, can you remove the logic of overwriting any code fixes on the SQX Code snippets?
Status changed from New to Fixed
Attachment image-0.png added
Please download the latest stable version of SQX from our site here https://strategyquant.com/download/