Short-Term Trading Decision System

The actions ahead, in order

What's finished, what's waiting on you, and what unlocks next. Follow it top to bottom — nothing below a gate starts before the gate opens.

updated 2026-07-14 branch feature/strategy-engine · 13 commits · not pushed paper trading only — no live orders exist
Where the system stands — first real-data validation (2023 → 2026-07) NO_VALIDATED_EDGE
Setup candidates
3,737
Out-of-sample trades
785
Expectancy
−0.0002 R/trade
Win rate
50.1%
Profit factor
0.999
Null check
0/10 passed · clean

Read this as the system working, not failing. The current technical setups have no edge after costs on real data, and the gates correctly refuse to trade. The machine that can now measure any strategy honestly is built and verified end-to-end — finding a strategy worth promoting is the next campaign.

Step 0 — Decisions only you can make

These three are blocking. Everything in Phase A starts the moment they're answered — reply in chat with your choices.

  1. 1 · Rotate the pasted keysYou · ~5 min

    The Alpaca paper keys and the Resend key were pasted into chat in plaintext. Regenerate the Alpaca pair in the Alpaca dashboard and the Resend key at resend.com, then paste the new ones — I'll update .env and the Keychain. Nothing secret was ever committed to git.

    DONE WHEN — new keys verified with a live 200-status probe.

  2. 2 · Approve the pushYou · one word

    Say “push it” and I push feature/strategy-engine and open a PR to main. I haven't pushed because a push to main triggers your Railway deploy. Safe: the deployed site keeps demo mode; production behavior is identical until you set MODEL_ARTIFACT_PATH there.

    DONE WHEN — PR merged, Railway deploy green, /health returns ok.

  3. 3 · Pick an earnings-calendar sourceYou · or delegate

    Alpaca doesn't provide earnings dates, and the earnings-blackout gate currently runs blind. Options: Finnhub (free tier, simplest), Financial Modeling Prep, or Polygon. Say “you pick” and I'll go with Finnhub's free tier.

    DONE WHEN — earnings dates flow into the labeling engine and the blackout gate uses real data.

Phase A — Hunt for a real edge

My work, iterative, starts after Step 0. Each experiment is judged by the same locked gates plus the null check — most will fail, and failures are discarded, never tuned until they pass. The exit bar for every idea: expectancy lower bound > 0 under 2× modeled costs, clean null, all locked gates green.

  1. A1 · Cross-sectional rankingClaude runs

    Replace the absolute probability threshold with daily top-k ranking across the universe — take the strongest few names each session instead of asking each name to clear a fixed bar. This is the highest-probability structural improvement.

  2. A2 · Event-driven featuresClaude runs

    Gap statistics, overnight-vs-intraday return decomposition, and — once Step 0.3 lands — post-earnings drift. Event conditioning is where short-horizon retail edges are historically most plausible.

  3. A3 · Widen the universeClaude runs

    Grow from 20 mega-caps to ~150 liquid names so the 300-trade and concentration gates become reachable and cross-sectional ranking has something to rank.

    DONE WHEN — a research summary reports PROMOTABLE, or the idea list is exhausted and I report that honestly.

Phase B — Intraday depth

Parallel track, not blocking Phase A.

  1. B1 · 5-minute labelingGated · after A1

    Extend the labeling engine to intraday bars so VWAP and EMA-based exit plans (P11–P13) can be researched with real fills instead of daily approximations.

Phase C — Promotion to the live dashboard

  1. C1 · Serve the validated modelGated · needs a PROMOTABLE artifact

    Set MODEL_ARTIFACT_PATH and DEMO_MODE=false on Railway. The dashboard and MCP tools then issue real gated decisions — LONG only when every gate, the regime filter, and the spread check all pass; NO_TRADE otherwise, with reasons listed.

    DONE WHEN — status page shows “Model artifact configured: Yes” in production.

Phase D — 20-day forward paper portfolio

  1. D1 · Execute the approved planGated · after C1

    The US$30,000 simulated forward portfolio you already specced: 20 NYSE sessions, locked universe, P03 official exits, hash-chained event journal, pre-entry email alerts, auditable dashboard. Runs on its own branch per the plan. Forward-testing starts only when there's a validated model to test.

How to follow along

cd ~/Library/Mobile\ Documents/com~apple~CloudDocs/Trading PYTHONPATH=src python3 -m pytest -q # full test suite (137 tests) set -a; source .env; set +a ALPACA_FEED=sip PYTHONPATH=src python3 -m short_term_trader.cli research \ --start 2023-01-01 --end 2026-07-14 # rerun validation yourself