Development of Options Vault System (DOV — DeFi Options Vault)
Ribbon Finance launched the first popular DOV in 2021: a user deposits ETH, the vault automatically sells covered calls (covered calls) on a weekly basis, the premium goes to depositors. At its peak, Ribbon TVL exceeded $300M. The mechanics are simple, the yield is real — option premium doesn't depend on market direction, only on volatility. But under the hood — serious engineering challenge: the vault must coordinate strike selection, interact with the options protocol, manage expiration dates and handle edge cases on ITM expiration.
How DOV Works Internally
Round Lifecycle
Each round is a week (or another period). Simplified:
- Deposits — users deposit ETH/WBTC/USDC into vault. Deposits are accepted only between rounds.
- Strike selection — vault calculates strike price for options. Usually OTM (out-of-the-money) 10-20% above spot for covered calls.
- Mint and sell options — vault mints opToken through options protocol (Opyn, Lyra, Dopex) and sells at auction (Paradigm, Gnosis Auction) or via AMM.
- Expiration — if option expires OTM, vault gets full premium. If ITM — part of collateral goes to option buyer (settled in collateral).
- Reinvest — remaining collateral + premium = base for next round.
Key depositor risks: with strong asset appreciation, covered call "cuts" upside — vault gives up part of collateral. This is an honest trade-off: stable returns in sideways markets vs. limited upside participation.
Strike Selection: Where Nuances Begin
Naive strike selection — fixed percentage from spot (spot * 1.10 for 10% OTM). Problem: the market has no memory of previous strikes, and at high IV (implied volatility) a 10% OTM option can be near-the-money by risk.
Advanced approach — delta-based strike selection: choose strike with delta ~0.1-0.2 (10-20% probability of ITM expiration by Black-Scholes model). To calculate, we need IV — take from on-chain sources (Lyra market IV, Volmex IV index) or Chainlink. Implement approximate delta calculation on-chain via Taylor expansion — precise BS calculation in Solidity is gas-inefficient.
Options Protocols: Backend Selection
| Protocol | Chain | Settlement Type | Features |
|---|---|---|---|
| Opyn (GammaProtocol) | Ethereum | Physical / Cash | Most mature, broad audit |
| Lyra | Optimism, Arbitrum | Cash | AMM for options, on-chain IV |
| Dopex | Arbitrum | Cash | Single staking pools, SSOV |
| Premia | Ethereum, Arbitrum | Physical | Orderbook + AMM hybrid |
Ribbon works on top of Opyn. For a new DOV, backend choice depends on: target chain, settlement type (physical delivery is more complex for vault logic), options liquidity depth.
Selling Options: Auction vs AMM
Vault mints batch of options and must sell at maximum price. Two options:
Gnosis Auction — Dutch or batch auction. Vault creates auction, buyers submit bids, after N hours clearing at single price. Transparent and fair, but requires waiting for auction completion — capital deployment delays.
Paradigm OTC — institutional market makers quote off-chain, vault accepts best offer. Faster, better pricing for large volumes, but requires trust in market makers (whitelist in contract).
Premia AMM / Lyra AMM — sell directly into AMM pool. Instant, but price impact on large volumes.
Implement IAuctionMechanism abstraction — vault doesn't depend on specific sale mechanism, can switch via governance.
Vault Contract Architecture
Base structure — ERC-4626 (Tokenized Vault Standard). Depositors get shares (ERC-20 tokens) representing vault stake. ERC-4626 standardizes deposit(), withdraw(), mint(), redeem() — out-of-the-box integration with aggregators (Yearn, Beefy).
On top of ERC-4626 add:
-
RoundManager— phase management (deposit, strike selection, auction, settlement) -
StrikeSelector— on-chain or off-chain (with keeper signature) strike calculation -
AuctionAdapter— abstraction over on-chain auction -
SettlementHandler— expiration processing, round P&L calculation
Time constraints via block.timestamp with minimum intervals (minimum 6 days to expiration, minimum 1 hour for auction). vm.warp in Foundry tests for full round lifecycle simulation.
Handling ITM Expiration
Most non-trivial case: option expires ITM, vault must give up part of collateral. In physical settlement vault gets strike token (USDC) instead of part of ETH. Next round starts with mixed collateral — either convert USDC back to ETH via Uniswap (slippage, MEV), or maintain mixed-collateral vault.
Ribbon solved this via USDC-denominated vault for covered puts — collateral is already USDC, ITM expiration doesn't change composition. For covered calls on volatile assets, mixed collateral remains a problem — solve via conversion with TWAP protection.
Timeline Reference
Basic DOV with one strategy (covered call) on Opyn — 2-3 weeks. With delta-based strike selection, multiple strategies (covered call + cash-secured put), and multi-asset support — 4-6 weeks. Custom options protocol backend instead of existing — separate scope, another 4-8 weeks. Audit before mainnet is mandatory — options vault manages locked user capital.







