核心思想

IV RankIV Percentile 是衡量当前隐含波动率在其历史分布中相对位置的两个指标,用于判断当前期权”贵还是便宜”。

IV Rank=Current IV52W Min52W Max52W Min\text{IV Rank} = \frac{\text{Current IV} - \text{52W Min}}{\text{52W Max} - \text{52W Min}}

IV Percentile=#{days where IV<Current IV}Total observation days\text{IV Percentile} = \frac{\#\{\text{days where IV} < \text{Current IV}\}}{\text{Total observation days}}

两指标的区别

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 策略开仓双重确认,降低假信号

局限

参考文献

  1. CBOE White Paper: VIX and IV Percentile
  2. Natenberg, S., 1994. Option Volatility and Pricing Strategies