Market Structure
Change of Character (CHoCH)
The first structural break against the prevailing trend, such as an uptrend losing its most recent higher low. A signal the trend may be turning.
While a break of structure confirms the trend, a change of character contradicts it. In an uptrend printing higher highs and higher lows, the CHoCH is price breaking below the most recent higher low: the first time the "each pullback holds above the last" rule fails.
What it does and doesn't mean
A CHoCH is a warning rather than a reversal signal by itself. First breaks against strong trends often resolve as deep pullbacks, not full reversals. The common systematic treatments reflect that. Defensively, tighten stops or cut size on trend positions once a CHoCH prints, since the structural premise of the trade has weakened. As a reversal setup, demand confirmation: a CHoCH followed by a lower high and a second break (the new trend's first BOS) before positioning the other way.
The systematization caveat
CHoCH inherits every ambiguity of swing detection: swing width, wick vs close, and which "last low" counts after complex chop. It adds one of its own, too. In a range, CHoCH signals fire constantly in both directions. Any backtest of a CHoCH rule is really a test of these definitional choices, which is precisely why encoding them explicitly beats trading them by eye.
On AlphaProve
The confirmation logic this page recommends — a CHoCH, then a lower high,
then a second break — is the kind of multi-step structural rule the Python
ctx is built for, with williams_fractals marking the swings and
state carrying the "CHoCH seen, awaiting confirmation" flag between bars.
For the order-flow version of a turn, the builtin ob_cvd_divergence
strategy pairs order-block structure with CVD divergence
and runs without any code. The range-chop problem the page flags, CHoCH
firing both ways, is where get_htf(tf) helps: gate the signal on
higher-timeframe structure so a lower-timeframe wobble in a range does not
count.