ETF轮动策略:三因子打分与Python回测实践
1. 策略定位与三个因子的设计逻辑
1.1 这个策略到底想解决什么问题
散户做量化,最大的门槛从来不是代码,而是策略思路是否靠谱。市面上的所谓“量化策略”要么复杂到普通人根本跑不起来,要么简单到跟猜大小没区别。这个“三个因子、四只ETF”的策略定位非常明确:用有限的可解释因子,在ETF这个低门槛载体上做轮动,用Python能跑通的逻辑去追求一个相对稳定的超额收益。
先说结论:回测年化40%这个数字,放在真实市场里必须打折扣,但即便打个对折、年化20%左右,对散户来说也已经是非常优秀的水平,关键它可复制、可验证、可复盘。策略的核心思路用一句话概括:用三个有经济学逻辑的因子,给四只ETF做月度打分排序,然后只持有得分最高的那一只。
这里有个容易被新手忽略的点:为什么选ETF而不是个股?因为个股存在流动性冲击、基本面暴雷、停牌等大量不可控因素,而ETF追踪指数,因子暴露更纯净,回测结果也更可信。散户没有精力去逐个排雷,ETF天然帮你做了一层分散。
1.2 三个因子的经济学含义
我的选择是动量因子、波动率因子、红利因子。这三个因子各自代表一种市场状态下的赚钱逻辑,组合起来能够覆盖大部分行情风格。
动量因子(Momentum)的逻辑最简单:过去一段时间涨得好的资产,未来一段时间往往继续涨。这背后是投资者反应不足和羊群效应的合力,趋势一旦形成就有惯性。回测里一般用过去20到60个交易日的累计收益率来度量。
波动率因子(Low Volatility)的逻辑是低波动资产长期收益反而更高,这个现象在学术上被称为“低波动异象”。原因是散户普遍偏爱波动大的彩票型资产,导致高波动资产被过度定价,低波动资产反而被低估。用过去20个交易日收益率的标准差就能度量。
红利因子(Dividend)的逻辑是持续高分红的企业往往现金流稳定、经营成熟,在市场下跌时这些资产抗跌性更强。用ETF跟踪指数的股息率就能度量。
这三个因子一个抓进攻(动量)、一个抓防守(低波动)、一个抓价值底仓(红利),组合打分后,策略理论上能在牛市跟上趋势、在震荡市降低回撤、在熊市尽量少亏。
1.3 因子打分与合成的具体方法
因子合成这里有个细节很关键:三个因子的量纲完全不同,动量是收益率数值,波动率是百分比,股息率也是百分比但量级很小,直接加总没有任何意义。必须做标准化处理。
我的做法是百分位排名法。每个月末,对四只ETF分别计算三个因子的取值,然后将每个因子转换成百分位排名(0到100),最后按权重加权求和。动量、低波动、红利的权重分别设为40%、30%、30%,这个权重经过网格搜索验证,并不是拍脑袋定的。
还有一个实操细节:低波动因子是正向还是反向?波动率本身是风险指标,数值越大代表风险越高,所以排序时要取倒数或反序排名,波动率最低的ETF得分最高。这个方向搞反了,整个策略效果会完全颠倒。
2. 四只ETF的筛选与组合定位
2.1 为什么是这四只
标的选择是整个策略的地基。动量因子需要资产有足够的趋势弹性,低波动因子需要资产有差异化风险特征,红利因子需要资产有稳定的现金分红,单只ETF无法同时满足所有条件,所以必须组合。
我用的是沪深300ETF、中证500ETF、创业板ETF、红利ETF这四只。选择依据有三条:规模足够大(流动性好)、跟踪误差小(场内价格贴合净值)、覆盖