
构建量化股票筛选框架
建立系统化筛选流程,覆盖数据获取、因子计算、打分排序、流动性过滤与回测验证。核心是让规则代替主观判断,确保每只入选股票都有数据支撑。
数据准备与预处理
从聚宽、Wind或Tushare获取A股日线数据,包括价格、成交量、财务指标。剔除ST股、上市不足60天的新股,以及停牌超过30天的股票。处理缺失值,采用行业中性化处理,消除行业偏差。

因子库设计
因子分为四大类:价值因子(市盈率、市净率)、成长因子(营收增长率、净利润增长率)、质量因子(ROE、毛利率)、动量因子(过去20日收益率、波动率)。每类选取1-2个代表性因子,共8个因子。因子需做标准化与去极值处理,避免极端值干扰。
因子计算公式
价值因子:EP = 1 / 市盈率TTM,BP = 1 / 市净率MRQ
成长因子:营收同比增速 = (最新季度营收 - 去年同期营收) / 去年同期营收
质量因子:ROE = 净利润 / 净资产,毛利率 = (营业收入 - 营业成本) / 营业收入
动量因子:动量 = 过去20日累计收益率,波动率 = 过去20日日收益率标准差
多因子打分模型
采用加权打分法,每只股票得分为各因子标准化值乘以权重之和。权重可通过IC加权或等权方法确定。等权简单易于实施,IC加权更科学但需历史数据估算。打分后进行排序,选取综合得分前10%的股票进入候选池。
示例代码(Python)
import pandas as pd
import numpy as np
def factor_score(data, weights):
# data为DataFrame,每行为股票,每列为因子值
# 标准化
data_norm = (data - data.mean()) / data.std()
# 加权求和
score = data_norm.dot(weights)
return score
# 假设有8个因子,权重列表
weights = np.array([0.15, 0.15, 0.1, 0.1, 0.1, 0.1, 0.15, 0.15])
scores = factor_score(factor_data, weights)
top_stocks = scores.nlargest(int(len(scores) * 0.1)).index
流动性过滤与交易约束
候选股票需满足平均日成交额大于5000万元,或换手率在1%-10%之间。剔除停牌、涨跌停无法买入的股票,以及上市不足一年。通过流动性过滤确保交易可行,避免冲击成本过高。
风险控制维度
组合层面设置行业分散度,单一行业不超过30%。个股最大权重不超过5%,最小权重不低于0.5%。设置止损线,单日回撤超过3%或累计回撤超过10%时强制减仓。
回测与参数优化
使用2018年至2023年数据回测,设置调仓频率为月度。回测中计算年化收益率、夏普比率、最大回撤。通过参数扫描调整权重和阈值,寻找最优组合。
回测框架
# 使用backtrader或聚宽回测
import backtrader as bt
class FactorStrategy(bt.Strategy):
def next(self):
# 每月初调仓
if self.datetime.date().day == 1:
# 选出标的
selected = select_stocks(self.datas)
# 调整仓位
self.rebalance(selected)
if __name__ == '__main__':
cerebro = bt.Cerebro()
# 添加数据、设置策略、运行回测
实盘适应与动态更新
量化模型需定期更新因子权重和阈值,适应市场风格变化。月度回测后调整参数,但不要过度优化过去数据。实盘中加入交易成本、滑点模型,减少与实际偏差。
最终决策与人工监督
机器筛选后,投资经理需人工复核异常股票,如突发利空事件、财务造假嫌疑。量化模型提供候选池,最终决策结合基本面调研。
量化筛选的市场适应性
模型应适应不同市场状态,牛市偏重动量与成长因子,熊市偏重价值与低波动因子。可通过市场状态信号动态调整因子权重。
市场状态判断
使用上证指数200日均线判断牛熊。指数位于200日线上方且20日线向上为多头市场,反之为空头。多头市场加大动量因子权重,空头市场加大低波动率因子权重。
行业轮动效应
A股行业轮动明显,量化模型需包含行业因子或进行行业中性能处理。将行业中性化可防止过度集中于某热门行业。
模型验证与监控
建立每日监控程序,检查因子暴露、实际收益与预测的相关性。若信息系数(IC)持续下降,则因子失效,需寻找新因子。
因子有效性评估
定期计算因子IC值(因子值与下期收益的Spearman相关系数),若IC均值小于0.02或t值不显著,考虑剔除。
组合归因
通过Brinson归因分析收益来源,区分选股与配置贡献。有助于调整策略。
工具与平台选择
个人投资者可使用聚宽、米筐等在线平台,内嵌因子库与回测系统。机构投资者可自建数据服务器与算法交易系统。Python是主流选择,结合pandas、numpy、scikit-learn。
数据源注意事项
财务数据存在滞后性,需使用最新公告数据。复权价格需处理除权除息,使用前复权数据进行因子计算。
定义股票池:非ST、上市一年以上、流动性达标。
因子计算:定期获取财务数据与行情数据。
打分排序:加权求和,取前十分之一。
风控过滤:行业限制、个股止损。
回测验证:历史收益与风险指标。
实盘执行:自动交易系统,每日监控。
量化模型筛选本质是统计规律的运用,不保证无亏损。需结合严格纪律与风险预算,持续迭代优化。