跳转至

推荐股池量化策略(Stock-Pool Strategy)需求文档

版本 v0.1|2026-09-05|状态:需求澄清 + 文献调研完成,策略未开工;待拍板项见 §9 需求来源:用户希望以脱水研报推荐个股为股池构建量化策略。核心判断:①推荐个股是筛选过的优质标的,值得至少 60 日关注;②但推荐节点常与大盘/题材/个股走势错配(推荐即大涨→追高有风险;迟迟不启动→时间成本高);③无脑批量买入≈买指数。

1. 背景与问题

1.1 用户核心判断(需求转述)

  1. 股池价值假设:研报推荐个股经过基本面/题材筛选,是"次优股全集",值得 60 日以上关注窗口。
  2. 错配问题:推荐时点 ≠ 最优买点。两类错配方向相反:推荐日已大涨(追高风险)vs 推荐后长期不启动(时间成本)。
  3. 同质化问题:不筛选不择时地批量买入,收益特征退化到指数级别,失去股池价值。
  4. 异质性前提:脱水研报内容类型不一(当日热点行情解读 / 评级调整 / 调研纪要 / 题材强股 / 单券商深度),不同类型的信号含义和预期收益结构不同,不能混为一个信号。

1.2 数据侧事实(2026-09-05 本地库实测)

维度 实测值 含义
编辑打标个股提及 report_stock 17,554 条 / 2,975 只 2023-11 ~ 2026-09,近 3 年
观点单元个股提及 section_stock 42,519 条 / 2,809 只 密度 2.4×,主源(提及表覆盖水分已知,见 daily-brief-prd §4)
日均新增去重个股 11~27 只 股池每日流入量
60 日滚动股池(全口径) 537~682 只 ≈全市场 10~13%,大池
60 日滚动股池(is_core 或带 reason_type) 257~289 只 精选池,规模适合组合
is_core=1 强证据 983 条(5.6%) 大涨题材行直接配对,稀缺高价值
reason_type 覆盖 6,449/17,554(37%) 供需价格 2081 > 技术进展 1169 > 业绩 1085 > 事件催化 819 > 政策 709…
评级事件 rating_event 仅 25 条(首次覆盖 12/维持 10/上调 3) 撑不起独立策略,只能做叠加信号
重复推荐集中度 机器人 96 次、中际旭创 77、阳光电源 66… 头部个股反复推荐,共识与拥挤并存

三个待解问题与数据能力的映射:错配→需要行情数据+入场规则(库内无行情,§8);同质化→横截面分层信号已具备原料(is_core/reason_type/栏目/重复次数);异质性→栏目+类型+证据强度三层标签可切分。

2. 用户与场景

  • 单用户(本人)研究型内部工具。数据底座是 xgb_wiki 本地库(每日增量同步),策略是新引擎,不改动现有 wiki 功能。
  • 预期产出链:回测框架 → 策略规则验证 → 每日候选清单(远期与 /daily Watchlist 衔接,形成"研究→跟踪"闭环)。
  • 评估准绳:风险调整后收益(年化/Sharpe/回撤),不是单次暴击。

3. 核心诉求拆解

# 诉求 含义
S1 推荐股池 股池 = 推荐事件驱动动态集合,标的保留 60 日(默认,可调)后衰减出池
S2 信号分层 按内容类型区分信号:栏目(6 digest+9 live)/ reason_type(8 类催化)/ is_core(强弱证据)/ 评级事件叠加
S3 入场时点 解决错配:推荐 ≠ 买点,需显式入场规则(追涨/等回调/确认突破的对比实证)
S4 横截面优选 池内选股:证据强度、题材热度、推荐密度、低关注度等维度打分,避免指数化
S5 回测验证 A 股约束下的诚实回测(T+1/涨跌停/费用/前视偏差),显著跑赢等权随机池才算数
S6 收益最大化 在 S1~S5 约束下最大化风险调整后收益;"时间成本"显式建模(未启动退出规则)

4. 文献与业界证据

4.1 推荐事件后漂移(股池价值假设的外部证据)

  • Womack (1996) 经典结论:买入推荐事件后漂移仅 +2.4% 且短暂;下调评级漂移 −9.1%、持续 6 个月——卖出方向信息量更大且更持久(但 A 股个股无便捷做空,实操以"回避负面"为主)。
  • 中金《十问十答:A 股事件驱动》:间隔一年后的深度报告覆盖,事件后 5 日平均累计超额 +2.9%、胜率 59.4%;"上调盈利预测+标题含超预期"在 5/60 日窗口均有显著超额——5 日与 60 日两个窗口正好对应本项目短/中期持仓假设。
  • 分析师重新覆盖(BigQuant 学海拾珠系列转述):同一分析师重新覆盖月均超额 +0.55%,上调评级 +0.64%。
  • 多事件组合事件驱动策略(土法炼钢等实践口径):A 股扣费后年化超额 5%~12%,Sharpe 1.0~2.0,最大回撤 8% 内——单事件信号有限,组合多事件才稳健。
  • 迁移判断:脱水研报提及 ≠ 券商原始推荐事件(存在编辑二次筛选与小时级滞后),漂移幅度预期应打折,必须用本地数据自证(M2 基线)。

