OPTIONS VAULT API

Automate Options Vault Strategies

Connect AI agents to DeFi options vaults on Ribbon Finance, Friktion, Katana, and ThetaNuts. Earn 15–35% APY from theta decay with automated vault selection, strike optimization, and weekly settlement — all via a single MCP-compatible API.

20+
Vault Strategies
15–35%
Target APY
Weekly
Settlement
4
Vault Protocols

Theta Decay Is Free Money for Patient Agents

Options vaults sell options systematically, capturing premium income from time decay. AI agents are ideal vault depositors — they never panic-withdraw, never miss a roll, and can optimize strike selection in real time.

Covered Call Vaults

Deposit BTC or ETH, the vault sells out-of-the-money calls weekly. You keep the underlying plus premium income. Best in sideways-to-slightly-bullish markets. Typical APY: 15–25%.

Cash-Secured Put Vaults

Deposit USDC, the vault sells puts on BTC/ETH. You earn premium while potentially acquiring the asset at a discount. Best in neutral-to-slightly-bearish markets. Typical APY: 20–35%.

Strangle Vaults

Sell both calls and puts simultaneously. Maximum premium capture in low-volatility environments. The vault manages delta-neutral positioning and gamma risk automatically.

Sharpe-Optimized Selection

Purple Flea scores every active vault by risk-adjusted return (Sharpe ratio). Your agent queries GET /vaults and routes capital to the highest-Sharpe opportunity at each epoch.

Live Vault Performance

Compare active vaults across protocols. Data refreshes every epoch (weekly). All APY figures are trailing 90-day annualized returns.

Protocol Vault Strategy Asset Trailing APY Strike Selection Settlement Sharpe
Ribbon Finance T-BTC-C Covered Call BTC 24.3% 0.30 delta OTM Weekly Friday 1.82
Ribbon Finance T-ETH-P-USDC Put Selling ETH/USDC 31.7% 0.25 delta OTM Weekly Friday 2.14
Friktion SOL-CC-Volt Covered Call SOL 28.9% 0.20–0.35 dynamic Weekly 1.93
Katana ETH-Strangle Strangle ETH 19.4% 0.15 delta both legs Biweekly 1.61
ThetaNuts BTC-Put-Vault Put Selling BTC/USDC 33.1% 0.20 delta OTM Weekly Friday 2.27
ThetaNuts ETH-CC-Vault Covered Call ETH 21.8% 0.25 delta OTM Weekly Friday 1.74
Katana MATIC-CC-Vault Covered Call MATIC 17.2% 0.30 delta OTM Weekly 1.44

Options Vault API Endpoints

All endpoints are RESTful JSON. Authenticate with your API key header: X-API-Key: pf_live_...

GET
/vaults
List all active vaults with current APY, Sharpe ratio, TVL, epoch dates, and deposit capacity. Filter by strategy (covered-call, put-selling, strangle), asset, or protocol.
POST
/vaults/deposit
Deposit assets into a vault for the upcoming epoch. Specify vault_id, amount, and asset. Returns deposit receipt, expected epoch start/end, and projected premium income.
GET
/vaults/strikes
Get the strike prices selected for the current epoch across all vaults. Includes delta at selection time, expiry timestamp, and current P&L. Filter by vault_id or asset.
GET
/vaults/performance
Historical performance data: epoch-by-epoch premium earned, annualized return, max drawdown, Sharpe ratio. Available for trailing 30/90/180/365 days.
POST
/vaults/withdraw
Queue a withdrawal from a vault. Funds are returned after current epoch settlement. Returns estimated withdrawal time and any early-exit penalties.
GET
/vaults/positions
Get your agent's current vault positions: deposited amount, current value, unrealized P&L, next epoch rollover date, and accumulated premium.

How Agents Should Pick Strikes

Strike selection is the most important variable in vault performance. The Purple Flea API exposes the data your agent needs to make optimal strike decisions each epoch.

Delta-APY Tradeoff by Strike

0.10 delta
9–12% APY Deep OTM — rarely hit, low premium
0.20 delta
18–22% APY Sweet spot — good premium, low assignment risk
0.30 delta
26–33% APY Optimal — highest Sharpe for most vaults
0.40 delta
33–40% APY Aggressive — high premium, elevated assignment risk
0.50 delta
40%+ APY ATM — maximum premium, often assigned

Volatility-Adjusted Selection

When IV rank is above 50, use 0.30–0.35 delta strikes — premium is rich. When IV rank falls below 25, widen to 0.15–0.20 delta to maintain income without overexposing to assignment. The /vaults/strikes endpoint returns current IV rank alongside each strike.

Auto-Roll Logic

At epoch end, the vault automatically rolls. If a call was assigned (price above strike), the vault rolls back to at-money puts to rebuild the position. Your agent can override the default roll logic via the roll_mode parameter: conservative, neutral, or aggressive.

Highest-Sharpe Vault Depositor

This Python agent queries all active vaults, ranks by Sharpe ratio, and automatically deposits capital into the best-performing vault at each epoch reset.

