WhitmanTrading

Williams Fractals: Two Bars Late, Always

Williams fractals mark a bar whose high is above the highs of the two bars on each side, or whose low is below both neighbours' lows. The shape needs five bars to exist, so every fractal is confirmed two bars after the turn it identifies.

How it works

A candlestick chart of the site's shared price history. The headline on the chart reads: A high with two lower highs on each side of it.
A high with two lower highs on each side of it. Illustrative chart - not real market data.

An up fractal is a bar whose high is above the highs of the two bars on either side. A down fractal is the mirror image using lows. There is no calculation and no smoothing.

A gently rising stretch of the long price series. The headline on the chart reads: Five bars, and the middle one is the fractal.
Five bars, and the middle one is the fractal. Illustrative chart - not real market data.

Five bars, middle one marked. Some platforms let you widen the window to seven or nine bars, which makes the shape rarer and the lag longer in equal measure.

A calmly advancing stretch of the long price series. The headline on the chart reads: It confirms two bars late, every time, by definition.
It confirms two bars late, every time, by definition. Illustrative chart - not real market data.

The lag is not a defect, it is the shape. You cannot know a bar had two lower highs after it until those two bars exist. Every fractal appears two bars after the high it marks.

Frequency is the real problem

A choppy, directionless stretch of the long price series. The headline on the chart reads: At this setting the series produces them constantly.
At this setting the series produces them constantly. Illustrative chart - not real market data.

A local high is not a significant high. In any normal stretch of price the five-bar shape occurs repeatedly, because two lower highs in a row is a very weak condition.

A flat, quiet stretch of the long price series. The headline on the chart reads: Which is why they are filtered, not traded raw.
Which is why they are filtered, not traded raw. Illustrative chart - not real market data.

Which is why they are always filtered. Bill Williams paired them with an alligator of moving averages; others use a longer window, a trend filter, or a minimum swing size. Something has to reduce the count.

A strongly rising stretch of the long price series. The headline on the chart reads: The 1% zigzag finds 43 swing highs in 576 bars.
The 1% zigzag finds 43 swing highs in 576 bars. Illustrative chart - not real market data.

A percentage swing filter gives a sense of the right order of magnitude. On this site’s shared 576-bar history a one per cent threshold identifies 43 swing highs and 42 swing lows — roughly one significant high every 13 bars.

A declining stretch of the long price series. The headline on the chart reads: And only 52% of them are higher than the one before.
And only 52% of them are higher than the one before. Illustrative chart - not real market data.

And 52% of those swing highs were higher than the previous one. Even after filtering down to genuinely significant turns, the sequence is close to a coin flip — which is the number to hold in mind before treating any single marked high as meaningful.

In practice

A candlestick chart with a volume histogram beneath it, with the volume histogram emphasised. The headline on the chart reads: Participation at the fractal is the missing filter.
Participation at the fractal is the missing filter. Illustrative chart - not real market data.

Volume is the cheapest filter available. A fractal formed on heavy participation is a different event from one formed on nothing, and the indicator itself cannot tell them apart.

A long-horizon candlestick view of the same price series. The headline on the chart reads: On a daily chart a fractal is a week of trading.
On a daily chart a fractal is a week of trading. Illustrative chart - not real market data.

The five-bar window scales with the timeframe. On a daily chart it spans a trading week; on a five-minute chart, twenty-five minutes.

A candlestick series containing several opening gaps, with the largest opening gap marked. The headline on the chart reads: A gap creates a fractal with two empty bars around it.
A gap creates a fractal with two empty bars around it. Illustrative chart - not real market data.

A gap can manufacture the shape without anything happening at the marked price, which is worth checking before placing a stop behind it.

A declining stretch of the long price series, with the entry price and the level at which a stop would trigger drawn as horizontal lines. The headline on the chart reads: The honest use is stop placement, not entry.
The honest use is stop placement, not entry. Illustrative chart - not real market data.

Stop placement is where the lag stops mattering. A stop sits behind a level that has already formed, so learning about it two bars late costs nothing at all.

A candlestick chart of the site's shared price history, annotated with the round-trip cost. The headline on the chart reads: Trading every one costs a share of a bar each time.
Trading every one costs a share of a bar each time. Illustrative chart - not real market data.

Trading unfiltered fractals is the expensive failure mode. Every one is a round trip at 2% of a median bar’s range on this history, and most of them mark nothing.

A 72-bar candlestick section of the shared price history. The headline on the chart reads: It is a shape in five bars and nothing more.
It is a shape in five bars and nothing more. Illustrative chart - not real market data.

The name promises more than the tool contains. Fractal geometry describes self-similarity across scales; this is a five-bar comparison of four numbers. The label is borrowed, and the borrowing is worth noticing because it is doing work the definition does not.

The filter question deserves a straight answer rather than a list of options. The cheapest workable one is a minimum distance: ignore any fractal that is not at least some multiple of the average bar range away from the previous one in the same direction. It requires no extra indicator, it scales with volatility automatically, and it is a single number you can write into a plan.

The alternative most people reach for — a moving average filter — does something different. It removes fractals that disagree with the trend rather than fractals that are too small, which leaves a chart full of insignificant highs that happen to point the right way. Filter for size first and direction second; the order matters more than which tools you use.

What Williams fractals are not

They are not fractal geometry. The name is borrowed, not descriptive.

They are not an entry signal. Two bars late, by construction.

They are not significant on their own. A local high is a very weak condition.

And they are not a trend tool. They mark turns and say nothing about direction.

When it fails

A sideways, range-bound candlestick series. The headline on the chart reads: In a range every other bar qualifies as one.
In a range every other bar qualifies as one. Illustrative chart - not real market data.

In a range the chart fills with them. Alternating highs and lows produce the five-bar shape constantly, and a trader taking each one pays the round trip repeatedly for nothing.

The second failure is trading the raw output. Without a filter the signal count is unusable, and every published version of the method includes one.

A third is forgetting the lag in a backtest. Marking the fractal on the bar it occurred rather than two bars later produces results that were never available.

A fourth is widening the window to reduce noise. It works, and it lengthens the lag in exact proportion.

And a fifth is treating a marked high as resistance. It is a local high; whether anything is resting there is a separate question the indicator does not ask.

The original data

On this site’s shared 576-bar history a one per cent swing filter identifies 43 swing highs and 42 swing lows. 52% of the swing highs were higher than the previous one, the longest run of consecutive higher highs was 4, and the mean run was 2.05. The figures are in research/series-measurements.json, produced by site/measure_series.py.

A 72-bar window of the shared price history, cut short at the decision bar. The headline on the chart reads: A fractal printed two bars ago. Sell it?
A fractal printed two bars ago. Sell it? Illustrative chart - not real market data.

The mean run of 2.05 is the number that decides how to use them. If marked highs tend to arrive in runs of about two, then the third one in a sequence is where the odds start working against a continuation trade — and a tool that marks turns is being asked to do the one job it can do. Use fractals to place the stop and to count the sequence, and take the entry decision from something that does not need two bars of hindsight to exist.

Swing high and low is the concept the shape approximates. Stop loss placement is where they earn their keep. And market structure is what a filtered sequence of them describes.

What I actually do

I keep fractals on one chart and use them for exactly one thing: deciding where the stop goes. The two-bar lag that makes them useless as an entry signal is irrelevant to a stop, because a stop is placed behind something that has already happened. Used that way they are one of the few indicators I never argue with.

— Michael Whitman

This page is educational, not financial advice. Test every idea on your own charts before risking money.