Methodology Bias Controls

Chapter 3

Bias Controls & Validation

Most retail backtests are invalidated by systematic biases that make results look far better than reality. We have identified the six most common biases and engineered hard controls against each one.

01

Look-Ahead Bias

Most Dangerous

What it is

Look-ahead bias occurs when a strategy uses information that would not have been available at the time a trading decision was made. The most common form is using the closing price of bar T to generate a signal, and then executing that trade also at bar T's close. In reality, the close price is only known after the bar closes — at which point the market is already closed.

✗ Biased (what most retail tools do)

Signal generated at bar T's close → trade filled at bar T's close. Impossible in practice — you cannot trade at a price that you just discovered.

✓ Our approach

Signal generated at bar T's close → trade queued → filled at bar T+1's open. This is the earliest realistically executable price.

Other forms of look-ahead bias we guard against

  • Using bar T's high/low to trigger stops — these are only known after the bar closes
  • Indicators computed with a "future" period (e.g., a centered moving average)
  • Normalization using the full dataset's min/max rather than rolling min/max
  • Strategy parameters optimized on the full period, then tested on the same period
  • Earnings surprise signals using actual EPS before the announcement date
02

Survivorship Bias

Overstatement Risk

Survivorship bias occurs when a backtest only includes stocks that are currently listed on the exchange. Companies that went bankrupt, were acquired, or were delisted during the test period are excluded — even though they were valid trading candidates at the time. The result is that historical returns look much better than they actually were, because all the "losers" have been silently removed from the dataset.

Quantified impact on the Hang Seng Index universe:

~15–20%

of HSI component history contains at least one delisted stock in a 10-year backtest

~3–8%

typical annual return overstatement from survivorship bias in momentum strategies

100%

of our backtests include delisted securities in the historical universe

✗ Biased universe

Only test on the 500 stocks currently in the S&P 500. All past bankruptcies, delistings, and removals are excluded. Return bias: +3% to +8% per year.

✓ Our approach

The universe at each historical date includes all stocks that were listed at that date — including those subsequently delisted or bankrupt. Point-in-time universe construction.

03

Overfitting (Curve-Fitting) Bias

Most Common

Overfitting occurs when a strategy has been optimized so heavily on historical data that it has effectively "memorized" the past rather than learned a generalizable rule. A strategy with 12 parameters, all tuned on 3 years of data, will show spectacular historical results — and fail immediately in live trading.

How we detect and prevent overfitting

Minimum parameter count

We prefer strategies with fewer than 5 free parameters. Every additional parameter doubles the risk of curve-fitting.

Parameter sensitivity test

We perturb each parameter ±10–20% and measure the impact on returns. Robust strategies show smooth, flat surfaces — not sharp peaks.

Cross-validation

We divide the historical period into 5 non-overlapping folds and measure consistency of results across all folds.

Minimum trade count

A backtest with fewer than 50 trades provides insufficient statistical evidence. We require at least 100 completed round-trip trades.

Monte Carlo simulation

We randomly shuffle the order of trades 10,000 times to measure return distribution and worst-case scenario under random sequencing.

04

Selection Bias

Often Overlooked

Selection bias occurs when the choice of which instruments to backtest is influenced — consciously or not — by knowledge of how those instruments performed historically. Testing a momentum strategy only on the biggest winners of the last decade will produce a biased result.

Instrument Selection

We define the trading universe before looking at results. Universe criteria are based on objective filters: market cap, liquidity, sector — not historical performance.

Time Period Selection

We use the full available history for each instrument, not a cherry-picked period. If we test 2010–2024, we include the 2015 China crash, 2018 correction, and 2020 COVID crash.

Strategy Selection

We document all strategies tested, not just the ones that worked. Publication bias (only showing winners) is a form of selection bias.

Benchmark Selection

The benchmark for comparison is defined before testing begins. We do not swap benchmarks after seeing results to make relative performance look better.

05

Optimization Bias

Parameter Risk

Optimization bias is a specific form of overfitting. When you run a grid search over hundreds of parameter combinations and pick the best performer, you are not finding the "true" optimal parameters — you are finding the parameters that happened to work best on that specific historical period due to random noise.

Illustration: Why "best" parameters are misleading

Testing 100 parameter combos on same data → Expected false positives at 5% significance level: ~5 strategies will look good by chance alone
Testing 1,000 combos → Expected false positives: ~50. The "best" strategy may be entirely random.
Our approach: Define params first → Choose parameters based on economic logic. Test once. Report that result without further modification.

Our optimization rules

  • Strategy parameters are set before running the in-sample backtest
  • If optimization is used, it is performed only on the training set — never on the validation set
  • We report the optimization surface (not just the peak) so readers can see robustness
  • We prefer parameter values that lie on flat plateaus, not narrow peaks
  • Walk-forward optimization: parameters are re-optimized periodically, simulating real adaptive management
06

Out-of-Sample Validation

Final Gate

Out-of-sample (OOS) testing is the most important validation step. After a strategy is developed and optimized on the training set, it is tested once on a completely separate holdout period. The OOS result cannot be used to further refine the strategy — if it is, the holdout is no longer truly out-of-sample.

Typical data split for a 15-year backtest

Training Period (60%)
Strategy development
Validation
(20%)
OOS Holdout
(20%)
Year 1 Year 9 Year 12 Year 15

Walk-Forward Testing

Walk-forward testing is a more sophisticated form of OOS testing that simulates how a real trader would periodically re-optimize their strategy. Instead of one fixed training/test split, we use a rolling window: optimize on the first N bars, test on the next M bars, advance by M bars, and repeat.

Rolling Windows

We use 12-month optimization windows with 3-month walk-forward steps. Each window is independent.

Consistency Check

We measure the ratio of walk-forward performance to in-sample performance. Ratios above 50% indicate a robust strategy.

Reported Both

All reports show both in-sample and walk-forward (out-of-sample) results side by side for full transparency.

Bias Controls Summary

Bias Type Typical Impact Our Control Status
Look-Ahead Very high — can double reported returns Next-bar-open execution; event-driven engine Controlled
Survivorship +3–8% annual return overstatement Point-in-time universe with delisted stocks Controlled
Overfitting Strategy fails in live trading Parameter sensitivity; Monte Carlo; ≥100 trades Controlled
Selection Cherry-picked winners presented Pre-defined universe; full history; all tests reported Controlled
Optimization False "optimal" parameters Economic logic; walk-forward; flat plateau preference Controlled
No OOS validation In-sample results ≠ live results 60/20/20 split; walk-forward testing Controlled