TheMonogramhome

Backtest

The backtest — and why it isn't the headline argument

MODEL-1 has a backtest behind it on GBPUSD data. It used to sit on the homepage as the main proof. It doesn't any more, and the reason isn't that I dislike the numbers.

That backtest tested an older, simpler version of the system than the one I trade today. Since then the model has gained a first-candle-of-session filter, a 3R space check, relative strength, DXY confirmation and context grading — and each of those changes which trades would open at all. It stays here in full, including the numbers that didn't come out the way I'd have liked, because deleting my own published data would be exactly what this site was built against.

Correction, 25 July 2026

What I had wrong here

Until 25 July this page carried “t ≈ 2” as evidence of statistical significance. That figure belonged to a different sample — a candidate that also included shorts. The short side came out negative out-of-sample (−0.28 R per trade) and I don't trade it. For the long-only sample these numbers actually describe, t = 1.2, which is not statistically significant. I recomputed it from the original engine output and I'm leaving this note here, because quietly fixing your own statistics is worse than getting them wrong.

Configuration

What exactly was tested

Pair
GBPUSD
Side
long only
Filters
D1 bias + previous day's liquidity
Target
fixed 1:3, set and forget
Spread in the model
1.0 pip, charged on every trade

Long-only because the short side lost money in the out-of-sample period. Two separate datasets were used, not one continuous series — see the gap below.

Two periods, two datasets

In-sample · development period

15 Nov 20122 Mar 2022

Documented record — not reproducible today

Trades
85
Wins
Average per trade
+0.236 R
Standard deviation
t-statistic
Profit factor
Total
+20.1 R
Max drawdown
Positive years

Out-of-sample · fresh data

4 Aug 20227 Jul 2026

Recomputed from raw data, 25 July 2026

Trades
40
Wins
16 / 40
Average per trade
+0.357 R
Standard deviation
1.87
t-statistic
1.21
Profit factor
1.54
Total
+14.3 R
Max drawdown
−8.3 R
Positive years
4 / 5

A gap in the data

The period from 2 Mar 2022 to 4 Aug 2022 is missing between the two datasets. The in-sample data ends where the original historical set ended; the out-of-sample data begins where my own MT5 export begins. That gap doesn't get filled with an estimate.

What can't be verified right now

I can't recompute the in-sample half today — the raw candles for 2012 to 2022 aren't on my disk any more, only a trade export without the daily-bias column. So the figures for that period are presented as a documented record rather than as the result of today's recomputation, and the missing metrics are left blank instead of being reconstructed by inference. Worth stating plainly: in that period the daily-bias filter is what makes the entire difference — without it the same sample is slightly negative. Once I have the data, I'll recompute and publish both halves side by side, including if it comes out worse.

Why win rate × 3 doesn't add up

At a 40% win rate and a 1:3 ratio you might expect +0.60 R per trade. The reality is +0.357 R. That isn't an error: not every win reaches the full target. Of the 16 wins in the out-of-sample sample, 13 hit the target and the rest closed at the end of the day for a smaller gain; losses, meanwhile, cost slightly more than 1 R because of the spread. Anyone recomputing this as a binary outcome gets a higher number than the system actually produces.

About converting to percentages

All drawdowns are stated in R, not percent, because the percentage depends on risk per trade — and that has changed over time. A maximum drawdown of −8.3 R means −2.5% at the current 0.3% risk, and −2.1% at the 0.25% risk it was originally measured at. A percentage quoted without its risk figure carries no information.

Historical combined record

The originally published figures — 111 trades, 6.8% equity and a maximum drawdown of −2.1% at 0.25% risk per trade. This series was produced with an older minimum-stop filter that I dropped on 9 July 2026, once it turned out the edge didn't rest on it. It stays here as a record of what was published, not as the current configuration's result.

The out-of-sample figures come from a recomputation of the original engine output, not from manual transcription. Configuration, filters and spread match the engine the indicator runs on.

Recomputed: 25 Jul 2026