Free lesson · Technical analysis
Elliott Wave: count hypotheses, rules and invalidation
Open interactive lessonPractice calculationsExplore labs
Start with the idea
An Elliott count labels a proposed sequence of swings. More than one count may fit the same observations.
Symbols, units & horizon
- P₀,…,P₅: sequential pivot prices in a completed proposed impulse
- ℓ₁,ℓ₃,ℓ₅: positive price lengths of motive waves 1,3,5
- min: shorter of waves 1 and 5
- ≥: wave 3 is not strictly shorter than both
When and why to use this
Use explicit wave-count candidates as research labels or scenario annotations. Keep candidate history to measure revision and hindsight bias.
- The common impulse illustration has five waves followed by an A–B–C correction. Treat this as a classification hypothesis.
- Under a standard non-diagonal impulse convention, wave 2 does not retrace beyond the start of wave 1, wave 3 is not the shortest among 1/3/5, and wave 4 does not overlap wave 1 territory.
- Diagonal and corrective variants use different rules. State the allowed pattern family before counting.
- A rule such as “wave 3 is not shortest” cannot be finally checked until wave 5 is observed. Do not pretend the finished count was known at wave 3.
- Build pivots using a fixed causal reversal threshold or delayed confirmation. Save every provisional count and its invalidation time.
- Compare competing counts and a simple swing/trend baseline. An LLM may describe candidates, but numerical code should check their constraints.
- Measure predictive value from the timestamp the candidate was available, not from the earliest labeled turning point.
Elliott Wave: count hypotheses, rules and invalidation
- For pivots [100,110,105,123,115,127], wave lengths are 10,18,12.
- Compare wave 3 with min(10,12)=10: 18≥10 passes.
- This checks only one completed-count condition. Wave direction, overlap and retracement rules remain separate.
Lengths 10,8,12 fail because 8
Use the rule
- Fix the definition, units and information timestamp.
- Compute the example and inspect the graph.
- Compare with a simple baseline on untouched periods after costs.
Before moving on
Write the exact rule, its availability time, an invalidation condition and a fair out-of-sample test.
Research checkpoint · reviewed 12 September 2026
- Status: accepted ICAART 2025 conference paper; arXiv abstract and bibliographic metadata reviewed only.
- Scope: combines wave analysis with language models, retrieval and reinforcement learning on historical major US-company data. Exact dates, split design and executable costs were not verified from the abstract.
- Use as an architecture research lead. Benchmark any implementation against fixed numerical swing rules and audit pretraining, retrospective wave labels and available information. No reported performance is adopted here.
Wawer & Chudziak · ElliottAgents (ICAART 2025) ↗
Python implementation
Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.
def wave_three_not_shortest(pivots):
if len(pivots)!=6: raise ValueError("Six completed pivots required")
p=pivots
lengths=[abs(p[1]-p[0]),abs(p[3]-p[2]),abs(p[5]-p[4])]
return lengths,lengths[1]>=min(lengths[0],lengths[2])
print(wave_three_not_shortest([100,110,105,123,115,127]))Continue learning
Technical Analysis: Geometry, Structure & Evidence — all lessons- Support, resistance and reversal: start with a price zone
- Breakout detection, false breaks and retests
- Fibonacci retracements: anchors before ratios
- Harmonic patterns: ratio constraints and competing candidates
- Elliott Wave: count hypotheses, rules and invalidation
- Fair value gaps (FVG): three-bar geometry and fill measurement
- Heikin-Ashi: smoothed candles are synthetic prices
- Renko: price-driven bricks and the missing time axis
- Dynamic support, trend lines and Gann angles
- Momentum indicators, oscillators and divergence
- Volume, supply/demand zones and what OHLCV cannot reveal
- Market structure, BOS and CHOCH as a state machine
- Moon phases: encode a calendar hypothesis and try to falsify it
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations