ProEA Lab · Honest notes on building & testing a real MT5 system · No income claims · Every number links to its source
Systems

Monte Carlo Backtesting: One Trading System, 10,000 Simulated Paths

We took the 24 real walk-forward months behind our own EA's published backtest and resampled them into 10,000 alternative years — same system, same months, reshuffled. The honest range runs from losing 43% to making 124×, the median year spends time 46% underwater, and a quarter of the winning years started out losing. Every number below is reproducible from a script in our repo.

PLProEA LabJul 10, 2026 · 12 min read
Thousands of thin glowing equity threads fanning out from a single dark origin point, a few threads rose-red and falling, most emerald and rising to different heights — poster titled One System. 10,000 Years.

Monte Carlo backtesting exists because one equity curve is one lucky draw — the same trading system, resampled ten thousand times, tells you what the backtest alone never will: the range of futures it could produce. This article runs that experiment on our own EA and shows you the spread.

There's a table behind our EA's sales page with 24 rows in it.

One row says +422.38%.

Another says −46.41%.

Same system. Same config. Same market. The rows are one calendar month apart.

Most vendors would show you the first row. Our sales page reports what the 24 rows roll up to — the win rate, the profit factor, that +422% best month. This page goes further: the full table, row by row, is printed in the appendix below, exactly as it's committed in our repo. And this week we asked it a harder question.

If those 24 months are what this system's months look like… what does a year look like? Not the year that happened — every year that could have.

A backtest shows you one year the system had. So we built the other 9,999 — and published the script.

Two requests before we start:

  1. Save this for the next time anyone — us included — shows you a single equity curve.
  2. Send it to one trader who thinks a "verified backtest" is one number.

Skip this if you want the numbers

Sixty-second version: we bootstrapped the 24 published real-tick walk-forward months (each month = a fresh $10,000 MT5 Strategy Tester run — backtest data, not live results) into 10,000 synthetic years, twelve draws each, using the same seeded PRNG our public calculators use. The median resampled year multiplied the account 6.75× — and the honest range around that median is enormous: the 5th percentile year lost 43%, the 95th made 123.9×. 10.7% of all years ended negative. The median year's worst peak-to-trough drawdown was 46.4%; even the calmest 5% of years still dipped. 27.8% of the years that ended positive began with two net-negative months — fire every system that starts red and you fire a quarter of your future winners. Remove the single +422% month and the median year drops to 3.29× while negative years rise to 17.4% — the upside is concentrated; the pain is structural. All derived from modelled backtest months; none of it is a forecast; all of it regenerates from one command at the bottom of this page.

What traders assumeWhat 10,000 resampled years say
"The backtest number is the system"The backtest number is one draw from a distribution 200× wide
"A good system has good years"This one had 10.7% losing years — from the same 24 months
"If it starts losing, it's broken"27.8% of its winning years started with two red months
"Drawdowns mean something went wrong"The median year dipped 46.4% on the way to wherever it went
"One monster month is just upside"Remove it and the median year halves — ask any vendor which months carry their curve

The method — plainly, before the numbers

The input. SWEEP_24MO in our repo: 24 monthly walk-forward results, January 2024 through December 2025. Each month starts from a fresh $10,000 and runs the same EA config in MT5's Strategy Tester on real-tick data. It is the stress-test data behind the KPIs our sales page reports — committed at src/data/mtr-backtest.ts, printed row by row in this article's appendix — and it is backtest data. Nothing in this study is a live track record, and nothing below forecasts one.

The experiment. A bootstrap: build a synthetic "year" by drawing 12 months at random (with replacement) from those 24, compound them, record the outcome. Do that 10,000 times. Randomness comes from mulberry32(7) — the same deterministic PRNG behind our public Monte-Carlo simulator — so the run is exactly reproducible: same seed, same numbers, any machine, forever.

What the question is. Not "what will next year make?" — the study can't know that. The question is narrower and more useful: given months like these 24, how wide is a year? The width is the finding.

I — The 24 months, measured

Before any simulation, the raw table (arithmetic only, no resampling):

StatisticValue
Months24
Mean month+35.03%
Median month+22.05%
Standard deviation94.04%
Best month+422.38% (Oct 2025)
Worst month−46.41% (Aug 2024)
Negative months6 of 24 (25.0%)
Months at −40% or worse3
Months at +40% or better5
Longest losing streak2 months

