Run & evaluate
The run library
Runs are not throwaway. Every preview, test suite and backtest lands in the Runs section with its exact code version, parameters and data slice — searchable, comparable, exportable. This page covers organizing the library and, importantly, how to read the robustness views: regimes, stress, and price-path.
Finding and organizing runs
- Search and filters. Free-text search covers titles and notes. Filter by kind (preview / backtest / test / optimize / significance), status (queued, running, succeeded, failed, cancelled, timed out…), verdict (GO / NO-GO), strategy, and date range.
- Pin (★) what matters. Pinned runs move to the top of the library and are exempt from retention cleanup and purge — pinning is how you say “this is evidence, keep it”. Each pin can carry a private note (“Why does this run matter?”) displayed as Why pinned: …
- Title and annotate. Give runs meaningful titles inline, and use Notes for observations shared with your project.
- Purge deletes a run's stored results (with confirmation). Pinned runs can't be purged until unpinned.
Comparing runs
Two comparison tools cover two different questions:
Compare selected (2–3 runs) — “what changed?”
Select two or three runs and press Compare selected. You get: per-run summary cards; an equity overlay (one color per run); an aligned stats table with deltas against the baseline run; a config diff (exactly which settings differ); and the gates side by side — decision, grade and reasons per run. The first selected run is the baseline; all deltas read “baseline → run”. The URL is shareable and bookmarkable.
Comparison table (any number) — “what's the landscape?”
The Comparison table shows one row per run and instrument, with sortable columns — trades, expectancy (R), profit factor, win rate, net P&L, Sharpe, max drawdown — plus the verdict. Click a column to sort; expand rows to overlay their equity curves. Use it to survey a whole family of experiments at once.
Exporting
From a run's results you can export CSV (stats), CSV (trades), JSON or XLSX; comparison pages export their tables as CSV. You can also generate a self-contained HTML report bundle (stats, gates verdict, equity/drawdown charts, provenance) from Share & report, and mint expiring read-only share links for teammates — links are revocable, every access is logged, and viewers still need to sign in.
The robustness views — and how to read each one
A single graded number can hide a fragile strategy. The results viewer's robustness tabs each attack the result from a different direction. None of them change the stored grade or verdict; they exist to tell you how the result might be wrong.
Regimes — “when does this strategy work?”
The Regimes tab slices the run's own trades by the kind of day and moment they happened in: session type (trend vs range), volatility versus recent sessions, close versus session VWAP, prior-day range position, opening-range expansion, contract-roll windows, liquidity, order-flow skew, time of day, day of week. Each slice shows trades, expectancy, profit factor, win rate, drawdown and net.
How to read it:
- Tight dispersion across slices — expectancy roughly similar everywhere — suggests a robust edge that doesn't depend on catching one kind of day.
- Wide dispersion — all the profit in one slice — means the “edge” is really a bet on that regime. That's not disqualifying, but you should know it, and the regime had better be identifiable in advance.
- Slices with too few trades are withheld (“insufficient sample — statistics withheld”) rather than shown as noise. Slices are descriptive research cuts, not promises.
Stress — “how does this die?”
The Stress tab replays the run's own stored trades through a battery of harsher what-ifs: extra slippage and commissions, randomly missed fills, resampled trade orderings, best winners removed. Press Run stress tests; each scenario gets a verdict — survives, fails, or informational — and findings are grouped into named warnings such as Cost sensitivity, Overfitting risk, Profit concentration and Fill realism.
How to read it:
- The baseline column is what actually happened; every stressed column is a labeled hypothesis, not a re-run of reality.
- A strategy that dies the moment costs rise a notch has no margin for the real world's frictions.
- If removing the top handful of winners flips the result negative, the “edge” was a few lucky trades (Profit concentration).
- A passing battery is a robustness argument — never a forecast.
Price-path robustness — “was it tuned to this exact tape?”
The price-path check re-simulates the strategy on altered copies of the price window itself — jittered, resampled, block-shuffled — usually a few hundred of them. If the strategy's logic captures something real about how the market moves, it should perform comparably on paths that preserve the market's character but not its exact sequence.
How to read it:
- The verdict is either holds up or likely overfit. The table shows your original path's result against the distribution across altered paths (best 5%, median, worst 5%, and a p-value).
- The key tell: if the original result beats even the best 5% of altered paths, the result is consistent with being tuned to that exact path — the app flags this rather than hiding it.
- These probes run with idealized fills for speed — they are directional evidence about overfitting, never a restatement of the run's real, conservative results.
Every robustness tab has a built-in reading guide
Each tab ends with a collapsible “How to read this” section written in plain language. If a panel ever feels ambiguous, open it — the guide answers the exact question the panel raises.