IV Rank 和 IV Percentile 是衡量当前隐含波动率在其历史分布中相对位置的两个指标,用于判断当前期权”贵还是便宜”。
IV Rank 是线性归一化,对极端值敏感;IV Percentile 是基于排序的经验分位数,对异常值更稳健。实践中两者高度相关但结论可能不同(当 52W 范围有极端值时)。
import numpy as np
import pandas as pd
def iv_rank(current_iv, iv_history_52w):
"""IV Rank: 当前 IV 在 52 周范围内的位置"""
iv_min = iv_history_52w.min()
iv_max = iv_history_52w.max()
if iv_max == iv_min:
return 0.5
return (current_iv - iv_min) / (iv_max - iv_min)
def iv_percentile(current_iv, iv_history_52w):
"""IV Percentile: 当前 IV 的历史排序百分位"""
if len(iv_history_52w) == 0:
return 0.5
return np.mean(iv_history_52w < current_iv)
# 综合信号:IV Rank > 0.5 + IV Percentile > 0.5 → IV 偏高,适合做空波动率
def volatility_regime_signal(iv_rank, iv_percentile):
if iv_rank > 0.5 and iv_percentile > 0.5:
return "HIGH" # IV 偏高,适合做空波动率(VRP 策略)
elif iv_rank < 0.3 and iv_percentile < 0.3:
return "LOW" # IV 偏低,适合做多波动率(买入跨式)
else:
return "NEUTRAL" # 中性区间
| 信号 | 适合策略 | 说明 |
|---|---|---|
| IV Rank > 0.7 | 做空虚值 Put/Call | 高溢价,适合收时间价值 |
| IV Rank < 0.2 | 买入跨式 Straddle | 低溢价,等待波动率回归均值 |
| IV Rank > 0.5 + VRP 信号 | VRP 策略开仓 | 双重确认,降低假信号 |