MultiWalk Beta Change Log

Release Oct 7 2023

IMPORTANT:  Be sure to import the MULTIWALK USER FUNCTIONS.ELD file with this release and let it overwrite all WFSafe functions.

  • Previous release incomplete: When I made the previous release (Sep 26), some features were left out (such as EasyLanguage Code button on equity graph pop-up screen).  This release includes those, too!
  • WFSafe functions legacy issue:  It would appear that a version of the following functions were released to the “wild” back in 2019 that should not have been released:  WFSafe_AverageFC, WFSafe_SummationFC and WFSafe_AvgTrueRange.  If you have used these functions in your strategies, please be sure to review your strategies after importing this release to ensure they are performing as expected.  The 2019 preliminary versions worked correctly when the length parameter did not change, but did not work correctly when the length parameters changed in walkforward strategies.  These 2023 versions of the functions yield the same results as their slower counterparts Average, Summation and AvgTrueRange, whether the length parameter is held constant or changes.
  • Least DD and Least Avg DD Fitness Function Change:  I found some situations using the fitness functions Least DD and Least Avg DD where they would select iterations that had zero trades.  For these functions, we want the negative value that is closest to zero, but NOT zero.  If an iteration had zero trades, these functions would choose that iteration as “better” since the drawdown was zero, even though a high net profit and low drawdown iteration could have been chosen instead.  MultiWalk will now ignore zero trade iterations for Least DD and Least Avg DD fitness functions.  This change has the potential to change your strategy results.  If you find that this change has a negative impact on your strategy, enable the following option on the Developer’s screen to restore MultiWalk’s original evaluation logic:  Settings->Developer, Use legacy evaluation and floating point method when selecting iterations for walkforward strategy.
  • Non-walkforward (optimize only) strategies were not honoring fitness function selection process.  Therefore only the first iteration was being displayed in the reports.  Fitness functions can now be used on non-walkforward strategies.
  • Non-walkforward (optimize only) strategies no longer need a dummy variable entry or at least 3 iterations.  Variable names can now be left blank on the Settings->Strategy Code screen.
  • Strategies that include SetStopContract are no longer blocked from using the SetStopContract keyword.  A popup window will be displayed instead with a link to Kevin’s TS bug report page.  Please review his information if you use SetStopContract in your strategy to ensure that it will work correctly:  https://kjtradingsystems.com/tradestation-bugs.html   (password: workshopKJ)

Release Sep 26 2023

  • Added EasyLanguage Code button to the Equity Chart/Metrics data screen. 
  • Added number of trades/year to Equity Chart/Metrics data screen. This makes it easier to update Kevin’s Monte Carlo spreadsheet.
  • The error recovery system has been reworked.  It had several issues, such as not allowing a project to be resumed if there was a loss of Internet for the entire project run or other certain errors occurred, such as TradeStation becoming unresponsive during an optimization task. 
  • If running an optimize-only NON-walkforward strategy that had optimized input parameters, the optimized parameter values were not being saved as the first (and only) walkforward period and could not, consequently, be viewed. 
  • Cleaned up error messages. 
  • When a previously run project is loaded, progress log now displays total run time and elapsed times for each entry.  Previously these were blank or zero. 

