Standing on giants’ shoulders — the Swing Deck identity
There are a thousand “trading bots” on the market. Most of them promise the same thing: hand us your money, watch the dashboard, become wealthy. We didn’t build that. We don’t believe in that. Swing Deck is a Stage 1 swing-trading co-pilot built on the proven work of four people who already invented major parts of the wheel: Kristjan Kullamägi, Mark Minervini, William J. O’Neil, and Jesse Livermore. We didn’t reinvent any of it. We took the best parts and built a system that — most importantly — stays out of the way of your judgment.
The premise
That “Stage 1” phrase is loaded, so let’s unpack it.
We model autonomy across four stages:
- Stage 1 — Autonomous discovery, audit, and alerts. Manual on every order. This is what we ship.
- Stage 2 — Add defensive auto-execute (raise-stop, take-profit fills, trim, stop-out, orphan cleanup). Manual on entries.
- Stage 3 — Add auto-entry with strict gates (max N per day, allow-list, setup ≥30 historical samples, daily approval). Manual oversight.
- Stage 4 — Full autonomy. Pause toggle as the only control.
We explicitly reject Stage 4. Full autonomous trading without human judgment is, as we put it internally, “just reckless.” The destination is Stage 3 — a system that can act defensively and enter cautiously within strict gates, with you always in the loop on what matters.
The point isn’t to replace your judgment. The point is to externalize the discipline so your judgment has somewhere good to land.
That’s the wheel we’re building. To build it well, we leaned hard on people who already invented major parts of it.
Why these four
The swing-trading literature spans a century. Hundreds of practitioners have published frameworks. We chose four to anchor on because each contributed something foundational that the others didn’t:
- Kristjan Kullamägi (@Qullamaggie) — modern era, post-IPO setups, public Twitter teaching, no book to sell. His Episodic Pivot and Bull Flag / High-Tight Flag patterns work in 2026 markets the way they worked in 2018, because they’re tape-based not narrative-based.
- Mark Minervini — author of Trade Like a Stock Market Wizard (McGraw Hill, 2013) and Think and Trade Like a Champion (Access Publishing, 2017). Three-time U.S. Investing Champion. The SEPA (Specific Entry Point Analysis) methodology codified what “Stage 2 uptrend” actually means in tradable form.
- William J. O’Neil — founder of Investor’s Business Daily, author of How to Make Money in Stocks (McGraw Hill, 1988, multiple editions). His “Greatest Stock Market Winners 1970–1983” study produced CAN SLIM — still the most rigorous framework for combining technicals with fundamentals.
- Jesse Livermore — Reminiscences of a Stock Operator by Edwin Lefèvre (George H. Doran, 1923) and Livermore’s own How to Trade in Stocks (Duell, Sloan and Pearce, 1940). A century old and the principles still apply because human psychology doesn’t change.
We could have anchored on Weinstein, Darvas, Zanger, Raschke, Soros, or Druckenmiller. Some of their ideas are absorbed too — Raschke’s ADX-gated pullback (the “Holy Grail”) just shipped this week. But the four above form the spine.
Every setup pattern, every risk rule, every philosophy below originated with these authors. Swing Deck is the synthesis, not the source. If you want to learn swing trading, buy the books. We’ll be here to help you trade once you have.
Kullamägi — the setup library
What we took
Kristjan Kullamägi popularized two setup patterns through his free Twitter content and his Qullamaggie.com blog: the Episodic Pivot (EP) and the Bull Flag / High-Tight Flag (HTF). He also documented the parabolic exhaustion pattern as a defensive signal — and as a short setup, though we’ve chosen to use it differently.
In our codebase:
_detect_episodic_pivot()— 5 criteria implementing Kullamägi’s EP definition: a gap of ≥4%, ≥5× average volume, a breakout above the N-session high, occurring after a defined consolidation. The geometry is his; the parameters are his defaults._detect_bull_flag()— 6 criteria for the Bull Flag / HTF: a prior trend of ≥30% over 60 sessions, a 5-12 day flag with ATR contraction, a breakout pivot. Again, geometry per Kullamägi’s teaching._detect_parabolic_extension()— 4 criteria flagging parabolic exhaustion (≥5 of last 7 days up, ≥25% cumulative gain, ATR expansion ≥1.3×, optional exhaustion candle).
Beyond detection, we honor his scale-out ladder: the framework’s TP ladder emits TP1, TP2, TP3 at staged R-multiples. His original teaching uses 1R/2R/4R; we picked larger multiples to match our R:R gating but the structural intent — scale out as the trade works — is his.
The EP scanner pass and the BF scanner pass close the discovery loop. Detection without scanning would be theoretical — Kullamägi’s whole point is that EPs and BFs appear in the universe daily; you need a scan that surfaces them, not a screen you have to manually run.
Where we diverged
Kullamägi trades both sides — long the Bull Flag, short the parabolic. We are long-only by design. Our parabolic detector fires defensively — it flags “chase-the-top” risk on names we’d otherwise consider entering. It never produces a short trigger. This is a Stage 1 autonomy decision: short setups carry asymmetric tail risk (squeezes can blow through stops in pre-market) that doesn’t fit our advisory model.
What we added
Kullamägi’s teaching is qualitative — he’ll eyeball a chart and call it an EP. Our detectors produce legible criteria reads — every detection emits which criteria passed, which failed by how much. When the dashboard says “EP detected on TSLA,” you can click and see “gap 5.2% ✓, volume 6.3× ✓, breakout 23-day high ✓, prior consolidation 18 days ✓.” That transparency is ours.
Minervini — the discipline layer
What we took
Mark Minervini’s contribution is harder to point at because it’s mostly discipline structure. From his books:
- The 80-point quality gate. In Trade Like a Stock Market Wizard, Minervini argues that the difference between professionals and amateurs isn’t pattern recognition — it’s the willingness to wait for A+ setups and reject B-grade ones. Our
ENTRY_SCORE_GATE = 80inconfig.pyis the literal expression of this. Below 80, the framework refuses to mark a row as actionable, regardless of how good the chart looks. - The 1% risk rule.
RISK_PCT = 0.01— Minervini’s defensive ceiling. No single trade puts more than 1% of account equity at risk on the stop distance. This appears in every position-sizing calculation. - VCP (Volatility Contraction Pattern). Minervini’s signature setup — a base where volatility tightens as supply gets absorbed. Our
consolidation_breakout_pendingoverlay detects this exact pattern: declining ATR across the base, near-resistance compression, breakout-pending state. - Stage analysis (which Minervini absorbed from Weinstein). Stage 2 = the only stage worth buying. Our weekly trend filter and EMA21/SMA50 alignment reads enforce this — a row that fails Stage 2 alignment can’t reach the 80-point gate no matter what else is true.
Where we diverged
Minervini is heavily discretionary. He looks at charts and feels the right entry. Our framework can’t feel anything — so we externalized the discretionary cues into measurable criteria. Where Minervini would say “I want clean price action into the pivot,” we compute pullback_plan with anchor enumeration and R:R projection. Different mechanism, same intent.
What we added
The legible-veto chip language. When a setup fails the 80-point gate, Minervini’s framework would just say “wait for a better setup.” Ours says:
R:R 1.4 below 2.0 floor — three paths to clear: lower entry by $5.20 (3.0% buffer to support), raise TP1 by $3.10 (resistance 5.8% away), or tighten SL by $2.40 (within 1.2× ATR).
That’s the kind of math Minervini does in his head. We surface it as visible chips so a less-experienced trader can learn the why of the rejection, not just absorb the rejection.
O’Neil — the quality filters
What we took
William J. O’Neil’s CAN SLIM is the most fully-articulated swing-trading framework in print. From How to Make Money in Stocks, the seven criteria map directly into our scoring pillars:
- C — Current quarterly earnings ⇒
catalyst.earnings_daysreads + earnings filter - A — Annual earnings growth ⇒ fundamental quality reads (when data fresh)
- N — New highs / new products / new catalysts ⇒ EP detector explicitly requires breakout above N-session high
- S — Supply / Demand (volume) ⇒
volume_ratio ≥ 2.0requirement across all setup detectors - L — Leader vs Laggard ⇒ just shipped —
compute_sector_rs()with within-sector percentile ranking; new “SECTOR LEADER” / “SECTOR LAG” chips on audit cards - I — Institutional sponsorship ⇒
whale_readsynthesizer: 6 signals voting on accumulation vs distribution - M — Market direction ⇒
regime_engine.detect_market_regime()— STAGFLATION, GOLDILOCKS, LIQUIDITY_CRUNCH, RISK_OFF classification
Plus O’Neil’s 7–8% sell rule — never let a loss exceed 7–8% on a fresh entry. Our SL breach veto chip and auto-stop-loss alerts enforce this; the 1% account risk × position size math comes out to roughly the same protection.
Where we diverged
O’Neil wrote in an era of paid Investor’s Business Daily subscriptions and quarterly earnings calendars. We have real-time options flow, gamma walls, dark pool prints. Our scoring synthesizes signals he didn’t have access to — but the philosophy of “buy only quality leaders making new highs with institutional sponsorship in the right market” is entirely his.
What we added
The honest data-quality envelope. O’Neil could trust IBD’s earnings data. We have multiple data vendors and retail-tier API tiers where some fields are estimated, smoothed, or stale. So every signal carries provenance — _iv_no_variation flags when IV calc fell back to default, _delta_source: 'tradier_greek' | 'placeholder' marks whether options Greeks are real or synthetic, whale_read.tier: 'retail_caveat' marks the asymmetric-confidence reality (distribution clearly visible from public flow, accumulation must be inferred).
O’Neil’s framework didn’t need this because his data was already filtered. Ours needs it because we’re working with raw retail-broker feeds. The labels keep us honest.
Livermore — the patience discipline
What we took
Jesse Livermore is the oldest reference and the most psychological. From Reminiscences of a Stock Operator and Livermore’s own How to Trade in Stocks:
- “Don’t anticipate, react.” Livermore’s pivotal-point methodology requires the price to prove itself by crossing the trigger. No anticipation. Our
entry_armedalert tier fires only AFTER the setup criteria pass; the framework refuses to alert you on “about to break out” — only on “just broke out.” - Patience as a competitive edge. Livermore: “It was never my thinking that made the big money for me. It was always my sitting.” Our setup hysteresis enforces this at the system level — a setup must persist across N consecutive audit cycles before promoting from “developing” to “confirmed.” No flip-flop, no chasing.
- Cut losers fast, ride winners hard. O’Neil and Minervini absorbed this; Livermore wrote it first. The asymmetric scale-out (TP1 partial, TP2 partial, runner) embodies the principle.
Where we diverged
Livermore was a tape reader of the highest order — he could feel a market’s tone from the ticker. We can’t. So we’ve coded what we can — the schmitt-trigger hysteresis on score gates and grade transitions, the post-hysteresis overlays for transient patterns. These are crude shadows of what Livermore did intuitively, but they prevent the worst overtrading impulses.
What’s deferred
Livermore’s pivotal-point entry trigger itself — the precise geometry of “buy at the pivot only after it clears with conviction” — is documented in our internal design memo but not yet shipped. It waits behind a shadow corpus calibration gate: we need 30+ resolved shadow outcomes (≥50% win rate, ≥2.5R average winner) before promoting the trigger to live alerts. This is intentional. Livermore would have agreed — paper trade until you prove the edge.
What’s actually ours
Everything above is attribution. Here’s what Swing Deck adds that isn’t taken from anyone:
1. The four-stage autonomy model
Nobody else thinks about swing-trading software this way. Most tools position themselves as either “manual journal” (Stage 0) or “set and forget” (Stage 4). We’re explicit that:
- Stage 1 is what we ship today (advisory only)
- Stage 2 is the next destination (defensive auto-execute)
- Stage 3 is the endpoint (auto-entry with strict gates, daily approval)
- Stage 4 is rejected — not “haven’t built yet,” rejected on principle
This framing came out of a 5-question test we use internally before promoting any action toward more autonomy:
- What’s the worst-case dollar loss?
- Can the user override before fill?
- Do we have a 6+ month track record on this action class?
- Does the broker T&C permit it?
- Is there a proactive kill switch (not just a circuit breaker)?
If any answer is no, the action stays advisory.
2. Multi-source confidence synthesizer
Kullamägi looks at price. Minervini looks at fundamentals plus chart. O’Neil weighs seven CAN SLIM factors. Livermore read tape and news.
None of them synthesized everything into one composite confidence score. We do.
The 11-point composite score (and the 13-point options score for derivatives setups) combines:
- Technical pillars (trend alignment, RS, volume, level proximity, momentum)
- Options flow (whale read, gamma walls, dark pool, sweeps)
- Macro context (regime classification, sector rotation, VIX regime)
- Catalyst proximity (earnings, scheduled news, geopolitical events)
- Setup detection (EP, BF, parabolic flag, consolidation breakout)
- Data quality (penalize stale/synthetic data; reward fresh/verified)
The output is one number (0–100). The 80-point gate is the actionable threshold. But more importantly, the score is decomposable — every audit row shows which pillars contributed what, so you can see whether a 78 means “8 strong pillars / 3 missing” or “5 strong / 6 mixed” — those are very different 78s.
3. Regime-aware position caps that adapt per cycle
None of our reference authors changed their position sizing based on macro regime. They traded their methodology; the macro was implicit context.
We make it explicit. The regime_engine.detect_market_regime() classifies the current macro environment as one of six regimes (STAGFLATION, GOLDILOCKS, LIQUIDITY_CRUNCH, RISK_OFF, RISK_ON, OIL_SHOCK) based on VIX, oil ROC, DXY, 10Y yield, and breadth indicators.
Each regime carries its own per-name and sleeve caps:
- STAGFLATION → SPORTS_CARS cohort capped at 7%/name, 20% sleeve. Anchors bumped to 12%/name. Armor floor raised to 85%.
- GOLDILOCKS → SPORTS_CARS expanded to 10%/name, 30% sleeve. Armor floor relaxes.
- LIQUIDITY_CRUNCH → all sleeves halved. Armor floor 90%+. Hard-asset floor mandatory.
When the regime transitions, the caps transition automatically. The audit cycle re-evaluates every name against the new regime’s caps on the next pass. The portfolio reshape is recommended, not executed — Stage 1.
4. The AI Coach layer
Six AI coaches, each scoped to a narrow decision moment:
pillar_coach— explains why each scoring pillar fired or failed. “Pillar 3 (RS) scored 8/10 because RS-vs-SPY is 1.34 over 60 days, top quintile; pillar penalty avoided because no recent gap-fade.”entry_coach— pre-trade narrative. Reads the full audit row + setup detection + R:R math + risk envelope and produces the case for and against entry in plain English.exit_coach— held-position management. “Position +1.8R, TP1 hit; framework suggests scaling 1/3 here per the ladder. Stop can advance to break-even given the structural support at $X.”options_coach— options-specific reads (when IV regime + Greeks justify a derivatives expression).trap_structure_coach— flags specific trap patterns (bull-trap structures, distribution wedges, parabolic exhaustion candles).whale_confirmation_coach— interprets unusual flow against the framework’s own bias, surfaces disagreements.
All six run on a budget (llm_budget.py) — there’s a hard ceiling on tokens per day so the coach layer can’t run away with cost. Each coach is deterministic in inputs (same audit row + setup state → same payload sent to the LLM), which makes the outputs reproducible enough to validate against historical decisions.
The coaches don’t make decisions. They produce narrative around decisions the framework already made. This is intentional — Stage 1.
5. Calibration-first culture (shadow before promote)
Before any new setup detector goes live as an alert, it goes through shadow corpus validation:
- Detector ships in inert mode — fires the detection, records the trade plan (entry, SL, TP1/2/3), but produces no user-facing alert.
- Outcomes are backfilled daily for N sessions (default 5d).
- Aggregator computes win rate, average winner R, average loser R, profit factor against the shadow plans.
- Promotion to live alerts requires ≥30 resolved outcomes, ≥50% win rate, ≥2.5R average winner.
The EP entry trigger is currently in this state — detection ships, alert promotion deferred until corpus matures. The slippage chip (audit-card chip showing “stops slipped avg -1.2% last 5x”) is similarly deferred until ≥3 tickers × ≥5 events each.
This is the opposite of “ship fast and iterate.” It’s “ship the data capture fast, gate the user-visible promotion behind real evidence.” Our reference authors didn’t have the luxury of programmatic shadow validation; we do, so we use it.
6. Legible-veto chip language
Every framework decision is rendered as a chip — a short, color-coded badge on the audit card that says exactly what the framework thinks and why. When a chip rejects an entry, it explains the rejection in measurable terms with measurable paths to clear it.
Sample chips actually shipped:
- 🛑 SL BREACH — “Stop at $743 hit pre-market gap; defensive auto-flag for exit review”
- 📉 SECTOR LAG — “Bottom 20% in semis cohort (XLK -2.1% vs ticker -4.8% over 60d)”
- 🏆 SECTOR LEADER — “Top 20% in defense cohort”
- ⚠️ CHASE THE TOP — “Parabolic extension: 7 of 7 sessions up, +32% cumulative, ATR 1.5×; entry deferred”
- R:R RELEASE — “Three paths to clear the 2.0 floor: lower entry $5, raise TP1 $3, tighten SL $2”
- 🎯 BF SETUP · 5d — “Bull Flag detection: prior trend 42%, flag day 5, breakout pivot $X.XX”
- ⏸ RECENTLY CLOSED 4d — “Cooldown active; re-entry requires confirm step”
The chip language is ours. The underlying veto logic frequently isn’t — but the externalization is.
7. Slippage corpus
The journal-broker reconciliation pass captures stop-fill slippage events — every time the broker fills your stop at a different price than the trigger, we capture the delta. The server-side slippage_events.jsonl joins each event to its setup_type, regime, and VIX context.
An aggregator tool buckets by setup type, regime, and ticker. The eventual goal: a pre-trade chip that says “MU’s last 5 stops slipped avg -1.2% — factor into your R math.” Deferred until the corpus matures, but the capture pipeline is live.
No reference author had this. They knew their fills were imperfect; they didn’t have a corpus to quantify the imperfection by name and setup.
8. Bug-class catalog discipline
Internal-facing but worth mentioning. Every time we hit a bug we haven’t seen before, we name the class and log it. Examples from our running catalog:
- “Same-field-different-writers” (13 hits): two code paths write the same logical field with different semantics. Tracked across every recurrence.
- “Recompute-tool overwrites broker-truth” (3 hits): sync handler, journal stop-trigger logging, Recalc P&L. Hit three times in one evening; we now grep for it before writing any new journal walker.
- “Phantom sub-dict reader”: consumers read fields the producer never wrote.
The catalog is a discipline check. Three hits of the same pattern in one session triggers a sweep for all callers. The pattern stays in our project memory so future-us greps for it first.
The wheel we built from the best parts
To restate the identity:
A Stage 1 swing co-pilot built on Kullamägi’s setup library + Minervini’s discipline + O’Neil’s quality filters + Livermore’s patience — externalized as legible chips and regime-aware caps, calibrated against its own shadow corpus before promoting any new behavior.
Now you know what each clause means:
- Stage 1 co-pilot — autonomous discovery + audit + alerts; you stay in the loop on every trade
- Kullamägi’s setup library — EP, BF/HTF, parabolic exhaustion as defense
- Minervini’s discipline — 80-point quality gate, 1% risk, Stage 2 alignment, VCP overlay
- O’Neil’s quality filters — CAN SLIM as scoring pillars, with the L just landing as sector RS
- Livermore’s patience — schmitt-trigger hysteresis, post-trigger-only alerts, deferred-until-proven-edge promotions
- Legible chips — every veto and entry-arm explained in measurable, actionable terms
- Regime-aware caps — per-name and sleeve caps adapt automatically across six macro regimes
- Shadow corpus calibration — new behavior earns promotion through measured outcomes, not faith
We didn’t reinvent any wheel. We took the best parts from people who did, and built something that — most importantly — stays out of the way of your judgment.
The honest copy for our customer page won’t say “AI-powered set-and-forget trading.”
It’ll say: “Autonomous discovery; you stay in the loop on the trades that matter.”
That’s the difference. That’s the identity.
Reference reading
All credit to the originators. If you want to learn the underlying philosophies first-hand, here’s where:
Kristjan Kullamägi
- Qullamaggie.com — blog + free educational content
- @Qullamaggie on Twitter/X
- Chat With Traders Episodes 178 + 224
- No book — his teaching is entirely free / public
Mark Minervini
- Trade Like a Stock Market Wizard (McGraw Hill, 2013)
- Think and Trade Like a Champion (Access Publishing, 2017)
- Minervini.com (paid mentorship program)
- U.S. Investing Champion 1997, 2021, 2023
William J. O’Neil
- How to Make Money in Stocks (McGraw Hill, 1988+; multiple editions)
- The Successful Investor (McGraw Hill, 2003)
- The Greatest Stock Market Winners 1970–1983 — the original CAN SLIM study
- Founded Investor’s Business Daily (1984)
Jesse Livermore
- Reminiscences of a Stock Operator by Edwin Lefèvre (George H. Doran, 1923)
- How to Trade in Stocks by Jesse Livermore (Duell, Sloan and Pearce, 1940)
Adjacent influences we absorb less heavily but acknowledge
- Stan Weinstein — Secrets for Profiting in Bull and Bear Markets (Dow Jones-Irwin, 1988). Stage analysis foundation.
- Linda Bradford Raschke — Street Smarts (with Larry Connors, M. Gordon Publishing, 1996). Holy Grail pattern, ADX gate.
- Nicolas Darvas — How I Made $2,000,000 in the Stock Market (American Research Council, 1960). Box theory.
- Dan Zanger — Chartpattern.com. Momentum bull-flag teaching.
Any errors of interpretation in Swing Deck are ours, not theirs.
Claim a Founding Slot — $14.50/mo
Adjacent reading: Trading philosophy landscape (the eight-schools survey this synthesis came out of) · Six AI surfaces, zero chat boxes (deeper on the coach layer) · 13 risk pillars (the discipline backbone) · Indicators filter, price action triggers (the scoring philosophy).
Disclosure: Swing Deck is built and operated by one person. The product is local-first; positions, broker tokens, and journal entries never leave your machine. AI features use your own API keys (BYOK). We don’t proxy your data through our servers. Pricing as of 2026-05-19. Past performance is not indicative of future results. Nothing in this post is investment advice; it’s a description of software architecture and the trading literature it’s built on. Trader names and book titles are referenced for attribution; this post is neither endorsed by nor affiliated with any of the authors mentioned or their publishers.