Appearance
Call-Put波动率差因子(入门因子)
导航
- 所属章节: 工具获取 / 带您复现alpha表达式
- 上一篇: 视频讲解
- 下一篇: 球队硬币因子教程(进阶因子)
正文
Call-Put 隐含波动率差因子 · 入门教程
论文:The Joint Cross Section of Stocks and Options(Andrew Ang, Turan G. Bali, Nusret Cakici) 思路:期权隐含波动率截面包含对未来股票收益的预测信息,用 call IV 与 put IV 的相对变化 做简单因子,先快速验证有效性。
一、核心思想(一张图看懂)
mermaid
flowchart LR
A[Call IV 近期上升] --> B[未来一个月股票倾向上涨]
C[Put IV 近期上升] --> D[未来一个月股票倾向下跌]
B --> E[因子:Call 强 - Put 强 → 做多]
D --> E| 信号 | 含义 | 对未来收益的预测 |
|---|---|---|
| Call 期权隐含波动率上升 | 看涨预期增强 | 股票后续倾向上涨 |
| Put 期权隐含波动率上升 | 看跌/避险需求增强 | 股票后续倾向下跌 |
因此:用「Call IV 相对变强 − Put IV 相对变强」作为因子,值越大越偏多,值越小越偏空。
二、从论文到因子的三步
mermaid
flowchart TB
Step1[Step 1:选数据] --> Step2[Step 2:刻画「谁在变强」]
Step2 --> Step3[Step 3:组合成单因子]
Step3 --> Alpha[得到 Alpha 表达式]Step 1:选数据
| 数据字段 | 含义 |
|---|---|
| opt4_call_vola_152d | 平值远期 Call 期权、到期约 152 天的隐含波动率 |
| opt4_put_vola_152d | 平值远期 Put 期权、到期约 152 天的隐含波动率 |
只需这两个字段即可做入门版因子。
Step 2:刻画「IV 在时序上的相对变化」
问题:怎么定义「Call IV 上升」「Put IV 上升」? 做法:用时序上的相对强弱,而不是绝对水平。
mermaid
flowchart LR
A[Call IV 序列] --> B[ts_zscore(call_vol, d)]
C[Put IV 序列] --> D[ts_zscore(put_vol, d)]
B --> E[过去 d 天内相对高位 = 在涨]
D --> F[过去 d 天内相对高位 = 在涨]- ts_zscore(x, d):过去 d 天里,当前值相对均值的标准差倍数;值大表示近期偏强,值小表示近期偏弱。
- 这样「Call IV 上升」≈ Call 的 ts_zscore 大,「Put IV 上升」≈ Put 的 ts_zscore 大。
Step 3:组合成单因子
- Call 强、Put 弱 → 看多 → 因子取正。
- Call 弱、Put 强 → 看空 → 因子取负。
因此用差值即可:
mermaid
flowchart TB
A[ts_zscore(call_vol, d)] --> C[相减]
B[ts_zscore(put_vol, d)] --> C
C --> D[因子 = Call 相对强度 - Put 相对强度]
D --> E[值越大 → 越做多;值越小 → 越做空]公式:
- 因子 = ts_zscore(call_vola, d) − ts_zscore(put_vola, d) 其中 call_vola / put_vola 对应上述两个 152d 字段,d 为回溯天数(如 20)。
三、整体流程图:从想法到回测
mermaid
flowchart TB
Idea[论文:Call/Put IV 预测收益] --> Data[选字段:call_vola, put_vola]
Data --> Build[ts_zscore(call,d) - ts_zscore(put,d)]
Build --> Expr[写成 WQ Alpha 表达式]
Expr --> Set[Setting:区域、Universe、Decay 等]
Set --> Run[回测]
Run --> Check{是否有提升?}
Check -->|是| Improve[可做市值等中性化、继续复刻论文]
Check -->|否| Adjust[调参数或换数据再试]入门阶段:先不做复杂中性化,只验证「方向」是否对;有效后再加市值中性、行业中性等。
四、实现要点小结
| 项目 | 内容 |
|---|---|
| 数据 | opt4_call_vola_152d、opt4_put_vola_152d |
| 核心运算 | ts_zscore(·, d) 看时序相对强弱;两者相减得到多空信号 |
| 因子含义 | Call IV 相对变强 − Put IV 相对变强,值大偏多、值小偏空 |
| 入门设置 | 先简单回测看是否有预测力,再在 Setting 里加 Decay、Universe 等 |
| 后续改进 | 市值/行业等中性化;按论文进一步复刻更完整因子 |
五、入门版 vs 进阶可做的事
mermaid
flowchart LR
subgraph 入门
A1[用两个 IV 字段] --> A2[ts_zscore 相减]
A2 --> A3[回测看方向是否正确]
end
subgraph 进阶
B1[加市值/风格中性化] --> B2[按论文做更完整因子]
B2 --> B3[多期限、多指标]
end
A3 --> B1- 入门:只做「Call − Put」的 ts_zscore 差,快速验证思路。
- 进阶:在验证有效后,加中性化、多期限 IV、或论文里的其他构造,做完整复刻。
六、复现清单(入门版)
- [ ] 确认数据源中有 opt4_call_vola_152d、opt4_put_vola_152d
- [ ] 选定回溯天数 d(如 20)
- [ ] 写出 ts_zscore(call_vola, d) − ts_zscore(put_vola, d)
- [ ] 在平台上选好区域、Universe、Delay 等基础 Setting
- [ ] 跑回测,看因子是否对未来收益有预测性
- [ ] 若有效,再考虑加 group_neutralize(如市值)、或按论文扩展
按上述步骤即可完成从「论文想法」到「可回测的入门因子」的全流程。