4.2 入场时点(错配问题的直接文献)

  • 华安证券《涨停板背后的 Alpha:首板回调策略》:5 年累计 124.99%、年化 18.21%、Sharpe 1.09;关键结论"买入端是关键战场",把回调上限收紧到 +3%(浅回调)显著提升收益——深回调意味着动量失败,不回调(追涨)承受未封板/高开逆向选择。浅回调带入场是可直接迁移的工程规则。
  • 打板/追涨实证:封板与否决定次日表现("一个天上一个地下"),收盘时点无法确知封板,追涨天然信息劣势。
  • A 股动量与反转交替主导(一天一因子系列),短期高换手削弱动量——时点规则不能只看单一形态。

4.3 关注度与拥挤(解释"热点解读类推荐为什么危险")

  • Heyman et al. (2019):高投资者关注度增强短期反转策略年化 +9.1%;Zhao (2024):滞后关注度与当期收益负相关。
  • 媒体报道同时是注意力驱动器与信息不对称削减器(Dong 2022);A 股散户注意力渠道显著(<30% 投资者基于财报决策)。
  • 迁移判断:选股宝是零售注意力聚合器——"当日热点行情解读"类推荐发布时标的往往已被关注推高,短期反转风险大;而"评级调整/调研纪要"类属于慢变量信息,拥挤度低。这为 S2 信号分层提供了理论依据:栏目/类型不只是标签,预期收益结构不同。

4.4 对本项目的四条启示

  1. 漂移存在但幅度有限 → 靠横截面分层放大(强证据/首次推荐/低关注子集),不靠全池 beta。
  2. 入场规则比选股规则可能更重要(华安"买入端是关键战场")→ S3 与 S4 至少同等优先级。
  3. 类型异质性有文献支撑 → 栏目 × reason_type × is_core 的条件化分析是必做实验而非可选项。
  4. 热点类信号自带拥挤 → 需要"推荐密度"“近期涨幅"类拥挤度特征做风险调整。

5. 策略假设空间(三视角 ideation,每视角 5 条)

5.1 策略研究视角(Alpha 假设)

  1. 证据强度分层漂移:is_core > 带 reason_type > 普通提及,三档独立测事件后 N 日收益分布;强证据子集漂移更强。
  2. 催化类型条件化:8 类 reason_type 的漂移半衰期不同(供需价格/产能=慢变量长漂移;事件催化/资金动向=短脉冲快衰减)——分类型定持有期。
  3. 栏目条件化:每日强股(题材动量强但拥挤)vs 评级慧选(评级漂移)vs 直击一线(公司口径慢变量)vs 每日谈(单券商深度、信息最完整)——各栏目事件后收益 profile 分离。
  4. 低关注优选:首次被推荐 / 60 日内推荐密度低的个股,漂移强于反复推荐的热门票(关注度反转文献的对偶假设;头部 50~96 次重复推荐是天然对照组)。
  5. 共识强化动量:60 日内被 N 家不同来源反复推荐 = 共识累积(与 4 是竞争假设,靠数据裁决,警惕拥挤化)。

5.2 交易执行与风控视角

  1. T+1 现实入场:digest 发布于 15:35~17:20,最早可得信号=当日收盘后 → 唯一无前视入场=次日开盘;所有回测以此为准。
  2. 涨跌停约束:一字板/触板不可成交标记;涨停次日高开跳空的成交价按可成交假设显式声明。
  3. 浅回调入场单:推荐后 60 日窗口内,股价首次回落至事件后高点 −3%~−8% 带内(参数待扫)且不破关键均线时入场——华安结论的迁移版。
  4. 时间止损:入场后 N 日(如 10/15 日)未达预期涨幅即退出——直接回应"时间成本"痛点;与常规止损(比例/均线)对比。
  5. 仓位与容量:等权 vs 信号强度加权 vs 推荐密度加权;池满 50 只时的换手率、费用敏感性、单票仓位上限。

5.3 数据与工程视角

  1. 行情数据管线(当前最大缺口):个股日线 OHLCV + 指数基准 + 涨停标记 + ST/停牌状态;候选源 akshare/baostock(免费)或 tushare(积分制),本机 pip 走清华镜像可用。
  2. 事件表派生:strategy_event(stock_code × date × 栏目 × reason_type × is_core × 推荐密度 × 首次/重复标记),从 section_stock(主源)+ report_stock(交叉)派生,幂等可重建。
  3. 轻量事件回测引擎:向量化事件对齐(事件日→次日开盘成交→N 日持有收益),不引完整框架;费用/滑点/可成交性显式建模。
  4. 与 /daily 衔接:策略每日候选清单输出进 Watchlist 或简报(远期)。
  5. 数据质量护栏:复权处理(前复权回测)、退市股包含(幸存者偏差)、提及口径水分护栏(以观点单元层为主源)。

