TWM Wiki

Description

Optimizer – Walk Forward Strategy Testing and Optimization in TWM

TWM comes with a WFO (walk forward optimization) module. Inside the module user is able set In-Sample and Out-Of-Sample periods to test strategy robustness. To access Optimizer proceed to Admin Panel → New → Optimizer

Creating a Test

To start testing, you need to create a test. To do so right-click in the left panel of the optimizer window

Next, you can choose to either:

- Open a previously saved test preset, or

- Create a new test from scratch, name your test and proceed to the next step

Image


In Sample (IS) Out of Sample (OS)

- In Sample (IS) Period: this is where your strategy optimization happens. The system tests different parameter combinations to find the best settings based on historical data.

- Out of Sample (OS) Period: this is where your optimized strategy is tested on "unseen" data. This period simulates real trading conditions and helps verify that your strategy wasn't just curve-fitted to historical data.

The next step is to create a testing period. Periods can be added:

- Manually by using Add Period in the same context menu or

- Using a special UI called Period Constructor.

This is made to allow users to see if the parameters found are optimal, robust, and that the strategy is not curve fitted.

If you need more explanation about In Sample or Out of Sample, we recommend this content:

Robert Pardo Podcast

Robert Pardo Book

Inside the period constructor it's easy to create an IS-OS period, and set the required lenght by either adjusting the day lenght or percentage in accordance with each other. For example, in the picture below we set a period of 365 days, where 30% or 110 days are dedicated to an out of sample period. If the last live period box is checked, the out of sample period will be ignored for the most recent period.

- Total Period Length: Set the overall timeframe (e.g., 365 days)

- IS Percentage: Choose what percentage should be In Sample (e.g., 70% = 255 days)

- OS Percentage: Choose what percentage should be Out of Sample (e.g., 30% = 110 days)

- Last Live Period: Check this box if you want the most recent period to skip OS testing

Image



You can add as many periods as you like. The optimization will take pleace through each period separately. At the end of the process you will see:

  1. Individual Results: Performance for each period
  2. Combined OS Results: Overall out-of-sample performance
  3. Simulation Results: Performance after OS periods (if enabled)
  4. Live Period Option: Most recent data for live trading preparation

Parameters

Once your periods are set up, you'll see them listed on the left side. The right side is where you configure your strategy parameters.

Setup Steps:

  1. Select Instrument: Choose the trading instrument (stock, forex pair, etc.)
  2. Select Strategy: Pick the trading strategy you want to optimize
  3. Configure Parameters: Right-click the three dots next to "Parameters" (refer to image for clarity)

For each parameter you want to optimize you'll see:

- Checkbox: Enable/disable optimization for this parameter

- Min: Starting value for optimization

- Max: Ending value for optimization

- Inc: Step size between values

For example let's take the following values:

Min= 5, Max= 100, Inc= 5 will test: 5, 10, 15, 20, 25... up to 100.

The system shows how many total combinations will be tested. Important information: if you see a very high number of combinations consider using the Generic Optimization engine for faster results.

Image


Results

To start optimization process, click the RUN botton. Depending on your settings this may take some time.

Understanding your results:

After the optimization has finished, by clicking on the periods root, you'll see combined Out of Sample results. The red vertical lines mark the end of each OS period.

Image


Matrix Tab:

Here you can review specific parameters that were found for each particular period.

  1. At periods root: shows which parameters were found for each period
  2. At specific period: shows parameters used for each strategy iteration.

By clicking on the matrix tab for a specific period you will see what specific parameters were used for a specific iteration listed in the best strategies list.

Image


Best strategies:

The optimizer ranks strategies based on your chosen fitness parameters, such as profit factor, net profit, sharpe, etc. You can check the list by looking at the keep best strategy parameter. By default there will be 10, and the optimizer will always choose the best one. The optimization fitness parameter, is an extendable module that can be coded by the user or users can use some of the available presets.


View top performers: Default shows top 10 strategies

Change selection: Click different strategies to see updated OS results

Access additional options: Right-click for more features:

  1. Preset - Save: will save the particular strategy present to be used on chart, in Validator or Optimizer.
  2. Settings: control which columns are displayed
  3. Open Validator: test specific periods in the validator tool
  4. View Parameter list: see all parameters in table format

If you change the chosen best strategy in the top list the OS will reexecute so you can check an updated, and combined Out of Sample result. You can toggle through the tabs to see different results. Main tabs are:

IS Tab: In Sample results only

OS Tab: Out of Sample results only

Total Tab: combined IS + OS results

Sim Tab: will show results for a period that happend after OS ended, if Sim is enabled then Total will show IS+OS+Sim results. (if Sim is disable the tab will not show it)


