Warrior_EA/docs/Wyckoff/AD_Wyckoff_Indicators_Reference.md
2026-10-05 21:58:23 -04:00

69 KiB

AD Wyckoff Indicators — Reference

Overview

This document describes Richard Wyckoff's market cycle methodology as detailed in "La Méthodologie Wyckoff en Profondeur" (2019) and "Wyckoff 2.0: Structures, Volume Profile et Order Flow" (2021) by Rubén Villahermosa.

Wyckoff's approach is based on observing price/volume relationships to determine who is in control of the market — large institutional traders (Composite Operators) or the general public.

Implementation Status (SQX/MT5)

As of 2026-09-10 (evening) the three indicators are at ADWyckoffEventStream v5.2, ADWyckoffFailedStructure v2.0 and ADWyckoffSignificantBarInversion v2.0. EventStream moved twice more the same day, in a same-day re-audit of the v5.0 rewrite below: see "v5.1 / v5.2" further down for what changed and why.

v5.0 is the answer to an audit that put every event side by side with what the two Villahermosa books actually define. The audit's verdict on v4.0 was that the architecture was right — climax, anchored range, events tested against frozen levels — but that most of the individual rules were approximations with an invented threshold where the book supplies an ordinal comparison, and that three of them contradicted the book outright.

What changed in v5.0 / v2.0

Each entry is a defect the audit named, and what it now does instead.

Defect v4.0 / v1.0 Now
LPS emitted only after the SOS gated behind gRHasSOS, so buffer 6 was really the back-up and the book's pre-SOS entry never existed LPS is the higher low before the SOS (p147 context); the back-up is its own event ±9
Spring and UTAD shared one flag a range that printed an upthrust could never print a spring separate shake state per range, and the test of the shake is a first-class event ±8 (p135)
"ATR" was not a true range mean high−low, so gaps were invisible and every tolerance was understated at an index open Wilder true range
Volume baseline included the current bar shrank the ratio on exactly the climactic bars the rules hunt for baseline is the preceding window only
The newest bar repainted once the guard was on rates_total, so the just-opened bar was stepped then frozen only closed bars advance the state machine
Phases were an event counter SC=1, AR=2, ST=3, Spring=4, SOS=5; the duration rule was never checked the book's A–E (p169), and Phase B must outlast Phase A before a shake can open C, and outlast Phase C before an SOS can confirm
Climax was a ratio volume ≥ 2.5× and range ≥ 1.8× the 50-bar mean a rank: the widest true range and the heaviest volume of the move so far, the move being measured from the last confirmed pivot
Test validity was a ratio volume ≤ 0.6× the mean the book's only hard volume rule (p118): volume below each of the two preceding bars, on a narrowing range
AR was a fixed ATR multiple progress ≥ 1.0 "ATR" measured against the mean of the recent same-direction legs (p100); twice that mean sets ARStrength
SOS was a bar shape close above Creek + 0.5 ATR on range ≥ 1.2× and volume ≥ 1.5× the book's significant bar (pp191-192, W2.0 p241) plus the p147 conditions: reached the range midpoint, no pullback below the shake low
Spring grades absent one undifferentiated spring three grades by penetration and volume (pp130-132); only grade 3 may be entered directly, grades 1–2 must wait for the test
Creek ignored Phase B frozen at the AR extreme AR extreme plus the Phase B extremes (p26, p29); it widens only while Phase B runs, and never tracks a rolling window
Range character was midpoint drift the slope buffers were read as character book item 14 as its own output: falling volume with up bars wider than down bars is accumulation, the mirror is distribution. The slope buffers remain, as context
FailedStructure was not what the docs said described as spring/upthrust/SOS failure documented as what it is: W2.0 §1.4 failed breakout and §1.5 structural failure, with §1.5's invented tolerance band removed
Both FailedStructure flags on one bar plateau pivots satisfied both and the signed Value netted to zero mutually exclusive
SBI's level was weak "prior resistance" fell back to the previous bar's high, so the first breaks in any history were free falls back to the lookback window extreme. The p194 flip rule itself is unchanged — it was already faithful

Parameter count as of v5.0: 34 → 10 across the three indicators. The book states most of its rules as comparisons, so they need no number. What survived in v5.0 was LookbackPeriod and ZigZagStrength (structure), ARLegs (p100), SpringPenetration and SpringVolume (the two numbers pp130-132 sanctions and pp157-159 says to settle by backtest), BoundaryTolerance, and MaxRangeBars (housekeeping). The context-mode / session-type / session-count block is gone from all three: it gated nothing at its defaults, and the climax window is now structural rather than a bar count. v5.2 removes SpringPenetration and SpringVolume too (see below) — EventStream now runs 5 functional inputs.

This invalidates every previously measured Wyckoff result. Every threshold moved, so event counts, densities and any downstream study built on the v4 buffers have to be re-run. That is the intended consequence of the corrections.

v5.1 / v5.2 — same-day re-audit of the v5.0 rewrite

A second, independent read of the v5.0 EventStream state machine (2026-09-10, after the table above shipped) found five defects the rewrite itself introduced, plus two consequences, fixed as v5.1; a follow-up pass then replaced the two rules v5.1 still only approximated with the book's own comparisons, fixed as v5.2. FailedStructure and SignificantBarInversion were re-read too and came through clean (SBI's "prior resistance" weakness above is the one open item, already listed).

# v5.0 did Book says v5.1 / v5.2 does
1 (v5.1) The Creek was widened by the bar under test before the breakout test read it, so a close could never exceed its own high — no range could resolve without a shake freezing the boundary first Creek = AR high + Phase B highs (p26/29); SOS = close beyond it Boundary read as it stood before the bar; Phase B widens it afterwards, never on the breakout bar, never after the SOS
2 (v5.1) A spring needed a full true-ATR penetration of the Ice The grade-3 spring is a slight penetration (p130) Any close-back-inside penetration opens the shake once Phase B has outlasted Phase A
3 (v5.1→v5.2) Grades compared depth with half the range height and volume with the climax bar (the volume maximum of the move) — nothing was ever heavy Three grades, settle the numbers by backtest (pp157-159) v5.2: no numbers at all — grade 3 is 1-candle on volume below and range narrower than the two preceding bars (p118-style), grade 2 is any other 1-candle, grade 1 is the 2+ candle terminal shakeout (pp124-125), tracked as a pending state until it recovers
4 (v5.1) A valid test demanded volume and range both below the two preceding bars The only hard rule is the volume half (p118) validTest = the volume rule alone
5 (v5.1) A climax needed no minimum move and admitted an unknown trend, so reaccumulation/redistribution could never fire A climax ends a move (p122); a range that forms with the trend is reaccumulation/redistribution (p171) The move must reach the mean of the recent same-direction legs (p100); trend no longer gates the climax, only classifies the range
6 (v5.1) Phase E never printed — the range closed on the back-up bar Phase E is the trend after the back-up (p169) Range stays open in Phase E while price holds the Creek
7 (v5.1) Phase A was counted from the climax bar The schematic runs A from the PS A same-direction PS within the lookback window before the climax starts the clock
8 (v5.2) Only the rank-bar climax was modelled The book gives four forms (p90, pp94-99): the rank bar, several narrow bars on high volume, one bar with a long tail, and exhaustion known only by its reaction All four: form 2 is a cluster of ZigZagStrength narrow high-volume bars under one true ATR with a new-extreme low/high; form 3 is a bar whose lower/upper wick exceeds half its range on above-average volume; form 4 opens the range on the low/high bar of a decline-then-rally-then-stall and confirms the AR on the recognising bar

