How this workbench reads tape: Composite Man, three laws, phases A–E, and the event codes the Agent is allowed to draw. Codes stay in English (SC, Spring, UTAD); Chinese names are for UI copy.
Treat the tape as one operator — the Composite Man — accumulating in panic and distributing into euphoria. Springs and UTADs are fake breaks meant to flush the other side. The job is to recover intent from volume and spread, not to list indicators.
Accumulation → Markup → Distribution → Markdown
A trading range inside accumulation or distribution is split into phases A–E. Markup / markdown live mostly in phase E, after price has left the range.
Schematic K-lines (not real prices). Red = up bar, teal = down bar (A-share convention).
Event tags use the same bias colors as wyckoffEventTag:
bullish below the low,
bearish above the high,
neutral on the relevant wick.
The dashed box is the trading range; top rail = creek, bottom rail = ice / support.
Demand > supply → price rises; the reverse falls. Read the balance from spread × volume.
Time and amplitude in the range are the cause; the move after the break is the effect. Larger cause → larger effect. (P&F counts are not implemented.)
Volume is effort; price change is result. Divergence (climax volume + a narrow doji) often precedes a turn. The engine flags no_result / no_effort.
Defined in WYCKOFF_PHASES. Chart zones use these letters.
Range first, then events — a Spring with no range is meaningless.
Accumulation vs distribution: a range after a long decline may be accumulation; after a long advance, distribution. The feature summary’s “prior trend” is a hint, not a verdict.
Each entry has code, nameEn, nameZh,
side (accumulation | distribution | both), phases,
bias, description.
bullish tags sit below the bar (lows); bearish tags sit above (highs); neutral is amber.
PS → SC → AR → ST → (B) → Spring / Shakeout → Test → SOS / JAC → LPS / BU → E
| Code | EN | 中文 | Phase | Bias | Description |
|---|---|---|---|---|---|
| PS | Preliminary Support | 初步支撑 | A | neutral | First notable support on expanding volume/spread in a decline. Large operators start to bid; usually not the low. |
| SC | Selling Climax | 抛售高潮 | A | bullish | Panic extreme: huge volume, wide spread, close well off the low. Heavy absorption. |
| Spring | Spring | 弹簧 | C | bullish | Brief break of range support, then a fast reclaim. Flushes weak hands; the Phase C test. |
| Shakeout | Shakeout | 震仓 | C | bullish | A more violent Spring: sharp volume break, then recovery. |
| SOS | Sign of Strength | 强势信号 | D | bullish | Wide-spread rally on volume through range resistance. Phase D starts. |
| LPS | Last Point of Support | 最后支撑点 | D | bullish | Low-volume pullback after SOS with a higher low. Classic low-risk long. |
| JAC | Jump Across the Creek | 跳过小溪 | D | bullish | Decisive push over the “creek” (resistance along range highs). Pictorial SOS. |
| BU | Back Up to the Edge of the Creek | 回踩溪边 | D | bullish | Pullback after JAC; old resistance becomes support. |
PSY → BC → AR → ST → UT → UTAD → SOW / ICE → LPSY → E
| Code | EN | 中文 | Phase | Bias | Description |
|---|---|---|---|---|---|
| PSY | Preliminary Supply | 初步供给 | A | neutral | First volume stall in an advance. Distribution starts; the top is not in yet. |
| BC | Buying Climax | 购买高潮 | A | bearish | Climactic volume up-bar that fails to hold. Composite Man sells into retail FOMO. |
| UT | Upthrust | 上冲回落 | B | bearish | Break of range resistance, then an immediate fall back inside. Failed breakout. |
| UTAD | Upthrust After Distribution | 派发后上冲 | C | bearish | Last bull trap after the range is built, then a fast failure. Phase C test. |
| SOW | Sign of Weakness | 弱势信号 | D | bearish | Wide-spread decline on volume through range support. Supply in control. |
| LPSY | Last Point of Supply | 最后供给点 | D | bearish | Weak rally after SOW with a lower high. Low-risk short / exit. |
| ICE | Break the Ice | 跌破冰面 | D | bearish | Break of the “ice” (support along range lows), often with a throwback as resistance. |
side: both — same code on accumulation and distribution tapes.
| Code | EN | 中文 | Phase | Bias | Description |
|---|---|---|---|---|---|
| AR | Automatic Rally | 自动反弹 | A | neutral | After a climax, selling (or buying) is exhausted. The end of AR is a range boundary: high after SC, low after BC. In distribution the same code is the automatic reaction down. |
| ST | Secondary Test | 二次测试 | A, B | neutral | Return to the climax area. Volume and spread shrink vs the climax if the prior effort is spent. |
| Test | Test | 测试 | C, D | neutral | Quiet retest of a prior low (or high). Ideal: low volume, narrow spread, close back in favor. |
OHLCV → packages/wyckoff (swings, range, VSA) → MarketFeatures → Agent names events → overlays
The model must not invent codes. draw_annotations only accepts WYCKOFF_EVENT_CODES.
The engine finds ranges and VSA; naming is the Agent’s job.
event → wyckoffEventTag (SC / Spring / UTAD, …)zone → wyckoffZone (range + optional phase A–E)level → horizontal (creek, ice, spring low)trendline → creek / ice / demand / supply lineNot in v1: point-and-figure cause-and-effect counts, and automatic phase classification.