# Implied Volatility (`options_volatility`)

> ATM volatility, term structure, implied move size, 25-delta skew and IV versus realized volatility. BTC/ETH volatility-index history adds context. What options price for the size of a move — not its direction.

- Category: Options
- MCP tool: `options_volatility`
- REST: `GET /options/volatility/{currency}`
- MCP App: hosts that support MCP Apps render the result as an interactive view
- x402 price: $0.01 per call (USDC on Base)
- HTML: https://www.f1ow.com/docs/tools/options_volatility

## What it does

Crypto options implied volatility: DVOL index with 1y percentile, ATM IV term structure (7/30/90d) and inversion, 25-delta risk reversal and butterfly per expiry, 30d IV vs realized volatility, spot–vol correlation, 24h/7d skew and term changes, and the implied 1σ move for 1/7/30 days — how fast a move options price, not its direction. Pass several underlyings ("BTC,ETH") to compare.

## Parameters

| Name | Type | In | Required | Description |
| --- | --- | --- | --- | --- |
| `currency` | string | path | yes | Underlying symbol or comma-separated list (max 4), e.g. "BTC" or "BTC,ETH". |

## Call it

### cURL

```bash
curl "https://mcp.f1ow.com/v1/options/volatility/BTC" \
  -H "Authorization: Bearer $F1OW_API_KEY"
```

### MCP

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "options_volatility",
    "arguments": {
      "currency": "BTC"
    }
  }
}
```

### TypeScript

```ts
const res = await fetch("https://mcp.f1ow.com/v1/options/volatility/BTC", {
  headers: { Authorization: `Bearer ${process.env.F1OW_API_KEY}` },
});
const data = await res.json(); // the tool's result as JSON, typed in the OpenAPI spec
console.log(data);
```

### Python

```python
import os, requests

res = requests.get(
    "https://mcp.f1ow.com/v1/options/volatility/BTC",
    headers={"Authorization": f"Bearer {os.environ['F1OW_API_KEY']}"},
)
data = res.json()  # the tool's result as JSON, typed in the OpenAPI spec
print(data)
```

### WebSocket

```jsonc
// wss://mcp.f1ow.com/v1/ws — subprotocol "jsonrpc-2.0", Authorization: Bearer <key>
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "options_volatility",
    "arguments": {
      "currency": "BTC"
    }
  }
}