Measured on SP500 H1 back to 2008 (55,204 bars): v5.2 emits 2,969 events, 373 resolved ranges, spring grades 37/49/3 — verified bar-for-bar against the compiled indicator's own exported buffers, not just a simulator. SpringGrade 3 (the only grade the book enters directly) is now rare rather than universal. InpSpringPenetration/InpSpringVolume (MT5) and the matching Java @Parameter fields, everywhere they were forwarded by a Wyckoff wrapper condition block, are removed.

v2.1 / v5.7 — four proposed refinements, measured (2026-09-30)

Four refinements were proposed and each was implemented as an opt-in input whose default reproduces the previous build bit-for-bit, then measured on real MT5 output before deciding what becomes default. The full method, numbers and verdicts are in WYCKOFF_V21_EVALUATION.md. Appended inputs (positional order matters to iCustom and to the SQX Indicator Tester, so they go last):

Indicator New input Default What it does
ADWyckoffEventStream v5.7 SpikeATR, SpikeScope 0, 0 (off) a bar with true range > SpikeATR true ATRs may not stretch a forming range's provisional extreme or widen the Phase B boundary; scope 1 also bars it from opening a range as a climax
ADWyckoffSignificantBarInversion v2.1 TodMode, TodDays 0, 20 (off) 1 = the ordinal volume test runs on relative volume (bar / mean of the same minute-of-day over TodDays sessions); 2 = raw ordinal test AND relative volume > 1
ADWyckoffFailedStructure v2.1 LocationATR 0 (off) report a failure only within that many true ATRs of the window's volume-profile POC / VAH / VAL or its VWAP
ADShorteningOfThrust v2.1 ConfirmMode 0 (wick) 1 = a swing reverses only when the bar closes the swing threshold away from the extreme

Not an input: ADShorteningOfThrust.mq5 now evaluates closed bars only (the forming bar publishes 0) and replays once per new bar instead of once per tick. The SQX Java block already only sees closed bars, so nothing changes there.

Reading the chart (MT5)

The MQ5 indicators now draw what they see, labelled the way the book's own schematic labels it:

  • Phase bands A–E behind the bars, captioned, one band per contiguous phase.
  • Creek and Ice drawn and named, with what built each one — "CREEK · AR high
    • Phase B highs", "ICE · SC low" — plus the midpoint, because an SOS must reach it (p147) and an ST above it reads as buyers (p110).
  • Event labels using the book's names: PS, SC, AR, ST, Spring, Test, LPS, SOS, BU.
  • A state panel: direction, phase letter, range character, the shake's grade and whether it has been tested, and the last event.

ADWyckoffSignificantBarInversion and ADWyckoffFailedStructure live in a separate pane but mark the price chart: significant bars, control flips, the failed swing and the rejected breakout. Every drawing switch is display-only and is forced off in generated strategies.

v4.0, for the record

What changed in v4.0 (both platforms)

v3.2 recomputed, for every bar, "the highest-priority Wyckoff event anywhere in the trailing lookback", and emitted the rolling window's high/low as the zone. Three consequences, all measured on SP500 H1 (2989 bars):

  • Zones were a Donchian channel. ZoneTop/ZoneBottom were the lookback extremes and were mathematically independent of every threshold parameter except Lookback — sweeping VolClimax over 1.5..4.0 and RangeClimax over 1.2..3.0 left the mean zone width unchanged at 145.67 points. Parameter tuning could not move the zone output at all.
  • Spring fired without a range. The support reference fell back to the running pivot low when no SC/ST existed, so any bar undercutting a recent minor low and closing up qualified. 717 Springs were emitted, 32% of them immediately after a

    1 ATR upward move.

  • Accumulation/distribution were invisible. The fixed priority cascade let SOS (804 bars) overwrite SC (26 bars) whenever both fell in the same window, and 87% of all bars carried a label — up to 10 within any 10-bar span.

v4.0 anchors a range at its climax (SC/BC) and its automatic reaction (AR/ARB), then holds those boundaries for the life of the range and tests every later event (ST, Spring/UTAD, SOS/SOW, LPS/LPSY) against them. On the same data: 4 anchored ranges, 24 events total (0.8% of bars), 1 Spring — preceded by a 2.21 ATR down move, not an up-impulse — and at most 2 labels per 10-bar span. Range count and width now respond monotonically to VolClimax and RangeClimax: at 1.5/1.2 the sweep yields 17 ranges of 54.3 mean width, at 2.5/1.8 it yields 4 of 73.9, at 3.5/2.5 it yields 2 of 88.3.

Verification: the MQ5 and Java implementations were driven over the same SP500 H1 file and produce a byte-identical event stream (24 events, same bar indices).

All price tolerances are ATR multiples, so the indicator is instrument-agnostic. v3.2 had hardcoded absolute offsets (0.0001, 0.0003, 0.001) that were FX-pip-scaled and effectively zero on indices, metals, and crypto.

Sloped-structure outputs are self-contained (changed 2026-08-02)

SlopeAccumulation* / SlopeDistribution* originally compared a range's midpoint to the previous range's midpoint. That made the value depend on unbounded prior history: the same bar produced a different result depending on how many bars the platform had loaded. It surfaced as the only parity failure between MT5 and SQX — 196 bars across the first range in the export window, because MT5's chart carried history before the window and SQX's did not.

They now measure the range's own drift: the running mean of (high+low)/2 over the bars belonging to the range, against the range's anchored midpoint, with a deadband of WYC_SLOPE_DEADBAND (5% of range height) so the sign does not flap. Every input is a bar of that same range, so the output is identical regardless of data-window start. Verified by running the block over the full series and over windows truncated by 200/500/900 bars — all four slope outputs identical on every shared bar, including ranges that have predecessors in one run and none in the other.

Note this changes what the outputs mean: previously "this structure sits higher than the last one" (a staircase reading), now "this structure tilts up/down internally" (the textbook sloped-range reading). Retrain any model consuming them.

Warmup is derived, never a hardcoded bar count

v3.2 gated on bar < LookbackPeriod + 5 and trend() on bar < 10. Both are gone. Warmup is now max(LookbackPeriod, 2*ZigZagStrength + 1) — the point at which the normalisation window is full and a confirmed pivot can exist — and trend() relies solely on its pivot-cache guards. Before warmup every output emits 0; callers are never expected to skip bars. At default settings this shifts warmup from 55 to 50 bars.

Exposed SQX outputs

  • ADWyckoffEventStream.EventCode
  • ADWyckoffEventStream.EventPhase
  • ADWyckoffEventStream.ZoneTop
  • ADWyckoffEventStream.ZoneBottom
  • ADWyckoffEventStream.EventPrice

Notes:

  • EventCode and EventPhase are no longer identical. In v3.2 EventPhase duplicated EventCode and was a dead input; in v4.0 EventCode is the discrete event on the bar it occurs (-7..+7, sparse) and EventPhase is the persistent signed phase (-5..+5) held across the range.
  • Tester-facing output list is dotted-output only (no standalone non-dotted main entry).

New v4.0 parameters (both platforms)

  • TouchATRMultiplier (0.5) — tolerance for treating a bar as revisiting a boundary
  • ARMinATRMultiplier (1.0) — minimum rally off the climax before AR anchors the range
  • MaxRangeBars (200) — hard age cap on a range

