Passrate no AI · no server · works offline
Passrate — how many accounts survive your strategy.

How many accounts survive your strategy?

Buy ten prop accounts and run your strategy on all of them. This page tells you how many pass, how many blow, what you clear, and the name of the rule that kills the rest.

Bring a backtest, a script, or just an idea. You get the count and the one thing to change. Everything is computed in this browser. Nothing leaves your device unless you press Submit.

Test against 18 years of NQ — 2008 to 2026, already here. Nothing to download, nothing to upload, nothing leaves your browser. 4,614 RTH sessions, at daily, 60-minute, 30-minute and 15-minute resolution, are inside this file.
1

What do you have?

Nothing of your own yet? Start here — 640 trades with real losing streaks in them.
Drop a CSV here, or click to choose a file
TradingView List of Trades · NinjaTrader 8 · Tradovate, MT4/5, Rithmic or any CSV. Columns are auto-detected; you correct them in a dropdown if it guesses wrong.
Run two or more strategies togetherportfolio

Add each strategy's trade list. You get combined equity, the combined max drawdown against the sum of the individual drawdowns (the stacking-vs-diversifying number), a correlation matrix of daily P&L, and same-day overlap counts.

Position size calculator
Save, load & export

Saved in this browser only (localStorage) — it never leaves your device. The preset export carries your custom firms, so a team can share one config file.

What we knowmeasured base rates
Data & privacy

Computed locally

All of it. Parsing, statistics, the backtester, the simulations, the firm ranking, the charts. The page loads nothing from anywhere — no fonts, no scripts, no images, no telemetry — and runs offline. The only request it can ever make is the one you trigger by pressing Submit. There is no AI model involved at any point; every number comes from deterministic arithmetic you can re-derive.

The price history

4,614 NQ RTH sessions, 2008 to 2026, at daily, 60-, 30- and 15-minute resolution, are inside this file — gzipped, base64'd, and unpacked by the browser's own decompressor. Nothing is fetched. They are generated by proptester/build_data.py, which round-trips every decoded bar against the 1-minute source before it writes, and the page's self-test re-checks that the coarse bars are exactly their fine constituents aggregated. There is no eval() and no code upload in the builder: strategies are templates and parameters, which is the only way a tool like this can be safe to hand to strangers.

Stored on your device

Only if you press Save: your saved setups (parameters and, so you can resume, the trade text you loaded), your custom firm presets, and your remembered column mappings live in this browser's localStorage. Delete removes them.

What a submission contains

Your parsed trade sequence, the rules you tested against, and every computed number — enough to reproduce the analysis independently. Plus whatever name, contact and description you choose to type. Nothing leaves your device unless you press Submit. Copy and download hand the file to you and send nothing; a human reads what arrives, and we do not publish or redistribute it.

Method & limits

Maths ported from rotation_econ.py / ROTATION_ECONOMICS.md (account engine, trailing conventions, per-trade risk cap, fee clock, E[$/fee], correlated rotation), regime_lens.py / BOOK_TIERS.md (tripwire statuses, DECAY_FLOOR 0.80), CURRENT_REGIME_REAUDIT.md §2 (the noise floor), EDGEFUL_ORB_TEST.md §4 (expected-maximum multiplicity), SMALL_SL_SWEEP.md (what a tighter stop costs in winners) and the daily-profit-cap payout mechanic from ZENOMTRADER_COURSE.md §2.4. Every ported function names its source in the code.

  • Your trade list is the model. If live execution differs — different fills, discretionary overrides, missed signals — the sizing conclusions travel, the dollar figures do not.
  • Adverse excursion is measured when your file has an MAE column and assumed when it does not. Without MAE, every trade is charged 0.40 × its stop against the floor.
  • Firm rules are a parameterisation, not a quote. They change often; the picker shows when each was last checked and every field is editable. Activation and reset fees are shown but not charged in the simulation, which bills the monthly eval fee only.
  • Rules against running identical positions across many accounts are a direct threat to a multi-account plan and are not modelled. Vary your parameters per account.
  • Even the block bootstrap understates clustered adversity, because blocks break streaks at their own boundaries. Much better than a shuffle, not perfect.
  • A strategy built here is filled on bar extremes, not on the tape. A stop is hit when the bar's low reaches it and filled at the stop — or at the open when the bar gaps through, which is the honest case. Inside one bar, a stop and a target that are both reachable resolve as the stop. That is the pessimistic reading, and it is the reason four of our own published edges reproduce here to the quarter point rather than flattering themselves.
  • The builder is templates and parameters, on purpose. Anything you cannot express as one of the five shapes is not testable here — build it elsewhere and drop the CSV. What you gain for the restriction is a strategy definition that travels: versioned, flat, re-runnable by someone else, and comparable across users.
  • No execution degradation with size, no dead time between accounts, no tax.
  • Sharpe and Sortino are annualised from your own trade cadence at a zero risk-free rate; under ~100 trades treat them as decoration. They are in the advanced block for that reason.