Trading Strategy Graveyard

Strawburry1 pts0 comments

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...

strategy trading side graveyard search window

Related Articles