These three are threaded through all 41 derived condition blocks, so the generated Strategy.Indicators.ADWyckoffEventStream(...) factory now takes 15 arguments. Any external caller written against the old 12-argument signature must be updated.

Condition blocks realigned to the new output semantics

v4.0 made EventCode sparse (0.8% of bars vs 87% in v3.2). Blocks that ask "are we currently inside a range" were reading EventCode/StructuralPhase and only worked in v3.2 by accident — the window rescan made those outputs behave like a persistent state. They now read EventPhase, which is the real persistent state:

Block v3.2 read v4.0 reads
ADWyckoffInAccumulation / InDistribution Value (=EventCode) EventPhase
ADWyckoffEnteringAccumulation / EnteringDistribution Value edge EventPhase edge
ADWyckoffPhaseAtLeast / AtMost / Equals StructuralPhase EventPhase

On SP500 H1 this puts InAccumulation true on 277 bars and InDistribution on 41 (318 of 2989 bars inside a confirmed range). Left on EventCode they would have been true on roughly 17 bars total.

Blocks that test for a discrete event (ADWyckoffIsSpring, IsSellingClimax, IsSignOfStrength, LastEventEquals, EventInLastNBars, …) correctly read EventCode and are unchanged — they get strictly more accurate under v4.0. IsReaccumulation / IsRedistribution read the Reaccumulation / Redistribution buffers, which v4.0 already sets on every bar of an anchored range, so they are unchanged too.

v4.1 — Reaccumulation / Redistribution are context, not outcome

v4.0's flags were identically 0 on every instrument (40,000 H1 bars on five symbols, 41-candidate parameter sweep): they required a range's own direction to agree with Trend() at its climax bar, but an SC only opens when that trend is <= 0 and a BC only when it is >= 0, so the test was unreachable by construction.

Villahermosa defines the two by the move the range stopped crossed with the way it resolves (Methodology in Depth ch. 11 figure: PSY/BC/AR/ST then SOS; ch. 13 figure: PS/SC/AR/ST then SOW). That is not knowable at the climax bar — ch. 11: reaccumulation and distribution "are initiated in the same way" — and in this state machine those two outcomes are exactly the silent "failed distribution" / "failed accumulation" close branches. Allowing a range to resolve the "wrong" way is a v5 design item (it changes EventCode and CHoCH and breaks the parity fixtures); it is not what v4.1 does.

v4.1 emits what the book says to read a forming range against (pp. 187-188, 197, 200): the trend released by the last confirmed breakout, in force until a confirmed opposite structure ends it.

  • Reaccumulation = 1 on every bar of an anchored range that opened while the last confirmed breakout was an SOS (markup context).
  • Redistribution = 1 on every bar of an anchored range that opened while the last confirmed breakout was an SOW (markdown context).
  • Independent of the climax that opened the range. A BC-opened range in a markup reads EventPhase < 0 and Reaccumulation = 1 — the book's "reaccumulation or distribution" ambiguity, left for the strategy to weigh.
  • Frozen at open; a range's own breakout updates the context for the next range.
  • Both stay 0 until the first confirmed SOS/SOW of the loaded history.

MT5 buffer mapping (ADWyckoffEventStream.mq5 v5.6)

Buffers 0–13 keep their v4.0 meaning and index, so an existing consumer that reads by index still reads the same output. 14–17 arrived with v5.0, 18–25 with v5.3 and 26–28 with v5.6. Every addition is appended, never inserted.

# Output Meaning
0 EventCode discrete event, sparse (0 on most bars)
1 EventPhase persistent signed phase, ±1..±5 = A..E
2 ZoneTop the Creek (0 when no confirmed range)
3 ZoneBottom the Ice (0 when no confirmed range)
4 EventPrice close on an event bar, 0 otherwise
5 StructuralPhase event-derived phase, sparse
6 CHoCHTrendToRange ±1 on the bar a range opens
7 CHoCHRangeToTrend ±1 on the bar the structure breaks
8–11 Slope* the range's internal drift — context, not character
12 Reaccumulation accumulation range formed inside an uptrend
13 Redistribution distribution range formed inside a downtrend
14 SpringGrade ±1..±3 on the shake bar; 3 = the only grade the book enters directly
15 RangeCharacter +1 accumulation / −1 distribution (book item 14)
16 TestPlacement +1 test in the upper half (buyers), −1 below the climax (sellers)
17 ARStrength 1 when the AR reached twice the recent legs (p100)
18 Creek the held range top — outlives the range, unlike ZoneTop
19 Ice the held range bottom
20 RangeMid halfway between them (p110/p147 use the midpoint as a test)
21 StopLong Ice less BoundaryTolerance true-ATRs; StopShort mirrors above the Creek
22 StopShort
23 TargetLong Creek plus the range HEIGHT — the vertical projection
24 TargetShort Ice less the range height
25 EventLevel the held EventPrice, so a shakeout stop can be set after the shake bar
26 PFCount columns of the congestion's figure chart spanning the count line — the cause, as a number
27 TargetLongPF count line + PFCount × box — the HORIZONTAL count objective
28 TargetShortPF count line − PFCount × box

Event codes. ±1 PS/PSY, ±2 SC/BC, ±3 AR, ±4 ST, ±5 Spring/UTAD, ±6 LPS/LPSY, ±7 SOS/SOW, and new in v5.0: ±8 test of the shake, ±9 back-up / back-down. Positive is the accumulation side.

The two objectives (v5.6). TargetLong/TargetShort project the range HEIGHT from the boundary that broke. That reading is duration-blind: a 12-bar range and a 180-bar range of the same height project the same objective, and the Law of Cause and Effect says they should not. TargetLongPF/TargetShortPF are the book's own measure — the horizontal count, taken on a point-and-figure chart of the congestion:

  • Box = 0.25 × the congestion's own mean true range. Its own, not AT[]: the smoothed ATR reaches outside the range, and the count must describe this cause and no other.
  • Grid anchored on the Ice, so a box boundary always falls on the range floor and a spring below it simply lands in a negative box — both directions snap the same way.
  • Reversal = 1 box, the most complete column representation of the same bars.
  • Count line = the close of the last Phase C/D event before the break — the shake, then its test, then the LPS/LPSY, each overwriting the one before. That is what "the LAST point of support" means. Before that event there is no count line and all three outputs are 0.
  • Window ends at the bar BEFORE the resolution: once the significant bar breaks out the cause is complete, and the markup's own columns belong to the effect.

Box size and reversal are chart-construction constants (WYC_PF_BOX_ATR, WYC_PF_REVERSAL), not inputs. The book gives an ordinal comparison for every detection rule and none for how coarse a figure chart should be, and making them parameters would force all sixty wrapper blocks to carry them for no gain.

What it actually measures — SP500 H1, 2025.09.07–2026.09.07, 5894 bars, a count live on 3163 of them:

p10 median p90 max
PFCount — 7 — 34
PF objective ÷ range height 0.12 0.32 0.72 1.14

The mechanism works — the objective tracks the count — but note the level: on this instrument and timeframe the horizontal count is systematically more conservative than the height projection, a median of about a third of it. The two readings disagree, and both are published precisely so that disagreement is visible. Do not treat TargetLongPF as a drop-in for TargetLong; which one is right is a question for a backtest, not for this document.

On the remaining 2731 bars there is no count line and all three outputs are 0 — the same "0 means nothing, not a price" contract the zone outputs carry.

