Open the analyzer →

Home › Explore Investing Strategies › System trading

Volatility breakout: buy at open + k × yesterday's range

Larry Williams' short-term breakout rule that buys when the price rises above today's open plus k times yesterday's range. This covers the rule and its variants, a QQQ backtest since 2000 with an exit at the next open, and the cost arithmetic that changes the result.

In one line

A rule that follows the move once the day's rise passes a set fraction of the previous day's range. On QQQ since 2000 it returned 13.2% a year before costs, above buy and hold (8.6% a year), but with a 0.15% cost per trade, $10,000 ended at $63 after 2,800 trades.

Article

Volatility breakout is a short-term rule that follows the move once the day's rise passes a set fraction of the previous day's range. It was popularized by Larry Williams, an American commodity futures trader, and in Korea it became widely known as the standard example in beginner books and courses on building crypto trading bots in Python. This article covers the rule and its variants, results on QQQ since 2000, and the cost arithmetic that changed the result.

Rules

This is the rule this site calculated. Exits differ from trader to trader, so they are listed with the variants below.

  • Range: yesterday's high − yesterday's low.
  • Target: today's open + k × range. k is set between 0 and 1, and the most common value is 0.5.
  • Buy: when today's high reaches the target, buy at the target (a buy stop order). This calculation used all the cash on each breakout day.
  • Sell: sell everything at the next trading day's open. No stop loss was used.
  • Direction: only the long side was calculated. In futures, a mirror rule that sells short below open − k × range is sometimes used alongside.
Volatility breakout. The target is today's open plus k times yesterday's range (high − low). When today's high reaches the target, buy at the target and sell at the next trading day's open. k = 0.5 in the figure. ① Volatility breakout: buy at the target, sell at the next open Target = today's open + k × (yesterday's high − yesterday's low). k = 0.5 here. Yesterday's range high − low Today's open k × yesterday's range Target Buy Sell at the next open Yesterday Today Next day Buy: at the target, the moment today's high reaches it (a buy stop order) Sell: everything at the next trading day's open This site's calculation: QQQ, k 0.5, the whole account on a breakout day, 0.15% cost per trade. A touch counted as a fill at the target. A real buy stop order can fill at a higher price.

The target starts from today's open, so it is not the same as breaking yesterday's high. As in the figure, the target can sit below yesterday's high. With k at 0 or more, the target is always above the open, so the rule never buys right at the open. After a day with a wide range the target is farther away and the rule buys less often, and after a narrow day it buys on a small move.

Common variants

  • Exit: selling at the same day's close is common. The exits Williams described are selling at the first profitable open (a bailout exit) and a stop loss.
  • Choosing k: instead of a fixed value, k is set to the average noise ratio of the last 20 days. The noise ratio is 1 − |close − open| ÷ (high − low), the part of the day's range that moved without direction.
  • Moving-average filter: buy only when yesterday's close is above its 5-day moving average. A scored version splits the position by how many of the 3, 5, 10 and 20-day averages the price is above.
  • Volatility sizing: the position is set to target volatility ÷ (yesterday's range ÷ yesterday's close). Days with wide swings buy less.
  • Day boundary: crypto trades around the clock, so the price when the daily candle rolls over (often 00:00 UTC, 9 a.m. in Korea) serves as the next day's open.

Where it came from

Williams devoted a chapter to volatility breakouts in his 1999 book Long-Term Secrets to Short-Term Trading. He is reported to have started with $10,000 and posted a 12-month return of 11,376% in the 1987 Robbins World Cup Championship of Futures Trading (Wikipedia). The figure comes from the contest record and has not been verified by this site. It came from a futures account, so it cannot be compared directly with the ETF calculation below.

Backtest results (as of September 2026)

The k 0.5 rule was applied to QQQ from January 2000 to September 2026. The starting money was $10,000 with nothing added later, dividends were reinvested, and a 0.15% cost was charged on every buy and sell. The rule traded 2,800 times (about 105 a year), and 57% of trades sold at the next open above the buy price. Even so, the end balance was $63, an annual return of −17.3%. Buy and hold ended at $91,094, or 8.6% a year. The costs paid over the period added up to $27,736, 2.8 times the starting money.

Changing k or adding a filter still lost money every time. Over the same period, k 0.3 traded 4,171 times for −28.7% a year, k 0.7 traded 1,852 times for −11.4%, and k 0.5 with the 5-day MA filter traded 1,609 times for −12.5%. Over the last 10 years (October 2016 to September 2026), k 0.5 returned −18.7% a year against 20.9% for buy and hold. The monthly-updated table is in Volatility breakout on QQQ backtest.

Costs decided the result. With only the cost per trade changed, the annual returns were as follows (January 2000 to September 2026).

Case0.15% per trade0.05%0%Buy and hold
QQQ k 0.5, exit at next open−17.3%2.0%13.2%8.6%
QQQ k 0.5, exit at same-day close−24.3%−6.6%3.7%8.6%
QQQ k = 20-day noise ratio−16.7%1.8%12.6%8.6%
SPY k 0.5, exit at next open−26.0%−8.5%1.7%8.2%

The same-day close and noise-ratio rows were calculated separately with the same engine for this article. The noise-ratio k traded 2,685 times, almost as often as k 0.5.