Release Sep 15 2023

  • Feature addition: Non-walkforward (optimize only) strategies are now fully supported.  This option enables you to leverage MultiWalk’s multi-symbol, multi-time frame and performance metric reporting capabilities for non-walkforward purposes.  No need to set “dummy” input variables as before.  Just enable the “Perform optimizations ONLY” option on MultiWalk operations screen.  You can have zero to as many optimized input variables as you want.  The strategy will be optimized as usual using all symbols and time frames.  If you have no input variables, the strategy will still be run across all symbols and time frames, but will simply be run as 1 iteration.  Walkforward will not be applied to the optimization, however all MultiWalk performance metrics will be calculated on the entire data range of the resultant optimization.
  • Feature addition: When a row in a report is clicked, the row will be highlighted to make it easier to visually keep track of the row being evaluated when scrolling horizontally through columns of metrics.
  • Individual ranges, such as “1,4,5” for fixed input parameters were giving a parsing/syntax error.  This type of range description should have been allowed.
  • The previous release added a safety check to prevent reports being generated while a project was running.  Unfortunately this also prevented reports from being automatically generated at the end of the project.  The “A walkforward project is currently running…” error box would be displayed instead.
  • Optimization error recovery is more robust. If any one individual optimization fails to optimize four times, the entire project will now be aborted. Without this change, the project would continue to completion even if every optimization failed from that point forward. This meant that the project could not be resumed since MultiWalk thought it completed.
  • The input variables in strategy logic code was not parsed correctly when using curly brace comments.
  • Fixed backwards compatibility issue for systems running TS Update 65, 68 and 69.  MultiWalk would not verify and gave “acceptsreturn is not a member of class elsystem.windows.forms.textbox”.
  • A TS Update changed the behavior of their TextBox control.  If you pasted logic code in the Settings->Strategy Code box that contained MultiWalk code, the user logic code portion was correctly identified, but all end-of-line characters were removed.  This resulted in one massive block of text rather than readable code.
  • In some situations you may receive the error “Internal Error: SetVariableDefinition | Incorrectly formatted variable definition” when using Algo Building Blocks/Fixed Input Parameters.
  • In some situations using the “Calculate Walkforward in TradeStation’ option, you may receive the error: “Strategy Error: Walkforward optimization could not READ database. DB error 101 (no more rows available)”
  • I left the DLL debug output mode turned on in one of the MultiWalk EL functions — MultiWalkStrategyOptimization.  This caused the creation of debug large output files in the MultiWalk/Program Beta folder during optimization. Import MULTIOPT USER FUNCTIONS.ELD to correct.  You can safely delete all files that begin with “DLLDebug” from the MultiWalk program folder.