Two invariants worth knowing, because both were violated by the first cut and caught only by exporting real data:

  • Every AR bar has PFCount == 0. A newly anchored range has not built its cause yet. The held triple is dropped in ConfirmAR, and the step values are zeroed at the top of StepBar so the several early-return paths (the climax branches, and the form-4 exhaustion path that confirms the AR and returns ±3) cannot leak the previous bar's count past that clear.
  • The count line sits inside the range it was measured in. It can fall just outside the anchored boundary — 79 bars do, all in one episode, by 0.027 × the range height — because a Phase C test is constrained on its high against the boundary while the count line is its close, and the boundary is an area of BoundaryTolerance true-ATRs, not a price. That is the same boundary-as-area rule (p26) the rest of the indicator uses.

Read PFCount on its own as a filter — "only take the break when the cause is big enough" — which is the part of this that does not depend on trusting the projection at all.

ZoneTop and ZoneBottom are 0 when there is no anchored range — 0 means "nothing", not a price. Any consumer must treat it as empty; feeding it into a numeric vector unguarded is how a −580 once reached a network input.

All three indicators evaluate on closed bars only. The forming bar is loaded for context but never stepped, and none of them advances its state machine twice for the same bar, so shift 0 no longer repaints once per bar. Read shift ≥ 1 if you want the value a completed bar produced.

Note on tick size: the three degenerate-case guards in v4.0 (zero-range bar, zero-range window, zero-width range) use an absolute WYC_EPS = 1e-10 rather than a platform tick size. MT5 _Point and SQX InstrumentInfo.tickSize are not guaranteed to agree for a given symbol, and using them here would risk a parity divergence for no behavioural gain — these guards only prevent division by zero. InstrumentInfo.pointValue is a money-per-point value, not a price increment, and is not the right member for this.


Foundational Concepts (Book 1 — Parts 1–4)

How Markets Move — The Wave Principle (Part 1, Ch.1)

Price does not move linearly between two points. It moves in waves — alternating impulses and corrections. Wyckoff's band of traders were the first to observe that price develops through waves of varying size and duration rather than equal time intervals.

Key principle: Waves are fractal. Small-scale waves compose intermediate-scale waves, which in turn compose large-scale waves. By studying the relationship between waves — their duration, speed, and amplitude — the trader can determine the nature of the trend and detect the balance shift between supply and demand before price confirms it.

Wave analysis provides a direct window into the relative strength of buyers and sellers. As a trend matures, the character of waves changes:

  • Healthy uptrend: Impulsive up-waves lengthen and corrective down-waves shorten (demand accelerating, supply withdrawing).
  • Exhausted uptrend: Impulsive up-waves shorten and corrective down-waves lengthen (demand decelerating, supply entering).
  • The reverse applies to downtrends.

This wave behavior is the foundation for Shortening of Thrust (SOT) detection.

The Price Cycle (Part 1, Ch.2)

The market alternates between only two types of price formations:

  1. Trends — Directional movement (bullish or bearish)
  2. Ranges (Trading Ranges) — Lateral consolidation where price oscillates within boundaries

These form a complete cycle:

Accumulation → Bullish Trend (Markup) → Distribution → Bearish Trend (Markdown)
        ↑                                                              ↓
        └────────── Re-accumulation / Redistribution (continuations) ──┘

Accumulation: Professional traders absorb all available supply at wholesale prices. Through repeated tests, they verify that no significant selling pressure remains. Once the "path of least resistance" is confirmed as upward, they initiate the markup — price rises easily because resistance (sellers) has been neutralized.

Distribution: The reverse process. Professionals distribute holdings to late-arriving retail buyers. Once they verify that demand is exhausted, the path of least resistance shifts downward, and markdown begins.

Re-accumulation: A pause during an uptrend where professionals absorb the stock that has migrated to weaker hands during the advance. The process is identical to accumulation but occurs mid-trend.

Redistribution: A pause during a downtrend where professionals continue distributing into bounces. The process is identical to distribution but occurs mid-trend.

The Path of Least Resistance (Part 1, Ch.2)

The single most important concept in Wyckoff methodology: price always follows the path of least resistance. The market moves where the opposing side offers the least obstruction. All Wyckoff events — the Selling Climax, Secondary Tests, Springs, SOS/SOW breakouts — are mechanisms by which professionals verify which direction offers the least resistance before committing capital.

Operational principle: Do not trade against the trend defined by the last confirmed accumulation or distribution. If the market is in a post-accumulation uptrend, avoid shorting. If in a post-distribution downtrend, avoid buying. Knowing the cycle phase prevents trading against the dominant flow.

A trend is the line of least resistance. It is composed of:

  • Impulses: Waves in the direction of the trend
  • Reactions (Corrections): Waves counter to the trend

Three trend types by duration: long-term, medium-term, short-term. These can evolve in different directions simultaneously — a short-term downtrend can exist within a medium-term uptrend within a long-term uptrend. This multi-timeframe nature creates conflicting signals.

Trend identification: An uptrend consists of a series of impulses to the upside and reactions to the downside where highs and lows increase. A downtrend consists of impulses to the downside and reactions to the upside where highs and lows decrease. A lateral trend exists when highs and lows fluctuate within a price range.

Trading Ranges (Part 1, Ch.4)

Ranges are pauses between trends. They represent a redistribution of stock from one class of trader to another. The width and duration of the range determine the potential of the subsequent move (Law of Cause and Effect).

Types of ranges:

  • Accumulation range: Forms after a downtrend; professionals accumulate. Price oscillates between support (where they buy) and resistance (where they stop buying, letting the price drift back down).
  • Distribution range: Forms after an uptrend; professionals distribute. Price oscillates between resistance (where they sell) and support (where they stop selling, letting the price bounce).
  • Re-accumulation range: Forms during an uptrend; a pause for further accumulation before continuation.
  • Redistribution range: Forms during a downtrend; a pause for further distribution before continuation.

The distinction between a reversal range and a continuation range is critical: in a reversal, the preceding trend shows clear stopping action (Preliminary Stop + Climax). In a continuation, there is no Phase A — the price simply pauses mid-trend.

Stock Control and Structure Duration (Part 4)

Stock control: The professional trader's objective is to acquire or distribute the full quantity of stock needed for their campaign. During this process, they must maintain control over price — preventing it from breaking out prematurely. The quality of stock control can be assessed by:

  • Declining volume as the structure develops (absorption is nearing completion)
  • Tests at extremes that fail to attract follow-through (the opposing side has withdrawn)
  • Creek and Ice boundaries holding (professional traders are defending these levels)

Structure duration: The longer a structure develops, the more stock changes hands and the more exhausted the opposing side becomes, producing a more powerful subsequent trend. However, the trader cannot be certain whether a long duration means a large campaign or that professionals are struggling to complete it. Duration is an indicator of potential, not a guarantee.


The Three Laws (Part 3, Ch.9–11)

1. Law of Supply & Demand

Price moves in the direction of the imbalance. When demand exceeds supply, price rises. When supply exceeds demand, price falls. Wyckoff events are expressions of these imbalances.

2. Law of Cause & Effect

The width and duration of an accumulation or distribution range (the cause) determines the extent of the subsequent markup or markdown move (the effect). A wider range with longer development produces a larger projected move. This is measured through Point & Figure count projections and structural range height.

Both measures are implemented, side by side: structural range height as TargetLong/TargetShort, and the Point & Figure horizontal count as PFCount/TargetLongPF/TargetShortPF (v5.6). Only the second one is sensitive to duration — see MT5 buffer mapping for the construction.

