From option-crypto
Read Deribit's DVOL index (BTC and ETH) — the crypto analogue of CBOE's VIX — for vol regime context, term-structure flags, and historical percentile comparisons. Use this skill whenever the user asks about crypto vol regime, BTC vs ETH vol, DVOL level vs history, or wants a vol-context read before crypto-options trades. Triggers: "DVOL", "BTC DVOL", "ETH DVOL", "crypto VIX", "BTC vol regime", "is crypto vol cheap", "implied vol vs realized for BTC". Defaults: BTC currency, trailing 1y window for percentile.
How this skill is triggered — by the user, by Claude, or both
Slash command
/option-crypto:dvol-indexThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
DVOL is Deribit's 30-day forward implied volatility index, computed from listed BTC/ETH option prices using a variance-swap replication. Functionally it's "the VIX of crypto".
DVOL is Deribit's 30-day forward implied volatility index, computed from listed BTC/ETH option prices using a variance-swap replication. Functionally it's "the VIX of crypto".
!`curl -sS --max-time 3 "https://www.deribit.com/api/v2/public/get_volatility_index_data?currency=BTC&start_timestamp=$(($(date +%s) * 1000 - 86400000))&end_timestamp=$(($(date +%s) * 1000))&resolution=43200" 2>/dev/null | python3 -c "import json,sys; d=json.load(sys.stdin); rows=d['result']['data']; print(f'BTC DVOL last: {rows[-1][4]:.1f}' if rows else 'DVOL: no data')" || echo "DVOL_UNAVAILABLE"`
For ETH, change currency=BTC to currency=ETH.
import requests, pandas as pd
from datetime import datetime, timedelta
def get_dvol(currency='BTC', days=365, resolution='43200'):
end = int(datetime.utcnow().timestamp() * 1000)
start = end - days * 86400 * 1000
r = requests.get(
"https://www.deribit.com/api/v2/public/get_volatility_index_data",
params={
"currency": currency,
"start_timestamp": start,
"end_timestamp": end,
"resolution": resolution,
}, timeout=15)
r.raise_for_status()
rows = r.json()['result']['data']
df = pd.DataFrame(rows, columns=['ts', 'open', 'high', 'low', 'close'])
df['ts'] = pd.to_datetime(df['ts'], unit='ms')
return df
Resolution values: 1 (1min), 60 (1h), 3600 (1h... wait, see below), 43200 (12h), D (daily). Deribit's resolution is in seconds as a string. 43200 = 12h. Use D for daily bars over a 1y window.
If the API fails, stop — don't substitute cached or approximate values.
DVOL ranges (BTC, historical 2021-now):
| Regime | DVOL |
|---|---|
| Calm (rare) | < 35 |
| Normal | 35 – 55 |
| Elevated | 55 – 75 |
| Stressed | 75 – 100 |
| Crisis | > 100 (e.g., LUNA, FTX, March 2020) |
ETH DVOL tends to run 10-20 vol points higher than BTC due to ETH's higher realized vol and lower options liquidity.
Always show 1y percentile alongside the absolute level — "DVOL = 52" means very different things at the 10th vs 90th percentile of the year.
deribit-options-chain)DVOL is a single 30-day point. To get the full vol curve, use deribit-options-chain to compute ATM IV per expiry. Compare the 7d ATM IV vs DVOL vs 90d ATM IV for contango/backwardation read.
short_long_ratio = atm_iv_7d / atm_iv_90d
| Pattern | Read |
|---|---|
| Short < Long (contango) | Calm regime, vol-sellers' market |
| Short > Long (backwardation) | Frontend stress, vol-buyers' market |
| Curve kink at expiry near a known event | Event vol — token unlock, halving, scheduled upgrade |
Halvings (BTC ~every 4 years) and ETH protocol upgrades historically pump near-event IV by 10-15 vol points.
Pull BTC daily closes for the past 30 days from any spot source (e.g. Coingecko, or use the Deribit index /get_index_price snapshot for now and an external history elsewhere). Compute realized vol:
import numpy as np
def realized_vol(prices, window=30):
logret = np.log(prices).diff()
return logret.rolling(window).std() * np.sqrt(365)
Compare to DVOL:
iv_rv_spread = DVOL − realized_vol_30d
iv_rv_spread > 10 vol points → vol-sellers earn the variance risk premiumiv_rv_spread < 0 (realized > implied) → vol expansion regime, vol buyers winningThis is the canonical "vol carry" trade in crypto. Risk: realized can spike fast — funding stress, exchange collapses, hack rumors all blow it up. Size with position-sizing.
Hand off to:
deribit-options-chain for the full surfaceinverse-options-pricing for theoretical contract pricesposition-sizing if user wants to size a vol-carry tradeProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub dongzhuoyao/finance-option-skills --plugin option-crypto