Release Aug 26 2023

  • Added “Clear Filters” button to report filter screen.
  • If running an Algo BB/Fixed Parameter project with the “calculate walkforward in TS” option enabled, the project would fail with an error “cannot open database” when attempting to access the walkforward database while the walkforward strategy was being run through TradeStation.
  • An Algo BB/Fixed Parameter project would terminate prematurely if clicking on Reports screen while the project was running.
  • Clicking on reports when running a project has created several issues with the database. A popup notification will now be displayed when clicking on reports when a project is running. If you wish to view the reports for a project in progress, first stop the project, view the reports, and then resume the project after.
  • If using Verify Project button to verify the project settings for an Algo BB/Fixed Parameter project, the error “Internal error: cannot send a fixed input parameter to the TS Optimization API” would occur.
  • Start preliminary changes for more efficient handling of licenses so they do not need to be in program code. New licensing structure will be a combination of key files and online checks.
  • In some situations, resuming a project would cause the following SQL error:
    Error saving walkforward data. Could not add walkforward data for [strategy] into database table WalkforwardData. Could not execute SQL insertion statement in table WalkforwardData. | SQL = ‘INSERT INTO WalkforwardData(WFGroupNumber,WFStrategyProjectI…’ | Error: SQLiteDatabase::FinalizeStatement | Error 787 | Extended error: 787 (FOREIGN KEY constraint failed) | WALKFORWARD [in/out] HAS BEEN SKIPPED.

Release Aug 15 2023

  • The previous release (Aug 7) introduced an error that prematurely ended Algo Building Block/Fixed Input Parameter projects after the first parameter combination. 
  • Improved error handling during optimization processes
  • If there were spaces in the bar interval list, MultiWalk did not interpret the keywords “weekly” or “monthly” correctly. 
  • If the disk became full while running a MultiWalk project, TS would crash.  Added disk space checks to terminate project before that happens. 
  • In order to reduce the size of the log file, will only log the first 5 consecutive “Waiting for TradeStation” or “Iteration N of N” messages during optimization. 
  • MultiWalk allowed an incubation end date that was past the current date. 

Release Aug 7 2023

KEY POINTS FOR THIS RELEASE
  • You must import BOTH ELDs when you install this version (MULTIWALK BETA APP.ELD and MULTIWALK BETA APP.ELD)
  • Walkforward report CSV columns have changed.
  • The new calendar/trades period types should not be used in production/live environment until beta testing is completed.
  • End of beta is in sight – target release date is end of October!  Codebase is frozen.  Only bug fixes until release date.
NEW PERIOD TYPES
 
This version introduces an entirely new way to specify periods.  Originally there was only one period type: trading days, such as 504/252, 252/252, etc.  This approach is prone to “date shift” issues and changes to the equity curve trading results when re-optimizing.  The new period types that are calendar based have NO date shift behavior and are less prone (but still not immune) to changes in equity curve results when re-optimizing.
 
Period types:
  • Trading Days
  • Calendar Days
  • Calendar Weeks
  • Calendar Months
  • Calendar Years
  • Trade Count
Instead of specifying “252/126”, for example, you can now specify “1Y/6M”.  This will fix the dates so that they are consistent on all future walkforward re-optimizations, whether the dates in the symbol data change due to data corrections or not.
 
Another new addition is “Trade Count” or “number of trades”.  This brings in a level of statistical significance to the walkforward process.  For example, if you specified “25T/3M”, this means that every 3 months of the walkforward, each iteration will include the last 25 trades for the in-sample period.  In this way each iteration is ensured to be comparing the same number of trades rather than a discrete time period.
 
Please do not use these new period types in live strategies until they have been thoroughly tested.  I will be releasing my trading days vs. calendar days comparative results soon.
 
Please see this knowledge base article for more information on using these new period types:
 
 
CSV REPORT FILE CHANGES
 
Please note these changes if you have a script that reads these files.
 
Added the following columns to Walkforward CSV report: 
  • Walkforward Type
  • In Period Type
  • Out Period Type
  • IS Total Trading Days
  • IS Total Calendar Days
  • IS+OOS Total Trading Days
  • IS+OOS Total Calendar Days
  • IS/OOS Change in Total Trading Days
  • IS/OOS Change in Total Calendar Days
Added following columns to AVERAGE Walkforward CSV report: 
  • IS Total Trading Days
  • IS Total Calendar Days
  • IS+OOS Total Trading Days
  • IS+OOS Total Calendar Days
  • Percent In/Out’s where OOS Monte Carlo same or better
  • Percent In/Out’s where OOS Return/Avg DD same or better
  • Percent In/Out’s where OOS Sharpe Ratio same or better
  • Percent In/Out’s where OOS Sortino Ratio same or better
Column name changes:  
  • “IN Period” -> “IN Period Length”
  • “OUT Period” -> “OUT Period Length”
  • “IS Trading Days To Reopt Date (+/- 3 trading days)” -> “IS Days To Reopt Date”
  • “OOS Trading Days To Reopt Date (+/- 3 trading days)” -> “OOS Days To Reopt Date”
BUG FIXES
  • If a Fixed Input Parameter is made a normal optimization variable, the report still showed it a Fixed Input Parameter.
  • If a Fixed Input Parameter list that only contained comma separated values generated a parsing error.
  • If the a symbol did not have enough data to optimize the strategy, MultiWalk would abort.  MultiWalk usually just logged the error and continued on to the next symbol/bar interval.  A recent TS update change the format of the error “Not enough data”, so MultiWalk did not recognize the error.  This has been updated in MultiWalk so that the project will continue, but simply skip the symbol/bar interval that did not have enough data.
  • In some situations the very last daily mark-to-market day was not being saved resulting in a synchronization/validation error and “Walkforward was skipped” message.
  • If an error occurred collecting margin data from TradeStation’s website, MultiWalk would not initialize and prevent startup.  This is now considered a non-fatal error and will simply display the error in a popup notification message box.
  • There is an issue that removed report filters from the system.  This resulted in an error that would terminate and prevent MultiWalk from running.  I could not replicate the issue, but believe that it could have occurred when using Fixed Input Parameters and have made corrections accordingly.  If you experience the error “UpdateReportFilter: Could not parse filter string”, please let me know.
  • If you resumed a project that completed successfully, MW would attempt to run the last task.  This would not work correctly depending on the last task completed.  If the last task was an optimization resubmission, an error would occur.  If it was a walkforward, and a “FOREIGN KEY” database error would occur.  If clicking on “Resume” when a project has completed, MultiWalk will now present a popup window with “”Project completed successfully.  There is nothing to resume.  If you want to re-run the walkforward, click Rerun Walkforward on the Operations screen.”
  • If a project was manually stopped by the user or had errors, reports would not automatically be created.  Reports are now automatically created after a project run even if the project had errors, using the data (if any) that does exist.

Release June 16 2023

  • If an asterisk was used in the strategy name, the EL code and walkforward parameters could not be save due to Microsoft Window’s filename restrictions.  Invalid characters are now first removed from these filenames before using them. 
  • If you clicked on the blue message row “No walkforwards satisfied the current filter criteria” on the report screen, MultiWalk would halt with an “out of bounds” error. 
  • The Least Gross Loss fitness function was actually evaluating as the greatest gross loss instead of least gross loss.  The fitness function has been renamed to “Greatest Gross Loss” to match its true logic.  
  • If there were a large number of optimized iterations (2000+) and the resulting optimization file was too large for TradeStation’s 32-bit memory capacity, MW/TS could crash on some systems when the file was in the post processing phase.  This phase now uses the memory protection limits set on the Settings->General screen. 
  • Report filters now correctly populate Max values depending on the Averages option selected/deselected. 
  • When I added the ability to have a 4th data stream, the titles for OptIteration CSV files were correct, but the data needed to be shifted three columns to compensate:

Release June 9 2023

  • MW/MWT: Corrected error that was introduced to non-net profit fitness functions.
  • MW: If an incorrect date format was entered on walkforward screen, MW would halt with an error if clicking on the Data Prefetch screen.
  • MW/MWT: Astronomical decrease of report generation times by adding composite index to database.
  • MWT: If using “Update Strategies” tracking option during walkforward analysis (not optimization), TS would periodically crash when multiple threads attempted to delete database equity records at the same time.
  • MW/MWT: If a non-fatal database error occurred during report creation, the report creation would abort and no report would be created.
  • MW: RINA fitness function error.  If the percent time in market was extremely small (i.e., < 0.001%), then the results of the RINA fitness function was computing to a non-number or sometimes infinity, which could not be stored in the SQL database.
  • MW: Entry/exit trade positions were not being collected if they occurred on the last date and next-to-last bar of the optimization on that same date.
  • MW: If entries were modified in the Limited Feasibility Testing report by the user (adding or removed “*” in the first column to select/deselect the optimization), walkforwards would still be performed on the old, previous list.

Release May 23 2023

  • The previous version of MW/MWT implemented a fast string-to-floating-point conversion function from a 3rd party C++ library.  While this reduced optimization times, the function is crashing MW if there are spaces in the string, such as “ 5”.  This caused MW to crash in various situations, such as when optimized parameters were entered as “1 – 50 x 5” instead of “1-50×5”.  Spaces should be allowed in the strings, so I am reverting back to the slower, but more reliable, string-to-floating-point conversion function used in previous versions of MW. 
  • Symbol overrides in MWT were not being honored. 
  • The template session name was not being highlighted in the dropdown list on the Settings->Symbol screen after importing a MultiWalk setup file. 

Release May 20 2023

  • MW/MWT: Report creation is FASTER.  Reports were taking a ridiculous amount of time to generate.  Creation time has been dramatically reduced.  Report generation is now 65% faster. 
  • MW/MWT: the defined row limit was not being honored when loading spreadsheet report views.  This was making the population of the walkforward report grids EXTREMELY SLOW.   TS is extremely slow when populating these reports, which is why I created a “Max rows to display” option on the reports screens.  Therefore long runs (> 10,000 walkforward entries) would take a very long time to load and display.  The row limit is once again being honored!
  • MW/MWT: Output text files (if option “Create Individual WF equity and EL code files” is checked) were being created as part of the walkforward report creation.  These files are now created during the actual walkforward process, which is where they were created in the pre-database version of MultiWalk.  This has greatly reduced the overhead when creating walkforward reports.
  • MW/MWT: various cosmetic changes to walkforward graph and periodic data displays.
  • MW: Limited Feasibility Testing report is now disabled from editing while MW is running.
  • MW: RINA fitness function was extremely slow due to the use of the calendar/time functions used to calculate percentage time in market.  I am now using different time functions that are up to 10x faster, thus dramatically improving calculation speed, especially during anchored walkforwards.
  • MW: Changed name usage “Fixed Input Variable” to “Fixed Input Parameter”.  A user pointed out to me that using “Fixed Input” and “Variable” is paradoxical and a bit contradictory!  Using “Parameter” is much more clear to make the distinction between “Optimized” and “Fixed” parameters in a MultiWalk project.
  • MW: If you were running a Fixed Input Parameter session and the session was stopped and resumed during the limited feasibility prefiltering stage, then only LMT prefiltering would occur for the rest of the project instead of continuing on with optimization and walkforward.
  • MWT: Clicking on Select/Deselect button on Realtime Strategy Control screen produced a “invalid datatype” error.
  • MWT: If the end date on the Strategy Tracking screen was defined to be after that last date that actually existed in the equity data for the project, MWT would crash.

Release log information previous to May 2023 not available