The cost arithmetic

Before costs, the average trade gained 0.13% (winning trades +0.88% on average, losing trades −0.87%). A 0.15% cost per trade takes 0.3% out of every round trip, more than twice the average gain. Costs alone multiply the account by 0.997 per trade, and over 2,800 trades that shrinks it to about 1/4,400. That is why a result that would have been $278,292 without costs ended at $63. At a 0.02% cost per trade the rule matched buy and hold (8.6% a year), and above 0.06% it lost money.

Where the gain came from

The before-cost result was 27.8 times. Splitting it into the move from the buy price to that day's close and the move from the close to the next open gives 2.64 times for the first and 10.54 times for the second. Most of the gain came overnight. Selling at the same day's close drops the overnight part, and the same rule returned 3.7% a year even with no costs.

QQQ itself looked the same. Over the same period, buying at every open and selling at the close would have turned money into 0.52 times, and buying at every close and selling at the next open into 17.7 times (dividends included, before costs). The breakout held only 42% of all nights yet took a share equal to 82% of QQQ's overnight gain (in log returns). That share, though, also goes to anyone who simply holds. The finding that stock gains cluster overnight has been reported many times in research (Cooper, Cliff, Gulen 2008).

Fill assumptions and limits

  • A touch of the target by the high counted as a fill at the target. A real buy stop order can fill above the target, so this assumption leans toward a better result.
  • Daily bars cover the regular session. Pre-market and after-hours trading is not included.
  • The inputs to the buy decision (today's open, yesterday's high and low) are all known before buying.

Why it became known in futures

Williams traded futures. Futures carry small commissions and spreads relative to the contract value and move large amounts on little margin. In the calculation above, the rule beat buy and hold only when the cost per trade was below 0.02%. US stock commissions at Korean brokers are usually higher than that, and currency exchange adds its own cost. A rule that became known in futures does not produce the same result on an ETF.

Related concepts and search terms

  • Opening range breakout (ORB): follow the price once it passes the high or low of the first part of the session. Toby Crabel covered it in his 1990 book Day Trading with Short Term Price Patterns and Opening Range Breakout. Volatility breakout uses the previous day's range as the yardstick instead of the opening period.
  • Range expansion: the observation that when a price that has moved narrowly starts moving widely, the move tends to continue in that direction. Williams saw trends as starting from such expansions.
  • Channel breakout, Turtle trading: breakout rules that buy above the highest price of several days. Volatility breakout works on a one-day cycle, while the Turtles held for weeks to months (Turtle breakout rules backtest).
  • Momentum: the tendency for what has risen to rise a little more. This rule bets on short momentum within a day.
  • Overnight return, night effect: the observation that stock gains cluster between the close and the next open rather than during the session. The QQQ calculation above showed the same.
  • Williams %R: an overbought and oversold indicator by the same Larry Williams. It is a different rule from volatility breakout.

Search terms: volatility breakout, Larry Williams, range breakout, opening range breakout, noise ratio, overnight return, bitcoin trading bot.

Drawbacks and risks

  • It trades so often that costs decide the result. Over 2,800 QQQ trades since 2000, a 0.15% cost per trade changed the annual return from 13.2% before costs to −17.3%.
  • The win rate (57%) alone says little. Winning and losing trades averaged about the same size (+0.88%, −0.87%), so nothing was left after costs.
  • On a buying day the whole account is held overnight. Bad news overnight hits in full as a gap at the next open. Even with no costs, the max drawdown was −35.5%.
  • Fills at the target were assumed, so real fills can be worse than this calculation.
  • Every sale realizes a gain. For Korean residents, the tax rate on foreign stock gains above ₩2.5 million a year is 22% (including local income tax).

Operator's assessment

The problem with volatility breakout is size, not direction. On QQQ the average trade gained 0.13% before costs, and the 0.3% round-trip cost was more than twice that. Raising k or adding a moving-average filter cut the number of trades and the losses, but every variant calculated in this article lost money at a 0.15% cost per trade. Most of the before-cost gain came from overnight moves, and simply holding QQQ collects that share too. Unless trades cost less than 0.02% each way, the rule did not beat buy and hold in this calculation.

What this article does not cover

This article does not recommend any ticker or k value. The figures are past results from this site's engine (dividends reinvested, the whole account on a breakout day, fills assumed at the target). Outside figures such as contest returns are the source's claims and have not been verified by this site. Costs and taxes for futures, crypto and locally listed products are yours to check. Everything here is reference information based on past, public data and is not investment advice.

Related

Volatility breakout on QQQ backtest · Turtle breakout rules backtest · Golden cross 50/200 backtest · Grid trading · Support, resistance and breakout · Livermore's trend breakout

Basics and trading strategies

← Grid trading: buy at each line down, sell one line up · Contents · Moving-average trading: the 200-day line, golden cross and 10-month rule →

See these metrics on a real stock →

Confluence Zone is an analysis tool for information and research; it is not investment advice, a solicitation, or a trading instruction. Investment decisions and their outcomes are your own responsibility.
About & methodology · Explore Investing Strategies · Glossary · Questions and answers · Sample analysis · Terms · Investment disclosure · Privacy policy · Open the analyzer · 한국어