攻守平衡的风格轮转策略
由bqtnziby创建,最终由bqtnziby 被浏览 6 用户
《孙子兵法》有云:“不可胜者,守也;可胜者,攻也。守则不足,攻则有余……故善战者,立于不败之地,而不失敌之败也。”如何在策略之中找准进攻的时机大获全胜,又能在形势不佳时也立于不败之地显得格外重要。该策略通过机器学习预测市场风格,动态切换进攻和防守股票池,实现风险与收益的平衡。
1.策略核心目的
1.1市场风格轮动理论
A股市场存在显著的风格轮动特征(如牛熊交替、大小盘切换、成长/价值轮动),其本质是资金在不同风险偏好资产间的流动。当市场处于“强市”时,资金倾向于流入高成长、高弹性标的;当市场处于“弱市”时,资金更偏好低波动、高稳定性标的。这为策略“分风格构建股票池”提供了底层逻辑。
1.2市场风格判断
我们在回望股市K线图的时候,很容易可以去判断某一段时间内是“强”还是“弱”;或者当我们身处“强市”或者“弱市”的时候,我们会有明显的感觉(比如“大盘又在涨”,“指数又在升”之类),但是其实我们对市场风格的认知和判断都是基于这种“感觉”——虽然只可意会不可言传,但时常是准的。
这种“感觉”实际上就是我们基于在股市摸爬滚打的经验形成的判断标准,所以要准确描述这种“感觉”,就可以利用机器学习来“准确地模糊”判断标准。
随机森林算法
随机森林的特性与市场风格预测需求高度匹配:一方面,策略构建了涵盖动量、波动率、量能等14个维度的特征,随机森林能高效处理多特征输入;另一方面,市场风格转换存在非线性规律,随机森林的拟合能力可捕捉这种复杂关系,从而准确预测未来10日市场收益率是否高于中位数,实现“强市/弱市”的二分类判断。
1.3策略本质
策略摒弃“单一策略贯穿全市场”的局限,通过市场风格轮动实现动态适配:
- 强市(进攻):优先选择小市值、高成长标的,追求超额收益;
- 弱市(防守):优先选择低换手率波动标的,控制回撤风险;
- 核心优势:用机器学习提升风格判断的准确性,用分池策略兼顾收益与风险。
2.策略执行流程
Step1:数据准备与模型构建
(1)训练数据提取与特征工程:以沪深300指数2008-2019年日线数据为训练集,构建14个特征,涵盖动量(如3日/5日收益率)、波动率(如5日/10日收益标准差)、量能(如5日/10日成交额比)、价格波动(如日振幅)四大维度,并计算“未来10日收益率”作为标签(高于训练期中位数为1,否则为0)。
(2)模型训练与验证:使用StandardScaler标准化特征,训练随机森林模型(参数:n_estimators=150、max_depth=10、min_samples_split=15),训练集准确率作为基础验证指标。
(3)全市场风格预测:提取沪深300指数从“回测开始日前100天”到“回测结束日”的完整数据,用训练好的模型预测每日风格信号(style_signal)及强市概率(style_proba)。
(4)强弱市股票池构建
- 强市池(进攻):筛选“非ST、非创业板、上市满1年、流通市值>5亿、净利润TTM增速>30%、营收TTM增速>30%、PE_TTM 0-50、PB<5”的股票,按总市值从小到大取前5只(小市值成长偏好);
- 弱市池(防守):筛选“上市满252天、非ST、非停牌”的股票,按20日换手率波动率从小到大取前10只(低波动偏好)。
Step2:风格判断与调仓
(1)风格判断:每日获取当日市场风格信号(从预计算的style_signal中匹配),若当日为月度首个交易日,则触发调仓判断。
(2)股票池匹配:若风格为强市(style_signal=1),选用强市股票池;若为弱市(style_signal=0),选用弱市股票池。
(3)仓位调整:采用等权分配策略,对目标股票池内标的各分配相同权重,同时卖出不在目标池中的持仓标的,完成调仓。
(4)风格切换监控:记录风格切换次数及切换时的强市概率,便于后续策略分析。
基础设置:
- 市场范围:A股市场(cn_stock)
- 交易成本:买入费率0.03%、卖出费率0.13%,最低5元/笔
- 调仓周期:月度调仓(足够时间观望和适应市场风格)
- 持股数量:“强市”3只;“弱市”5只
3.回测结果
回测时间为2023-01-01 至 2025-10-31
4.改进方向
- 模型迭代与特征扩展:当前使用随机森林,可尝试XGBoost、LightGBM等梯度提升模型;特征方面可新增宏观经济指标(如PMI、利率)、情绪指标(如融资融券余额),提升风格预测准确率。
- 股票池筛选条件优化: 强市池可加入更多指标,进一步筛选高景气度标的;弱市池可结合“股息率”“现金流覆盖率”等基本面指标,增强防守性。
- 调仓频率与阈值动态调整:当前固定月度调仓,可根据市场波动率动态调整(如高波动时缩短调仓周期);同时可设置“风格概率阈值”(如强市概率>60%才切换进攻策略),减少无效切换。
- 调整随机森林算法中判断强弱市的标准。(当前用是否大于中位数可能会导致市场强弱的绝对标准被忽略)可以考虑在当前基础上加上绝对标准(比如近n日基准收益率大于0%,10%……)
策略代码:
\