Skip to main content
aifinhub

Playground

Walk-Forward Validator

Rolling or expanding IS/OOS windows from a returns CSV. Per-window Sharpe, walk-forward efficiency ratio, concatenated OOS equity curve. Free, client-side.

Inputs
Paste + configure
Runtime
1–15 s
Privacy
Client-side · no upload
API key
Not required
Methodology
Open →

Education · Not investment advice. BaFin/EU framework. Past performance does not indicate future results. Editorial standards Sponsor disclosure Corrections

Load a returns CSV

Long format: date,returns. Simple daily returns. Walk-forward is meaningful only with enough observations — aim for 2+ years (~500+ rows). Entirely client-side.

See methodology for the formal definition of walk-forward efficiency, window sliding, and purged K-fold considerations. Combine this with Backtest Overfitting Score for the PBO / DSR angle.

How to use

Step-by-step

Full calculator guide →
  1. 1

    Upload your return series (CSV).

  2. 2

    Set the in-sample length, out-of-sample length, and step, and choose rolling or expanding mode. The number of windows follows from these versus the length of the series.

  3. 3

    Run the validator. It reports each window's in-sample and out-of-sample Sharpe plus a concatenated out-of-sample curve.

  4. 4

    Read the walk-forward efficiency (mean out-of-sample Sharpe divided by mean in-sample Sharpe): below 0.4 is likely overfit, 0.4 to 0.7 is some decay, above 0.7 is robust. An aggregate out-of-sample Sharpe below 0.3 flags a weak edge regardless.

  5. 5

    If validation fails, do not iteratively re-tune until it passes — that defeats the purpose. Reformulate the strategy from first principles instead.

For agents

Use in an agent

Same math, same result shape as the UI above — as a static ES module. No HTTP request, no auth, no rate limit.

import { compute } from "https://aifinhub.io/engines/walk-forward-validator.js";

Contract: /contracts/walk-forward-validator.json Full agent guide →

Glossary references

Terms used by this tool

All glossary →

Questions people ask next

FAQ

What does this validate?

Whether an optimization generalizes out of sample. You give it a return series; it slides in-sample / out-of-sample windows across the series and reports each window's in-sample and out-of-sample Sharpe plus an aggregate walk-forward efficiency. It does not see your strategy's parameters — it works from the returns you supply.

What's the difference between this and the visualizer?

The visualizer shows window-by-window detail interactively. The validator runs the full walk-forward and reports per-window Sharpes plus an aggregate efficiency verdict band. Use the validator for a quick robust-versus-fragile read; use the visualizer to diagnose which windows fail.

What decides the verdict?

There is no strategy-parameter check, median rule, or lifetime-P&L rule. The verdict is a band on two aggregate numbers: walk-forward efficiency (mean out-of-sample Sharpe divided by mean in-sample Sharpe) and the aggregate out-of-sample Sharpe. Efficiency below 0.4 flags likely overfitting, 0.4 to 0.7 is some decay, above 0.7 is robust; an aggregate out-of-sample Sharpe below 0.3 flags a weak edge regardless.

How many windows do I need?

You don't set a window count directly — the number of windows falls out of your in-sample length, out-of-sample length, and step versus the length of the series. More windows give a steadier efficiency estimate; a handful is enough for a rough read but leaves the aggregate Sharpe noisy.

Can I tune the strategy based on validator feedback?

If you tune until validation passes, you've used the validator as just another in-sample fit, which defeats the purpose. The validator should be a final gate, not an iterative optimizer. Use a held-out 'final' window that's never seen by the validator until the strategy is otherwise locked.

Complementary tools