3. Law of Effort vs Result

Volume is the effort and price movement is the result. When volume and price move in harmony, the trend is healthy. When volume diverges from price (high volume with little price progress, or low volume with large price moves), exhaustion or reversal is imminent. This law can be assessed at multiple scales: within a single candle, in the subsequent displacement, across complete movements, by wave (Weis Wave), and when approaching key levels.


The Accumulation Process (Part 4, Ch.12)

The accumulation process is the systematic absorption of supply by well-informed traders at progressively higher support levels within the range. Key characteristics:

  • Declining volume throughout Phase B — professionals have acquired most of the available supply; fewer contracts remain to be absorbed.
  • Higher lows during tests — each test of the support zone makes a slightly higher low, indicating that sellers are unable to push price as low as before.
  • Creek defense: Professional traders place limit orders at the upper boundary (Creek) to keep the range contained and prevent premature breakout.
  • Final test before markup: The Spring (if it occurs) is the professional's final opportunity to verify the path of resistance upwards is clear. After a successful Spring and test, the markup is ready.

The Distribution Process (Part 4, Ch.13)

The distribution process is the systematic transfer of positions from professionals to late-arriving retail buyers. Key characteristics:

  • Declining volume throughout Phase B — similar to accumulation, but for the opposite reason: professionals have placed most of their sell orders.
  • Lower highs during tests — each test of the resistance zone makes a slightly lower high, indicating buyers are unable to push price as high as before.
  • Ice defense: Professional traders defend the lower boundary (Ice) with buying pressure to prevent premature breakdown.
  • Final test before markdown: The UTAD (if it occurs) is the professional's final opportunity to verify the path of resistance downwards is clear. After a successful UTAD and test, the markdown is ready.

The 7 Wyckoff Events

Event 1 — Preliminary Support / Preliminary Supply

Aspect Bullish (PS) Bearish (PSY)
Book Chapter Ch.14 — Preliminary Support Ch.14 — Preliminary Supply
Description First sign of institutional buying after a downtrend First sign of institutional selling after an uptrend
Price Wide-range bar, closes upper half, makes new low Wide-range bar, closes lower half, makes new high
Volume Above average (mid-level) Above average (mid-level)
Meaning Smart money begins absorbing supply Smart money begins distributing to buyers

Event 2 — Selling Climax / Buying Climax

Aspect Bullish (SC) Bearish (BC)
Book Chapter Ch.15 — Selling Climax Ch.15 — Buying Climax
Description Panic selling exhausts itself Euphoric buying exhausts itself
Price Extremely wide range, new low, closes well off low Extremely wide range, new high, closes well off high
Volume Very high (multiple times average volume) Very high (multiple times average volume)
Meaning The last of the sellers have been flushed out The last of the buyers have been filled

The book distinguishes between an "exhaustion climax" (the genuine end of a move) and other climax events. The exhaustion climax is the most tradable form — it signals that the prior trend has fully exhausted itself, and a reversal is imminent.

Event 3 — Automatic Rally / Automatic Reaction

Aspect Bullish (AR) Bearish (AR)
Book Chapter Ch.16 — Automatic Rally Ch.16 — Automatic Reaction
Description Price bounces sharply after SC Price drops sharply after BC
Price Closes above prior bar's high Closes below prior bar's low
Volume At least moderate At least moderate
Meaning The path of least resistance begins to shift upward The path of least resistance begins to shift lower

The AR occurs because professional traders, who absorbed the supply at the SC lows, now stop buying aggressively. With selling pressure removed, price naturally rebounds. The AR establishes the initial range boundary for the subsequent structure.

Event 4 — Secondary Test

Aspect Bullish (ST) Bearish (ST)
Book Chapter Ch.17 — Secondary Test Ch.17 — Secondary Test
Description Price retests the SC low area Price retests the BC high area
Price Narrow range near low, holds above SC low Narrow range near high, holds below BC high
Volume Significantly lower than SC/BC (low volume) Significantly lower than SC/BC (low volume)
Meaning Supply has been absorbed; no new selling pressure Demand has been absorbed; no new buying pressure

The book distinguishes the Secondary Test (Phase A) from generic tests in Phases B, C, and after breakouts. The Secondary Test specifically retests the climax extreme (SC low or BC high). Generic tests re-test any extreme at any point in the structure. Tests at the upper extreme in Phase B denote underlying strength — professional traders probe for selling interest. Tests at the lower extreme denote underlying weakness.

Event 5 — Spring / Upthrust (Shakeout)

Aspect Bullish (Spring) Bearish (UTAD)
Book Chapter Ch.18 — Spring/Shakeout Ch.18 — UpThrust After Distribution
Description Price breaks below ST low then reverses back above Price breaks above ST high then reverses back below
Price Low < ST low, close > ST low with moderate volume High > ST high, close < ST high with moderate volume
Volume Moderate (shakeout traps sellers) Moderate (shakeout traps buyers)
Meaning Final liquidity grab before markup begins Final liquidity grab before markdown begins

The Spring performs a triple function for institutional traders: (1) it triggers stops of traders positioned long, (2) it induces uninformed traders to sell into the apparent breakdown, and (3) it allows professionals to profit from the move. A Spring does not occur in every accumulation — many structures begin trending without a shakeout. The book distinguishes between several Spring types: ordinary shakeout, terminal shakeout, and minor shakeout. UTAD (UpThrust After Distribution) is the bearish equivalent — it sweeps above the structure's upper boundary, traps breakout buyers, then reverses.

The book also identifies tests of the Spring and tests of the UTAD — confirming behaviors where price revisits the shakeout extreme on low volume, verifying that the opposite side has been neutralized.

Event 6 — Sign of Strength / Sign of Weakness (Breakout)

Aspect Bullish (SOS) Bearish (SOW)
Book Chapter Ch.19 — Sign of Strength Ch.19 — Sign of Weakness
Description Price breaks above the structure's upper boundary Price breaks below the structure's lower boundary
Price Breaks above highest high with momentum Breaks below lowest low with momentum
Volume High volume, wide spread High volume, wide spread
Meaning Accumulation complete; markup begins Distribution complete; markdown begins

A minor SOS (minor Sign of Strength) and SOS Bar are smaller-scale strength signatures that appear within the developing structure. Similarly, a minor SOW and SOW Bar denote smaller-scale weakness signatures. The breakout without volume is a special case: if price breaks structure with no volume, this can represent either genuine interest or a false breakout — the test after breakout resolves the ambiguity.

Event 7 — Last Point of Support / BUEC / Last Point of Supply / BUES (Confirmation)

Aspect Bullish (LPS/BUEC) Bearish (LPSY/BUES)
Book Chapter Ch.20 — Last Point of Support Ch.20 — Last Point of Supply
Description Pullback to the Creek (resistance-turned-support) after breakout Bounce to the Creek (support-turned-resistance) after breakout
Price Retests prior AR high / Creek area Retests prior AR low / Creek area
Volume Low volume (no selling interest) Low volume (no buying interest)
Meaning Last opportunity to join before full trend departure Last opportunity to short before full trend departure

Change of Character (CHoCH)

The Change of Character (Ch.19) marks a critical transition between trend and consolidation phases. The book identifies two CHoCH moments in a complete cycle:

  1. First CHoCH — Trend → Range: In accumulation, a downtrend shifts into sideways movement (Phase A). This is detected when Preliminary Support and Selling Climax events appear in sequence. In distribution, an uptrend flattens into a range marked by Preliminary Supply and Buying Climax.

  2. Second CHoCH — Range → Trend: The SOS/SOW breakout that breaks the structure boundary signals the transition from consolidation back into a trending state.


