Slippage Desk
The options agent that measures its own execution.
Why that matters. Every figure below is derived from the config and the 43 contracts actually filled:
The entire edge is 4.6 percentage points, worth $5.04 per contract before costs. Crossing the bid/ask cost $1.38 of that, which is 27% of the edge. So on this horizon, how well you get filled matters as much as what you pick and this agent captured 98.3% of theoretical credit, giving up $60 to execution across every fill.
Delta-implied OTM is what a 0.24 short delta implies, not a measured win rate. Twenty spreads cannot establish one, and this page does not claim otherwise.
What this measures
Read this before the numbers below, or they are just numbers.
A credit spread's edge is thin enough that the price you actually get decides whether the edge exists at all.
A fill only reads as good or bad beside the mid it was priced against. Without that comparison, execution cost never shows up as a line you can look at.
Scores every fill against the mid it was priced at, learns capture per (symbol, tenor, delta, time of day), and refuses buckets where it cannot get filled.
Live evidence
From the agent running on the paper account right now. Reload to refresh.
Why the agent declined
Rejections by gate. A candidate can trip more than one.
- sizing1175
- symbol_concentration896
- credit_to_width643
- model_opinion112
Execution quality
What fraction of the theoretical credit each bucket actually captures.
| Bucket | Fills | Capture |
|---|---|---|
| SPY:dte2:d0.25:midday | 2/8 | 99% |
| SPY:dte1:d0.25:midday | 3/6 | 99% |
| QQQ:dte2:d0.25:midday | 4/18 | 100% |
| QQQ:dte1:d0.25:midday | 4/7 | 100% |
| QQQ:dte2:d0.25:close | 1/4 | 100% |
| QQQ:dte1:d0.20:midday | 1/1 | 101% |
The brain
Every gate the agent ran, in order, and what it decided. Refusals included.
Waiting for the agent's first decision.
Alpaca surfaces
Three surfaces, deliberately separate jobs. The CLI executes and verifies the book. The SDK returns chains with greeks in one call. MCP supplies read-only research. Execution never routes through MCP: it is a stdio subprocess, and a hung subprocess must never sit between the agent and its stops.
| ok | account get | equity, buying power, options level | equity $100,958.12 | 135ms |
| ok | clock | is the market open | open=False | 71ms |
| ok | position list | what the broker says we hold | 2 leg(s) | 112ms |
| ok | order list | resting orders | 0 open | 131ms |
| ok | account activity list | the broker's own fill record, used to verify capture | 54 fills | 81ms |
| ok | account portfolio | equity curve for P&L | 35 points | 201ms |
| ok | calendar | real session close, so a half day does not defeat the flatten | 1 session(s) | 94ms |
| ok | data corporate-actions | ex-dividend dates, which drive early assignment | 0 action(s) | 98ms |
| ok | data latest-trade | live spot; the options feed lags the underlying | SPY 762.15 | 80ms |
| ok | TradingClient | atomic multi-leg order submission | account 1491780f... | 106ms |
| ok | OptionChainRequest | chain snapshots with greeks and IV, needed by the delta gate | 1182 contracts, 304 with greeks | 1384ms |
| ok | OptionHistoricalDataClient | options market data | OptionHistoricalDataClient | 0ms |
| ok | alpaca-mcp-server | read-only research handed to the advisor | 39 tools exposed | 3178ms |
| ok | ALPACA_TOOLSETS | trading toolset omitted, so no order tool exists to call | account,stock-data,options-data,assets,news | 0ms |
| ok | get_stock_snapshot | live context for one underlying | returned | 1821ms |
Decision journal
Most recent 25 of 2368.
| When | Spread | Credit | Delta | Max loss | Outcome |
|---|---|---|---|---|---|
| Sep 3, 06:12 PM | QQQ 723/728 call credit | 0.82 | 0.260 | $418 | model_opinion |
| Sep 3, 06:12 PM | IWM 293/285 put credit | 0.32 | 0.220 | $768 | credit_to_width |
| Sep 3, 06:12 PM | QQQ 714/709 put credit | 0.71 | 0.253 | $429 | symbol_concentration, sizing |
| Sep 3, 06:12 PM | QQQ 723/728 call credit | 0.82 | 0.260 | $418 | traded 1x |
| Sep 3, 06:12 PM | SPY 770/765 put credit | 0.52 | 0.229 | $448 | traded 2x |
| Sep 3, 06:12 PM | SPY 777/782 call credit | 0.66 | 0.262 | $434 | traded 2x |
| Sep 3, 06:11 PM | SPY 777/783 call credit | 0.71 | 0.267 | $529 | model_opinion |
| Sep 3, 06:11 PM | IWM 293/287 put credit | 0.36 | 0.237 | $564 | credit_to_width |
| Sep 3, 06:11 PM | IWM 297/303 call credit | 0.44 | 0.264 | $556 | credit_to_width |
| Sep 3, 06:11 PM | QQQ 714/709 put credit | 0.64 | 0.246 | $436 | symbol_concentration, sizing |
| Sep 3, 06:11 PM | QQQ 723/728 call credit | 0.79 | 0.263 | $421 | symbol_concentration, sizing |
| Sep 3, 06:11 PM | SPY 770/765 put credit | 0.54 | 0.230 | $446 | traded 2x |
| Sep 3, 06:11 PM | SPY 777/783 call credit | 0.71 | 0.267 | $529 | traded 1x |
| Sep 3, 06:10 PM | QQQ 723/728 call credit | 0.80 | 0.262 | $421 | model_opinion |
| Sep 3, 06:10 PM | IWM 293/284 put credit | 0.37 | 0.233 | $863 | credit_to_width |
| Sep 3, 06:10 PM | IWM 297.5/302.5 call credit | 0.33 | 0.218 | $467 | credit_to_width |
| Sep 3, 06:10 PM | QQQ 714/709 put credit | 0.68 | 0.252 | $432 | symbol_concentration, sizing |
| Sep 3, 06:10 PM | QQQ 723/728 call credit | 0.80 | 0.262 | $421 | traded 1x |
| Sep 3, 06:10 PM | SPY 770/765 put credit | 0.51 | 0.228 | $449 | traded 2x |
| Sep 3, 06:10 PM | SPY 777/782 call credit | 0.69 | 0.260 | $431 | traded 2x |
| Sep 3, 06:08 PM | QQQ 723/728 call credit | 0.80 | 0.259 | $420 | model_opinion |
| Sep 3, 06:08 PM | IWM 297/303 call credit | 0.42 | 0.261 | $558 | credit_to_width |
| Sep 3, 06:08 PM | IWM 293/288 put credit | 0.36 | 0.238 | $464 | credit_to_width |
| Sep 3, 06:08 PM | QQQ 714/709 put credit | 0.68 | 0.251 | $433 | symbol_concentration, sizing |
| Sep 3, 06:08 PM | QQQ 723/728 call credit | 0.80 | 0.259 | $420 | traded 1x |