第三章:低波动策略的构建
股票池构建、因子打分与排序、权重分配与组合构建——这三个步骤,说白了就是低波动策略的骨架。我见过不少新手一上来就调参数、跑回测,结果策略逻辑都没理顺。嗯,今天咱们就把这块地基打扎实。
3.1 股票池构建:先筛出能玩的票
股票池不是越大越好。你想想看,全市场几千只股票,里面掺杂着ST、次新股、流动性极差的仙股,这些票的低波动特征往往是假的。我个人习惯,第一步先做硬性过滤。
核心过滤条件(我常用的三板斧):
- 流动性过滤:过去20个交易日日均成交额 > 5000万。低于这个数,你进去容易,出来难。
- 价格过滤:股价 > 5元。低价股容易出幺蛾子,而且交易成本占比太高。
- 上市时间过滤:上市满1年。新股波动率还没稳定,别碰。
我在项目中遇到过一件事:有一次回测低波动策略,收益曲线漂亮得不像话。后来一查,股票池里混进了一只刚上市3个月的次新股,波动率极低,但那是流动性枯竭造成的假象。从那以后,我坚决把上市时间不足1年的票全部剔除。
避坑指南:我曾经用全A股做股票池,结果策略在2015年股灾时回撤巨大。后来改成沪深300成分股+中证500成分股,效果稳定很多。大市值股票的低波动特征更可靠。
3.2 因子打分与排序:给股票排个队
股票池有了,接下来就是打分。低波动策略的核心因子其实不多,但每个都要精打细算。
我常用的三个核心因子:
- 历史波动率因子:过去60个交易日收益率的标准差。越低越好。
- Beta因子:相对于大盘的敏感度。Beta < 1 的票更抗跌。
- 最大回撤因子:过去120个交易日的最大回撤幅度。回撤小的票,持有体验好。
打分方法我建议用百分位排名法。为什么?因为原始数值没法直接比较。比如波动率0.3和0.5,差多少?说不清。但百分位排名后,0.3可能排在前20%,0.5排在前60%,一目了然。
# 伪代码示例:因子打分逻辑
def factor_scoring(df):
# 波动率因子:越低越好,取倒数后排名
df['vol_score'] = 1 / df['volatility']
df['vol_rank'] = df['vol_score'].rank(pct=True)
# Beta因子:越低越好,取负数后排名
df['beta_score'] = -df['beta']
df['beta_rank'] = df['beta_score'].rank(pct=True)
# 最大回撤因子:越低越好
df['dd_score'] = -df['max_drawdown']
df['dd_rank'] = df['dd_score'].rank(pct=True)
# 综合得分:等权平均
df['total_score'] = (df['vol_rank'] + df['beta_rank'] + df['dd_rank']) / 3
return df.sort_values('total_score', ascending=False)
注意:因子之间可能存在共线性。比如低波动率的股票往往Beta也低。我建议每半年做一次因子相关性检验,如果两个因子相关系数超过0.8,考虑合并或剔除一个。
3.3 权重分配与组合构建:别把鸡蛋放一个篮子里
排序完成后,选前50只股票构建组合。权重分配我试过好几种方法,最后发现等权重最省心,也最稳健。
三种权重分配方案对比:
| 方案 | 优点 | 缺点 | 我的建议 |
|---|---|---|---|
| 等权重 | 简单、分散、回撤小 | 可能错过高收益个股 | 新手首选 |
| 波动率倒数加权 | 更贴合低波动理念 | 权重集中度过高 | 有一定经验再用 |
| 风险平价 | 风险贡献均衡 | 计算复杂、调仓频繁 | 机构常用 |
我个人习惯用等权重,但会加一个行业约束:单一行业占比不超过20%。为什么?因为低波动股票往往集中在银行、公用事业这些行业,如果不加约束,组合就成了行业指数基金。
组合构建的完整流程:
- 每月第一个交易日调仓
- 重新计算因子得分,排序
- 选前50只股票
- 等权重分配,行业上限20%
- 执行交易,控制滑点
嗯,这里要注意一点:调仓频率别太高。我试过周频调仓,结果交易成本吃掉了一大半收益。月频调仓是个不错的平衡点。
3.4 知识体系总览
下面这张图把整个低波动策略的构建逻辑串起来了。你可以把它当成一张地图,随时回来对照。
实战小技巧:构建完组合后,别急着实盘。先用模拟账户跑3个月,看看因子是否失效。我曾经有一个策略,回测时夏普比率2.0,实盘跑了两个月变成0.8。后来发现是因子在样本外失效了。嗯,多留个心眼总没错。
好了,低波动策略的构建框架就这些。股票池是地基,因子打分是骨架,权重分配是血肉。三者缺一不可。你想想看,如果股票池没筛好,后面再精细的因子打分也是白搭。反过来,如果权重分配不合理,再好的股票池也白费。