Swing Deck v5.0 — what shipped and why
The biggest release since launch. If you're on v4.3, download v5.0 from swing-deck.com/download — your license carries over, no reactivation needed. This post walks through every new feature and the moat each one builds.
What's new at a glance
- 🟢 Price-action trigger engine — 11 new primitives. Indicators filter; price action triggers.
- 💡 Single status light per position — ARMED / HOLD / WATCH / TIGHTEN / EXIT / COLD. One color, one glance.
- ✨ AI thesis per ticker — BYOK (OpenAI, Anthropic, Ollama). Learns your reading preferences.
- ☀ Morning briefing email — 6:25 AM MST weekdays, your positions + state counts.
- 📊 Public track record — every fire the engine called, auditable at swing-deck.com/track-record.
- 🌐 Consensus network — anonymized aggregate signals across Premium users.
- 📱 Mobile PWA — "Add to Home Screen" from any page, full offline cache.
- 🎯 Focus Mode — collapse the dashboard to only positions that need action.
- 🔬 Per-user calibration warmup — 30 days and the engine is tuned to you.
The framework
v5.0 is the first release where Swing Deck fully encodes a philosophy I've been writing about since launch: indicators filter the universe, price action triggers the entry. Two layers, two very different questions.
Indicators are lagging by definition — they're derivatives of price and time. By the time RSI prints 30, the move has already happened. But they're excellent at answering which stocks deserve your attention this week. They filter.
Price action — a 20-day breakout, an inside-day coil that pops, a pullback-bounce off the 20-EMA, a liquidity sweep and rejection — answers is now the moment. That's the trigger.
The full post on the philosophy: Indicators don't trigger trades. Price action does.
The 11 price-action primitives
Every one is a pure function. Every one has a mechanical definition. Every one returns a strength score 0-100:
| PRIMITIVE | WHEN IT FIRES |
|---|---|
| inside_day | today's range inside yesterday's — coil |
| n_day_breakout | close above prior 20-day high |
| volume_expansion | ≥ 1.5× the 20-day average |
| pullback_bounce | tagged 20-EMA, bouncing on volume |
| vwap_reclaim | lost, then reclaimed intraday VWAP |
| bearish_divergence | price HH, RSI LH — exhaustion |
| bullish_divergence | price LL, RSI HL — reversal |
| liquidity_sweep_reclaim | punched level and snapped back |
| bull_flag | pole + tight flag + break |
| engulfing_reversal | today's body engulfs yesterday's on volume |
| gap_and_go | gap above yday high, close in upper third |
| key_level_reclaim | broke support, stayed below, reclaimed on volume |
On a typical day in a range-bound market, 1-4 fires across a 16-ticker watchlist is normal. On a trend day, 5-8. On a reversal day, divergences light up. An engine that fires on 60% of tickers every day is noise, not signal.
Why the status light matters
v4.x showed an 11-cell radar chart per position. Technically correct, mentally exhausting — you have to aggregate 11 numbers to know if the position is healthy. Nobody does that for 20 positions at 10:31 AM.
v5.0 keeps the 11 cells (click to expand). But the card itself now shows one color, one state, one reason:
🟢 NVDA ARMED Filter pass + n_day_breakout fired on 1.8× volume 🔵 AAPL HOLD Score 87 — no action needed 🟡 COIN WATCH Filter pass, waiting for price-action trigger 🟠 TSLA TIGHTEN Score drift to 68 — raise stop 🔴 VRT EXIT Hard pillar breach — rotate to cash ⚫ PLTR COLD Filter fail — don't open
Glance the dashboard. In two seconds, know: nothing armed, two need tightening, one exit. Act. Move on.
AI thesis that learns you
Every ticker card gets a collapsible ✨ AI THESIS panel. Expand it, and the engine writes a one-paragraph thesis grounded in live Swing Deck data: filter score, which triggers fired, pillar state, macro regime, 30d hit rate, consensus from other users.
Below the paragraph: thumbs-up / thumbs-down / shorter / longer / +macro / +price. Each click tunes the prompt for you — length, focus, tone. After 50 interactions, your thesis is written differently from any other user's. That's the personalization moat. A competitor can copy the prompt template. They can't copy 90 days of your feedback.
Works with any OpenAI-compatible API:
- OpenAI (
gpt-4o-mini— cheap, fast) - Anthropic (
claude-3-5-haiku) - Local Ollama (free, fully private — point
AI_THESIS_BASE_URLatlocalhost:11434/v1)
Your key, your provider. No data leaves your machine except to the provider you choose.
The moats running in v5.0
Eight compounding moats, all live on day one:
| MOAT | COMPOUNDS WITH |
|---|---|
| Public track record | time (each day = one more day a cloner can't match) |
| Consensus network | user count (network effect) |
| Per-user calibration | usage (switching cost grows) |
| AI thesis preferences | interactions (personalization) |
| Attribution dataset | trigger ticks (proprietary data) |
| Morning-briefing ritual | habit formation |
| E*TRADE broker integration | OAuth lock-in + regulatory moat |
| Brand + content | blog posts, track record, framework |
Upgrade
Existing users (v4.3.x): download the v5.0 installer for your OS at swing-deck.com/download. Your license, portfolio, candidates, and settings all carry over. Your existing audit_output.json is compatible.
New users: free tier runs v5.0 on up to 5 tickers — the full price-action engine, status lights, track record. AI thesis + consensus unlock on Premium.
What's coming
- E*TRADE broker writes going live. The code is wired; we're at 6/7 on the readiness checklist. The final flip —
BROKER_MODE=live— is next. - Second broker (Tradier). Now that the guard + OAuth patterns are proven, Tradier should drop in at 40% of the effort.
- Mobile app (native). The PWA is the first step. A Swift/Kotlin wrapper follows.
- Deep-dive panel. Once 30 days of consensus + attribution data has accumulated, ticker cards will show historical primitive hit rate: "Bull flag on NVDA: 7 fires, 5 winners, +14.3% avg."
Ready to run v5.0
Download the installer, restart the dashboard, glance. The system does the work.
Download v5.0 →