6. 优先级 Top 5(跨视角收敛,含待验证假设)

# 策略方向 优先级 理由 关键待验证假设
1 事件漂移基线 + 三层切分(证据强度/栏目/类型) P0 一切策略的地基;不做基线,后续所有规则无参照系;数据已齐(只缺行情) 被推荐后 5/20/60 日收益显著为正且强证据子集更强
2 浅回调入场引擎(vs 次日开盘直接买 vs 追涨确认) P0 直击错配痛点;文献最强支持(华安);规则简单可解释 回调带入场收益风险比优于直接入场,且不漏掉大波段
3 时间止损退出规则(未启动 N 日退出) P1 直击时间成本痛点;与入场规则正交可独立验证 时间止损提升资金周转与年化,代价(错过晚启动)可量化
4 横截面优选打分(强度+低关注+题材热度−拥挤) P1 解决"≈买指数";基线出来后特征排序自然浮现 打分 Top-N 组合显著跑赢池内等权随机对照
5 栏目/类型条件化持有期 P2 S2 异质性的最终兑现;依赖 #1 基线结论 不同栏目的漂移半衰期差异显著且样本量足够

每个策略的对照基线固定为:中证全指 + 池内等权随机抽样组合(回应"≈买指数":跑不赢这两个对照的策略一律否决)。

7. 回测协议(防自欺条款)

  1. 前视偏差:信号可用时刻 = digest display_time(当日 15:35 后);回测入场最早 T+1 开盘,严禁使用事件日收盘价入场。
  2. A 股交易约束:T+1 卖出;涨跌停不可成交(一字板跳过并记录);停牌顺延;ST/退市状态跟踪;费用按佣金双边 + 卖出印花税 + 滑点显式计入。
  3. 幸存者偏差:2023-11 起池内个股含已退市者必须保留(行情源需支持退市股,选型时验证)。
  4. 样本设计:2023-11 ~ 2025-12 为训练/调参段,2026 起为样本外验证段;类型切分维度多,警惕多重检验(对照组与样本外必须保留)。
  5. 指标口径:年化收益、Sharpe、最大回撤、胜率、盈亏比、换手率、单边费用;事件研究口径(CAR/超额收益 vs 中证全指)与组合口径(净值曲线)双轨呈现。
  6. 诚实条款:参数扫描结果一律报告全参数面,不得只报最优格。

8. 数据缺口与依赖

缺口 现状 方案
个股行情(最大缺口) 库内无任何行情数据 引入日线 OHLCV+复权+涨停标记+退市标注;akshare/baostock/tushare 选型见 §9-2
指数基准 无 中证全指/中证 500 日线,同源引入
事件表 散落在 section/report 两层 派生 strategy_event 视图或物化表,幂等重建
提及口径水分 已知(编辑打标覆盖 ~20-37%) 以观点单元 section_stock 为主源,report_stock 做交叉增强
评级事件 仅 25 条 不做独立策略,作为个股信号叠加层

9. 待拍板(按异步协作模式,写档待次日决策)

  1. 策略代码归属:xgb_wiki 内新模块(xgb_wiki/strategy/,复用 db 与同步链)vs 独立项目(读 wiki 库文件)?倾向前者(单一事实源),但会增大 wiki 项目边界。
  2. 行情数据源:akshare(免费、接口杂、速度慢、无积分门槛)vs tushare(数据规整、需积分/token)vs baostock(免费稳定、覆盖一般)?需先各拉一小批验证退市股与复权口径。
  3. 回测范围:全口径池(60 日 680 只)先行 vs 精选池(is_core/typed,~270 只)先行?倾向精选池(信号干净、组合规模合理),全池做对照。
  4. 资金假设与容量目标:模拟资金规模(影响滑点假设与容量约束)与可接受换手率上限?
  5. 是否引入日内/涨停时序数据:决定"打板/封板确认"类策略是否在射程内(日线数据做不了封板确认,首期可不做)。

10. 路线图

  • M1 数据地基:行情管线引入+事件表派生+前视口径落地(行情源拍板后 1~2 个工作日)。
  • M2 漂移基线报告:全池+三层切分的事件后收益分布(回答"股池到底有没有 alpha")。
  • M3 入场引擎对比:次日开盘 vs 浅回调带 vs 确认突破,参数面+样本外。
  • M4 组合与退出:横截面打分 Top-N 组合+时间止损,完整净值回测 vs 双对照。
  • M5(远期):每日候选清单产出,接 /daily Watchlist,形成研究→跟踪闭环。

参考文献