// Or push a fresh result whenever it changes (minimum interval 15 s)
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "subscriptions/subscribe",
  "params": {
    "name": "options_volatility",
    "arguments": {
      "currency": "BTC"
    },
    "intervalSeconds": 60
  }
}
```

### x402

```bash
# No account: the first call answers 402 with a PAYMENT-REQUIRED challenge;
# an x402 client pays it in USDC on Base and retries.
curl "https://mcp.f1ow.com/x402/v1/options/volatility/BTC"
```

## Sample response

Captured 2026-11-13. The JSON is what REST and WebSocket return and the `structuredContent` of an MCP call (trimmed):

```json
{
  "caveat": "Positioning and pricing, not direction: put/call ratios, skew and max pain do not predict price, and aggregate OI cannot show dealer gamma, who is long or short, or pinning. Max pain is a theoretical calculation.",
  "reads": [
    {
      "atmIv": {
        "d30": 37.9250638590136,
        "d7": 38.9431753506621,
        "d90": 39.2867546169742,
        "source": "calculated"
      },
      "changes": [],
      "dvol": {
        "at": "2026-11-13T00:00:00Z",
        "changeVsPriorDay": -0.840000000000003,
        "days": 367,
        "percentile": 38.0108991825613,
        "source": "reported",
        "value": 39.23
      },
      "expiries": [
        {
          "atmIv": 37.3112471223181,
          "butterfly25": 0.731392513546965,
          "days": 1.99615429398148,
          "expiry": "2026-11-15T08:00:00Z",
          "forwardUsd": 68622.4,
          "riskReversal25": -6.85588547243289
        },
        {
          "atmIv": 36.0167155269591,
          "butterfly25": 0.905839276842123,
          "days": 2.99615429398148,
          "expiry": "2026-11-16T08:00:00Z",
          "forwardUsd": 68627.07,
          "riskReversal25": -5.47453702828677
        },
        {
          "atmIv": 38.5788987608621,
          "butterfly25": 0.458165640004495,
          "days": 3.99615429398148,
          "expiry": "2026-11-17T08:00:00Z",
          "forwardUsd": 68634.6425,
          "riskReversal25": -4.86940292993656
        },
        {
          "atmIv": 38.9446513215503,
          "butterfly25": 0.656100437715786,
          "days": 6.99615429398148,
          "expiry": "2026-11-20T08:00:00Z",
          "forwardUsd": 68670.3,
          "riskReversal25": -5.30908746486656
        },
        {
          "atmIv": 37.5770034274295,
          "butterfly25": 0.437361134222506,
          "days": 13.9961542939815,
          "expiry": "2026-11-27T08:00:00Z",
          "forwardUsd": 68764.16,
          "riskReversal25": -5.19406395577422
        },
        {
          "atmIv": 37.2297708474289,
          "butterfly25": 0.664317130408243,
          "days": 20.9961542939815,
          "expiry": "2026-12-04T08:00:00Z",
          "forwardUsd": 68826.94,
          "riskReversal25": -4.20658631115766
        },
        "… 5 more"
      ],
      "impliedMovePct": [
        {
          "days": 1,
          "extrapolated": true,
          "pct": 1.95295993254966
        },
        {
          "days": 7,
          "extrapolated": false,
          "pct": 5.39304380590935
        },
        {
          "days": 30,
          "extrapolated": false,
          "pct": 10.8727778786336
        }
      ],
      "indexPriceUsd": 68625.86,
      "meta": {
        "ageSeconds": 25,
        "observedAt": "2026-11-13T08:05:16Z",
        "provider": "Deribit",
        "underlying": "BTC"
      },
      "notes": [],
      "realized30d": 35.9570037879743,
      "riskReversal25At30d": -4.13282585233276,
      "skewState": "PUTS OVER CALLS",
      "spotVolCorrelation90d": 0.176970695802054,
      "termSlope7dMinus30d": 1.01811149164851,
      "termState": "FLAT",
      "volPremium": 1.96806007103923
    }
  ],
  "unavailable": [],
  "generatedAt": "2026-11-13T08:05:16Z"
}
```

Over MCP the text report a model reads comes with it:

```text
=== BTC options volatility — Deribit ===
Observed 2026-11-13T08:05:16Z (25s ago) | spot index $68625.86
DVOL (reported 30d implied index): 39.2 | vs prior day -0.8 | 38th percentile of 367 daily closes
ATM IV, constant maturity (calculated): 7d 38.9 | 30d 37.9 | 90d 39.3 → term FLAT (7d−30d +1.0 pts)
25Δ risk reversal 30d (calculated, call IV − put IV): -4.1 pts → PUTS OVER CALLS
30d realized (calculated, daily closes): 36.0 → IV premium (30d IV − realized) +2.0 pts
Implied 1σ move (speed the market prices, not direction): 1d ±$1340.24 (±2.0%, front IV) | 7d ±$3701.02 (±5.4%) | 30d ±$7461.54 (±10.9%)
Spot–vol correlation 90d (calculated, daily DVOL change vs log return): +0.18
Changes (stored hourly snapshots): n/a yet
Per expiry (ATM IV | 25Δ RR | 25Δ fly):
  15 Nov 2026     2.0d fwd $68622.40  ATM 37.3 | RR -6.9 | fly +0.7
  16 Nov 2026     3.0d fwd $68627.07  ATM 36.0 | RR -5.5 | fly +0.9
  17 Nov 2026     4.0d fwd $68634.64  ATM 38.6 | RR -4.9 | fly +0.5
  20 Nov 2026     7.0d fwd $68670.30  ATM 38.9 | RR -5.3 | fly +0.7
  27 Nov 2026    14.0d fwd $68764.16  ATM 37.6 | RR -5.2 | fly +0.4
  4 Dec 2026     21.0d fwd $68826.94  ATM 37.2 | RR -4.2 | fly +0.7
  25 Dec 2026    42.0d fwd $69032.72  ATM 38.4 | RR -4.0 | fly +0.8
  29 Jan 2027    77.0d fwd $69404.18  ATM 39.0 | RR -3.9 | fly +0.8
  26 Mar 2027   133.0d fwd $70015.13  ATM 39.8 | RR -3.5 | fly +0.9
  25 Jun 2027   224.0d fwd $71007.39  ATM 40.2 | RR -2.5 | fly +0.8

Positioning and pricing, not direction: put/call ratios, skew and max pain do not predict price, and aggregate OI cannot show dealer gamma, who is long or short, or pinning. Max pain is a theoretical calculation.
```

## Related tools

- [Options Chain](https://www.f1ow.com/docs/tools/options_chain) — Calls and puts by strike and expiry: quotes, mark implied volatility, open interest and volume. Reported data is separated from calculated metrics, with coverage and thin-market caveats.
- [Options Positioning](https://www.f1ow.com/docs/tools/options_positioning) — Put/call open interest, strike and expiry concentrations, expiring notional, theoretical max pain and recent option trades. One venue; aggregate open interest does not reveal who is long or short, and max pain is not a forecast.
- [Gamma & Hedge Scenarios](https://www.f1ow.com/docs/tools/options_gamma) — Modeled gamma exposure, walls, flip levels and an options regime, with price, time and volatility what-ifs. Dealer hedge ladders depend on an explicit positioning scenario — theoretical sensitivity, not observed dealer orders.
- [Options-Implied Odds](https://www.f1ow.com/docs/tools/options_probability) — Risk-neutral expiry probabilities above or below a price or inside a range, plus implied 68% and 90% ranges. Derived from options forwards and volatility, with smile adjustment where quoted — not calibrated real-world forecasts.
