Performance (realiserade trades)
Equity-kurva (live) ● live, var 5:e min
Intradag-punkter idag (var 5:e min under RTH) + tidigare dagars EOD-stängningar.
Dagens kandidater (scan 2026-06-22)
Bekräftade på senaste färdiga bar. Boten går in intradag till live-kurs tidigt nästa session, first-come, så länge slots är lediga (6/10 tagna).
| Ticker | Depth (ATR) | Ref close | Swing high | Stop | ATR | Mom |
| JPM |
1.61 |
331.06 |
338.09 |
324.05 |
7.02 |
18.212 |
| PG |
1.57 |
150.15 |
153.02 |
147.18 |
2.92 |
5.880 |
| LIN |
1.89 |
513.02 |
525.87 |
506.05 |
9.91 |
8.997 |
| DASH |
0.87 |
175.65 |
177.88 |
161.16 |
8.36 |
8.874 |
| AXP |
1.62 |
337.64 |
348.20 |
332.95 |
7.62 |
17.725 |
| COF |
1.45 |
200.63 |
207.30 |
195.96 |
5.67 |
8.171 |
Strategi — TTM Squeeze Pullback-Add
Köp en grund pullback i en aktie som just brutit ut ur en volatilitets-squeeze och trendar upp. Edgen är riskkontroll (Calmar), inte rå avkastning — den förlorar mindre i nedgångar snarare än att vinna mer i uppgångar.
Universe
- Top-100 mest likvida US-megacaps (PIT, dollar-volym-rankat, 2026-listan).
- Bredare universe testat och förkastat: full-500 gav −20% DD (skräpnamn späder ut).
Regim (måste gälla)
EMA8 > EMA21 > EMA34 (stigande stack) och close > SMA50.
Entry-trigger
- TTM-squeeze har firat (släppt) inom 10 bar och momentum > 0 → aktiv squeeze-long.
- Grund pullback: lägsta low ≤ 2 ATR under 10-bars swing high. Djupare pullbacks (>2 ATR) är en exit-signal, inte en rabatt.
- Signal bekräftas på färdig dagsbar; entry sker intradag till live-kurs nästa session (first-come, max 10 slots, ~10% equity/slot).
Exits
- +3 ATR take-profit (låser vinst i styrka, återvinner slot snabbt — ~60% av edgen är slot-recycling).
- 2 ATR stop under swing high (bevakas intradag på live-kurs).
- Momentum-flip: mom < 0 två bar i rad → EOD-exit. 40-bars cap.
Kostnader
- Courtage
max(49 SEK, 0.069%) + 0.025% slippage per sida — modellerat på equity-kurvan (träffar även drawdown).
⚠️ Paper / shadow — inga riktiga ordrar läggs någonsin. Allt är simulerat mot live-kurser från Tastytrade.
Validerat resultat (locked config)
top-100 PIT | 10 slots | first-come | 2 ATR stop (gap-through) | +3 ATR TP | net costs · 2010-01-04 → 2026-06-18
OOS 2025→2026-06: CAGR 43.8% · MaxDD -5.1% · Calmar 8.65 | SPY buy&hold: CAGR 14.2% · MaxDD -33.7% · Calmar 0.42
Equity-kurva (omräknad, locked +3ATR) → CAGR 24.3% · DD -7.8% · Calmar 3.11
Logaritmisk skala. Omräknad här från samma logik som det validerade backtestet; landar marginellt lägre ($17.9M vs $21.6M) pga en förenklad same-bar fill-hantering i regenereringen.
Monkey-test (signal vs slump)
Slumpmässig entry-timing, samma universe/exits. Isolerar entry-signalen.
- Real slår 100% av 200 monkeys på Calmar (p=0.0).
- Real slår 94% på CAGR (p=0.06, marginellt).
- Slutsats: edgen är risk-justerad (Calmar), inte rå CAGR.
Equity block-bootstrap (DD-svans)
2000× resampling — hur illa kan drawdown bli?
- MaxDD median -9.6% · 5:e-percentil (budgetera detta) -14.1% · värsta -20.0%.
- CAGR 5:e-percentil 20.6% · Calmar median 2.68.
Caveats (siffrorna lutar optimistiskt uppåt)
- Residual survivorship: yfinance drops dead/renamed names — worst crash names missing. Norgate = exact fix.
- NO 2008 in the data — never stress-tested through a real systemic bear (only fast V-shapes). THE remaining gate.
- LIVE deviation: signals on completed bars, but entry is intraday-at-live-mark (not next-day close). Backtest = proxy.
Om den här boten
En paper-bot som tradar den TTM Squeeze Pullback-Add-strategi som byggdes och validerades 2026-06-22. Ursprunget: Mat visade en screener som påstod "0.5–1 ATR pullback = 84% win, +4.57%". Ett backtest byggdes från scratch för att granska påståendet.
Vad som hände
- Screenerns 84%/+4.57% replikerade inte ärligt (fick 68%/+2.67%) — men den kvalitativa tesen håller: grunda pullbacks > djupa, >2 ATR = exit-signal.
- Strategin klarade hela den ärliga validerings-pipelinen: PIT-survivorship · daglig mark-to-market · verkliga kostnader · blind train/test · full-period refit · gap-through stops · look-ahead-audit · friktions-stress · monkey-test · equity-bootstrap.
- Mats bedömning: "given 2008 holds, potentially the BEST strategy we've built so far."
Hur boten kör
- Data: indikatorer på färdiga dagsbarer via yfinance (auto-adjusted), exakt samma formler som backtestet.
- Live-kurser: Tastytrade equity-marks för entry-fyllning + intradag stop/TP-bevakning (ingen gap-through-gissning behövs).
- EOD (~22:10 Sthlm): scanna kandidater, EOD-exits, equity-logg. Intradag (var 5:e min, RTH): entries + stop/TP. Idempotent, atomiska state-skrivningar.
- Paper / shadow: inga riktiga ordrar.
⚠️ Återstående risk: aldrig stress-testad genom en riktig systemkris (inget 2008 i datan). Residual survivorship gör siffrorna något för optimistiska. Live-entryt (intradag) avviker dessutom från det validerade "next-day close" — backtest-siffrorna är en proxy, inte en garanti.
Forskning: ~/Squeeze triggers tester/ · minne: ~/memory/ttm_squeeze.md · metodik: ~/memory/backtesting_methodology.md
Logg (senaste raderna)
───── daily.log ─────
2026-06-22 17:37:40,637 INFO STATE RESET — fresh start at init capital
2026-06-22 17:37:40,637 INFO === DAILY RUN 2026-06-22 | universe=100 ===
2026-06-22 17:37:40,637 INFO loaded: cash $100,000 | open 0 | realized $0
2026-06-22 17:37:43,440 INFO history 50/100 ok=50 cached_fallback=0 (3s)
2026-06-22 17:37:46,695 INFO history 100/100 ok=100 cached_fallback=0 (6s)
2026-06-22 17:37:46,697 INFO history done: 100 symbols (6s)
2026-06-22 17:37:47,185 INFO EOD equity $100,000 | cash $100,000 | posval $0 | open 0 | DD 0.0%
2026-06-22 17:37:47,193 INFO SIGNALS for next session: 6 candidate(s) -> JPM, PG, LIN, DASH, AXP, COF
2026-06-22 17:37:47,193 INFO today: opened 0 | closed 0
2026-06-22 17:37:47,193 INFO === DAILY RUN done ===
───── live.log ─────
2026-06-22 17:38:37,158 INFO ENTER JPM @ 330.78 | shares 30.23 | stop 324.051 tp 351.8385 | depth 1.61ATR
2026-06-22 17:38:37,159 INFO ENTER PG @ 150.11 | shares 66.62 | stop 147.1832 tp 158.8652 | depth 1.57ATR
2026-06-22 17:38:37,159 INFO ENTER LIN @ 512.91 | shares 19.50 | stop 506.049 tp 542.6415 | depth 1.89ATR
2026-06-22 17:38:37,159 INFO ENTER DASH @ 175.8 | shares 56.88 | stop 161.1644 tp 200.8734 | depth 0.87ATR
2026-06-22 17:38:37,159 INFO ENTER AXP @ 337.55 | shares 29.63 | stop 332.9539 tp 360.4191 | depth 1.62ATR
2026-06-22 17:38:37,159 INFO ENTER COF @ 200.65 | shares 49.84 | stop 195.9639 tp 217.6542 | depth 1.45ATR