options_vault_agent.py Python
import requests
import time
from datetime import datetime, timezone
from typing import Optional

# Purple Flea Options Vault Agent
# Deposits into highest-Sharpe vault automatically

BASE_URL = "https://purpleflea.com/api/v1"
API_KEY  = "pf_live_your_key_here"
HEADERS  = {"X-API-Key": API_KEY, "Content-Type": "application/json"}

class OptionsVaultAgent:
    def __init__(self, total_usdc: float, min_sharpe: float = 1.5):
        self.total_usdc  = total_usdc
        self.min_sharpe  = min_sharpe
        self.positions   = {}

    def get_vaults(self) -> list:
        """Fetch all active vaults sorted by Sharpe ratio."""
        r = requests.get(
            f"{BASE_URL}/vaults",
            headers=HEADERS,
            params={"status": "active", "sort": "sharpe_desc"}
        )
        r.raise_for_status()
        return r.json()["vaults"]

    def get_strikes(self, vault_id: str) -> dict:
        """Get current epoch strike data and IV rank."""
        r = requests.get(
            f"{BASE_URL}/vaults/strikes",
            headers=HEADERS,
            params={"vault_id": vault_id}
        )
        return r.json()

    def select_best_vault(self, vaults: list) -> Optional[dict]:
        """Pick the vault with highest Sharpe above our minimum threshold."""
        candidates = [
            v for v in vaults
            if v["sharpe_90d"] >= self.min_sharpe
            and v["deposit_capacity_usdc"] >= self.total_usdc
            and v["days_to_next_epoch"] >= 1
        ]
        if not candidates:
            return None
        return max(candidates, key=lambda v: v["sharpe_90d"])

    def deposit(self, vault_id: str, amount_usdc: float) -> dict:
        """Deposit USDC into the target vault."""
        r = requests.post(
            f"{BASE_URL}/vaults/deposit",
            headers=HEADERS,
            json={
                "vault_id":    vault_id,
                "amount_usdc": amount_usdc,
                "roll_mode":   "neutral"
            }
        )
        r.raise_for_status()
        return r.json()

    def check_iv_and_adjust(self, strike_data: dict) -> str:
        """Adjust roll mode based on current IV rank."""
        iv_rank = strike_data.get("iv_rank", 50)
        if iv_rank >= 60:
            return "aggressive"   # IV rich → sell more premium
        elif iv_rank <= 25:
            return "conservative" # IV crushed → protect capital
        return "neutral"

    def run_epoch(self):
        """Execute one vault selection and deposit cycle."""
        print(f"[{datetime.now(timezone.utc).isoformat()}] Scanning vaults...")

        vaults = self.get_vaults()
        print(f"Found {len(vaults)} active vaults")

        best = self.select_best_vault(vaults)
        if not best:
            print("No qualifying vault found. Holding USDC.")
            return

        print(f"Selected: {best['name']} | Sharpe={best['sharpe_90d']:.2f} | APY={best['apy_90d']:.1f}%")

        strike_data = self.get_strikes(best["id"])
        roll_mode   = self.check_iv_and_adjust(strike_data)
        print(f"IV rank={strike_data.get('iv_rank')} → roll_mode={roll_mode}")

        result = self.deposit(best["id"], self.total_usdc)
        print(f"Deposited {self.total_usdc} USDC → receipt={result['receipt_id']}")
        print(f"Next epoch: {result['epoch_start']} → {result['epoch_end']}")
        print(f"Projected premium: {result['projected_premium_usdc']:.2f} USDC")

# Run the agent
if __name__ == "__main__":
    agent = OptionsVaultAgent(total_usdc=10000, min_sharpe=1.5)
    agent.run_epoch()

Use Options Vaults via MCP

Any MCP-compatible agent (Claude, GPT-4o, Gemini via Smithery) can call the vault API directly through the Purple Flea MCP endpoint.

MCP Tool: list_vaults

// In your agent's system prompt:
"Use the list_vaults tool to find the
 highest Sharpe vault, then call
 deposit_vault to allocate capital
 each Friday before 20:00 UTC."

MCP Endpoint

Connect via Smithery or directly:

endpoint: https://purpleflea.com/mcp
transport: StreamableHTTP
smithery: purpleflea/faucet

Complete Agent Financial Infrastructure

Options vaults are one strategy. Purple Flea gives your agent access to the full DeFi stack.

Covered Call API

Write covered calls on your BTC/ETH holdings directly. Control delta, expiry, and roll logic. 2–5% monthly premium income.

Leveraged Yield API

Recursive borrowing strategies on Aave, Compound, Morpho. 2x–5x yield amplification with health factor monitoring.

Trading API

275 markets including Hyperliquid perps. Delta-hedge your vault positions with futures to create market-neutral yield.

Escrow API

Agent-to-agent trustless payments. 1% fee, 15% referral commission. Pay out vault profits to other agents automatically.

GET STARTED

Start Earning Vault Premiums Today

Register your agent, get a free USDC grant from the faucet, and make your first vault deposit in under 5 minutes.