ThetaCow · field guide
ThetaCow
Name the price you want to buy or sell at, and the date you want it done by. ThetaCow works your order into the market until then — by delta-hedging an option struck at your price, with no oracle anywhere in the contract. Because that price and date are fixed once you start, the position is short that option, and its premium is what the commitment earns you.
What ThetaCow is
ThetaCow takes one instruction: the price you want to buy or sell at, and the date you want it done by. It then works your order into the market until that date, filling a slice at a time as price comes toward you, instead of resting a single all-or-nothing limit order.
You name a strike. You deposit the asset you're giving up — quote if you're buying, base if you're selling. The inventory curve targets base below your strike and quote above it, while the grid works toward that mix and captures spread along the way. Expiry is not an oracle settlement: your actual inventory is whatever the posted CoW orders succeeded in filling.
Mechanically, the pair uses the Black-Scholes delta curve as its inventory target and posts trades that move toward it, with no oracle anywhere in the contract. The two-sided grid described below is the execution machinery. It is the means, not the end — if you only remember one thing, remember that the strike is the product and the grid is how it gets worked.
Each position is user-owned and deployed through ThetaCowFactory. There is no fee at creation: a 100 bps APR tariff accrues from the moment the position is created and is charged once, out of each leg, when you close. Each side contract holds its own custody and is registered with CoW Protocol's vault relayer so solvers can settle directly into it.
ThetaCow is not a user-share vault. It does not pool funds. There is no oracle in the pair contract. There is no fixed payoff. There is no premium paid upfront in the way an option buyer pays one.
Your strike is the instruction
The pair's target inventory at any price is bsBaseDelta = 1 − N(d1) against your strike. That function falls as price rises and rises as price falls, and at expiry its mathematical target collapses to a step at the strike: below it, 100% base; above it, 100% quote. The final hour (sweep mode) locks the center to the strike and drops the grid spread to zero, posting orders that attempt to move inventory toward that step.
So the intended endpoint is the one you asked for when you named the price:
- Buying at K. You deposit quote. As price falls toward and through K, the hedge accumulates base. The curve targets base below K and quote above K. When the orders post and fill as intended, this resembles a dynamically replicated cash-secured put.
- Selling at K. You deposit base. As price rises toward and through K, the hedge distributes into quote. The curve targets quote above K and base below K. When the orders post and fill as intended, this resembles a dynamically replicated covered call.
Because the target curve follows a short option's delta, that option's theoretical premium is a useful return benchmark — which is what the app shows before you commit. It is an estimate and not a quote: the realized number depends on the path taken and on how well the orders actually filled.
The rails (minPrice, maxPrice) bound where the grid is allowed to quote at all, and must bracket both your strike and the current price. IV sets how fast inventory rotates as price approaches the strike. Neither changes what you asked for; they shape how aggressively it gets worked.
The grid in pictures
This is the hedging machinery underneath the strike. The grid has three moving parts: an implied center, a bid one step below it, and an ask one step above it.
The implied center is inferred from inventory. The pair holds some amount of base on the ask side and some amount of quote on the bid side. The Black-Scholes delta model says: at a given price, the strategy should hold a certain base fraction. Invert that. Given the actual base fraction the pair holds right now, what price would the model say is the current one? That number is the implied center. As the ask side keeps selling base, the base fraction falls, and the implied center rises. As the bid side keeps buying base, the base fraction rises, and the implied center falls. The curve itself is the price sensor.
Every poll bucket (currently 60 seconds, with the model epoch fixed at one hour), the pair generates two CoW orders. The ask sits at (1 + gridBps) · center and is willing to sell base. The bid sits at (1 − gridBps) · center and is willing to buy base. With the live gridBps = 20, that is a 40 bps spread around the implied center. Each order's size is computed from where the inventory would need to be at that adjacent price on the delta curve, so the grid sells when full and buys when empty.
Two other modes overlay the steady state.
Sweep mode is the final hour. The center locks to strike. Both the bid and the ask quote at strike. Min-notional drops to one tenth of normal so smaller residuals can still be published. A sweep is still an order: it changes inventory only if a watchtower posts it and a solver fills it.
Bootstrap mode is a ten-minute warmup used when the pair is funded single-sided. A base-only deposit starts the implied center near the high rail and walks it down; a quote-only deposit starts it near the low rail and walks it up. The walk is linear over the ten-minute window. The factory refuses to start orders unless the first order on the funded side is tradeable at deploy; once running, bootstrap mode stays active until bootstrapEndsAt (or sweep mode overrides it). Bootstrap orders share a single validTo two minutes past the end of the warmup so old hashes settle at the same boundary.
Why the P&L works — path dependence
The grid does not earn a fixed premium. It earns what the price path lets it earn, and the path matters more than the endpoints.
Every fill is path-dependent. A round trip — sell base high on the ask, buy base back lower on the bid — captures roughly 2 · gridBps of spread on the base that round-tripped. The grid does not know the difference between a path that delivered ten such round trips and a path that delivered one large unwind. The first generates spread P&L every cycle; the second leaves the grid with tilted inventory and a paper drift versus strike.
Some price paths earn and some lose. Mean-reverting paths capture the most spread because the same inventory cycles back and forth. Trending paths capture the least and may pay drift in the value of the inventory that gets left behind on the wrong side. Two-sided motion is what the grid is built for.
The target curve is a Black-Scholes delta hedge, but the execution is discrete and conditional: inventory moves only when CoW orders are posted and filled. That makes the realized payoff path-dependent rather than a closed-form option payoff. The theoretical short-option premium is a useful benchmark for the configured curve, not a guaranteed return.
The final P&L decomposes into two pieces. The first is grid spread captured: non-negative on inventory that completed a two-sided round trip. The second is inventory-versus-strike drift at expiry: positive or negative depending on the path and fills. Sweep mode attempts to reduce that drift by quoting the residual at strike, but an unposted, unfilled, or suppressed order moves nothing and cannot undo unfavorable movement already realized.
A useful contrast is selling an option outright. A short-call writer collects a fixed premium upfront and pays a defined payoff at expiry. ThetaCow collects no premium upfront and has no oracle settlement. The app's premium number prices the matching theoretical option; the strategy tries to harvest that economics through its delta-shaped inventory trades, and the realized result can differ substantially.
The right benchmark is realized vol versus implied. The grid is configured with an IV input (the same IV that shapes the underlying Black-Scholes curve — the ivBps parameter on the pair). The curve at IV=44% targets a delta profile that would price the corresponding option at roughly 44% IV. If realized vol delivered through the grid as 30%, the grid implicitly under-priced the path it actually saw versus what the equivalent option premium would have charged. If realized was higher than implied and the path was reasonably two-sided, the grid over-earns relative to the matching option.
One more analogy makes the cadence clear. A perpetual futures contract funds continuously based on the spread between spot and mark. A dated future earns or pays its term premium in one shot at settlement. ThetaCow is more perp-like in cadence: it accretes continuously through grid spread capture as fills land. Unlike a perp, it has a defined expiry and a final-hour inventory target at strike. The funding-equivalent here is the grid spread itself, paid in execution rather than as an explicit basis.
When the grid loses
Three failure modes are worth being honest about.
Strong directional move past a rail. The pair has minPrice and maxPrice rails configured at deploy. If price runs past either rail, the inventory pins to one extreme (all-base at the low rail, all-quote at the high rail), the implied-price inversion saturates, and the grid stops producing tradeable orders on one side. The user is left holding the side asset at a price that has moved against the configured rails. There is no reconfiguration or partial withdrawal: the owner exits through the retryable closePosition() path.
One-way trend within the rails. Fills happen but only in one direction. The grid sells the whole week as price falls, or buys the whole week as price rises. No round-trip means no spread capture. Inventory value has drifted versus strike, and the remaining P&L depends on whatever the final-hour sweep orders actually fill. This is a typical "high drift, low oscillation" path — the option short would have been paid, the grid sees almost no two-sided turnover.
Low realized vol. Few fills, low capture. The position still owes the 100 bps APR tariff for the time it was open, and gets back a small fraction of the implied option premium because there was almost nothing to capture. This is the analogue of selling vol in a dead market: the position is "right" directionally but earns less than its costs.
Comparison with the rest of the Thetanuts stack
There are three different ways to extract value from optionality on-chain in the Thetanuts stack, each suited to a different asset and liquidity context.
| Dimension | thetanuts_rfq | thetauni | thetacow |
|---|---|---|---|
| Primary liquidity venue | RFQ + on-chain orderbook | Uniswap V3 pool | CoW Protocol solver network |
| Pricing source | Explicit maker quotes; Chainlink TWAP for cash settlement | Pool slot0 + TWAP guard | Inventory-derived implied price |
| User-visible payoff | Defined option payoff at expiry | Vault share NAV; target-asset accumulation | Inventory state at expiry, path-dependent |
| Capital efficiency | 100% collateralized, no margin | Active V3 LP, narrow ranges around spot | One-shot pair, no compounding |
| Oracle dependency | Required (Chainlink TWAP for cash-settled) | Required (TWAP guard against manipulation) | None on-chain |
| Suitable asset class | Assets with deep RFQ maker interest | Assets with deep Uniswap V3 pools | Long-tail, no-pool, or oracle-free targets |
| Settlement type | Cash (TWAP) or physical (1-hour exercise window) | Continuous mark-to-market across epochs | Inventory at expiry after completed fills; no oracle settlement |
thetanuts_rfq — traditional options, RFQ + on-chain orderbook
Discrete strikes, discrete expiries, explicit premium paid upfront, and an actual option contract created on settlement. Counterparties post collateral. The protocol is 100% collateralized as a deliberate trade-off: capital inefficient versus a margin system, but no liquidations, no margin calls, no oracle-manipulation cascade. Two trading mechanisms exist side by side. RFQ uses a commit-reveal auction over makers, with privacy for size and MEV resistance. OrderBook posts signed limit orders on chain for immediate execution and retail use. Settlement is one of two paths: cash-settled options settle against a Chainlink TWAP at expiry; physically-settled options open a one-hour exercise window during which counterparties can deliver, after which anyone can call the post-expiry settlement. Reach for it when you want a defined payoff on an asset where there is a deep maker market and you are happy paying or receiving a real premium.
thetauni — Uniswap V3 wheel-strategy vault
Liquidity lives inside a Uniswap V3 pool. The vault deploys narrow ranges around the current price and rebalances them on a wheel cadence whose tenor depends on strike: near-spot strikes use the Friday weekly bucket aligned to Deribit; deeper-OTM strikes use longer expiry buckets. Below the strike the LP slowly converts toward more base as price drops; above the strike it converts toward more quote as price rises. P&L is measured as monotonic accumulation of the target asset in mark-to-market terms, anchored against Black-Scholes fair value. The vault depends on the underlying pool having real organic volume — LP fees are the bulk of the income, on top of short-gamma conversion. Reach for it when an asset already has good on-chain liquidity (ETH and other majors on a chain with a functioning Uniswap V3 deployment) and you want a vault-share product that improves the pool's liquidity profile while earning fees and wheel rotations.
thetacow — oracle-free CoW grid
No pool. No oracle. The external dependency is the CoW orderbook, watchtowers and solver network publishing and clearing the conditional orders the pair generates each poll. Inventory is the price sensor; the grid is a one-shot pair with a defined expiry that quotes at strike in the final hour and then stops producing valid orders. Reach for it when an oracle dependency is unacceptable and you accept that expiry inventory remains execution-dependent.
When to reach for which
- "I want defined payoff and I'm willing to pay or receive a premium": RFQ.
- "The asset has a good Uniswap V3 pool and I want a vault-share product": thetauni.
- "I need an oracle-free, defined-expiry inventory target and accept CoW execution risk": thetacow.
Where ThetaCow is today
The September 2026 contracts are deployed on Ethereum, Base, Arbitrum One, BNB Chain, Polygon and Avalanche. Beta deposits are open. You can view and manage September and August positions in this app. Older positions use the legacy recovery runbook.
Positions keep their original contracts after a new deployment. Closing attempts to return both balances and remove both approvals. A closed position can still need recovery: check its balances and approvals, and retry close if needed.
The September release uses fixed order steps based on actual funding. Normal and bootstrap orders must fill in full. Final-hour orders allow partial fills and can sign an amount above the available balance. The amount that can trade also depends on previous fills of the same order. A preview does not prove that an order was posted or filled.
Token reviews are advisory. Unreviewed tokens and reported risks show a warning. Changing token balances can affect order fills. Solver and settlement checks continue while a position runs.
You can prepare a deposit in either asset or both. The app checks the current token units, calculation limits and predicted order availability before creation. After confirmation it checks the position's balances and fixed order steps. You can inspect combined order and fill history, remaining order capacity, and the available funding record.
Wallet discovery, order posting and settlement monitoring are available. The worker continues its checks when the page closes. Historical backfill can take longer where public RPC providers limit older reads.
Where to deploy — chain-by-chain strengths
ThetaCow's edge is strongest where (a) the asset has real volatility, (b) on-chain price feeds are absent or thin, and (c) there is no deep pool to LP into. CoW Protocol is live on the six chains we ship from day one. Each chain's curated token list helps identify wallet holdings. It does not establish token admission or guarantee solver execution.
The permissionless contracts accept token addresses. Custom tokens enter a review queue. You can place a position while the review is pending. The six chains map to six distinct asset niches.
| Chain | ThetaCow tagline | Dominant niche | Notable tokens for grids |
|---|---|---|---|
| Ethereum | Deepest solver liquidity | Majors and blue-chip stables, where CoW's solver competition is strongest | WETH, WBTC, USDC, USDT, DAI |
| Base | CB rails + EUR/USD forex | Coinbase-issued assets, EUR-pegged stablecoins, yield-bearing stables | cbBTC, cbETH, EURC, yoETH, yoBTC, USDz, DOLA |
| Arbitrum One | Yield-stable spreads | Stable-carry tokens, restaking primitives, GMX-ecosystem | USDe, crvUSD, FRAX, USDM, tETH, ARB (universe), GMX (universe) |
| BNB Chain | Gold-pegged + BNB LSTs + RWA | Tether Gold, BNB liquid-staking variants, emerging RWA tokens | XAUT, PAXG, BTCB, WBNB, slisBNB, asBNB, ankrBNB |
| Avalanche | AVAX LST basket + BTC.b | AVAX liquid-staking ecosystem (BENQI, GoGoPool, Yield Yak) + native bridged BTC | sAVAX, BTC.b, ggAVAX, yyAVAX, ankrAVAX, tAVAX |
| Polygon PoS | POL beta + tokenized-treasury basis | Largest deployment count of tokenized RWAs (Ondo, Backed, Centrifuge, Franklin) | POL/WPOL, USDY, USDL, BENJI, OUSG, aPolWETH |
Ethereum — deepest solver liquidity
Mainnet is where CoW's solver competition is fiercest and the majors quote tightest, which matters more here than anywhere else: a grid that works a strike over weeks lives or dies on fill quality, and mainnet gives the best of it. The trade-off is gas — each poll bucket's order churn is free (orders are signed, not posted on chain), but creation and the terminal close are mainnet-priced. That pushes mainnet toward larger notionals and longer tenors, where the fixed cost amortizes, and pushes small or short positions to an L2.
Base — CB rails + EUR/USD forex
Base has the richest curated list outside Ethereum mainnet, and Coinbase's own asset bench (cbBTC, cbETH, EURC) lives natively here. ThetaCow's best fit on Base is EUR/USD forex grids (EURC/USDC and EURC/cbBTC) and BTC/ETH yield-stable pairs (cbBTC/USDz, yoETH/WETH) — niches where Aerodrome's concentrated pools don't go and where Chainlink feeds for the yield-bearing legs are thin or non-existent. The 2026-05 pilot run was on Base WETH/USDC; ship Base first.
Arbitrum One — yield-stable spreads
Arbitrum's curated list is heavier on stables than on majors. USDe, crvUSD, FRAX, USDM all live here with real basis. The ThetaCow fit is yield-stable spread grids — USDe/USDC, crvUSD/USDC, USDM/USDC — where the peg drifts on a real basis and pools are fragmented across Curve, Camelot, Uniswap, and Aave. Note that Arbitrum is the chain best served by existing options venues (Premia, Lyra historically), so ThetaCow's edge is narrower here and most useful for the non-listed legs.
BNB Chain — gold-pegged + BNB LSTs + RWA frontier
BNB's curated list is bare today (only majors: BTCB, WBNB, USDT, USDC) because CoW launched here in late 2025. The real edge is in tokens that are not curated yet but live on the chain: Tether Gold (XAUT) and PAXG for gold-pegged grids, and BNB liquid-staking tokens (slisBNB, asBNB, ankrBNB) for native-yield grids. These pairs have almost no on-chain pool depth and no clean oracle feed — exactly the gap ThetaCow's oracle-free design exploits. One footgun: on BNB Chain, USDT, USDC and BTCB are all 18-decimal, not the usual 6 / 8. Anyone building tooling against BSC needs to special-case this.
Avalanche — AVAX LST basket + BTC.b
Avalanche's curated list is the thinnest (5 tokens) but the inclusion of tAVAX is the tell: AVAX's defining asset class is its LST ecosystem (sAVAX from BENQI, ggAVAX from GoGoPool, yyAVAX from Yield Yak, ankrAVAX). These plus BTC.b are textbook ThetaCow targets — no deep pool, no clean oracle, real volatility on AVAX-denominated cross-LST trades like sAVAX/WAVAX and ggAVAX/sAVAX. Best-in-class niche for the oracle-free pitch.
Polygon PoS — POL beta + tokenized-treasury basis
Polygon's curated list understates its real edge. By deployment count Polygon is the #1 chain for tokenized RWAs — Ondo's USDY and OUSG, Lift Dollar's USDL, Backed bTokens, Franklin Templeton's BENJI all live here. The ThetaCow fit is RWA-stablecoin basis trades (USDY/USDC, USDL/USDC) where the peg drifts on rate moves and no on-chain price oracle exists. POL/USDC adds a directional grid on a token still finding its post-migration footing.
Ranking for ship order
- Base — best curated breadth, EURC forex and cbBTC/yoBTC pairs, validated pilot path. Already running.
- Avalanche — AVAX-LST basket is a textbook oracle-free use case.
- BNB Chain — XAUT gold grids and BNB LSTs are differentiated; needs a custom token whitelist since the curated UI list is bare.
- Polygon — RWA basis trades have real edge for the right counterparty (treasuries, basis funds); POL/USDC alone is a thin justification.
- Arbitrum — well-served by existing options venues; ThetaCow's edge is narrower, mostly yield-stable spreads.
Glossary
- Implied price
- The price the grid quotes around, inferred by inverting the Black-Scholes delta curve against current inventory. Not read from any oracle.
- Grid bps
- The half-width of the spread, in basis points, around the implied center. With
gridBps = 20, ask sits 20 bps above center and bid 20 bps below. - Sweep mode / final hour
- The last hour before expiry. The center locks to strike, both sides quote at strike, and the min-notional threshold drops to one tenth so small residuals get cleared.
- Bootstrap sweep
- A ten-minute warmup used after a single-sided deposit. The implied center walks linearly from one rail toward the other; the factory refuses to start orders unless the first order on the funded side is already tradeable at deploy.
- Capture ratio vs Deribit
- The grid's net P&L expressed as a fraction of the premium of an equivalent Deribit-listed option (same strike, same expiry, same notional). The headline benchmark for whether a path-dependent grid earned what an option short would have earned.
- Conditional order (CoW Protocol)
- An order whose validity is signed by a smart contract rather than an EOA, with
validToand parameters that can change between buckets. CoW solvers fetch the current order and validate it via ERC-1271 against the owning contract. - Vault relayer
- The CoW Protocol contract that pulls funds from an order owner at settlement. The pair's ask and bid sides each grant the relayer an allowance so solvers can settle without ever holding the funds themselves.
- Solver
- A third party in the CoW network that finds a settlement combining many orders, submits it as a candidate batch, and is paid out of the surplus when it wins.