The 5 Phases (A-E)

The phases are described in Villahermosa's Part 6 chapters (Ch.21–25). The phases are always numbered and defined conservatively — a structure should not be classified until the events confirm its type.

Phase Name Book Chapter Description Events Trading Opportunity
0 Unknown — No structure identified None Wait
1 A — Stop Ch.21 Previous trend stops; first signs of accumulation/distribution appear. The market transitions from trending to lateral. PS, SC, BC, AR Prepare to trade range; identify initial extremes
2 B — Build Cause Ch.22 Range develops; the cause is built. Secondary tests confirm absorption. Volume typically contracts throughout this phase. ST Identify range extremes; observe tests for bias signals
3 C — Test Ch.23 Spring or UTAD shakes out weak hands. The market probes the opposite side before committing to a direction. Spring, UTAD Entry on shakeout reversal; highest-conviction event
4 D — Trend within Range Ch.24 Price moves directionally within the structure toward the breakout edge. LPS/LPSY retests occur. LPS, LPSY, SOS, SOW LPS/BUEC retest entry; SOS/SOW breakout entry
5 E — Trend out of Range Ch.25 Price breaks out definitively and trends beyond the structure. The cause has produced its effect. Confirmed SOS/SOW beyond structure Trend continuation; re-accumulation/re-distribution entries

Wyckoff 2.0 — Advanced Concepts (Book 2)

Shortening of Thrust (SOT) — Section 1.6

SOT is a direction-change pattern. Each new extreme covers a shorter distance than the previous one, indicating momentum loss:

  • Bullish SOT: In a downtrend, each new low travels less distance than the prior low — supply is deteriorating.
  • Bearish SOT: In an uptrend, each new high travels less distance than the prior high — demand is deteriorating.

Key rules:

  • Minimum 3 impulses are required for validity. At 3–4 impulses, begin looking for the SOT pattern.
  • If price advance shortens with high volume → Effort/Result divergence (effort unrewarded).
  • If price advance shortens with low volume → exhaustion (one side is withdrawing from the market).
  • If there are more than 4 pushes with persistent shortening, the trend may be too strong to trade against.
  • Confirmation requires a strong impulsive move in the opposite direction with elevated volume.

Context matters: An SOT bullish signal after an Upthrust (where the bias is bearish) should be treated with extreme caution. The dominant shakeout event defines the directional bias.

Implementation — ADShorteningOfThrust v2.0 (MT5 and SQX)

