Inspiration
Wheel-strategy options traders do the same homework every single morning: scan chains, compute annualized premium yield, check IV percentile, avoid earnings dates, rank candidates. It's mechanical, quantitative, and perfect for an agent. But the more interesting question was economic: if an agent produces research, who buys it? Our answer — other agents. We set out to build the smallest complete specimen of the agent economy: one agent autonomously produces a paid information product, and another agent autonomously buys it. For one cent.
What it does

Every weekday at 13:45 UTC, Theta Desk wakes itself up on Render and:
- Ingests — snapshots 10 US tickers, ~4,000 option contracts and price history into ClickHouse Cloud (via yfinance + a PyAirbyte pipeline).
- Screens — ranks cash-secured-put candidates through five factor gates, all computed inside ClickHouse SQL (window functions, not pandas): annualized premium yield, IV percentile vs 1-year history, liquidity floor, earnings-date avoidance, cross-sectional score. The core factor:
$$ \text{annualized yield} = \frac{\text{bid}}{\text{strike}} \times \frac{365}{\text{days to expiry}} $$
- Analyzes — Claude writes a cited risk brief for each top-5 pick, grounded against a 12-document Senso knowledge base.
- Publishes — the action sheet goes live on cited.md (a format designed to be cited by AI agents) behind a $0.01 x402 paywall.
Then the punchline: Wheeler, a consumer trading bot, requests the sheet —
gets HTTP 402 Payment Required — pays one cent in USDC over x402 — unlocks
the full brief — runs its risk checks — and queues a simulated cash-secured
put. No human touches anything.

Today's top pick came out of the live pipeline, not a fixture: SOFI 2026-06-26 16P — $0.47 bid, 76.6% annualized premium yield, IV in its 89th percentile, composite score 86.7. A human subscribes to a screener for $30–150/month; a bot buys this sheet for $0.01/day (~$0.21/month).
How we built it
DATA yfinance chains/prices ─► PyAirbyte ─► ClickHouse Cloud
BRAIN FastAPI: screener (SQL factors) → analyst (Claude, cited briefs)
→ publisher (Senso → cited.md) → paywall (x402, $0.01)
→ scheduler (self-triggering, weekdays 13:45 UTC)
FACE Next.js + OpenUI dashboard: live 4-stage pipeline animation,
action sheet, "Wake Wheeler" consumer-bot theater
— both services deployed on Render
The build itself was an exercise in multi-agent harness engineering:
built solo, but by three AI workstreams running in parallel — one Claude
agent owned the Python pipeline and the contracts, Codex built the dashboard
against mocks, a second Claude agent handled deploy and docs. They never
collided, because every cross-module payload is a JSON Schema in
contracts/ — the single source of truth both sides build against — with
territory rules made explicit in a handoff doc (PLAN.md).
Since this is the Context Engineering Challenge, the scaffolding is the product. How the agent is kept honest:
- Compute in SQL, narrate with the LLM. Claude never sees raw market data and is never asked to do math. ClickHouse computes every factor; the analyst hands Claude a pre-digested numeric snapshot under a system prompt that pins voice, structure, and hard prohibitions (no position sizing, no return promises, mandatory disclaimer). Smallest possible hallucination surface.
- Demo fuses at every layer. Claude API down → deterministic template brief. Senso publish fails → local draft. Backend cold → the dashboard silently switches to simulation mode. The pipeline cannot die on stage.
- Replay mode. One endpoint re-runs the full pipeline on a frozen real market snapshot — the uncontrollable outside world turned into a deterministic fixture for demos and testing.
- Cost fuses. The public endpoint is rate-limited (6 runs/hour, 20/day), Claude sits behind a daily budget that degrades to template briefs instead of failing, and fast-replay reuses the day's brief for zero tokens — strangers hammering the demo can't burn the agent's wallet.
- Grounded, citable output. Briefs carry schema-required citations and publish as agent-citable cited.md articles — this agent's output becomes other agents' context, with provenance attached.

Challenges we ran into
Free market data is hostile to autonomy — chains arrive with missing IVs and stale quotes, so every screening gate had to be defensive. Demo reliability shaped the architecture more than features did: replay mode, SIM-mode fallback, and the cost fuses all exist because an autonomous agent on a public URL has to survive cold starts, rate limits, and strangers. And coordinating three AI workstreams in parallel without merge collisions required treating JSON Schemas as law: contracts owned by one agent, everyone else builds inside them.
Accomplishments that we're proud of
The loop is real end-to-end: real market data (4,015 contracts, 2,510 price rows in ClickHouse), a real artifact live on cited.md, a real 402-then-pay flow, and a genuinely self-triggering daily schedule on Render. Seven sponsor tools each do load-bearing work — none is decorative. And the day's top pick (SOFI 16P, 76.6% annualized, 89th IV percentile) came out of the live pipeline, not a fixture file.
What we learned
Factor math belongs in the warehouse — ClickHouse window functions made "IV percentile vs 1-year history" a one-query problem. Grounded generation materially raises the bar for agent-written research: cited claims read like analysis, not vibes. And x402's "402 + retry with payment header" flow is shockingly little code — machine-priced content is closer than it looks.
What's next for Theta Desk — An AI Options Desk That Sells to Robots
Live x402 settlement on mainnet instead of simulated payment; a public subscription feed where any trading bot can buy the daily sheet; expanding the universe from 10 tickers to the full optionable S&P 500; covered calls and assignment tracking so the desk follows positions through the full wheel cycle — and pricing experiments to find what robot customers will actually pay.
Not financial advice. Educational demo on delayed/free data; trades are simulated, never executed.
Built With
- airbyte
- anthropic-claude
- clickhouse
- fastapi
- json-schema
- next.js
- openui
- python
- react
- render
- senso
- typescript
- usdc
- x402
- yfinance
Log in or sign up for Devpost to join the conversation.