To enable Simulation: Admin Panel → Tools → Options → Calculations → Calculate Simulation

Some results may be excluded based on some global filtering set during the optimization. The two available global filters are:

- Min Trades IS: Minimum number of trades that have to occur in the In Sample period, in order for it to be considered

- Draw Down Level: Maximum allowable drawdown during In Sample period

If the execution is filtered, you will see the count for the filtered executions INFO tab at the top.

Image


Optimizer Types

The two main types available are:

  1. Default - which will an exhaustive optimzier that will go through every single combination that you have created
  2. Genetic - will use a genetic algorithm (the open source code for the genetic algorithm is provided in the custom project)

The settings for the genetic algorithm will come up below the parameters section. Please click on the arrow for them to unfold. Each parameter will light up with a small caption helping to understand its purpose.

Database

When you find optimization results you want to keep:

  1. Right-click the periods section
  2. Select "Save Results"
  3. Your results are stored for future reference

Accessing Saved Results

Navigate to Admin Panel → New → Database to view all saved optimization results.

Features:

  1. Results are saved in static form with best strategies for each period
  2. Double-click any saved strategy to open it in optimizer static window mode

Perfect for comparing different optimization runs or sharing results

Image


Video Tutorial



Necessary cookies help make the website usable by enabling basic functions such as consent storage, security protection, language preferences, authentication, and preserving the active navigation context.

  • Necessary cookies

    UserUUID

    Technical identifier used to manage and persist cookie consent preferences.

    Maximum storage duration: 12 Months | Type: Necessary cookies
    consent

    Stores your cookie consent choices and selected preferences.

    Maximum storage duration: 12 Months | Type: Necessary cookies
    site_mode

    Preserves the active navigation context, for example keeping the user in the standard website flow or the Start Trading flow when shared navigation elements are used.

    Maximum storage duration: Up to 30 Days | Type: Necessary cookies
    .AspNet.Consent

    Indicates whether the user has provided cookie consent.

    Maximum storage duration: 1 Year | Type: Necessary cookies
    .AspNetCore.Antiforgery

    Used to prevent CSRF attacks and protect form submissions and user data.

    Maximum storage duration: Session | Type: Necessary cookies
    .AspNetCore.Cookies

    Used to manage authentication information and signed-in sessions.

    Maximum storage duration: 1 Year | Type: Necessary cookies
    .AspNetCore.Culture

    Stores the user’s language and localization preferences.

    Maximum storage duration: 1 Year | Type: Necessary cookies

Functional cookies allow the website to remember preferences and support enhanced features or integrations such as Google services, maps, embedded media, or account-related personalization.

  • Functional Cookies

    LSOLH

    Used by Google to store session information and support service-related functionality.


    Maximum storage duration: Session | Type: Functional Cookies
    COMPASS

    Used by Google to remember settings and improve navigation across integrated services.

    Maximum storage duration: 6 Months | Type: Functional Cookies
    ACCOUNT_CHOOSER

    Remembers which Google accounts have been used on the device.

    Maximum storage duration: 1 Year | Type: Functional Cookies
    APISID

    Used by Google to store preferences and information when using integrated Google services such as Maps.

    Maximum storage duration: 2 Years | Type: Functional Cookies
    LSID

    Used by Google to store preferences while viewing pages that incorporate Google services.

    Maximum storage duration: 2 Years | Type: Functional Cookies
    NID

    Used by Google to remember preferences such as preferred language and interface settings.

    Maximum storage duration: 6 Months | Type: Functional Cookies
    SAPISID

    Used by Google services to support embedded content, maps, and account-related personalization.

    Maximum storage duration: 2 Years | Type: Functional Cookies
    __Host-GAPS

    Used by Google to support service preferences and related functionality on pages integrating Google services.

    Maximum storage duration: 2 Years | Type: Functional Cookies

Statistical cookies help us understand how visitors interact with the site, measure performance, and improve services. Depending on configuration, data may be processed in aggregated or pseudonymized form.

  • Statistical Cookies

    CLID

    Microsoft Clarity identifier used to distinguish visitors and support analytics reporting.


    Maximum storage duration: 1 Year | Type: Statistical Cookies
    MR

    Microsoft cookie used for analytics-related measurement and service improvement.

    Maximum storage duration: 7 Days | Type: Statistical Cookies
    SM

    Used by Microsoft Clarity to maintain the current analytics session.

    Maximum storage duration: Session | Type: Statistical Cookies