Read the standard deviation twice: 94% — nearly three times the mean. That single statistic is the whole article in miniature. A process this dispersed doesn't have "a" yearly result. It has a distribution, and everything you feel about the system depends on which part of the distribution you happen to live through.

II — The fan

Compound twelve random draws from that table, 10,000 times, and here is where "the same system" lands after a year:

PercentileAnnual multiple
P50.57× (−43%)
P252.33×
Median6.75×
P7520.72×
P95123.90×

The extremes are wider still — the single worst resampled year finished at 0.027×, the best at 6,246× (compounding is not a metaphor). 77.8% of years at least doubled; 40.4% made ten-x or better; and 10.7% of all years — one in nine — ended in a loss. Same months. Same system.

A percentile fan of 10,000 resampled years on a log scale, spreading from one origin to a 95th-percentile line at 123.9 times, a median at 6.75 times, and a 5th-percentile line at 0.57 times.
Month by month, 10,000 years of the same system, log scale. Generated directly by the study script — not an illustration.
The same system's honest year runs from −43% to +124×. Anyone who quotes you one number is choosing which of these years to show you.

III — The drawdown nobody escapes

Outcomes got all the range. The pain did not:

Intra-year max drawdownValue
P5 — the calmest 5% of years5.8%
Median year46.4%
P95 — the roughest 5%81.6%

Sit with the middle row. The median year — not the disaster, the ordinary one — spent part of its journey 46.4% below its own peak. Years that finished at 20× passed through it. Years that finished underwater passed through worse. The right tail of outcomes is carried by months like +422%; the drawdown row is carried by every year equally.

The median year dipped 46% on the way to wherever it went. Comfort was never in the distribution — only outcomes were.

IV — The judgment window

We tagged every resampled year whose first two months compounded negative, then checked how it ended.

2,481 of the 8,933 positive years — 27.8% — started with two net-losing months.

That's the number behind the advice we keep giving qualitatively (judge in trades, not weeks): a system that opens red is exhibiting the distribution, not disproving it. If your rule is "kill anything that starts with two losing months," you would have executed more than a quarter of this system's winning years at the door.

V — Remove the monster month

The obvious objection — we'll raise it ourselves: October 2025's +422% is one month in 24. How much of the story is that single row?

A lot of the upside. None of the pain. Same protocol, 10,000 years drawn from the other 23 months:

All 24 monthsExcluding +422%
Median year6.75×3.29×
P5 / P950.57× / 123.9×0.41× / 27.1×
Negative years10.7%17.4%
Median max drawdown46.4%48.0%
One month owns half the median. The drawdown belongs to every year — with or without the hero.

That asymmetry is worth memorizing, because it generalizes: in fat-tailed systems, the upside concentrates in a handful of periods while the volatility is structural. Which is also why "we removed our best month and it still works" is a question you can now ask any vendor — including us. The answer is printed above.

The limits — before you ask

Stated plainly, because a study that hides its limits is an ad:

It's backtest all the way down. The 24 input months are modelled walk-forward runs (real-tick MT5, fresh $10K each) — not live trading. Resampling a backtest cannot make it live; every figure here inherits every limitation of the underlying evidence, including the cost-model optimism we've written about before.

n = 24 is thin. Two years of months barely pins down a monthly distribution, let alone its tails. The bootstrap can only reshuffle months that happened — it cannot invent the month that hasn't happened yet, and the worst future month is not obligated to resemble the worst past one.

Months are drawn independently. Real markets have regimes; bad months cluster. Independence likely understates how ugly the bad stretches get.

This is not a forecast. The study answers "how wide is a year assembled from months like these" — nothing else. No number on this page is a promise, a projection, or a typical result.

What this changes — for you, tomorrow

Expectations become ranges. If someone shows you one equity curve — a vendor, a signal seller, your own backtest — the first question is now automatic: where does this sit in its own fan?

Sizing answers to the drawdown row, not the outcome row. If the median journey includes a 46% dip, position size for the dip you'll actually have to sit through — the bet-sizing math and the drawdown-recovery arithmetic exist for exactly this.

