Alpaca AI Trading Agents Hackathon
Contour — the measurement picks the structure
vrp_ratio < 1.30→NO_TRADE implied is not rich enough to sell
skew_z ≥ +0.8→PUT_CREDIT_SPREAD puts rich — sell puts, not cheap calls
skew_z ≤ −0.8→CALL_CREDIT_SPREAD calls rich — sell calls, not cheap puts
otherwise→IRON_CONDOR both sides fair — sell both
AI logic — the leash
Every wired model output can only make the
agent trade less. Not a promise — a property of the import graph.
The model may
- Name event windows to stand down in
- Veto a proposed structure
- Stand the whole book down
The model may never
- Choose a strike
- Size or price a position
- Reverse or widen anything
Alpaca infrastructure
- Orders go through the CLI, and that is a finding. The MCP server
cannot place multi-leg orders — the
legs array arrives as a JSON string
and fails validation. alpaca-mcp-server#97, open since
July. The CLI places the identical 4-leg order correctly; our fix is upstream
as #118.
- Reads are
alpaca-py: chain snapshots carry Greeks but no
open_interest, so they are merged with Trading API contract objects.
- Entries are a three-rung limit ladder from mid toward the bid, never a
market order.
reconcile() reads actual per-leg fills: paper issues
random partials, and trusting the request puts legs out of ratio.
- The journal is an append-only SHA-256 hash chain. The dashboard
recomputes it in your browser and prints the same verdict the CLI does.
- Autonomy is GitHub Actions: pre-open planning, a cycle every 15 minutes, a
scheduled Thursday flatten. No
pull_request trigger on the
credentialed workflow.
- No resting stop exists on a multi-leg position — so the options book
polls. A single equity leg can rest one, and the directional sleeve
parks its stop GTC at the broker: the only exit that works overnight.
Market analysis
The volatility premium is real, and it is
not uniform. That dispersion is the entire opportunity.
- Short premium is the crowded retail options trade — and the crowd sells
one structure regardless of the surface.
- Friction decides the universe, not opinion. Single-name weeklies cost
$40–80 round trip against a $30–42
modelled edge — it loses to costs before it starts. Three ETFs cost
$8–20.
- Alpaca serves no earnings-date endpoint on any plan, so a single-name
design hangs its most important gate on data that does not exist.
Competitive analysis
| Submission | Its own description |
| Horizon Blackline | LLM proposes, deterministic risk gates authorize, hash-chained and auditable |
| VRP Engine | Harvests the variance risk premium with defined-risk spreads and risk gates |
| AEGIS-Q | Bounded AI selects a pre-validated bullish or bearish spread — or abstains |
| EdgeStack | Journals every trade and every refusal |
| Contour | Chooses which of four structures to sell, from measured 25-delta skew. And is runnable without our credentials. |
Performance, attributed
The criterion asks for the P&L of the submitted
agent. This account holds two traders, and the broker records which is which.
2026-09-04 07:40 UTC
| Placed by | P&L | of start NAV |
| The agent — every id it chose | +$147.55 | +0.15% |
| The operator — three discretionary tail trades | −$642.00 | −0.64% |
| Account total | −$494.45 | −0.49% |
Not our bookkeeping — a field the broker stamps.
Entries are prefixed contour- by loop.py; exits are
named after the entry they close. Nothing else in the account is. A symbol touched
by both is charged to the operator — the published number is the pessimistic
one.
Revenue model
The audit layer is the product
The gate engine and the hash-chained decision record, licensed to brokers and
RIAs who have to defend an automated decision after the fact. That is the
durable asset here — not the alpha, which decays.
Own capital
P&L is the revenue and no registration question arises. The honest ceiling
on defined-risk premium selling is the credit, so this scales with capital,
not with claims — and where we stepped outside that ceiling, the
write-up names the trade and its negative expectancy.
Not signal subscriptions. Selling trade
recommendations is investment advice and needs registration — saying so out loud
is a credibility position, not a limitation.
Roadmap
Shipped
- 3 ETFs, one locked expiry, 15-minute cycle
- A $30k long-QQQ sleeve beside the options book — variance, not
edge — funded out of the same −4% floor, not beside it
- A $4.4k long-call tail, added and closed 2026-09-01 —
the one negative-EV trade here, labelled as such. Sold for $3,113,
realising −$1,320: the entire drawdown. A 387-cycle backtest
found no edge worth paying ~15% over fair value to lever
- A $1.1k TQQQ call tail, placed on instruction after the
evidence against it was recorded — a gap-down bounce tests as noise
(t = +0.42). It breaks no gate, but used the last room in front of the
floor: the entry ramp is closed to zero for the rest of the
contest
- Twelve gates plus seven, 298 tests, chain verified in CI
- Record / replay: a fixture reruns the pipeline with no credentials
- Sizing from three published trend systems, after an audit caught
the model anchoring at 0.5 for sixteen straight cycles
Next
- Trend-aware structure selection. The map breaks ties toward
the condor — which sells calls into a confirmed uptrend. Three trend
systems say that is the wrong default; skew alone should not decide
- Expiry laddering and rolls
- Skew priors learned per underlying instead of hard-coded
- More backtest history. The harness is built and has run —
387 cycles against real historical option prices, importing the
agent's own selection and gate code. Alpaca's history starts
2024-01-18, so 2.5 years is the entire available sample
- Portfolio vega and gamma caps, not per-position max loss alone
- Paid feed to close the indicative-vs-NBBO gap