Swolecharts
Live crypto data · 10 exchanges
Log inSign up

30-day options skew percentile

Is Bitcoin and Ethereum 30-day 25-delta call-versus-put implied volatility skew unusual compared with its own recorded history?

As of 11:00 UTC

Source: recorded exchange public APIs, whole-chain hourly metrics. RR25 is the 30-day constant-maturity 25-delta call IV minus 25-delta put IV, in signed volatility points (negative = puts priced richer). The comparison window covers the prior 30 calendar days of observed history. A percentile describes past readings only; it is not a forecast or a trade recommendation.

BTC and ETH · 30-day risk reversal in its observed range

Coin / public sourceCurrent RR25 (vol pts) / source UTCPercentilePrior median (vol pts)Prior min / max (vol pts)Reference coverage / status
BTC implied volatility
Binance + Bybit
−2.64
2026-10-16 11:00 UTC
22.2% −1.75 −3.78 / +0.34 383 / 720 hourly samples (53.2%)
Observed span 17.04 days
First: 2026-09-29 09:00 UTC
Last: 2026-10-16 10:00 UTC
Usable history
ETH implied volatility
Binance + Bybit
−1.21
2026-10-16 11:00 UTC
60.8% −1.67 −3.30 / +1.34 383 / 720 hourly samples (53.2%)
Observed span 17.04 days
First: 2026-09-29 09:00 UTC
Last: 2026-10-16 10:00 UTC
Usable history

Midrank percentile = 100 × (prior readings below current + half the prior readings equal to current) / prior reading count. The current hour is excluded from its own reference window; duplicate readings within one UTC hour count once (the latest). A constant history equal to the current reading gives the 50th percentile. Zero is a real reading (call and put IV equal), not missing data.

Coverage is observed unique reference hours / 720 possible hours in 30 days. Gaps are not filled. First/last timestamps describe the reference samples, separately from the current reading's source timestamp. A percentile requires at least 168 prior hours spanning 7 days and a current reading no older than 2 hours. Hidden venues never contribute to displayed combined history; a single public venue uses its own recorded series. Refresh: 120 seconds after a successful read, 30 seconds after a failed one.