Skip to content
EdgeProof Docs

Key Concepts

The ideas behind walk-forward validation and Monte Carlo stress testing.

Walk-Forward Optimization

Standard optimization finds the parameters that performed best over your entire history — but those parameters are tailored to that specific slice of market behavior, and markets change. Walk-forward optimization never lets the optimizer see the data it's about to be judged on: history is split into segments, and for each one the strategy is optimized on an in-sample (IS) window, then the winning parameters are applied, untouched, to the very next out-of-sample (OOS) window it's never seen. If the winner keeps working out-of-sample, the strategy has demonstrated it can adapt rather than simply memorize noise.

EdgeProof's Validation mode runs this for real — a fresh in-sample optimization per segment, an automatic winner pick, then a locked out-of-sample run — rather than slicing an already-optimized trade file after the fact. The WFO Config matrix, by contrast, is a post-hoc slice — fast, useful for narrowing down a configuration, but not the real test. Treat it as a scouting tool; treat the actual Validation run as the verdict.

WFO Efficiency

Efficiency = (OOS Net ÷ OOS Days) ÷ (IS Net ÷ IS Days)

A ratio of daily return out-of-sample to daily return in-sample. At 1.0, the strategy performed exactly as well per day once deployed as it did during optimization — no degradation at all. Above 1.0 means OOS actually outperformed IS. Below 1.0 is expected to some degree; how far below is where judgment comes in. Any segment with a losing OOS window disqualifies the whole cell in the WFO Config matrix, regardless of how the aggregate looks — a single bad segment is a real signal, not noise to average away.

Segments and OOS%

Segments — how many time slices to divide history into. More segments means a finer-grained robustness picture but shorter, thinner windows with fewer trades each; fewer segments means longer, more trade-rich windows but a coarser test.

OOS% — the fraction of each segment held back for out-of-sample testing. Higher means a more confident out-of-sample read but less data left to optimize on; lower is the reverse.

Rough starting points: under a year of history, lean toward 4–5 segments at 25–30% OOS; one to two years, 6–7 segments at 20–25%; two-plus years, 7–9 segments at 15–20%. The matrix does the actual analysis for you — use these as a starting search area, not a rule.

How EdgeProof Picks a Walk-Forward Winner

During Validation mode, once each segment's in-sample optimization finishes, EdgeProof automatically picks the winning parameter set rather than asking you to choose. It applies hard gates first (positive net profit, a minimum trade count), scores the survivors on a handful of quality signals (trade count, profit factor thresholds, pessimistic return, expectancy), and breaks ties by averaging performance across a small neighborhood of nearby parameter values — a set that performs well and has good neighbors nearby in parameter space is judged more likely to generalize than an isolated spike, echoing the same idea the Robustness tab shows visually. This runs automatically with a fixed default configuration; there's currently no tab where you tune the scoring weights yourself.

Monte Carlo Simulation

Several simulation methods live under Candidates → Monte Carlo, and they answer different questions:

  • Shuffle — reorders your actual trades, keeping every individual P&L value unchanged. Answers: how much did trade order matter? A tight spread of outcomes means the edge holds regardless of sequencing; a wide spread means a run of early wins (or losses) shaped the headline number more than the underlying edge did.
  • Bootstrap — resamples trades with replacement rather than just reordering them. Better suited to capital-sizing questions.
  • Block bootstrap — resamples contiguous chunks of trades rather than individual ones, preserving any serial correlation (streakiness) in your results. Available on the Fan & Streaks and Risk & Scaling views.

Use the median (p50) as your realistic expectation and the 5th-percentile-worst outcome as your stress-test number for drawdown planning — not the single historical worst case, which is only one draw out of many possible outcomes.

Risk of Ruin

The percentage of simulated outcomes at a given capital level that end in a defined catastrophic loss. Size your position from the worst-case (5th percentile) simulated drawdown at your intended capital tier, not from the best historical month — and treat a Risk of Ruin north of 10% as a hard stop at that capital level, not a number to round down.

Real Validation Holdout

A toggle on Settings, not a percentage you carve out manually after the fact. When Use Real Validation is on, EdgeProof reserves the last RV Percent% of your history before Feasibility or Optimization ever touch the data — the reserved tail simply never appears in any trades file generated during that session. This is the mechanism behind the Real sub-tab on Validation: one final backtest, over data the entire pipeline — not just one walk-forward segment — never saw.

Pause and Resume

Optimization and Validation runs (not Feasibility) can be paused mid-batch and picked up later, even after closing and reopening TradeStation — progress is tracked on disk, not just in memory. Press Abort once to request a graceful pause after the current job finishes; press it again while a pause is already pending to hard-cancel instead. A failed job behaves the same way as a pause — the app remembers exactly where it stopped, and the Start button relabels itself "Continue…" the next time you're ready to pick the run back up.