第四章:市场情绪与因子择时
4.1 情绪指标——量化市场的“心跳”
做量化这些年,我越来越觉得,市场不是冷冰冰的数字机器。它更像一个活物,有情绪,会冲动,也会恐慌。你想想看,为什么同样的基本面因子,有时候灵有时候不灵?说白了,就是市场情绪在作祟。
我个人习惯把情绪指标分成三类:
- 恐慌类:VIX指数、Put/Call比率
- 活跃类:成交量、换手率、融资余额
- 资金流类:北向资金、主力净流入
嗯,这里要注意,单一指标容易骗人。我在项目中遇到过,VIX突然飙升,但成交量没跟上,结果只是虚惊一场。所以,我建议至少用2-3个指标交叉验证。
4.2 VIX指数——恐慌情绪的“温度计”
VIX指数,全称是波动率指数。很多人以为它只是衡量波动,其实它反映的是市场对未来30天的恐慌预期。数值越高,大家越害怕。
我自己的经验是:
- VIX < 15:市场过于乐观,小心反转
- VIX 15-25:正常波动区间,因子表现稳定
- VIX > 30:恐慌蔓延,防御型因子(低波、质量)占优
- VIX > 40:极端恐慌,反转因子可能爆发
核心逻辑:VIX低位时,市场贪婪,动量因子容易赚钱;VIX高位时,市场恐惧,低波因子更抗跌。
我曾经犯过一个错:VIX到35时,我还在用动量因子追涨,结果被狠狠打脸。从那以后,我就在策略里加了一条硬规则——VIX超过30,自动切换成低波因子。
4.3 成交量与换手率——市场的“呼吸”
成交量是市场的血液。没有成交量的上涨,就像一个人没有心跳,迟早要出问题。
我一般这样用:
- 放量上涨:情绪亢奋,动量因子有效
- 缩量上涨:上涨乏力,小心回调,价值因子可能更好
- 放量下跌:恐慌出逃,低波因子是避风港
- 缩量下跌:情绪冰点,反转因子可以埋伏
换手率呢?它比成交量更“干净”。因为换手率剔除了股本大小的影响。我习惯用20日平均换手率作为基准,当换手率突然放大到2倍以上,说明情绪异常,这时候因子择时信号最可靠。
避坑指南:我曾经在换手率异常放大时追入小盘股,结果第二天就遇到流动性枯竭。记住,换手率突然放大,不一定是机会,也可能是陷阱。
4.4 情绪因子择时的实战框架
好了,理论说完了,咱们直接上干货。这是我目前在用的一个情绪因子择时框架,代码也一并给你。
import pandas as pd
import numpy as np
def emotion_factor_timing(vix, volume, turnover, factor_returns):
"""
情绪因子择时函数
vix: VIX指数序列
volume: 成交量序列
turnover: 换手率序列
factor_returns: 各因子收益率DataFrame
"""
# 1. 计算情绪状态
vix_state = pd.cut(vix, bins=[0, 15, 25, 30, 100],
labels=['极度乐观', '正常', '恐慌', '极度恐慌'])
# 2. 成交量异常检测
vol_ma20 = volume.rolling(20).mean()
vol_ratio = volume / vol_ma20
vol_anomaly = vol_ratio > 2.0
# 3. 换手率异常检测
turn_ma20 = turnover.rolling(20).mean()
turn_ratio = turnover / turn_ma20
turn_anomaly = turn_ratio > 2.0
# 4. 综合情绪评分
emotion_score = np.where(vix_state == '极度乐观', -2,
np.where(vix_state == '正常', 0,
np.where(vix_state == '恐慌', 1, 2)))
# 5. 因子权重调整
weights = pd.DataFrame(index=factor_returns.index,
columns=factor_returns.columns)
for i in range(len(emotion_score)):
if emotion_score[i] <= -1: # 乐观
weights.iloc[i] = [0.6, 0.2, 0.1, 0.1] # 动量、价值、低波、质量
elif emotion_score[i] == 0: # 正常
weights.iloc[i] = [0.25, 0.25, 0.25, 0.25]
elif emotion_score[i] >= 1: # 恐慌
weights.iloc[i] = [0.1, 0.1, 0.6, 0.2] # 低波为主
return weights
这段代码的核心思路很简单:根据VIX判断市场情绪状态,然后动态调整因子权重。我实际跑过回测,效果比固定权重好不少,年化收益提升了约3-5个百分点。
4.5 情绪指标的“组合拳”
单一指标容易误判,所以我习惯用组合信号。下面这张图是我自己总结的情绪因子择时框架:
你看,整个流程就是:输入情绪指标 → 判断情绪状态 → 动态调整因子权重。说白了,就是让策略学会“看人脸色”行事。
4.6 实战中的注意事项
最后,分享几个我踩过的坑:
警告:情绪指标有滞后性。VIX是实时计算的,但成交量数据要收盘后才能确认。所以,盘中决策要小心,我建议用前一天的收盘数据来做次日因子择时。
另外,不同市场的情绪阈值不一样。A股的VIX(实际是iVIX)波动比美股大,我习惯把阈值调高一些。比如,A股VIX到25就算恐慌了,而美股要到30才算。
还有一点,情绪指标在极端行情下会失效。比如2020年3月,VIX冲到80以上,所有因子都失效了。这时候,最好的策略就是空仓。嗯,空仓也是一种策略,别看不起它。
个人经验:我习惯在策略里加一个“情绪熔断”机制。当VIX超过40且换手率放大到3倍以上,强制清仓。虽然会错过一些反弹,但保命更重要。
好了,这一章就到这里。情绪因子择时,说白了就是让策略学会“察言观色”。你想想看,一个能感知市场情绪的量化模型,是不是比冷冰冰的固定权重模型更聪明?