
Aug 12, 2026
We found a prop-firm strategy that beats buy and hold
It passes 99% of simulated FTMO-style challenges, and over six years it returned more than holding Bitcoin at under half the drawdown. Six parallel searches found it, and the change that made it work was deleting a single line, the take-profit.
Over six years and four months, holding Bitcoin returned +879.87%. It also put you 76.7% underwater at the worst point, which is a number people quote comfortably after the fact and very few survive in real time.
Here's what we ended up with instead, on the same asset over the same window, with honest fills and fees: +964.87%, worst drawdown 36.9%. More money, less than half the pain.
Run at conservative sizing, the same strategy passes 99.32% of simulated FTMO step-1 challenges. That's 10,000 of them, resampled from its own real trades.
The strategy isn't exotic. It's a textbook EMA crossover with a stop and a take-profit, the kind every tutorial teaches. We changed one thing about it. The full code, about thirty lines of it, is further down this page.
The search
We ran six independent searches in parallel, each on a different family: advanced trend following, scalping and intraday microstructure, mean reversion, seasonality and carry, volatility regime switching, and exit engineering. Together they executed several thousand backtests.
Every candidate had to clear the same bar: profitable in four separate market regimes, each measured on its own. A strategy that only works when Bitcoin rises is a long position wearing a disguise.
- P1 Apr 2020 to Dec 2021, bull (BTC +621%)
- P2 Jan to Dec 2022, bear (BTC −64%)
- P3 Jan 2023 to Dec 2024, bull (BTC +465%)
- P4 Jan 2025 to Aug 2026, decline (BTC −33%)
Most of what we tried died; there's a quick autopsy near the bottom.
The one change
The baseline enters on an EMA 12/100 crossover and exits with a fixed bracket: a 2% stop and a 5% take-profit. Over six years on the 4-hour chart it returns +66.63% with a Sharpe of 0.89.
We deleted the take-profit. The stop became 2.5%, and once a trade is +5% in profit the stop moves up to break-even. That's the entire modification: no profit target, and a free trade once it's working.
So with no target, what closes a winning trade? The opposite crossover. This is a stop-and-reverse system: the cross that opens the short is the same event that closes the long. A losing trade dies at its stop, a stalled one scratches out at break-even, and a winner stays open until the trend itself ends. No trade is left hanging. The exit price just isn't chosen in advance, because the whole point is that you can't know in advance how far a trend will go.
| Baseline | Take-profit removed | |
|---|---|---|
| Total return | +66.63% | +269.35% |
| CAGR | 8.40% | 22.91% |
| Max drawdown | 8.5% | 21.7% |
| Sharpe | 0.89 | 0.92 |
| Calmar | 0.99 | 1.05 |
| Regimes profitable | 4 of 4 | 4 of 4 |
Both at the same 1% risk per trade. Per regime the modified version returns +72.95%, +16.39%, +42.53%, +20.45% across 194 trades: profitable in all four, and roughly four times the baseline's money over the full window.
The trade-off is right there in the table: similar Sharpe, deeper drawdowns, four times the ending capital. The cap saved a few points of drawdown and paid for them with the biggest winners, which is a bad trade for a system that lives on its right tail.
The mechanism isn't mysterious. A trend system makes its money from a handful of enormous winners, and this one wins about 28% of the time. A 5% ceiling truncates exactly the trades that pay for everything else, while the losers still run to the full stop. You keep the entire left tail and sell the right tail for pocket change.
Sizing, and the prop-firm view
Because the strategy risks a fixed fraction per trade, sizing scales the result. This is where the comparison to buy-and-hold gets fair, and where the Risk tab's prop-firm simulator earns its place. Each row below is 10,000 simulated FTMO step-1 challenges run over the strategy's real trades:
| Risk per trade | Return | CAGR | Max DD | Calmar | Challenge pass |
|---|---|---|---|---|---|
| 0.5% | +99.11% | 11.49% | 11.9% | 0.96 | 99.32% |
| 1.0% | +269.35% | 22.91% | 21.7% | 1.05 | 90.53% |
| 2.0% | +964.87% | 45.29% | 36.9% | 1.23 | 71.39% |
| 3.0% | +2,377.92% | 66.01% | 48.1% | 1.37 | 59.35% |
| 5.0% | +2,944.92% | 71.50% | 74.5% | 0.96 | 24.19% |
| buy and hold | +879.87% | 43.33% | 76.68% | 0.57 | n/a |
At 2% risk it returns more than holding Bitcoin at less than half the drawdown, and still clears seven challenges in ten. At 3% it makes more than two and a half times buy-and-hold's return, still at far lower drawdown than holding.
Now watch the pass-rate column fall as you size up: 99.32%, 90.53%, 71.39%, 59.35%, 24.19%. The account that grows fastest is the account most likely to break a rule first. If you're trading an evaluation, the tab is telling you to take the 0.5% row and be patient. If you're trading your own money, the 2% and 3% rows have the best Calmar. Those are different questions with different answers, and the simulator separates them in seconds.
The strategy, in full
Here is the winner, exactly as you'd write it in the editor. Note what isn't
there: no take_profit, anywhere.
FAST = 12
SLOW = 100
STOP_PCT = 2.5
BREAKEVEN_AT_PCT = 5.0
HISTORY = {"primary": 160}
def evaluate(ctx):
close = ctx.candles.close
fast = ctx.indicators.ema(close, FAST)
slow = ctx.indicators.ema(close, SLOW)
up = float(fast.iloc[-1]) > float(slow.iloc[-1])
prev_up = float(fast.iloc[-2]) > float(slow.iloc[-2])
if up == prev_up:
return None
price = float(close.iloc[-1])
if up:
return Signal(
direction="LONG",
stop_loss=price * (1 - STOP_PCT / 100),
breakeven_at_profit_pct=BREAKEVEN_AT_PCT,
setup_id="TREND_LONG",
)
return Signal(
direction="SHORT",
stop_loss=price * (1 + STOP_PCT / 100),
breakeven_at_profit_pct=BREAKEVEN_AT_PCT,
setup_id="TREND_SHORT",
)
And its backtest over the full window, BTCUSDT on 4-hour candles from April 2020 through August 2026 with honest fills, fees and funding, at the 2% risk per trade that produced the headline number:
| Apr 2020 to Aug 2026 | |
|---|---|
| Total return | +964.87% |
| CAGR | 45.29% |
| Max drawdown | 36.9% |
| Sharpe | 0.92 |
| Sortino | 5.20 |
| Calmar | 1.23 |
| Profit factor | 2.12 |
| Win rate | 27.8% |
| Trades | 194 |
| FTMO step-1 pass | 71.39% |
What died
Most of what the six searches produced did not survive the four-regime bar, and the autopsy is quick. Scalping is arithmetically dead at short horizons: a perfect oracle, one that calls every single 1-minute bar correctly, still loses 12 bps per trade after costs, and an order-flow signal that is unambiguously real (t = 6.28 across 30,193 observations) is worth about fifty times less than the round trip costs. A real edge and a tradeable edge are different things. Seasonality didn't survive multiple-testing calibration. Mean reversion worked only behind a trend filter, and never intraday. The one other keeper: gating longs on negative funding, whose forward returns are positive in all four regimes and which improved a gated trend baseline on both Sharpe and drawdown.
Honest caveats
It's a Bitcoin strategy. Every number in this article is BTCUSDT on the 4-hour chart. We also ran the identical configuration on other instruments and the edge didn't hold there, so treat this as a result about Bitcoin and nothing else. If you want to trade it elsewhere, validate it there first. That's one backtest away, and it's the whole reason the tooling exists.
We searched hard, and search buys optimism. Several thousand configurations were tested, so survivorship is baked in, and we've shown what that does when it goes unchecked. What tempers it here: the winner is profitable in all four regimes measured separately, not just on the total, and the edge holds its shape across every sizing level we ran rather than living in one lucky cell.
The returns are carried by few trades. That's the nature of trend following. A handful of trades produce most of the profit, which is precisely why capping them was so expensive. It also means the realised path is lumpy, and the drawdowns arrive during the long stretches between winners.
The finding we'd defend: on a strategy you already have, the exit is worth more than the entry, and an arbitrary take-profit is the most expensive default in retail trading. We didn't find it by being clever about signals. We found it by deleting one line.