The Bid & Ask

Quotations, Dispatches, and the Daily Tape

Thursday, August 13, 2026

Rejected thesis

Cross-pattern survey: classical chart patterns

The result

Thesis (mostly rejected): pennants, flags, head-and-shoulders, cup-and-handle, double bottoms/tops — the patterns every TA book opens with — produce a meaningful directional edge on a clean event-study run with same-name matched controls.

Code: research/flag_pennant.py, research/head_shoulders.py, research/head_shoulders_refine.py, research/cup_handle.py, research/double_bottom_top.py Reports: corresponding *_report.json files

Pattern (unconditional) n 20d edge 40d edge
bull_flag 1,332 +0.86 % +1.76 %
bull_pennant 122 -0.40 % -0.87 %
bear_flag (textbook bearish!) 426 +1.82 % +1.87 %
bear_pennant 50 -2.10 % -4.98 %
hs_top (textbook bearish) 4,763 -1.03 % -1.05 %
inv_hs 5,487 +0.21 % -0.34 %
cup_handle 13,124 -0.31 % -0.77 %
double_bottom 15,269 -0.23 % -0.62 %
double_top 15,847 -0.10 % +0.04 %

Two patterns show real, if small, edge: bull_flag weakly positive, bear_flag positively signed (contrarian — a textbook bearish pattern is actually a long signal). The bear-flag result lines up with the much stronger contrarian finding in MA-cross / drawdown-bounce (see below): a stock that has been selling enough to form a bearish chart pattern is oversold, not on its way down further. Bull pennant and bear pennant samples are too small to read.

H&S top — sub-cohort with real edge: when filtered to OOS-2020+ with high head-prominence and tight shoulder symmetry, edge widens to roughly -2 % to -2.5 % over 10-20 days (n ≈ 362). The directionally correct signal is real but the magnitude is below what we'd productize alone.

Verdict on the family: Nearly all classical chart patterns are noise after frictions. The only useful artefacts: - Bear flag's contrarian edge → confirms the drawdown-bounce thesis (see Working signal section). - Bull flag's weak positive edge → live with the existing coil-breakout cohort which has the same shape and bigger n.


At a glance
Validatorresearch/flag_pennant.py
VerdictRejected

Every result here is reproducible from the script named above. Reports are in the repository.

Other rejected theses