vol‑desk
An autonomous options-trading agent that sells volatility risk on purpose — with judgment confined to two decisions, and a deterministic risk engine holding veto over every order.
Implied volatility tends to price richer than what actually happens.
vol-desk systematically harvests that spread — selling defined-risk premium (credit spreads, iron condors) on a fixed universe of liquid ETFs, with occasional debit spreads on high-conviction directional signals.
Every position has a computable max loss before it's ever placed. No naked or undefined-risk trades anywhere in the system.
Four agents, one pipeline. Judgment at exactly two points.
A single long-lived Python process, no cron, no web service. Position sizing, risk enforcement, and management triggers never touch an LLM — a risk check that can hallucinate isn't a risk check.
IV rank, realized vol, trend score. Gates the LLM call.
Labels 1 of 7 regimes from a mechanical rule.
Picks contracts; every number recomputed after.
8 checks. Vetoes, sizes down, or halts — never widens.
Price-ladder order, or abandoned. Sole path to a fill.
One label decides what's even allowed.
Three structures. All defined-risk, none of them guesses.
Short one leg, long another further out. Collects part of the width as premium; max loss is width minus credit received.
Two credit spreads at once — a short strangle wrapped in long wings on both sides. Profits if price stays inside the range.
A directional bet, still defined-risk: buy one leg, sell another to cap the cost. Only used once IV is too cheap to be worth selling.
Range + low IV unlocks nothing. Standing down is a normal, expected outcome — not a failure.
Six gates. Any one can stop the trade.
0.35 — a near-zero-cost pre-filter.30 min per symbol; only recomputed when the gate passes.7–14 DTE, within 15% of spot, targeting 0.16Δ short legs.90s. No fill → abandoned. Never widened, never chased.Risk holds veto authority over every order.
| Max risk per trade | 1% of equity |
| Soft drawdown halt — blocks new entries | −5% HWM |
| Hard drawdown halt — flattens everything | −10% HWM |
| Max concurrent positions | 6 |
| Max positions per underlying | 1 |
| Equity-beta cluster cap (SPY+QQQ+IWM) | 3 |
| Take-profit | 50% of credit |
| Stop-loss | 2× entry credit |
| Force-close | 2 DTE, any P/L |
A hard drawdown halt is terminal and manual to clear, by design — the point of a kill switch is that it stays pulled until a human looks at why.
The process holds no truth of its own.
It can be restarted safely at any moment — on boot, it reconciles against Alpaca before doing anything else.
stateless · restartable
The Tech Stack
If Groq is unreachable, the system degrades to hold-and-manage — existing positions keep being managed, no new entries open, nothing silently substitutes weaker judgment.
Thanks for watching.
vol-desk