盈利成长与规模综合打分选股策略
由qxiao创建,最终由qxiao 被浏览 1 用户
一、策略目标
本策略在可交易的A股范围内,构建“盈利成长强 + 规模相对较小”的选股逻辑:\n以净利润同比增速作为成长信号,同时对总市值进行相对惩罚,形成综合得分,从而挑选出“成长更强且不那么拥挤”的股票组合,并通过按交易日调仓(每日调仓)保持组合始终处于最新的优选状态。策略目标包括:
- 获取稳定的超额收益来源:依托盈利增长的基本面逻辑;
- 兼顾风格平衡:成长筛选叠加规模约束,避免过度集中在大盘拥挤标的;
- 风险与可交易性可控:剔除风险警示、上市未满一年等不稳定样本;
- 规则清晰、可复现:选股、持仓、调仓、交易成本设定完整,便于复用与实盘落地。
二、策略核心流程
1. 股票池构建(基础筛选)
策略首先对全市场进行基础过滤,得到可交易股票池:
- 交易所范围:上海证券交易所、深圳证券交易所
- 板块范围:主板
- 指数成分范围:沪深300、中证500、中证1000、上证50、科创50、创业板指等(扩大覆盖面,兼顾不同风格)
- 剔除规则:
- 剔除停牌股票
- 剔除风险警示/异常状态股票(仅保留“正常”)
- 融资融券标的与非融资融券标的均可纳入
- 行业覆盖为申万行业(新版口径)全行业范围
目的:保证样本可交易、可比,减少停牌与异常标的导致的回测失真与实盘偏差。
2. 因子构建与样本过滤(信号生成)
在股票池之上构建打分信号,并进一步做样本质量控制。
(1)核心打分逻辑:成长减规模
- 成长信号:使用净利润同比增速的相对排名作为成长强弱衡量
- 规模约束:使用总市值的相对排名作为规模因子(规模越大排名越高)
- 综合得分:综合得分 = “成长排名” − “市值排名”
- 含义:在成长同等优秀的情况下,优先选择规模相对更小的公司;在规模相近的情况下,优先选择成长更强的公司。
(2)样本过滤(数据质量与风险控制)
- 剔除风险警示类股票
- 上市时间要求:上市满 252 个交易日(约 1 年)以上,避免新股不稳定阶段
- 剔除异常风险标记股票(避免财务与交易风险样本)
目的:让选股信号更稳定,减少新股与风险股对组合收益波动的影响。
3. 选股与仓位生成(从得分到组合)
将综合得分转为明确的持仓列表与目标权重:
- 排序方式:按综合得分从高到低排序
- 持股数量:选择得分最高的 10只股票
- 权重方式:等权配置(每只股票分配相同目标比例)
- 组合总仓位:满仓(总仓位100%)
目的:通过固定持股数量 + 等权方式实现分散化,避免单一股票对组合产生过高影响。
4. 数据抽取与回测区间设定
为回测准备信号数据与时间范围:
- 回测区间:2020年1月1日 ~ 2026年1月8日
- 预热天数:回测开始前额外取 90 个自然日数据,用于保证因子计算稳定
5. 交易执行与调仓机制(交易引擎)
策略按交易日执行调仓与交易:
- 调仓频率:每 1 个交易日调仓一次(每日调仓)
- 成交价格设定:使用开盘价作为买入与卖出的成交价格假设
- 初始资金:200万元
- 对照基准:沪深300指数
- 交易成本(按单):
- 买入费率:万分之3
- 卖出费率:千分之1.3
- 单笔最低手续费:5元
调仓逻辑:
- 读取当天的目标持仓列表(10只股票及其目标权重)
- 将“当前持仓中不在目标列表”的股票全部清仓
- 将“目标列表中的股票”调整到对应目标权重(等权)
绩效指标:
从2020年1月1日 ~ 2026年1月8日,累计收益1113.08%,年化收益53.89%,夏普比率1.51,最大回撤-40.38%
目的:使组合始终保持在最新的“成长强且规模相对较小”的优选股票集合中。
三、策略优势
- 基本面逻辑清晰:以净利润增长衡量成长性,具有明确经济含义。
- 成长与规模兼顾:成长排名叠加规模约束,有助于规避过度拥挤的大市值标的。
- 样本质量控制完善:剔除风险警示与上市不足一年的股票,减少不稳定样本干扰。
- 结构清晰、可扩展:股票池→信号→选股→仓位→交易,后续可无缝升级为多因子或引入组合优化。
四、潜在改进方向
- 降低调仓频率,控制换手与交易成本
- 当前为每日调仓,换手可能偏高。可改为每5个交易日或每周调仓,并加入“缓冲区规则”(得分变化不大则不换仓)。
- 对行业暴露做约束,提高风格稳定性
- 加入行业集中度限制,避免组合过度集中于少数行业导致波动增加。
- 加入波动率或流动性过滤,提升可交易性
- 加入成交额、换手率、波动率等约束,减少冲击成本与极端波动标的。
- 因子合成更精细化
- 目前为“成长排名减市值排名”的线性组合,可引入更多质量/估值因子,或使用滚动有效性加权。
- 增加组合级风控机制
- 引入最大回撤阈值降仓、波动率目标等风控开关,提升极端行情下的稳健性。
五、策略源码
https://bigquant.com/codesharev3/8c20ebb8-3aa4-4334-909a-27ea3fe82efd
\