tradingat50

Strategy graveyard / ATR pullback

Verdict: doesn't work Tested live

The ATR pullback strategy: 55 live 0DTE trades, only 1 in 3 won

Live paper record 1 Sep 2026 to 7 Oct 2026. Updated 13 Oct 2026.

Short answer: no. Four versions of an ATR pullback strategy took 55 paper trades on same-day SPX options between 1 Sep and 7 Oct, and lost $7,580. Only 19 of the 55 trades made money.

The split inside those numbers is the interesting part. When SPX had stretched up and the strategy bet on a pullback, it made +$3,740 on 30 trades. When SPX had stretched down and it bought the dip, it won 3 of 25 and lost $11,320. And unlike most of the strategies here, it lost on the index chart too, so the option costs weren't the main problem.

-$7,580net, 1 contract a trade
55live paper trades
35%made money
13 of 22sessions lost money
Running P&L by sessionCombined running P&L of 4 versions across 22 sessions, ending at -$7,580.-$10,000-$8,000-$6,000-$4,000-$2,000$0$2,0001 Sep7 Oct

Running P&L by session. Red: all versions together. Grey: each version on its own. Paper trades bought at the real ask and sold at the real bid.

What is an ATR pullback strategy?

ATR, the Average True Range, is the average size of a day's move over recent sessions, including any overnight gaps. It's a way of saying "how far does this market usually travel in a day?" without picking a fixed number of points.

A pullback strategy built on it waits for the index to stretch a meaningful fraction of that daily range away from where it opened, then looks for the move to pause, and bets on a pullback back toward the open. It's mean reversion with the distance scaled to how volatile the market has been.

The exact rules I tested

  1. The yardstick: SPX's 14-day ATR (Wilder-smoothed), as of the previous close, so it's known before the open.
  2. The stretch: the first 1-minute candle where SPX has moved 0.3 × ATR away from the day's open, in either direction, before a cut-off time: 10:30 for the 3- and 5-minute versions, 11:30 for the 8-minute ones.
  3. The pause: from that candle on, count consecutive 1-minute closes that stay within a band around the stretch level (0.225 to 0.375 × ATR from the open). When the count reaches the version's pause length (3, 5 or 8 minutes in a row), the setup is confirmed.
  4. Entry: buy a same-day SPX option against the stretch: a put after a stretch up, a call after a stretch down. Until 7 September the strike was the one nearest a 0.70 delta; from then on, the strike 5 points in the money. Bought at the asking price. One position at a time per version.
  5. Exits: sell when the option's bid is up 40% or down 40% from the price paid. The "exits on the index" version uses SPX itself instead: +10 points or −8 points. Anything still open is closed at 15:30.

The 3-minute version was retired on 7 September, after a longer study showed short pauses tested worst. Its three trades stay in the record.

Results, version by version

VersionTradesWonIndex pointsNet
3-minute pause, before 10:30 (retired 7 Sep)31-10.8-$340
5-minute pause, before 10:30217-54.4-$3,430
8-minute pause, before 11:30166-14.9-$1,670
8-minute pause, exits on the index155-31.8-$2,140
All versions5519-111.9-$7,580

"Index points" is what the trades made on the SPX chart, before the option. It's negative: the pullback mostly didn't come.

Why it failed

  1. It didn't win often enough. With the target and stop the same size, it needed to win a little under half its trades to break even (about 46%, allowing for the slightly larger average win). It won 35%.
  2. Buying the dip was the problem. Stretches up that paused tended to give some of it back, and those trades made money. Stretches down that paused tended to keep falling, and the calls bought on them won 3 times out of 25. A pause after a sharp drop turned out to be a rest, not a bottom.
  3. The signal itself was weak, not just the option. On the index chart the trades lost about 112 points in total. Cheaper execution wouldn't have rescued it.
  4. The backtest was tiny. The rules came from about a month of data, with only 7 or 8 trades per version. A 71% win rate on 7 trades says very little, and the live record shows it.

Did I test it wrong?

Quite possibly. I tested the version of ATR pullback described above, with settings I thought were fair, and it didn't work. That doesn't prove every version fails. I may have picked the wrong settings, the wrong market or timeframe, or missed a filter that experienced traders take for granted. Many strategies also depend on judgement that a set of fixed rules can't capture.

If you trade ATR pullback and it works for you, I'd genuinely like to hear how. Tell me the chart and timeframe, what counts as a setup, any filters, where you get in, where your stop and target go, and when you get out. I'll test your version on the same data, the same way, and publish the result here, whichever way it comes out.

Send me your version

What would change my mind

A long-history test, on several years of data rather than a month, where the pause genuinely separates pullbacks from continuations, on the downside as well as the upside. A version that only fades rallies is tempting after these results, but that's choosing the rule after seeing the answer, so it would need to prove itself on data it hasn't seen.

Questions

What is the ATR pullback strategy?

When the index stretches a set fraction of its average daily range (ATR) away from the open and then pauses, you bet on a pullback toward the open.

What is ATR?

Average True Range: the average size of a day's move, including gaps, over recent sessions. It scales a rule to how volatile the market has been.

Why did it fail?

With a stop and target the same size, it needed to win half its trades. It won a third. Fading rallies made money; buying dips lost three times as much.

Would a longer pause before entering help?

Longer pauses tested better in the backtest, and the live versions used them. The 8-minute versions still lost.

How it was tested

This page records my own testing. It isn't financial advice. Same-day options can go to zero within minutes.