npx skills add ...
npx skills add tradermonty/claude-trading-skills --skill parabolic-short-trade-planner
Screen US equities for parabolic exhaustion patterns and generate conditional pre-market short plans, then evaluate intraday trigger fires from live 5-min bars. Phase 1 daily 5-factor scorer (MA extension / acceleration / volume climax / range expansion / liquidity), Phase 2 per-candidate plans for ORL break / first-red 5-min / VWAP fail with explicit borrow / SSR / manual-confirmation gating, Phase 3 one-shot intraday FSM that detects trigger fires and resolves concrete share counts. Covers Phase 1 + Phase 2 + Phase 3.
npx skills add tradermonty/claude-trading-skills --skill parabolic-short-trade-planner
Generate Qullamaggie-style Parabolic Short watchlists and conditional pre-market plans for US equities. The skill never sends orders. It emits JSON + Markdown that a human reviews against their broker before entry.
Three phases:
screen_parabolic.py): pulls EOD bars + company profile
from FMP, applies hard invalidation rules (mode-aware), scores
survivors on 5 factors (weights 30/25/20/15/10), and assigns A/B/C/D
grades.generate_pre_market_plan.py): takes the Phase 1 JSON,
filters by --tradable-min-grade (default B), checks Alpaca short
inventory (or ManualBrokerAdapter), evaluates SEC Rule 201 SSR
state from the inherited prior-day close, and renders three trigger
plans per candidate.monitor_intraday_trigger.py): reads the Phase 2 plan,
fetches 5-min bars (Alpaca live or fixture), walks each plan's FSM
forward by one step, persists per-plan state, and writes an
intraday_monitor JSON with state, entry_actual, stop_actual,
and shares_actual (when triggered). One-shot — trader runs it
every 1–5 min via watch or cron; replay-deterministic so re-runs
are byte-identical.Invoke this skill when the user wants to:
Do NOT invoke for:
triggered state with concrete entry/stop/share
count, but the trader fires the order manually.FMP_API_KEY is set (env var or --api-key).reports/parabolic_short_<date>.md — the watchlist is grouped
by grade (A→D).For small-cap blow-offs, switch to --mode classic_qm (looser market
cap and ADV floors, higher 5-day ROC threshold).
For testing without the API, run --dry-run --fixture <path> against a
JSON fixture (one is shipped at scripts/tests/fixtures/dry_run_minimal.json).
ALPACA_API_KEY / ALPACA_SECRET_KEY for live borrow
checks. Without them the planner falls back to ManualBrokerAdapter,
which marks every candidate as borrow_inventory_unavailable /
plan_status: watch_only.reports/parabolic_short_plan_<date>.json. Each plan contains
three entry plans (5min ORL break, first red 5-min, VWAP fail) with
entry_hint / stop_hint formula strings (no baked-in shares — the
trader computes shares at trigger time from the shares_formula).ALPACA_API_KEY / ALPACA_SECRET_KEY are set (Phase 3
uses Alpaca market data; data.alpaca.markets works for both
paper and live accounts).watch -n 60 'python3 ...' / cron.reports/parabolic_short_intraday_<date>.json lists every
monitored plan with state (armed / triggered / invalidated
/ FSM-specific), bar-derived transition timestamps, and
size_recipe_resolved (concrete shares_actual) when triggered.--bars-source fixture --bars-fixture <path> against a JSON fixture
(scripts/tests/fixtures/intraday_bars/).Phase 3 trigger detection is not an order instruction. Before any manual short entry, confirm borrow/locate availability, SEC Rule 201 SSR state, broker short-sale controls, and the broker's current intraday margin or day-trading controls. FINRA replaced the old pattern-day-trader day-count and $25,000 minimum-equity requirements with intraday margin standards effective 2026-06-04, with broker phase-in allowed through 2027-10-20.
Phase 3 is idempotent: each run replays the full session bars
from open up to now_et (or --now-et override), so re-running
during the same minute produces the same state. prior_state is
used only for diff/notification display; it never advances the FSM.
Read three top-level fields per ticker:
plan_status: actionable (manual gates can be cleared) or
watch_only (hard blockers — borrow unavailable or SSR active).blocking_manual_reasons: must all be resolved before pulling the
trigger.advisory_manual_reasons: heads-up only, e.g.
manual_locate_required (always set), warning:too_early_to_short,
warning:recent_earnings_catalyst (last earnings within
--earnings-catalyst-window-days, default 10 trading days — flag the
move as event-driven rather than pure technical blow-off).Phase 1 fetches the FMP earnings calendar once per run (single call, not per-symbol) and emits two earnings-aware checks:
--exclude-earnings-within-days (default 2 calendar days, forward) —
hard invalidation when next earnings is within the window. Matches
the legacy earnings_blackout_days semantic.--earnings-catalyst-window-days (default 10 trading days, backward)
— soft warning recent_earnings_catalyst when last earnings is
within the window. Routes to Phase 2 as an advisory manual reason
without forcing trade_allowed_without_manual: false.Per-candidate output exposes last_earnings_date, next_earnings_date,
trading_days_since_earnings (TRADING days), earnings_within_days
(CALENDAR days, forward), earnings_blackout_days (configured threshold),
and earnings_in_blackout_window. The legacy earnings_within_2d is
kept for backward compatibility.
Top-level dates: as_of is the planning date (Phase 2 contract — never
mutate); run_date mirrors it; market_data_as_of is the latest bar
date used for technical metrics (differs from as_of on weekend runs).
Install requirements.txt before running the planner. Phase 1 --as-of uses
strict YYYY-MM-DD, filters bars beyond that ceiling, and counts earnings age
with XNYS sessions. Phase 3 uses actual holidays and early closes; the close
boundary is exclusive. Historical dates are accepted only with Phase 1
--dry-run fixture data; live universe and profile endpoints are not PIT and
therefore fail closed for a non-current --as-of.
Phase 1 JSON: parabolic_short_<as_of>.json (schema_version 1.0).
Phase 2 JSON: parabolic_short_plan_<as_of>.json (schema_version 1.0).
Phase 3 JSON: parabolic_short_intraday_<as_of>.json (schema_version 1.0,
phase = intraday_monitor).
The contract is pinned by tests/test_schema_contract.py plus
tests/test_monitor_intraday_smoke.py for Phase 3.
references/parabolic_short_methodology.md — Qullamaggie's 3-trigger
framework and exhaustion signals.references/short_invalidation_rules.md — mode-aware exclusion rules.references/short_risk_management.md — Rule 201, ETB vs HTB, locate.references/intraday_trigger_playbook.md — detail on each trigger
type, the FSM transitions Phase 3 implements, and same-bar tie-break
semantics.references/broker_capability_matrix.md — what each broker exposes
through its API for short inventory.