Monsoon
Sell ETH insurance only when the storm pays for it
Created on 3rd September 2026
•
Monsoon
Sell ETH insurance only when the storm pays for it
The problem Monsoon solves
Retail has no disciplined way to earn options premium, and no simple way to buy protection
Selling cash-secured puts ("the wheel") is how ordinary people can act like an insurance company: get paid a premium now for promising to buy ETH at a lower price. Every existing DeFi option vault sells that insurance every week, at any price, in any market. We backtested exactly that on 5.4 years of real ETH data (Coinbase daily closes, Deribit DVOL implied vol, Black-Scholes with a 15% market-maker spread haircut): the naive wheel collected $159k of premium on a $100k account and still finished at $65k, with a 71% max drawdown. Premium is not income.
Monsoon is a two-sided market with an underwriter that knows when to say no.
Underwrite (sell insurance) only when three gates all pass:
- Price has pulled back - ETH is 10%+ below its 30-day high, so insurance demand is real
- Insurance is expensive - implied-vol rank over the trailing year is elevated
- Premium worth the risk - at a strike capped by the 200-day average, net premium clears a floor
Selling happens through Thetanuts' sealed-bid RFQ auctions, creating physically-settled options: assignment delivers real ETH at your strike, and the Position page then lets you run the wheel's second leg, a covered-call auction on that ETH with a cost-basis guard. When the gates are closed (most of the time), deposits earn Aave yield from the user's own wallet, exactly like an insurer's float. Same backtest, same costs: the gated wheel finished at $138k (6.2% APY, 31.5% max DD) vs buy-and-hold's $124k (79% DD), and was up 9% in 2022 while ETH fell 65%.
Protect (buy insurance): every OptionBook offer is instantly buyable protection - protective puts, defined-payout spreads, calls - each shown with cost, max loss (= the premium), payout mechanics and breakeven, executable in one wallet flow through the AI copilot.
What you can do with it
- See the truth: live Thetanuts quotes on Base mainnet, priced as insurance: cost, payout odds, worst case first
- Ask the copilot: natural-language guidance grounded in live tool calls on the Gonka decentralized AI network, with an independent second-model verification score and request IDs under every answer
- Execute non-custodially: your own wallet signs everything; fractional contracts mean $5 is enough
- Check the evidence: the full backtest lives in the app, assumptions and limitations included
The gate engine in the app is the same TypeScript code our backtest validates: a parity test proves the two never drift apart.
Challenges we ran into
1. We shipped the wrong market direction, and our own verification caught it
The SDK docs describe OptionBook takers as buyers, but orders carry an isBuyer flag that led us to believe maker-side bids existed that retail could SELL into. We built the whole "sell instantly" flow on that reading. The night before the deadline, cross-checking previewFillOrder math against live orders proved the truth: the taker always pays premium; every book fill is a buy, and the flag means something else entirely. We reclassified the entire shelf into buyable protection (P/PS/C) plus seller-side reference pricing (M), rewrote the copilot's semantics, and made the RFQ auction the honest, only path to underwriting. The lesson we would give any DeFi team: never trust a field name; trust the contract's arithmetic.
2. Decimal archaeology
OptionBook prices are 8-decimal, USDC amounts 6-decimal, strikes 8-decimal, RFQ amounts live in the collateral token's decimals (USDC puts 6dp, WETH calls 18dp - verified against real auctions #122/#123). Our first yield table showed a 3.6%-OTM put paying 9.5% per day. A cross-check against Black-Scholes caught it.
3. Making the backtest trustworthy
We wrote the backtest in Python (5.4 years of Coinbase + Deribit data), ported the gate engine to TypeScript for the app, and built a parity test that replays 48 historical cycle decisions through the TS engine and fails CI if a single decision or premium differs from the Python reference (max observed drift: 2e-6).
4. The honest-APY trap
Annualizing a 1-day spread produced a "19,511% APY" card. Technically correct, completely misleading. We now refuse to annualize anything under 7 days.
5. Gonka in production, and an AI that gets fact-checked
Kimi-K2.6 on Gonka kept hitting Cloudflare's 100s ceiling (HTTP 524); we benchmarked and switched to MiniMax-M2.7 (1-2s, working function calling), stripping its reasoning blocks server-side. Then we made every copilot answer pass an independent second Gonka inference that scores faithfulness to the tool data (0-100). It earns its keep: when the model once garbled digits ($24,200 strike instead of $2,420), the verifier caught all three errors, scored it 65/100, and the self-correction loop rewrote the answer before the user ever saw it.
6. Market makers re-sign orders every ~60 seconds
Our first execution flow matched orders by nonce and always found them stale by the time a human clicked Execute. Orders are now matched by economic identity (maker + type + strikes + expiry) against a fresh scan.
Tracks Applied (3)
BEST PRODUCT BUILT ON THE THETANUTS SDK
Thetanuts Finance
AI × OPTIONS
Thetanuts Finance
AI For Society
Gonka Router
