Building a Wyckoff System
Twelve chapters of theory only pay off if they turn into a repeatable process. This closing chapter assembles that process from everything above, then addresses the question this guide opened with: can this run automatically against BullishAgent's own data.
The full checklist
| # | Step | Reference |
|---|---|---|
| 1 | Determine the phase of the broad market/index | Chapter 1, Step 1; Chapter 8 |
| 2 | Shortlist names showing relative strength/weakness vs. that trend | Chapter 1, Step 2; Chapter 8 |
| 3 | Identify a trading range and classify it: accumulation, distribution, re-accumulation, or re-distribution | Chapters 2, 3, 4, 9 |
| 4 | Locate which phase (A-E) the range is currently in | Chapters 3, 4 |
| 5 | If in Phase C, grade the Spring/UT and its Test against the Chapter 5 checklist | Chapter 5 |
| 6 | Confirm with Effort-vs-Result / VSA on the key bars | Chapter 6 |
| 7 | Compute a Point & Figure count for a price target (conservative and full) | Chapter 7 |
| 8 | Re-check multi-timeframe alignment before sizing the trade | Chapter 8 |
| 9 | Sanity-check against the mistake catalog | Chapter 11 |
| 10 | Enter at the Spring or the LPS, stop per Chapter 3's entry table, size by alignment confidence | Chapters 3, 8 |
| 11 | After the trade closes, write it up the way Chapter 12 did — dates, real numbers, what confirmed and what didn't | Chapter 12 |
Can this run automatically?
Mostly yes — steps 3 through 7 are, in principle, expressible as rules over OHLCV data, which is exactly what Chapter 12's five-step manual scan demonstrated. That makes a Wyckoff-detection skill a realistic project, not a stretch goal. Here's what it would actually need to compute:
- Range/compression detection — rolling high-low band narrower than X% of ATR for N+ bars
- Climax candidates — volume > k× rolling average, wide spread, close far from the extreme
- ST/Test quality — retest of a prior extreme on measurably lower volume
- Spring/UT candidates — boundary break that reverses within N bars and reclaims
- SOS/SOW — breakout bar with spread + volume expansion vs. the range average
- LPS/LPSY — pullback holding the old boundary on contracting volume
- A rough P&F-style cause count from range width
- Composite Operator intent (Chapter 10) — whether the size/story actually makes sense
- Re-accumulation vs. genuine distribution in ambiguous early phases (Chapter 9)
- Multi-timeframe judgment calls that don't reduce cleanly to a threshold
- Deciding which of several detected candidates is worth acting on
What data this site actually has for it right now
/ES futures: ready today. es_daily
and es_minute already hold clean, tie-out-verified OHLCV back to
2021 — the exact data this chapter's Chapter 12 case study used by hand. A Wyckoff scanner
against /ES specifically could be built and backtested now.
Individual stocks: not yet. Per the current Phase 6
status, daily OHLCV refresh for the 5,658-ticker stocks table
(refresh_prices_fmp.py) is still a TODO — without a maintained
daily price history per ticker, a stock-universe Wyckoff scanner has nothing to run against
yet. That refresh is the actual prerequisite, not the detection logic itself.
The natural next step
es_daily/es_minute first
since that data is already clean, measure how often the detected Springs/SOS/LPS actually
behaved the way the schematic predicts, and tune the thresholds from there — the same
discipline already applied to the ES Block research. Once that's validated on /ES, extending
it to individual stocks becomes a question of finishing the price-refresh TODO, not
rebuilding the detection logic.