第四章:市场中性策略
市场中性策略,说白了就是「不管大盘涨跌,我都要赚钱」。听起来有点玄乎?其实逻辑很简单——我们把市场涨跌这个风险完全对冲掉,只赚取选股带来的超额收益。
我刚开始做量化那会儿,总觉得这玩意儿太保守。后来经历了几次大熊市,看着身边做纯多头策略的朋友亏得底裤都不剩,我才真正体会到:活得久,比赚得快重要得多。
4.1 市场中性策略原理
核心思想就一句话:多空对冲,剥离市场风险。
具体做法是:
- 买入一篮子你看好的股票(多头)
- 卖空一篮子你看衰的股票(空头)
- 让多空两边的市场风险(Beta)相互抵消
这样,无论大盘是涨是跌,你的组合净值只取决于你的选股能力。大盘涨了,多头赚、空头亏,但空头亏得少(因为你选的是差股票);大盘跌了,多头亏、空头赚,但多头亏得少(因为你选的是好股票)。
关键公式:
组合收益 = 多头收益 - 空头收益
组合Beta = 多头Beta - 空头Beta ≈ 0
嗯,这里要注意:Beta完全等于0几乎不可能。我在实盘中一般把目标设在±0.1以内,超过这个范围就要触发再平衡了。
4.2 Beta对冲与Alpha剥离
咱们把收益拆开看:
股票收益 = Alpha + Beta × 市场收益 + 残差
Alpha是你选股能力的体现,Beta是你承担市场风险的回报。市场中性策略要做的,就是把Beta那部分剥离掉,只留下Alpha。
具体怎么剥离?我习惯用回归法:
# 计算每只股票的Beta
import numpy as np
import pandas as pd
def calc_beta(stock_returns, market_returns):
cov = np.cov(stock_returns, market_returns)
beta = cov[0, 1] / cov[1, 1]
return beta
# 对冲比例计算
hedge_ratio = portfolio_beta / market_beta
举个例子:假设你的多头组合Beta是1.2,空头组合Beta是0.8。那你的净Beta就是0.4。要完全对冲,你需要调整空头仓位,让空头Beta也变成1.2。
我的经验:别用太短的时间窗口算Beta。我一般用过去60个交易日,太短了噪声大,太长了反应迟钝。
4.3 多空组合构建
多空组合的构建,我把它分成三步:
- 选多头:用多因子模型打分,选排名前10%-20%的股票
- 选空头:同样模型打分,选排名后10%-20%的股票
- 配权重:让多空两边的市值、Beta、行业暴露尽量匹配
这里有个坑——空头端不是随便选差股票就行。我曾经吃过一次大亏:空头选了一堆小市值垃圾股,结果遇到小盘股集体暴涨,空头端亏得比多头赚的还多。
避坑指南:空头端也要做基本面筛选。别选那些可能被做空机构狙击的股票,也别选流动性太差的。我一般要求空头股票日均成交额在5000万以上。
多空权重分配,我常用的是市值中性化:
# 市值中性化示例
long_weight = long_market_cap / total_long_market_cap
short_weight = short_market_cap / total_short_market_cap
# 确保多空总市值相等
total_long = sum(long_weight)
total_short = sum(short_weight)
short_weight = short_weight * (total_long / total_short)
4.4 因子暴露控制
这是市场中性策略里最容易翻车的地方。你以为自己对冲了市场风险,结果在某个因子上暴露了一大堆。
举个例子:你的多头全是科技股,空头全是银行股。大盘涨的时候,科技股涨得比银行股多,你赚了。但万一科技板块暴雷呢?
我一般监控以下几个因子暴露:
| 因子 | 控制目标 | 监控频率 |
|---|---|---|
| 市场Beta | ±0.1 | 每日 |
| 行业 | 各行业暴露±0.5% | 每周 |
| 市值 | ±0.2个标准差 | 每周 |
| 动量 | ±0.3个标准差 | 每两周 |
| 波动率 | ±0.2个标准差 | 每月 |
因子暴露的计算方法:
# 计算组合的因子暴露
def calc_factor_exposure(portfolio, factor_data):
# portfolio: 持仓权重
# factor_data: 每只股票在各因子上的得分
exposure = portfolio.T @ factor_data
return exposure
# 检查是否超限
def check_exposure_limits(exposure, limits):
for factor, value in exposure.items():
if abs(value) > limits[factor]:
print(f"警告:{factor}暴露{value:.2f},超出限制{limits[factor]}")
return False
return True
再平衡触发条件:
- Beta暴露超出±0.1 → 立即再平衡
- 行业暴露超出±0.5% → 3天内调整
- 其他因子超出限制 → 1周内调整
- 定期再平衡:每月一次
说实话,因子暴露控制是市场中性策略里最磨人的部分。我见过太多策略,回测时漂亮得很,一上实盘就崩——原因就是回测时没控制好因子暴露,实盘遇到因子反转直接完蛋。
我的建议是:宁可少赚,也别在因子上赌方向。市场中性策略的核心是赚Alpha的钱,不是赚因子择时的钱。把因子暴露控制得死死的,虽然可能牺牲一点收益,但换来的是一条平稳的净值曲线。
一个小技巧:用Barra模型做因子暴露分析。虽然贵,但值得。我自己用Python写了个简化版,日常监控够用了。
这张图把市场中性策略的完整流程串起来了。从多因子打分开始,到多空组合构建,再到Beta对冲和因子暴露控制,最后通过再平衡机制持续输出Alpha收益。每一步都环环相扣,缺一不可。
最后说一句:市场中性策略不是万能药。它赚的是稳定的、低风险的收益,但别指望它一年翻倍。我见过太多人,刚开始做中性策略赚了点钱,就飘了,开始加杠杆、放松因子控制,结果一次黑天鹅就回到解放前。
稳扎稳打,控制好风险,市场中性策略能成为你组合里最坚实的压舱石。
公众号:蓝海资料掘金营,微信deep3321