Skip to content

Call-Put波动率差因子(入门因子)

导航

正文

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_152dopt4_put_vola_152d
  • [ ] 选定回溯天数 d(如 20)
  • [ ] 写出 ts_zscore(call_vola, d) − ts_zscore(put_vola, d)
  • [ ] 在平台上选好区域、Universe、Delay 等基础 Setting
  • [ ] 跑回测,看因子是否对未来收益有预测性
  • [ ] 若有效,再考虑加 group_neutralize(如市值)、或按论文扩展

按上述步骤即可完成从「论文想法」到「可回测的入门因子」的全流程。