How often does a strategy survive 200 trades?
One engine, one seed, 112 cells. Win rate × payoff × risk per trade under a 10% drawdown floor, 5,000 seeded paths each. Read the grid, then run it with your own rules.
engine src/lib/state-conditional-mc.js · 4d53ab73e453master seed 20260902paths per cell 5,000generated 2026-09-02balance scale $100,000
The grid — four plates, one per risk level
Each plate is the same 7 × 4 field of win rate and payoff. Darker cells survive more often. The mark sits on cells whose expectancy is below zero after a 0.05R cost per trade — the edge itself is negative there, so survival is a matter of horizon, not sizing.
| win ↓ / R → | 1.0R | 1.5R | 2.0R | 3.0R |
|---|---|---|---|---|
| 65% | 100 | 100 | 100 | 100 |
| 60% | 100 | 100 | 100 | 100 |
| 55% | 100 | 100 | 100 | 100 |
| 50% | 98 | 100 | 100 | 100 |
| 45% | 76 | 100 | 100 | 100 |
| 40% | 25 | 95 | 100 | 100 |
| 35% | 2 | 58 | 96 | 100 |
| win ↓ / R → | 1.0R | 1.5R | 2.0R | 3.0R |
|---|---|---|---|---|
| 65% | 100 | 100 | 100 | 100 |
| 60% | 100 | 100 | 100 | 100 |
| 55% | 96 | 100 | 100 | 100 |
| 50% | 68 | 100 | 100 | 100 |
| 45% | 18 | 93 | 100 | 100 |
| 40% | 1 | 58 | 96 | 100 |
| 35% | 0 | 12 | 71 | 99 |
| win ↓ / R → | 1.0R | 1.5R | 2.0R | 3.0R |
|---|---|---|---|---|
| 65% | 100 | 100 | 100 | 100 |
| 60% | 96 | 100 | 100 | 100 |
| 55% | 76 | 99 | 100 | 100 |
| 50% | 29 | 94 | 99 | 100 |
| 45% | 3 | 70 | 95 | 99 |
| 40% | 0 | 26 | 79 | 97 |
| 35% | 0 | 3 | 39 | 89 |
| win ↓ / R → | 1.0R | 1.5R | 2.0R | 3.0R |
|---|---|---|---|---|
| 65% | 93 | 99 | 99 | 99 |
| 60% | 80 | 96 | 98 | 99 |
| 55% | 48 | 89 | 96 | 97 |
| 50% | 12 | 76 | 91 | 95 |
| 45% | 1 | 44 | 77 | 92 |
| 40% | 0 | 11 | 52 | 83 |
| 35% | 0 | 1 | 17 | 69 |
survival <20 · 20–40 · 40–60 · 60–80 · 80–95 · ≥95% of pathsnegative expectancy (24 of 112 cells)hover or focus a cell for its standard error and end-equity range
How to read it
Move down a column and survival falls with the win rate; move right along a row and it rises with the payoff. Move between plates and the same edge survives less often as risk per trade grows: the 50% / 1.5R cell reads 100% at 0.25%, 100% at 0.5%, 94% at 1% and 76% at 2%. 2 cells have a positive expectancy and still survive in fewer than half of the paths — a positive edge and a survivable size are two different measurements. The highest survival in the grid is 100.0% (win rate 35%, payoff 3.0R, risk 0.25%).
Simulated result from user-supplied inputs · not investment advice. A benchmark cell describes a synthetic strategy with fixed inputs; it says nothing about any market or account. Cost per trade is a flat 0.05R; slippage and regime change are outside the grid.
The same engine runs with your win rate, payoff, risk and drawdown rule — and keeps the reading on your device.
Method
- Engine
src/lib/state-conditional-mc.jsat blob4d53ab73e4539698db6cc2d6909e5d2df1d44436— the same Monte-Carlo the product runs.simulateFromStatefrom a fresh account; no separate benchmark math.- Grid
- win rate ∈ {35, 40, 45, 50, 55, 60, 65}% · payoff ∈ {1.0R, 1.5R, 2.0R, 3.0R} (mean loss 1.0R, cost 0.05R) · risk per trade ∈ {0.25%, 0.5%, 1%, 2%} of the starting balance.
- Horizon
- 200 trades expected — expectedTrades = tradesPerDay * days = 200. Per-day trade count is a live Poisson(tradesPerDay) draw inside the engine, so a single simulated path's realized trade count varies around this expectation.
- Rules
- Personal, firm-free: 10% static drawdown from the starting balance, no profit target, no daily cap (none), consistency 0%, mean loss 1R, cost 0.05R.
- Cell
- Each cell holds winRate, payoffR (mean win size in R; mean loss fixed at 1.0R) and riskPct (percent of current equity risked per simulated trade) fixed and runs 5000 independent seeded paths of a personal, firm-free rule set (10% static drawdown from the starting balance, no daily cap, no profit target) through PropSurvival's own Monte-Carlo engine (src/lib/state-conditional-mc.js), with a 0.05R trade cost and a Poisson(4) trades-per-day process over a 50-day horizon (expected 200 trades). Survival is the fraction of paths that reach day 50 without breaching the 10% drawdown floor; ruin is 1 minus survival. Every figure is read directly from the simulator's own output (passProb, se, terminal-equity percentiles) — no hand-typed statistics. The grid is entirely synthetic: no user account data of any kind was used to build it. Per-path maximum drawdown and longest losing streak are not collected by the simulator's current output shape and are omitted rather than approximated by a second tracker.
- Seeds
- master seed 20260902; each cell carries its own derived seed in the JSON, so any single cell can be re-run alone.
- Reproduce
node tools/build-survival-benchmarks.js --checkregenerates both files and exits non-zero on any byte of drift.
Per-cell seed = FNV-1a32(masterSeed + "|" + winRate + "|" + payoffR + "|" + riskPct); recorded per cell as `seed`. dailyFail is 0 for every cell by construction (see rules.dailyCap); proven, not assumed, in tests/survival-benchmarks.check.js. medianMaxDrawdownPct, p95MaxDrawdownPct, longestLossRunP95 are omitted — not exposed by the engine's current per-path output.
Download
Cite it
PropSurvival (2026). Survival Benchmarks v1: a synthetic win-rate x payoff x risk survival/ruin grid. CC BY 4.0. https://propsurvival.com/data/survival-benchmarks-v1.json
@misc{propsurvival2026survivalbenchmarks, title={PropSurvival Survival Benchmarks v1}, author={PropSurvival}, year={2026}, note={Synthetic Monte-Carlo dataset, CC BY 4.0}, url={https://propsurvival.com/data/survival-benchmarks-v1.json}}
Licence: CC-BY 4.0 — reuse with attribution to PropSurvival and a link to this page.
Full table — every cell, sortable by reading order (risk, win rate, payoff)
| Risk | Win rate | Payoff | Expectancy (R) | Survival | SE | Median end | P5 end | P95 end |
|---|---|---|---|---|---|---|---|---|
| 0.25% | 65% | 1.0R | 0.25 | 100.0% | ±0.00 | ×1.13 | ×1.07 | ×1.20 |
| 0.25% | 65% | 1.5R | 0.57 | 100.0% | ±0.00 | ×1.33 | ×1.24 | ×1.44 |
| 0.25% | 65% | 2.0R | 0.90 | 100.0% | ±0.00 | ×1.57 | ×1.42 | ×1.73 |
| 0.25% | 65% | 3.0R | 1.55 | 100.0% | ±0.00 | ×2.16 | ×1.88 | ×2.49 |
| 0.25% | 60% | 1.0R | 0.15 | 100.0% | ±0.00 | ×1.08 | ×1.02 | ×1.14 |
| 0.25% | 60% | 1.5R | 0.45 | 100.0% | ±0.00 | ×1.25 | ×1.16 | ×1.35 |
| 0.25% | 60% | 2.0R | 0.75 | 100.0% | ±0.00 | ×1.46 | ×1.32 | ×1.60 |
| 0.25% | 60% | 3.0R | 1.35 | 100.0% | ±0.00 | ×1.96 | ×1.71 | ×2.26 |
| 0.25% | 55% | 1.0R | 0.05 | 100.0% | ±0.00 | ×1.03 | ×0.97 | ×1.08 |
| 0.25% | 55% | 1.5R | 0.33 | 100.0% | ±0.00 | ×1.17 | ×1.09 | ×1.27 |
| 0.25% | 55% | 2.0R | 0.60 | 100.0% | ±0.00 | ×1.35 | ×1.23 | ×1.48 |
| 0.25% | 55% | 3.0R | 1.15 | 100.0% | ±0.00 | ×1.77 | ×1.55 | ×2.03 |
| 0.25% | 50% | 1.0R | -0.05 | 98.4% | ±0.18 | ×0.98 | ×0.92 | ×1.03 |
| 0.25% | 50% | 1.5R | 0.20 | 100.0% | ±0.00 | ×1.10 | ×1.03 | ×1.19 |
| 0.25% | 50% | 2.0R | 0.45 | 100.0% | ±0.00 | ×1.25 | ×1.15 | ×1.37 |
| 0.25% | 50% | 3.0R | 0.95 | 100.0% | ±0.00 | ×1.60 | ×1.42 | ×1.82 |
| 0.25% | 45% | 1.0R | -0.15 | 76.1% | ±0.60 | ×0.93 | ×0.90 | ×0.98 |
| 0.25% | 45% | 1.5R | 0.07 | 99.9% | ±0.04 | ×1.04 | ×0.97 | ×1.12 |
| 0.25% | 45% | 2.0R | 0.30 | 100.0% | ±0.00 | ×1.16 | ×1.06 | ×1.27 |
| 0.25% | 45% | 3.0R | 0.75 | 100.0% | ±0.00 | ×1.45 | ×1.29 | ×1.65 |
| 0.25% | 40% | 1.0R | -0.25 | 24.5% | ±0.61 | ×0.90 | ×0.90 | ×0.93 |
| 0.25% | 40% | 1.5R | -0.05 | 95.2% | ±0.30 | ×0.97 | ×0.90 | ×1.05 |
| 0.25% | 40% | 2.0R | 0.15 | 100.0% | ±0.03 | ×1.08 | ×0.99 | ×1.17 |
| 0.25% | 40% | 3.0R | 0.55 | 100.0% | ±0.00 | ×1.31 | ×1.17 | ×1.48 |
| 0.25% | 35% | 1.0R | -0.35 | 1.7% | ±0.18 | ×0.90 | ×0.90 | ×0.90 |
| 0.25% | 35% | 1.5R | -0.17 | 57.6% | ±0.70 | ×0.91 | ×0.90 | ×0.98 |
| 0.25% | 35% | 2.0R | 0.00 | 96.4% | ±0.26 | ×1.00 | ×0.92 | ×1.09 |
| 0.25% | 35% | 3.0R | 0.35 | 100.0% | ±0.00 | ×1.19 | ×1.07 | ×1.33 |
| 0.5% | 65% | 1.0R | 0.25 | 100.0% | ±0.00 | ×1.28 | ×1.15 | ×1.44 |
| 0.5% | 65% | 1.5R | 0.57 | 100.0% | ±0.00 | ×1.77 | ×1.52 | ×2.07 |
| 0.5% | 65% | 2.0R | 0.90 | 100.0% | ±0.00 | ×2.44 | ×2.01 | ×3.00 |
| 0.5% | 65% | 3.0R | 1.55 | 100.0% | ±0.00 | ×4.64 | ×3.54 | ×6.16 |
| 0.5% | 60% | 1.0R | 0.15 | 99.9% | ±0.05 | ×1.16 | ×1.03 | ×1.30 |
| 0.5% | 60% | 1.5R | 0.45 | 100.0% | ±0.00 | ×1.56 | ×1.34 | ×1.82 |
| 0.5% | 60% | 2.0R | 0.75 | 100.0% | ±0.00 | ×2.11 | ×1.75 | ×2.56 |
| 0.5% | 60% | 3.0R | 1.35 | 100.0% | ±0.00 | ×3.79 | ×2.92 | ×4.99 |
| 0.5% | 55% | 1.0R | 0.05 | 95.9% | ±0.28 | ×1.05 | ×0.92 | ×1.17 |
| 0.5% | 55% | 1.5R | 0.33 | 100.0% | ±0.00 | ×1.38 | ×1.19 | ×1.59 |
| 0.5% | 55% | 2.0R | 0.60 | 100.0% | ±0.00 | ×1.81 | ×1.51 | ×2.18 |
| 0.5% | 55% | 3.0R | 1.15 | 100.0% | ±0.00 | ×3.13 | ×2.40 | ×4.10 |
| 0.5% | 50% | 1.0R | -0.05 | 68.0% | ±0.66 | ×0.95 | ×0.90 | ×1.07 |
| 0.5% | 50% | 1.5R | 0.20 | 99.7% | ±0.08 | ×1.22 | ×1.05 | ×1.42 |
| 0.5% | 50% | 2.0R | 0.45 | 100.0% | ±0.00 | ×1.55 | ×1.30 | ×1.87 |
| 0.5% | 50% | 3.0R | 0.95 | 100.0% | ±0.00 | ×2.55 | ×1.98 | ×3.31 |
| 0.5% | 45% | 1.0R | -0.15 | 18.1% | ±0.54 | ×0.90 | ×0.90 | ×0.96 |
| 0.5% | 45% | 1.5R | 0.07 | 93.3% | ±0.35 | ×1.07 | ×0.90 | ×1.24 |
| 0.5% | 45% | 2.0R | 0.30 | 99.8% | ±0.06 | ×1.34 | ×1.13 | ×1.60 |
| 0.5% | 45% | 3.0R | 0.75 | 100.0% | ±0.00 | ×2.09 | ×1.64 | ×2.69 |
| 0.5% | 40% | 1.0R | -0.25 | 1.2% | ±0.15 | ×0.90 | ×0.90 | ×0.90 |
| 0.5% | 40% | 1.5R | -0.05 | 58.4% | ±0.70 | ×0.94 | ×0.90 | ×1.09 |
| 0.5% | 40% | 2.0R | 0.15 | 96.4% | ±0.26 | ×1.16 | ×0.96 | ×1.37 |
| 0.5% | 40% | 3.0R | 0.55 | 100.0% | ±0.03 | ×1.72 | ×1.37 | ×2.18 |
| 0.5% | 35% | 1.0R | -0.35 | 0.0% | ±0.03 | ×0.90 | ×0.90 | ×0.90 |
| 0.5% | 35% | 1.5R | -0.17 | 12.0% | ±0.46 | ×0.90 | ×0.90 | ×0.96 |
| 0.5% | 35% | 2.0R | 0.00 | 71.4% | ±0.64 | ×0.99 | ×0.90 | ×1.18 |
| 0.5% | 35% | 3.0R | 0.35 | 99.0% | ±0.14 | ×1.40 | ×1.12 | ×1.76 |
| 1% | 65% | 1.0R | 0.25 | 99.5% | ±0.10 | ×1.63 | ×1.29 | ×2.05 |
| 1% | 65% | 1.5R | 0.57 | 100.0% | ±0.00 | ×3.08 | ×2.29 | ×4.16 |
| 1% | 65% | 2.0R | 0.90 | 100.0% | ±0.03 | ×5.89 | ×3.97 | ×8.73 |
| 1% | 65% | 3.0R | 1.55 | 100.0% | ±0.00 | ×20.62 | ×11.88 | ×36.43 |
| 1% | 60% | 1.0R | 0.15 | 96.3% | ±0.27 | ×1.34 | ×1.02 | ×1.68 |
| 1% | 60% | 1.5R | 0.45 | 99.8% | ±0.06 | ×2.41 | ×1.78 | ×3.29 |
| 1% | 60% | 2.0R | 0.75 | 100.0% | ±0.03 | ×4.34 | ×2.99 | ×6.43 |
| 1% | 60% | 3.0R | 1.35 | 100.0% | ±0.00 | ×14.11 | ×8.25 | ×24.32 |
| 1% | 55% | 1.0R | 0.05 | 76.3% | ±0.60 | ×1.09 | ×0.89 | ×1.39 |
| 1% | 55% | 1.5R | 0.33 | 99.0% | ±0.14 | ×1.88 | ×1.38 | ×2.54 |
| 1% | 55% | 2.0R | 0.60 | 99.8% | ±0.06 | ×3.21 | ×2.23 | ×4.68 |
| 1% | 55% | 3.0R | 1.15 | 99.9% | ±0.04 | ×9.42 | ×5.55 | ×16.07 |
| 1% | 50% | 1.0R | -0.05 | 29.3% | ±0.64 | ×0.90 | ×0.89 | ×1.13 |
| 1% | 50% | 1.5R | 0.20 | 94.0% | ±0.34 | ×1.46 | ×0.90 | ×1.97 |
| 1% | 50% | 2.0R | 0.45 | 98.9% | ±0.15 | ×2.40 | ×1.65 | ×3.45 |
| 1% | 50% | 3.0R | 0.95 | 99.7% | ±0.08 | ×6.35 | ×3.79 | ×10.67 |
| 1% | 45% | 1.0R | -0.15 | 3.0% | ±0.24 | ×0.90 | ×0.89 | ×0.90 |
| 1% | 45% | 1.5R | 0.07 | 70.4% | ±0.65 | ×1.12 | ×0.89 | ×1.54 |
| 1% | 45% | 2.0R | 0.30 | 95.3% | ±0.30 | ×1.76 | ×1.04 | ×2.52 |
| 1% | 45% | 3.0R | 0.75 | 99.1% | ±0.14 | ×4.28 | ×2.58 | ×7.07 |
| 1% | 40% | 1.0R | -0.25 | 0.1% | ±0.03 | ×0.90 | ×0.89 | ×0.90 |
| 1% | 40% | 1.5R | -0.05 | 26.0% | ±0.62 | ×0.90 | ×0.89 | ×1.17 |
| 1% | 40% | 2.0R | 0.15 | 78.8% | ±0.58 | ×1.30 | ×0.89 | ×1.86 |
| 1% | 40% | 3.0R | 0.55 | 96.8% | ±0.25 | ×2.86 | ×1.62 | ×4.62 |
| 1% | 35% | 1.0R | -0.35 | 0.0% | ±0.00 | ×0.90 | ×0.89 | ×0.90 |
| 1% | 35% | 1.5R | -0.17 | 2.6% | ±0.23 | ×0.90 | ×0.89 | ×0.90 |
| 1% | 35% | 2.0R | 0.00 | 38.9% | ±0.69 | ×0.90 | ×0.89 | ×1.37 |
| 1% | 35% | 3.0R | 0.35 | 89.3% | ±0.44 | ×1.90 | ×0.90 | ×3.04 |
| 2% | 65% | 1.0R | 0.25 | 93.4% | ±0.35 | ×2.56 | ×0.90 | ×4.15 |
| 2% | 65% | 1.5R | 0.57 | 98.7% | ±0.16 | ×9.30 | ×4.89 | ×17.36 |
| 2% | 65% | 2.0R | 0.90 | 99.1% | ±0.13 | ×32.44 | ×14.22 | ×70.58 |
| 2% | 65% | 3.0R | 1.55 | 99.4% | ±0.11 | ×396.03 | ×130.75 | ×1246.48 |
| 2% | 60% | 1.0R | 0.15 | 80.2% | ±0.56 | ×1.69 | ×0.89 | ×2.78 |
| 2% | 60% | 1.5R | 0.45 | 95.8% | ±0.28 | ×5.57 | ×2.48 | ×10.42 |
| 2% | 60% | 2.0R | 0.75 | 98.0% | ±0.20 | ×17.82 | ×7.71 | ×38.45 |
| 2% | 60% | 3.0R | 1.35 | 98.9% | ±0.15 | ×174.15 | ×59.09 | ×529.68 |
| 2% | 55% | 1.0R | 0.05 | 47.6% | ±0.71 | ×0.90 | ×0.88 | ×1.81 |
| 2% | 55% | 1.5R | 0.33 | 89.4% | ±0.44 | ×3.34 | ×0.89 | ×6.18 |
| 2% | 55% | 2.0R | 0.60 | 95.6% | ±0.29 | ×9.79 | ×3.34 | ×21.13 |
| 2% | 55% | 3.0R | 1.15 | 97.3% | ±0.23 | ×81.10 | ×23.62 | ×234.91 |
| 2% | 50% | 1.0R | -0.05 | 12.2% | ±0.46 | ×0.89 | ×0.88 | ×1.19 |
| 2% | 50% | 1.5R | 0.20 | 76.2% | ±0.60 | ×1.92 | ×0.89 | ×3.73 |
| 2% | 50% | 2.0R | 0.45 | 90.5% | ±0.41 | ×5.33 | ×0.90 | ×11.41 |
| 2% | 50% | 3.0R | 0.95 | 94.8% | ±0.31 | ×35.97 | ×0.90 | ×102.66 |
| 2% | 45% | 1.0R | -0.15 | 0.8% | ±0.13 | ×0.89 | ×0.88 | ×0.90 |
| 2% | 45% | 1.5R | 0.07 | 43.8% | ±0.70 | ×0.90 | ×0.88 | ×2.17 |
| 2% | 45% | 2.0R | 0.30 | 77.1% | ±0.59 | ×2.71 | ×0.89 | ×5.98 |
| 2% | 45% | 3.0R | 0.75 | 91.6% | ±0.39 | ×15.68 | ×0.90 | ×44.19 |
| 2% | 40% | 1.0R | -0.25 | 0.0% | ±0.03 | ×0.89 | ×0.88 | ×0.90 |
| 2% | 40% | 1.5R | -0.05 | 11.2% | ±0.45 | ×0.89 | ×0.88 | ×1.28 |
| 2% | 40% | 2.0R | 0.15 | 52.4% | ±0.71 | ×1.15 | ×0.88 | ×3.19 |
| 2% | 40% | 3.0R | 0.55 | 82.9% | ±0.53 | ×6.97 | ×0.89 | ×18.71 |
| 2% | 35% | 1.0R | -0.35 | 0.0% | ±0.00 | ×0.89 | ×0.88 | ×0.90 |
| 2% | 35% | 1.5R | -0.17 | 0.7% | ±0.11 | ×0.89 | ×0.88 | ×0.90 |
| 2% | 35% | 2.0R | 0.00 | 17.5% | ±0.54 | ×0.90 | ×0.88 | ×1.62 |
| 2% | 35% | 3.0R | 0.35 | 68.9% | ±0.65 | ×2.85 | ×0.89 | ×8.14 |
Questions
What does a survival percentage in this grid mean?
The share of 5,000 seeded Monte-Carlo paths that completed 200 trades without the account touching a 10% drawdown floor from its starting balance. It is a benchmark computed from three inputs, not a forecast of any account.
Why does survival fall when risk per trade rises, even with the same edge?
A larger risk per trade makes each losing run remove more of the room to the floor. In this grid the 50% / 1.5R strategy survives in 99.7% of paths at 0.5% risk and 76.2% at 2%; the edge is identical in both cells.
Can the dataset be reproduced?
Yes. The generator, the master seed (20260902), the per-cell seeds and the engine file hash are published with the data (CC-BY 4.0). Re-running the generator regenerates the JSON and CSV byte for byte.