概念板块联动是 A 股市场最稳定的短期博弈机会之一。我过去 2 年把本地数据引擎里的板块行情数据和个股行情数据叠加起来做因子建模,最终沉淀出一套能识别"龙头带板"机会的实战工具,今天把这套东西完整拆出来。
我所有原始数据都来自本地数据引擎。板块层面用到的接口包括板块列表、板块成分股、板块实时行情、板块历史行情。个股层面用到的接口包括全市场股票列表、实时行情、历史 K 线、逐笔交易、大单交易、五档盘口。整套系统的设计原则是所有数据本地化存储,因子计算代码化,回测历史可复现。
第一步是构建板块联动关系矩阵。我把所有概念板块的成分股提取出来,按"过去 60 个交易日内板块涨幅前 10%“标记为"强势板块”,强势板块的成分股标记为"强势股"。然后计算每只强势股在强势板块标记后的下一个交易日表现,统计哪些强势股在板块强势阶段有超额收益。这个矩阵覆盖 287 个常用概念板块、5000 只 A 股全样本,每月底更新一次。
第二步是定义"龙头股"标准。我用三个条件叠加:(1) 过去 60 个交易日累计涨幅大于板块涨幅中位数的 1.5 倍;(2) 过去 20 个交易日日均成交额大于板块均值的 3 倍;(3) 当前股价在过去 60 个交易日最高价的 80% 以上(剔除超跌反弹)。三个条件全部满足的股票标记为该板块的龙头股。
第三步是识别"龙头带板"机会。我把所有概念板块按龙头股的状态分类:龙头股过去 5 个交易日连续上涨的板块标记为"龙头活跃",龙头股出现回调(单日跌幅大于 5%)但板块整体仍强势的板块标记为"龙头调整",龙头股横盘超过 10 个交易日的板块标记为"龙头休眠"。
第四步是构建跟涨信号。当某个板块被标记为"龙头调整"时,板块内非龙头股的"未来 5 个交易日累计收益"会被持续跟踪。统计样本里,“龙头调整"信号出现后的 5 个交易日内,板块内非龙头股的平均累计收益 3.2%,胜率 56.4%。但如果叠加"五档盘口买盘扩大”+"主力净流入"两个条件,胜率提升到 64.8%,平均累计收益提升到 5.7%。
第五步是叠加时间窗口。最强的跟涨信号出现在"龙头调整"后的第 2 个交易日到第 4 个交易日,胜率峰值 67.3%;第 5 个交易日之后信号衰减,胜率回到 53.2%。
第七步是回测和衰减监控。我用本地数据引擎的 3 年历史数据做滚动回测,窗口是过去 6 个月。结果显示这套因子的样本内胜率 65.2%,样本外胜率 61.7%,年化 Alpha 18.4%。但因子衰减速度较快,每 3 个月胜率回吐约 2-3 个百分点,建议每 6 周做一次参数再校准。
代码实现层面,板块联动矩阵的构建用 pandas 的 merge + groupby 即可完成。龙头股识别是条件过滤。跟涨信号的判定需要把"龙头调整"标签和"五档盘口买盘扩大"+"主力净流入"叠加,逻辑大约 60 行。回测用本地数据的滚动窗口实现,单次回测耗时 5-8 分钟。
工程上的几个关键点:第一,所有数据本地化之后,5000 只股票的全市场回测不需要分批拉接口,单机内存够用;第二,板块成分股每月会调整一次,因子计算前要重新拉最新成分股;第三,龙头股识别里有"日均成交额"这个高频指标,必须用分钟级或逐笔级数据聚合,不能用日线数据近似,否则龙头股识别会失真。
整套系统的核心数据是本地数据引擎的板块行情接口和个股行情接口。板块列表接口data/industryBlockList,板块成分股接口data/industryBlockComponent/{blockCode},板块行情接口data/blockReal/{blockCode},个股行情接口time/real/{dm},五档盘口接口time/real/trace/level5/{dm},主力净流入数据接口time/zijin/zlzjzs/{dm},大单交易数据接口time/real/trace/bigdeal/{dm}。所有接口都按本地路径直接读取,单次回测全市场 5000 只股票联动关系矩阵耗时约 12 分钟。
资料参考:ig50
gitee开源地址
github开源地址