Judgment gets a window. A quarter of winning years started red. Decide in advance how many months or trades constitute a verdict, or the distribution will decide for you — always at the worst moment.

Where MTR sits

The data in this study is MTR's published stress-test table — we didn't commission a study of someone else's product; we pointed the microscope at our own and printed what it showed, including the one-in-nine losing years and the 46% median dip. That's the standard we think every EA vendor owes you: not a curve, a distribution — which is why the Evolution Lab runs validation math like this automatically, and why the Monte-Carlo simulator is free with no signup: put your win rate and risk in, and look at your own fan before the market shows it to you the slow way. Evidence, not prophecy — and this time, the evidence comes with a script.

Disclosure

Every number above derives from modelled backtest data and is labeled as such; none of it predicts live performance, ours or anyone's. The study's code, inputs, seed, and this article shipped in the same commit — if we'd cherry-picked, the diff would show it. The one question this page should teach you to ask any vendor: "Show me the distribution, not the curve — and what happens when you remove your best month?"

Reproduce it

Every statistic in this article is printed by one committed analysis script, which reads the same 24-month table shown in the appendix and regenerates both figures from the raw distribution. Change the fixed seed and the exact digits wobble while the shape holds; that wobble is the whole lesson.

A histogram of 10,000 resampled annual outcomes, with rose bars below breakeven totaling about one year in nine and emerald bars spreading from break-even out past fifty-x.
Where 10,000 years of 'the same system' land. Rose = ended negative. Generated by the study script from the raw distribution.

Appendix — all 24 rows

The complete input, exactly as committed in src/data/mtr-backtest.ts (each month = a fresh $10,000 real-tick walk-forward run; modelled backtest, not live):

MonthResultMonthResult
2024-01+8.08%2025-01+24.23%
2024-02+10.53%2025-02−22.28%
2024-03−24.35%2025-03+65.25%
2024-04+69.30%2025-04+7.56%
2024-05+27.00%2025-05−44.15%
2024-06+20.97%2025-06+0.53%
2024-07+25.20%2025-07+9.98%
2024-08−46.41%2025-08−41.88%
2024-09+24.59%2025-09−5.84%
2024-10+33.26%2025-10+422.38%
2024-11+39.46%2025-11+40.29%
2024-12+23.14%2025-12+173.98%

Every statistic and both figures in this study derive from these 24 numbers and nothing else.

The table had 24 rows.

The truth had 10,000.

Every system you'll ever evaluate is like this — you just usually don't get to see it.

Now you know what to demand: the fan, not the curve.

More from ProEA Lab

Trailing vs Static Drawdown: The Rule That Moves While You Trade

Two accounts, same drawdown percentage, completely different games: a static floor never moves, a trailing floor climbs behind every new equity peak — which means your best trading day can quietly shrink your cushion. Here's the arithmetic of both floors, the three firm-specific variants that decide everything, and why the dangerous moment is right after you've been winning.

Aug 10 · ProEA Lab

A brass figure climbing a staircase while the stairs behind it fold upward into a rising floor, closing the gap — poster titled The Floor Follows.

Walk-Forward Testing: Stop Grading Your Own Homework

One backtest over one history rewards whoever searched hardest, not whoever found something real. Walk-forward testing is the honest alternative: optimize on a window the strategy can see, judge it on the window it can't, roll forward, repeat — and only ever score the unseen parts. Here's the protocol on any platform, the one ratio worth recording, and what walk-forward still can't prove.

Aug 10 · ProEA Lab

A brass stencil sliding along a long paper chart strip, exposing only one unmarked section at a time while the rest stays covered — poster titled Judge the Unseen Part.

How to Add a Pine Script to TradingView (Both Routes, 2 Minutes)

TradingView has no Import button — and in the current interface the Pine Editor isn't at the bottom of the chart anymore, so half the guides out there point at a tab that no longer exists. Here are both routes as they actually work today: pasting source code into the editor, and pulling a community script from the Indicators dialog — plus the paste mistake behind most 'compile error' support tickets.

Jul 24 · ProEA Lab

A brass pneumatic-tube capsule holding a rolled paper script being slotted into a receiver panel beside a dark candlestick chart — poster titled Two Routes In.