BullishAgent BullishAgent
EDGAR Earnings Ratings Insiders Shorts
ETFs Screener
Sign in Register
Chapter 13 · Mastery

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:

Detectable programmatically
  • 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
Still needs a human
  • 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.

Why this isn't getting built in this same session
A detection scanner is only as good as its thresholds — what counts as "elevated volume," how many bars define a valid range, how much reclaim speed a Spring needs — and those thresholds should come from backtesting against real data, the same way the ES Block research already on this site earned its parameters through actual testing rather than guesswork. Writing detection code before that validation would just be encoding a guess as if it were a rule.

The natural next step

This guide is now the spec. The next project — separate from finishing the e-book — would be a dedicated build-and-backtest pass: pull the detection rules from Chapters 3–7, run them against 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.