Paste or upload a returns series, set a window length and step, pick rolling or anchored, and see in-sample vs out-of-sample Sharpe per window. The mean degradation and passing-window count tell you whether your strategy parameters survive multiple regimes — or just the one you happened to fit on.
One return per period (daily assumed). Decimal or % accepted. Sample below has a regime shift mid-series.
IS and OOS each use this length in rolling mode; OOS only in anchored.
How far the window slides between iterations.
Rough robustness floor. ≥ 60% passing is a useful signal; < 40% is fragile.
The visualizer runs the canonical walk-forward split: it slices your returns series into IS/OOS window pairs and computes annualized Sharpe on each side. In rolling mode the IS window is fixed-size and slides forward by the step value; in anchored mode the IS window starts at the first observation and expands with each step.
# Per-window annualized Sharpe
sharpe = (mean(returns) / stddev(returns)) * sqrt(252)
# Per-window degradation
degradation = (oos_sharpe - is_sharpe) / abs(is_sharpe)
# Aggregate "passing" rule
passing = count(windows where oos_sharpe > 0.5 * is_sharpe and is_sharpe > 0)The annualization factor (sqrt(252) — daily-bar assumption) is the same on both sides of the degradation ratio, so it cancels out for IS-vs-OOS comparison. The visualizer is built for comparison, not absolute-number reporting; for absolute Sharpe with the right periodicity use the dedicated Sortino vs Sharpe calculator.
Walk-forward is a structural defense against parameter overfit, not a substitute for out-of-sample testing on truly fresh data after deployment. Strategies that survive walk-forward can still degrade live if the underlying market dynamics shift outside historical experience. For the full picture pair this tool with walk-forward optimization for Hyperliquid strategies.
Keel is a Strategy OS for AI-assisted systematic trading on Hyperliquid. Build, backtest, and run live strategies with realistic fees, slippage, and funding modeled. Free to start — connect a Hyperliquid wallet when you’re ready to go live.
It splits a returns series into rolling or anchored in-sample / out-of-sample windows, computes annualized Sharpe on each side, and surfaces the degradation. The point is to make parameter overfit visible: a strategy whose OOS Sharpe collapses across most windows is fragile, even if its single-shot backtest looked great.
The visualizer is for ratio comparison — IS vs OOS within the same series. The annualization factor cancels out of the degradation calculation, so a daily-default works fine for visual inspection even if your series is hourly or weekly. For absolute Sharpe values you trust, use the Sortino vs Sharpe calculator with the correct periodicity.
Rolling drops the oldest in-sample bar each step, keeping the IS window fixed-size. Anchored keeps everything from the start of the series and lets IS grow. Anchored is more sample-efficient (more data per fit); rolling is more honest about regime drift (old data gets discarded). When in doubt, run both and compare degradation.
A pragmatic robustness floor: count the windows where OOS Sharpe > 0.5 × IS Sharpe (and IS Sharpe was positive). 60%+ passing is a useful signal that the strategy parameters generalize; under 40% suggests the IS performance was sample-specific. It is a heuristic, not a formal test — pair with Monte Carlo or PBO for stricter overfitting diagnostics.
This visualizer is a standalone browser tool — no Keel account needed, no upload to server, computed locally. Keel itself ships single-window parameter optimization today via the strategy optimize CLI. Native walk-forward optimization inside the backtest engine is on the roadmap.
How walk-forward applies to HL: IS/OOS sizing for short market histories, rolling vs anchored on regime-shifty data, and what Keel ships today.
The from-scratch explainer: what walk-forward is, why it works, where it fails, and how it compares to a single train/test split.
Compute Sharpe and Sortino side-by-side with the right periodicity. Pairs with the visualizer for full per-window analysis.