GitHub - cmatthwilkes-debug/trading-strategy-graveyard · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
cmatthwilkes-debug
trading-strategy-graveyard
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>1 Commit<br>1 Commit
README.md
README.md
View all files
Repository files navigation
The Trading Strategy Graveyard
16 pre-registered backtests of retail trading strategies. Zero passed. This is the full<br>record — every strategy, every number, every artifact that almost fooled me.
Two years of YouTube and fintwit will tell you momentum scalping works, gap trading works,<br>opening-range breakouts work, mean reversion works. I built a testing pipeline to find out<br>which one I should automate, and committed to one rule that changed everything: write the<br>pass/fail criteria down BEFORE running the test, and never move the goalposts after.
16 pre-registered gates later, the answer is: none of them. Not one strategy family<br>survived honest testing. I lost $0 learning this — every strategy died in the pipeline<br>before touching money.
The rules (each one added after a specific disaster)
Pre-register the gate. Pass/fail thresholds (profit factor at a stated cost,<br>monthly consistency, holdout confirmation) committed in a file before any code runs.<br>Fail = family closed. No "what if we tweak the stop" salvage.
Split-adjusted bars only. Raw bars + a reverse split inside your hold window = a<br>fabricated +4,890% winner. That's a real trade my pipeline "found" — a $0.17 stock,<br>1:25 reverse split, pure artifact. A strategy "passed validation" for six days on this<br>before the adjusted rerun killed it.
Honest fills. A backtest that fills your stop AT the stop price is fantasy. Names<br>that gap through a −5% stop close at −10 to −15%. Model the fill you actually get:<br>checked at the close, filled at the close; gap-throughs fill at the open.
De-survivorship universe. My trend-following test scored PF 1.47 on a curated<br>megacap list and 1.05 on a broad random universe. Same code, same period. The curated<br>number was survivorship, not edge — you're trend-following the winners you already<br>know won.
Disjoint holdout, run once, only if the primary passes. My best candidate hit<br>PF 1.23 on the primary sample and 0.93 (negative expectancy) on the holdout. Sample<br>luck is real.
Cost ladder on every result. Report at 0 / 0.05% / 0.10% / 0.25% per side. This<br>column is where every single strategy died.
Eyeball the top-10 winners raw. If a metric improves monotonically as you extend a<br>parameter (hold length, lookback), you have an artifact, not an edge.
Slot-capped portfolio stats are a false-positive generator. A slot-capped variant<br>printed PF 3.96 by accidentally cherry-picking under 10% of trades. It did it twice, on<br>two unrelated strategies.
The graveyard (best HONEST number per family, after the rules above)
Strategy family<br>Best honest result<br>Died of
Intraday momentum scalp<br>PF 0.97 @ zero cost, best time window<br>49% win, symmetric ±1.18% = coin flip
Same, full 190-name mover universe<br>PF 0.91 @ 0 / 0.75 @ 0.05%/side<br>breadth ≠ edge; movers are coin flips too
Time-of-day gating (10:00–12:30)<br>PF 0.97 @ 0<br>cuts bleed toward breakeven, creates nothing
"Let winners run" exit<br>made it WORSE (0.90 → 0.86)<br>continuation at +2% is still a coin flip
Overnight holds<br>−208% over one held month<br>pure gap risk
Mean reversion (Connors RSI-2)<br>PF 0.77 @ 0.25%/side, holdout 0.78<br>real ~1.1 gross signal, friction eats it whole
Trend following (Donchian, broad universe)<br>PF 1.05 @ 0.25%/side<br>US equities are one correlated bet (2022: PF 0.40)
Catalyst gaps (gap ≥5% + volume spike)<br>PF 1.23 @ 0.25%/side, holdout 0.93<br>split artifacts + fill fantasy + sample luck
Earnings drift (real 8-K dates from SEC EDGAR)<br>PF 1.11 — WORSE than non-earnings gaps (1.29)<br>scheduled reactions get faded; PEAD is dead at retail cost
Penny stocks (same catalyst logic)<br>PF 1.00 at a FANTASY 0.1% cost<br>real penny spreads are 1.5–3% per side
News sentiment (LLM-scored, 19.5k full...