| name | a-share-volatility |
| description | A股波动率分析/GARCH建模。当用户说"波动率"、"volatility"、"GARCH"、"波动率锥"、"历史波动率"、"隐含波动率"、"HV"、"IV"、"波动率分位"、"XX波动率多少"、"波动率高吗"时触发。分析个股/指数的历史波动率、波动率锥、GARCH预测、隐含波动率对比,辅助判断当前波动率水平和未来波动率趋势。支持研报风格(formal)和快速查看风格(brief)。 |
数据源
SCRIPTS="$SKILLS_ROOT/cn-stock-data/scripts"
VOL_SCRIPTS="$SKILLS_ROOT/a-share-volatility/scripts"
python "$SCRIPTS/cn_stock_data.py" kline --code [CODE] --freq daily --start [2年前日期]
python "$SCRIPTS/cn_stock_data.py" quote --code [CODE]
python "$VOL_SCRIPTS/volatility_analyzer.py" --code [CODE] --start [2年前日期]
python -c "import akshare as ak; df=ak.option_sse_greeks_sina(symbol='510050'); print(df[['IV']].describe())"
Workflow (5 steps):
Step 1: 数据获取与预处理
- 获取近 2 年日线 K 线数据(OHLCV)
- 计算对数收益率:r_t = ln(Close_t / Close_{t-1})
- 获取实时行情确认最新价格
- 运行
volatility_analyzer.py 获取完整波动率分析结果
Step 2: 历史波动率计算(多窗口)
计算 5 个滚动窗口的年化历史波动率:
| 窗口 | 用途 | 说明 |
|---|
| HV5 | 超短期波动 | 反映近一周波动 |
| HV10 | 短期波动 | 反映近两周波动 |
| HV20 | 月度波动 | 最常用,对应期权月到期 |
| HV60 | 季度波动 | 中期波动水平 |
| HV120 | 半年波动 | 长期波动基准 |
计算方法(Close-to-Close):
- HV_N = std(r_t, window=N) * sqrt(252) * 100(百分比形式)
补充方法(如果有高开低收数据):
- Parkinson 波动率:利用最高价/最低价,HV_park = sqrt(1/(4N*ln2) * sum(ln(H/L)^2)) * sqrt(252)
- Yang-Zhang 波动率:综合开盘跳空 + 日内波动,更准确
Step 3: 波动率锥构建
对每个窗口,计算历史上所有滚动 HV 值的分位数分布:
| 分位数 | 含义 |
|---|
| P95 | 极高波动(历史 95% 分位) |
| P75 | 偏高波动 |
| P50 | 中位数(典型水平) |
| P25 | 偏低波动 |
| P05 | 极低波动(历史 5% 分位) |
当前 HV 在锥中的位置:
- 高于 P75 → 波动率偏高,可能回归
- P25-P75 → 正常区间
- 低于 P25 → 波动率偏低,可能扩张
波动率锥呈现方式:以窗口为横轴、波动率为纵轴,各分位线形成"锥形",当前值标注在对应位置。
Step 4: GARCH(1,1) 拟合与预测
使用 arch 库拟合 GARCH(1,1) 模型(不可用时 fallback 到 EWMA):
GARCH(1,1) 模型:
- sigma_t^2 = omega + alpha * r_{t-1}^2 + beta * sigma_{t-1}^2
- 长期方差 = omega / (1 - alpha - beta)
- alpha:短期冲击敏感度(越大越受近期波动影响)
- beta:波动率持续性(越大波动聚集越强)
- alpha + beta → 1:波动率持续性极强
GARCH 预测输出:
- 未来 5/10/20 日波动率预测值
- 向长期均值收敛的速度
- 参数解读(alpha/beta/omega)
EWMA 备选(lambda=0.94, RiskMetrics 标准):
- sigma_t^2 = lambda * sigma_{t-1}^2 + (1-lambda) * r_{t-1}^2
Step 5: HV vs IV 对比(如有期权数据)
仅限有期权的标的(50ETF/300ETF 等):
- 如果 IV > HV:期权定价偏贵,适合卖方策略
- 如果 IV < HV:期权定价偏低,适合买方策略
- IV-HV 差值的历史分位数
风格说明
| 维度 | formal(波动率研究报告) | brief(快速波动率查看) |
|---|
| 篇幅 | 2-4 页 | 半页 |
| HV 多窗口 | 5 个窗口全部列出 + 趋势判断 | HV20 + HV60 两个关键窗口 |
| 波动率锥 | 完整分位数表 + 文字描述锥形 | 当前 HV20 所处分位 |
| GARCH | 完整参数 + 预测 + 模型诊断 | 一句话预测方向 |
| IV 对比 | 详细 HV-IV 分析 + 策略建议 | IV vs HV 一句话 |
| 波动率特征 | 聚集性/均值回归/非对称性分析 | 省略 |
| 结论 | 多维度总结 + 波动率交易建议 | 高/正常/低 + 趋势 |
| 免责声明 | 需要 | 不需要 |
关键规则
- 年化处理:所有波动率统一年化(*sqrt(252)),以百分比形式呈现
- 波动率锥判断:核心输出是"当前波动率在历史中的位置",必须给出分位数
- 均值回归:波动率具有均值回归特性,极端值倾向回归到长期均值
- 波动率聚集:高波动之后往往跟随高波动,低波动之后往往跟随低波动
- GARCH 可选:如果 arch 库未安装,使用 EWMA 替代,结果标注为"EWMA 估计"
- IV 数据有限:仅部分 ETF 和个股有期权,无期权标的跳过 IV 对比环节
- A 股特色:注意涨跌停板对波动率计算的影响(涨跌停日波动率被低估),T+1 交易制度,新股上市初期波动率异常
- 数据量要求:GARCH 拟合建议至少 250 个交易日数据,波动率锥建议 2 年以上数据