Market structure·6 min read

Market structure, BOS and CHoCH

In one sentence
A reading of price as a sequence of swing highs and lows, where a break beyond the last swing either continues the sequence (BOS) or reverses it (CHoCH).

Also called Break of structure (BOS), Change of character (CHoCH), Market structure break (MSB), Trend structure — all covered here rather than on pages of their own.

Published 15 September 2026 · by the SageTradingJournal team

Market structure is the habit of reading a chart as a sequence rather than a picture. Mark the turning points; note whether each high is above the last high and each low above the last low. A series of higher highs and higher lows is what most traders mean by an uptrend, and the mirror image by a downtrend.

Two events get names. When price breaks beyond the most recent swing in the direction the sequence was already going, that is a break of structure — the trend did what it was doing, once more. When price breaks the most recent swing in the opposite direction, that is a change of character — the sequence that had been holding no longer holds.

The same sequence, both events
  L1 2290   H1 2318   L2 2301   H2 2334   L3 2312

  higher highs, higher lows       -> uptrend sequence
  price trades above H2 (2334)    -> break of structure
  price trades below L3 (2312)    -> change of character

The swing point is the whole argument

Everything above depends on knowing which highs and lows count, and that is not something a chart tells you. It is a parameter you choose, and it is the reason two competent traders can look at the same candles and disagree about whether the trend has changed.

MethodHow a swing is definedWhat it costs
Fractal / n-barA high with n lower highs on each sideConfirmed only n candles late — every signal arrives after the fact
By eyeThe turns that look obviousNot reproducible; two reviews of the same chart disagree
Percentage or ATRA turn of at least x, ignoring smaller onesOne threshold suits one volatility regime and misreads others
Close-basedOnly closes beyond the swing countFewer false breaks, later entries, different results entirely
Higher-timeframe onlySwings from a slower chartFar fewer events; small samples take much longer to mean anything

There is no correct row. There is only the row you chose, which you should write down, because a test of "market structure" that did not fix this parameter has tested nothing in particular.

Why CHoCH is harder than it looks

A change of character is a claim about the future tense made with past-tense evidence: the sequence has broken, therefore something has changed. But a sequence breaks constantly in ranging conditions, and every deep pullback in a trend that later continues also breaks the last swing. Both are the same event on the chart at the moment it happens.

What it is good for

Structure's real contribution is bookkeeping. It converts "the trend looks strong" into a specific price that, if traded through, means the reading was wrong. That price can go in a plan, and a plan with a written invalidation is a plan a journal can score afterwards.

It also gives other patterns somewhere to attach. Order blocks and fair value gaps are commonly filtered by whether they formed in the direction the structure is going — which is a rule, and therefore testable, rather than a preference.

Testing a structure rule

  1. 1Fix the swing definition and the confirmation rule in writing, as a playbook rule, before collecting anything.
  2. 2Replay forward. Swing points look obvious in hindsight and ambiguous live, and only one of those two states is the one you trade in.
  3. 3Log every structure event your rule produced, not only the ones you acted on.
  4. 4Split the results by what happened next — continuation or reversal — and report both counts rather than a single success rate.
  5. 5Compare against your baseline: trades taken with the structure filter versus everything else, in R, with sample sizes attached.

Sage's analytics will do the arithmetic once the trades carry the tags, and the backtesting workspace replays candles one at a time so the structure reads forward. What neither will do is tell you the filter is good: that is a conclusion, and conclusions belong to the person whose record produced them.

Where traders disagree

This vocabulary is not standardised. These are the live disagreements — worth knowing about before comparing your results with anyone else’s.

  • How a swing high or low is defined — fractal, percentage, ATR, by eye or from a higher timeframe — with each choice producing a different set of structure events from identical candles.
  • Whether a wick beyond the swing counts, or whether a close beyond it is required.
  • Whether "change of character" describes anything distinct from a deep pullback, given the two are identical at the moment they occur.
  • Whether structure on a lower timeframe carries any information once a higher-timeframe reading is already in hand, or merely multiplies the number of signals.

Test it on your own trades

Whether this holds is a question about your record, not about the term. These are the steps that make the answer trustworthy.

  1. 1Write the swing definition and confirmation rule down first; a test that did not fix them has averaged several different rules together.
  2. 2Mark structure forward in replay, because swing points are ambiguous live and obvious afterwards.
  3. 3Record every event the rule produced, including the ones you did not trade.
  4. 4Report continuation and reversal counts separately rather than as a single hit rate.
  5. 5Compare expectancy in R with and without the structure filter, sample sizes shown, before deciding the filter earns its place.

You will also need

Questions, answered.

What is the difference between BOS and CHoCH?
A break of structure goes beyond the last swing in the direction the sequence was already running; a change of character goes beyond the last swing against it. The chart event is the same kind of thing — a swing being taken out — and the label depends entirely on which sequence you had decided was in force.
Do I need a candle close beyond the swing?
That is a decision, and a consequential one: wick-based rules fire more often and earlier, close-based rules fire less often and later. Pick one, write it down, and keep it fixed for the length of the test.
Which timeframe defines the real structure?
Every timeframe has its own structure and they frequently disagree; none of them is more real than the others. The useful question is which timeframe you trade, and whether adding a second one improves your own numbers enough to justify the trades it removes.
Can this be automated?
The swing detection can, once you have committed to a definition — fractal and ATR-based rules are straightforward to code. What cannot be automated is the choice of definition, which is where most of the variation in results comes from.

Stop believing. Start counting.

Tag the trades that used this, and Sage reads back what they actually did — in R, against your own baseline, with the sample size attached. It will not tell you the pattern is good; your record will.

Free · no card · your data stays yours