Marketing cookies are used for advertising, campaign attribution, conversion tracking, personalization, and cross-platform measurement by providers such as Google, Microsoft, Meta, and TikTok.

  • Marketing Cookies

    AID

    Used by Google to link activity across devices and improve ad attribution.


    Maximum storage duration: 1 Year | Type: Marketing Cookies
    ANONCHK

    Used by Microsoft Advertising to validate and support ad-related requests.

    Maximum storage duration: 10 Minutes | Type: Marketing Cookies
    MUID

    Microsoft advertising identifier used to recognize browsers across Microsoft domains.

    Maximum storage duration: 13 Months | Type: Marketing Cookies
    __Secure-3PSID, __Secure-3PAPISID, __Secure-3PSIDTS, __Secure-3PSIDCC

    Google advertising and personalization cookies used to build preference profiles and support ad delivery.

    Maximum storage duration: 2 Years | Type: Marketing Cookies
    ADS_VISITOR_ID

    Used by Google to identify visitors for advertising and attribution purposes.

    Maximum storage duration: 2 Years | Type: Marketing Cookies
    OTZ

    Used by Google to support ad personalization and service optimization.

    Maximum storage duration: 1 Month | Type: Marketing Cookies
    __Secure-1PAPISID, __Secure-1PSID

    Google cookies used to support more relevant ads and account-related ad security.

    Maximum storage duration: 2 Years | Type: Marketing Cookies
    IDE, DSID, FLC

    DoubleClick / Google Ads cookies used for campaign attribution, ad delivery, and remarketing.

    Maximum storage duration: Varies by cookie | Type: Marketing Cookies
    datr, fr, sb, xs

    Meta / Facebook cookies used for browser recognition, security, ad measurement, and personalization across Meta services and partner sites.

    Maximum storage duration: Varies by cookie | Type: Marketing Cookies
    ttcsid

    TikTok identifier used for session-level event attribution, conversion tracking, and advertising measurement.

    Maximum storage duration: Varies by configuration | Type: Marketing Cookies
    ttcsid_D5GFV53C77U3VC0C2T50

    TikTok pixel-specific session cookie used for conversion attribution and advertising performance reporting.

    Maximum storage duration: Varies by configuration | Type: Marketing Cookies
    odin_tt

    TikTok cookie used for campaign attribution, browser recognition, and advertising performance measurement.

    Maximum storage duration: Varies by cookie | Type: Marketing Cookies
    tt_chain_token

    TikTok cookie used for event attribution and campaign linkage across sessions.

    Maximum storage duration: Varies by cookie | Type: Marketing Cookies
    ttwid

    TikTok browser identifier used for attribution, advertising measurement, and remarketing support.

    Maximum storage duration: Varies by cookie | Type: Marketing Cookies
    NID, UULE

    Google cookies that may support ad personalization, localization, and service preference handling depending on the integration and browser state.

    Maximum storage duration: Varies by cookie | Type: Marketing Cookies
    SEARCH_SAMESITE

    Google cookie used to support secure cookie handling across requests and service interactions.

    Maximum storage duration: 6 Months | Type: Marketing Cookies
About cookies and consent

This website uses cookies and similar technologies to ensure its proper functioning and, with your consent, to support functionality, measure usage, improve performance, and provide advertising, attribution, or personalized content. The legal basis for the use of necessary cookies is the legitimate interest of the data controller (Art. 6(1)(f) GDPR), while functional, statistical, and marketing cookies are used only upon your explicit consent (Art. 6(1)(a) GDPR).

Cookies are small text files stored on your device to make the website work efficiently and improve your experience. Some cookies are placed directly by us, while others may be set by third-party services integrated into our pages.

Cookie categories
  • Necessary cookies: enable core site functionality such as consent storage, navigation context, language selection, authentication, and access to secure areas. These cannot be disabled.
  • Functional cookies: allow the website to remember settings and support integrations such as embedded or third-party services.
  • Statistical cookies: collect usage and performance data to help understand and improve the site.
  • Marketing cookies: support advertising, campaign attribution, personalization, and remarketing across providers and services.
Storage and consent management

Your cookie preferences are stored locally in a cookie named consent, valid for 12 months, and pseudonymously on our systems using a technical identifier (UserUUID), which does not allow direct identification of the user. A technical cookie named site_mode may also be used to preserve the current navigation context across pages. You may change or withdraw your consent at any time via the cookie settings button visible at the bottom left of the site.

Third-party cookies

Some cookies are provided by third-party services such as Google, Microsoft, Meta, and TikTok. These third parties may act as independent controllers for the data collected through their own technologies and services.

Your rights

You can withdraw or modify your consent at any time, delete cookies through your browser settings, and exercise your rights under Articles 15–22 GDPR (access, rectification, deletion, limitation, opposition, portability) by contacting us via the details provided in the Privacy Policy.

This Cookie Policy is aligned with Regulation (EU) 2016/679 (GDPR) and the ePrivacy Directive.