v1 compared pivot-to-pivot leg amplitude of the last two same-direction legs with no new-extreme requirement. That is not the book's quantity (the §1.6 figure and pp. 41-42 measure "new highs but little movement between them"), and it had no trend gate: after a correction's pivot was recorded it compared the last two corrections, so a shallower pullback in an uptrend carried the same sign as supply exhaustion in a downtrend. v2.0:

  • Thrust = progress of each new extreme beyond the previous same-direction extreme, |P_k - P_{k+1}|, on the run of same-direction pivots in which every older pivot is less extreme than the one after it. Only a trend's own pushes make new extremes, so the run is the trend gate; a lower high breaks the run.
  • Signal needs run >= MinImpulses (clamped 3..6; three is the book's floor) and the final thrust shorter than the previous one by SOTThreshold.
  • SOTEffortRegime compares the cumulative (Weis wave) volume of the last two pushes: >= 1.1x divergence (full weight), <= 0.9x exhaustion (half).
  • SOTPushRegime is full weight only on more than four pushes with the shortening persisting (previous thrust already shorter than the one before it); half weight otherwise. The book's meaning is "too strong to fade".
  • SOTConfirmation fires when the next opposite-direction leg covers >= 85% of the final push's full leg with >= 105% of its volume.
  • The value is held from the push's pivot confirmation until the next pivot is recorded, as in v1.

Measured on SP500 H1 (3219 bars): SOT nonzero on 11.2% of bars, confirmation on 5.0%. The Java-style and MT5-style simulators in scripts/ agree on every bar and every output. The one divergence v1 carried (2026-02-20 09:00) came from the Java side converting the swing distance to a percent of the pivot and back; the Java now hands the distance to the shared ZigZag verbatim (PIVOT_METHOD_ABSOLUTE in ADWyckoffCommon), which is what the MQ5 compares against.

Structural Failure — Section 1.5

Structural failure detects when price abandons the established structural logic it had been following:

  • Strength (bullish failure): Price has been making lower highs and lower lows. On the next leg down, it fails to reach the structure's lower boundary, reversing before getting there. Buyers are blocking the decline aggressively. This does not guarantee an immediate reversal — it may simply be a pause for re-accumulation before continuing lower.

  • Weakness (bearish failure): Price has been making higher highs and higher lows. On the next leg up, it fails to reach the structure's upper boundary, reversing before getting there. Sellers are capping the advance aggressively.

The key insight is that price was expected to continue its previous structural logic (visiting the opposite extreme) but fails to do so. This is an additional trace for evaluating the balance of power, not a standalone trade signal. The LPS and LPSY events are themselves structural failures — price stops short of visiting the shakeout extreme and instead reverses toward breakout.

Output mapping (ADWyckoffFailedStructure): BullishStructuralFailure = strength (a swing higher-low that reverses up without reaching the established structure low); BearishStructuralFailure = weakness (a swing lower-high that reverses down without reaching the established structure high). The swing is a fractal pivot confirmed ZigZagStrength bars back, and "reaching" is gated by a reach band of ATRMultiplier × ATR. The signal fires on the bar where that pivot is confirmed (non-repainting).

Failed Accumulation / Failed Distribution — Section 1.4

A structure that shows every characteristic of accumulation (declining volume during development, Spring, bullish SOS breakout) can still fail if, at the crucial moment (test after breakout / BUEC position), aggressive selling overwhelms buyers and rotates the market. The same applies in reverse for distribution.

The critical uncertainty:

  • We do not know the intention of traders driving the current move. They may be short-term traders closing at the next liquidity zone, or long-term traders sustaining the move through full structure development.
  • We do not know whether higher-capacity traders will intervene at the decisive test-after-breakout moment, potentially with an opposing long-term view.

The shock (Spring/UTAD) is the most decisive action in market operation. Its underlying logic is so powerful that bias always favors it. The last shock dictates the directional lean.

Output mapping (ADWyckoffFailedStructure): FailedAccumulation = a genuine bullish breakout of the structure top (a significant bar closing beyond the range + break buffer) that then fails at the retest — a later bar closes back below the broken boundary within max(2×ZigZagStrength, 5) bars — rotating the structure distributive (bearish outcome). FailedDistribution is the mirror: a bearish breakout of the structure bottom that rotates accumulative (bullish outcome). The signed Value buffer is positive for bullish outcomes (BullishStructuralFailure, FailedDistribution) and negative for bearish (BearishStructuralFailure, FailedAccumulation).

Sloped Structures — Section 1.7.1

Not all Wyckoff structures are horizontal. Four sloped variants exist that reflect the underlying condition of the market:

Structure Slope Condition
Accumulation Bullish slope Strongest underlying strength — higher highs and higher lows during accumulation
Accumulation Bearish slope Underlying weakness during accumulation — lower highs and lower lows; often preceded by SOT
Distribution Bearish slope Strongest underlying weakness — lower highs and lower lows during distribution
Distribution Bullish slope Initial apparent strength that pivots bearish — rising highs converging with SOT, then UTAD breaks it

The identification of sloped structures requires connecting the extremes of Phases A, B, and C with a channel that contains the majority of price action. Perfect touches are not required — use zones of a certain width rather than precise lines.

Auction Market Theory & Volume Profile — Parts 4–5

The Auction Market Theory underpins all Wyckoff methodology. The market exists to facilitate trade between buyers and sellers. When price is within a range, buyers and sellers agree on value — this is equilibrium (market efficiency). When price trends, one side dominates — this is disequilibrium (market inefficiency).

A Wyckoff accumulation range is an equilibrium zone where professionals build positions. The breakout into markup represents disequilibrium. This maps directly to Auction Market Theory's balance/imbalance framework.

Volume Profile Components

  • POC (Point of Control): Price level with the highest traded volume. Acts as a magnetic level — price is attracted to where the most contracts changed hands.
  • VAH/VAL (Value Area High/Low): The upper and lower boundaries containing 70% of traded volume. The Value Area represents the equilibrium zone where both sides find price acceptable.
  • HVN (High Volume Node): A price level with significantly above-average volume. Identified as an accumulation zone if price is above it, a distribution zone if price is below it.
  • LVN (Low Volume Node): A price level with significantly below-average volume. Price moves quickly through these zones — excellent locations for quick entries as the breakout through an LVN has minimal resistance.
  • VPOC Migration: In a healthy trend, the VPOC migrates in the trend direction across successive sessions. A VPOC that fails to migrate signals trend weakness — effort is not producing result.
  • Naked VPOC: An old POC that has not been revisited. These are high-priority targets as the market seeks to fill these "unfinished business" levels.

Profile Types

  • Session Profile: Based on a single trading session. Best for intraday traders.
  • Composite Profile: Aggregates multiple sessions or a full structure. Best for swing/position traders identifying overall context.
  • Fixed (Anchored) Profile: Anchored to a specific structure start/end. Best for Wyckoff structure traders — reveals volume nodes within the structure boundaries.

Completed profiles are more reliable than developing ones — a profile still forming can have its levels shift.

Volume Profile Operational Principles — Section 5.8

Five principles for trading with Volume Profile, each with a Wyckoff-methodology analogue:

Principle Description Wyckoff Equivalent
Range At value area extremes, favor reversals. Buy at VAL, sell at VAH. Trade at range extremes — Spring near support, UTAD near resistance.
Reversion After a shakeout absorbs one extreme, price visits the opposite extreme. 80% rule: once price re-enters the value area after a false break, probability favors visiting the far extreme. After a Spring, price targets the upper range boundary (Phase D). After UTAD, targets the lower boundary.
Continuation After a breakout from the value area, wait for the test of the broken extreme (VAH for bullish, VAL for bearish) to enter in the breakout direction. LPS/BUEC entry after SOS breakout; LPSY/BUES entry after SOW breakdown.
Failed Reversion If price breaks an extreme but fails to re-enter the value area, the breakout is authentic. Enter on the test of the broken boundary. Genuine SOS/SOW breakout confirmed by price remaining outside the structure.
HVN Bias The last High Volume Node determines the short-term directional bias. If price is above the last HVN → bullish bias (HVN = accumulation). If below → bearish bias (HVN = distribution). Phase B tests above ST = accumulation bias. Tests below ST = distribution bias.

These principles form a standalone trading framework for traders who do not explicitly use Wyckoff structures. For Wyckoff traders, they provide objective confirmation and additional entry precision.

Order Flow Integration — Part 6

Order Flow analysis provides microscopic confirmation at the moment of entry. Villahermosa recommends using it only at identified operational zones — never in isolation. The two key behaviors:

Reversal Model: Absorption + Initiative

  • Absorption: Large passive orders (limit orders) absorb aggressive market orders without moving price. High volume on a narrow range bar at a key level indicates absorption — a big player is accumulating/distributing.
  • Initiative: After absorption, aggressive orders push price decisively in the intended direction. A wide-range bar with elevated volume leaving the absorption zone confirms initiative — the composite operator now wants price to move.

The absorption + initiative pattern is the Order Flow fingerprint of a Spring or UTAD. It confirms the SOS/SOW bar's intent at the trigger point.

Continuation Model: Control + Test

  • Control: After the initial impulse, price latches to a new level where professionals maintain bid/ask dominance. Visible as imbalances favoring one side in the DOM (Depth of Market) or Footprint.
  • Test: Price briefly revisits the control zone on low volume, then resumes. This is the Order Flow equivalent of LPS/LPSY.

If the initial entry trigger is missed, the continuation model provides a second-chance entry. The fractal nature of Order Flow means these patterns repeat at every scale — from tick charts to daily charts.

Wyckoff 2.0 Integration Framework — Part 7

The complete Wyckoff 2.0 operational process integrates all three disciplines into a 4-step framework:

1. CONTEXT ANALYSIS        →  WHAT to trade  (buy/sell bias)
2. ZONES & LEVELS          →  WHERE to enter  (operational levels)
3. SCENARIO PLANNING       →  HOW price moves  (continuous validation)
4. POSITION MANAGEMENT     →  EXECUTION        (entry, SL, TP)

Step 1 — Context Analysis (What)

Determine the market regime: Range or Trend.

  • Range Context — At Extremes: Favor reversals. Buy at support (Spring zone), sell at resistance (UTAD zone). Aligns with Volume Profile Range principle.
  • Range Context — Inside: Only trade if the range is wide enough for adequate R:R. Align with HVN bias — be above accumulation, below distribution.
  • Trend Context — Interacting with Value Area: After breakout, wait for the test of the broken boundary (Creek/Ice or VAH/VAL). Entry is the continuation test.
  • Trend Context — Far from Value Area: Price has definitively left equilibrium. Wait for a corrective pullback to an operational level (session VAH/VAL, weekly VWAP, impulse VPOC). Enter in trend direction.

Step 2 — Zones & Levels (Where)

Three categories of operational levels, used depending on context:

Context Wyckoff Structure Levels Volume Profile Zones Volume Profile Levels
Range extremes Structure boundaries (Creek/Ice, Spring/UTAD zone) Value Area extremes VAH, VAL
Range inside — LVN (low resistance zones) VWAP, VPOC
Trend near VA Broken Creek/Ice (LVN zone) Value Area extremes VAH, VAL, range VPOC
Trend far from VA Minor structure extremes LVN, prior session VA Session VWAP/VPOC, weekly VWAP, impulse VPOC

Confluence principle: Preferred entry zones are where multiple operational levels coincide — for example, a broken Creek level that is also an LVN and near the VAH. Confluence strongly reinforces the scenario.

Step 3 — Scenario Planning (How)

Build a protocol of continuous validation using "If X, then Y" logic:

  • Primary scenario: Dictated by the dominant context bias (the last shakeout)
  • Alternative scenario: Always maintain the opposite-direction scenario in case the market invalidates the primary bias
  • Single-movement scenario: Price is already positioned favorably — wait for one corrective move to the operational zone, then enter
  • Two-movement scenario: Price is not yet in the operational zone — wait for price to first reach the zone (movement 1), then test it (movement 2)

Example: "If price breaks the Creek, I will wait for a test to look for buys. If instead the breakout fails, I will wait for a test in the opposite direction for a short."

Step 4 — Position Management (Execution)

  • Entry trigger: Always a significant bar (SOS/SOW) or Order Flow absorption+initiative pattern at the identified operational zone.
  • Entry order type: Stop orders above/below the trigger bar. A stop entry acts as a filter — only filled if price continues in the expected direction.
  • Stop Loss: Structural level (Wyckoff) OR below/above the operational HVN (Volume Profile). The HVN represents the accumulation/distribution protecting the trade.
  • Take Profit: Next HVN, VAH/VAL, prior-session VPOC, or structure-extreme projection. In a trend context, trail behind the last HVN — continuing to ride as long as each new HVN forms in favor.
  • Missed entry: If price moves without you, use the Order Flow continuation model (control + test) for a secondary entry at the next test.

This framework reconciles the discretionary methodology with actionable, quantifiable rules suitable for automated strategy implementations.


Trading Entry Mechanics (Ch.26–27)

Risk/Reward Tradeoff per Phase

Entry Phase R:R Potential Reliability Best For
Phase C (shakeout/test) Highest Lowest Aggressive traders; earliest signals have largest potential move
Phase D (trend in range, breakout test) Moderate Moderate Balanced approach; Wyckoff's preferred entry
Phase E (trend out of range) Lowest Highest Conservative traders; safest but smallest remaining move

Tradeoff principle: The earlier you enter, the larger the potential move but the less developed the structure — and therefore the less reliable. Phase C entry into a Spring test offers the best R:R but requires confident pattern recognition.

Significant Bar Concept (SOS Bar / SOW Bar)

The "significant bar" is the definitive signal of institutional presence. A bar qualifies as significant when it meets ALL of:

  1. Wider range than preceding candles
  2. Higher volume than preceding candles — proportional to the expanded range
  3. Close in the direction: A bullish significant bar closes near the upper half of its range; a bearish significant bar closes near the lower half
  4. Structural break: Close above a prior resistance (bullish) or below a prior support (bearish)

If a single candle doesn't clearly meet these criteria, two consecutive candles can be merged to form a composite significant bar.

The SOS Bar and SOW Bar are the most important instances of significant bars. They represent the moment institutional traders commit to moving price. The SOS Bar after a Spring + test is the definitive confirmation that professionals support the advance; the SOW Bar after UTAD + test confirms distribution.

Movement Inversion (Market Control Change)

Tracking Control: The market is controlled by the side whose last significant bar dominates. Identify the last significant bar — price is assumed to continue in that direction.

Control Flip — Bullish to Bearish: A bearish significant bar closes below the low of the last bullish significant bar → sellers seize control.

Control Flip — Bearish to Bullish: A bullish significant bar closes above the high of the last bearish significant bar → buyers seize control.

This concept directly maps to Change of Character (CHoCH) — the closing of a counter-movement bar beyond the prior significant bar's extreme is the operational signal that the market structure has changed. This is especially useful for identifying:

  • The end of the Automatic Rally (after Selling Climax)
  • The end of the Automatic Reaction (after Buying Climax)
  • Transition between each Wyckoff event within the range

Position Management

  • Send all 3 orders simultaneously at entry: Entry + Stop Loss + Take Profit. Never enter bare — emotional decision-making after being in a position is the #1 cause of oversized losses.
  • Risk per trade: Maximum 1% of account equity. Position size = risk amount ÷ distance from entry to stop loss.
  • Minimum R:R: Do not enter trades with negative risk/reward ratios. A trade with R < 1.5:1 is generally discouraged.

Stop Loss Methodology

The book does not prescribe hard SL distances — it uses structural levels:

Structure Stop Loss Placement
Accumulation / Re-accumulation Below the Spring low, below Creek (broken resistance), below the SC low
Distribution / Redistribution Above the UTAD high, above Ice (broken support), above the BC high
After LPS/BUEC entry Below the LPS low (the test of the broken Creek)
After LPSY/BUES entry Above the LPSY high (the test of the broken Ice)

Take Profit Methodology

The Wyckoff method does not use fixed TP targets. Profit-taking signals:

  1. Climax volume at an extreme: High-volume, wide-range buying or selling at a structure extreme is a sufficient reason to close the position — the opposite side is actively entering.

  2. Phase A of a counter-structure: When the first 4 events of a new Phase A appear (PS+SC+AR+ST or PSY+BC+AR+ST), the prior trend has stopped. Close and re-evaluate.

  3. Liquidity zones: Prior swing highs/lows, SC minimums (in accumulation), AR extremes, BC highs (in distribution). These zones contain pending orders and act as price magnets.

  4. Volume Profile levels: VPOC (Point of Control), VWAP (anchored or session), naked VPOCs (old POCs not yet retested). These volume-concentration levels attract price and serve as natural objectives.

  5. Dynamic adaptation: If price generates a new, closer liquidity zone during the move, that new zone becomes the primary target — the objective moves with the market.

Trading Checklist

  1. Identify the structure (accumulation or distribution) and current phase
  2. Identify the last shakeout (Spring or UTAD) — this defines the directional bias
  3. Wait for the shakeout's test (low volume, narrow range, no new extreme)
  4. Wait for a significant bar (SOS/SOW) confirming intent
  5. Enter at the retest (LPS/LPSY) — the book's highest-conviction entry
  6. Place SL at the structural level, TP at the next liquidity zone
  7. Move SL to breakeven after 1 ATR in favor; trail behind structure as Phase E develops

Wyckoff Strategy Workflow Narratives

Accumulation → Markup

After a downtrend, smart money begins accumulating shares. The selling climax exhausts the remaining sellers, and a series of tests confirms supply has been absorbed. A Spring (shakeout) — if it occurs — grabs the last liquidity below the range before the markup begins. Not all accumulations feature a Spring; many move directly into markup.

Key price levels in an accumulation structure include: the level where the Secondary Test low marks the structure's lower extreme, the Automatic Rally high which identifies the first upper boundary, the Creek (resistance-turned-support after breakout), the Spring low (shakeout extreme used as initial stop reference), and the LPS pullback zone which offers the highest-conviction entry opportunity.

Distribution → Markdown

After an uptrend, smart money distributes holdings to the public. The buying climax exhausts demand, and tests confirm no new buying interest. An Upthrust (UTAD) — if it occurs — sweeps out the last buyers above the range before the markdown begins.

Key price levels in a distribution structure include: the Secondary Test high marking the structure's upper extreme, the Automatic Reaction low identifying the first lower boundary, the Creek (support-turned-resistance after breakdown), the UTAD high (shakeout extreme used as initial stop reference), and the LPSY bounce zone offering the highest-conviction short entry.

Re-accumulation / Redistribution Continuation

During an established trend, price pauses and develops a miniature accumulation (re-accumulation) or distribution (redistribution) structure. These represent a continuation of the trend rather than a reversal. The smaller structure within the larger trend offers high-probability entries with defined risk.

Re-accumulation follows a bullish trend — smart money absorbs the stock that has migrated to weaker hands during the prior advance. Redistribution follows a bearish trend — smart money continues distributing into bounces. The process is identical to accumulation/distribution; the only difference is that re-accumulation begins after a bullish move pauses, while accumulation begins after a bearish move stops. These continuation structures operate at a smaller scale within the parent trend.


References

  • Villahermosa, R. (2019). La Méthodologie Wyckoff en Profondeur. Independently published. ISBN: 9781713107033.
  • Villahermosa, R. (2021). Wyckoff 2.0: Structures, Volume Profile et Order Flow. Independently published.