← 返回报告库
配债池 · 限10并发选券 · 长历史 2017–2026 + OOS 纪律

配债池怎么选那 10 只:
挑券信号都没用,把「满则跳过」改成「排队等槽」才有效

配债池策略(过会公告日买正股 → 发行公告日卖)限 10 只并发时,到底该选哪 10 只?我本想找一套更好的选券信号,结果 9 年长历史 + OOS 一起测完,得到的是两个反直觉的结论:①“选哪只”几乎没差别(行业分散/低β/动量/小盘全部无效);②真正值钱的是换个“队列机制”——把满员就跳过改成排队等槽,四个维度全赢。

真实过会日(cninfo 逐家爬取)|937 笔候选 / 944 条过会记录|cap=10|等权|0.2%/边|train≤2024 / test 2025+ OOS
94%炒股 9 年,池子 94% 的交易日都在满员运行
~21 只门外常年排队的候选,远多于 10 个名额
37.0%排队机制的全期 CAGR(生产是 31.5%)
0 个挑券信号能通过 train+test 双赢的 OOS 检验
一句话结论。配债池的收益主要来自小盘 beta + “宣布配债”的事件漂移,不是“哪只券更会涨”。所以在满员的 10 个名额里换“选谁”的信号,统计上拉不出差别——行业分散、低β、动量、小盘,一个都过不了 train+test 双赢的 OOS 纪律。真正把收益抬上去的,是给了少量被“满员误杀”的券第二次机会:让过会券进队排队、有空位按 FIFO+反追高 15% 补上,而不是当天满员就永久跳过。这一个改动,全期 31.5%→37.0%、train 26.7→32.6、test 59.2→62.3、回撤 −34.9→−31.6,四个维度全赢,是唯一可信的优化方向。

一、先看清“选券”到底有多少空间

长历史并发利用率诊断(2017–2026)

937 只候选,cap=10
指标取值
全池日均并发~30 只(中位 30,最大 75)
满员(≥10 只)天数占比94%
门外平均排队候选~21 只
有券入场的交易日26%(每天平均 1.7 只过会)

直觉上“10 选多少”应该有巨大操作空间——9 年里有 94% 的日子池子满员、门外常年排 20 多只。如果“选谁”真能分出高低,这里就是最肥的战场。

二、挑券信号:一个都没用(长历史 + OOS 双杀)

排队池口径下的选券信号对比

train = 2017–2024,test(OOS) = 2025+;只有 train、test 都赢才算真改进
方案全期 C/S/Mtrain C/Stest C/S
生产:满则跳过·FIFO+gate1531.5 / 1.08 / −34.926.7 / 0.9659.2 / 1.68
排队·FIFO+gate1537.0 / 1.24 / −31.632.6 / 1.1462.3 / 1.79
排队·行业分散31.5 / 1.10 / −36.825.6 / 0.9565.3 / 1.85
排队·低β23.2 / 0.92 / −32.917.0 / 0.7358.8 / 1.76
排队·行业+低β31.6 / 1.15 / −34.126.1 / 1.0162.7 / 1.85
排队·小盘33.6 / 1.12 / −36.529.2 / 1.0158.7 / 1.71
排队·低动量26.2 / 0.94 / −39.320.1 / 0.7760.9 / 1.74
排队·高动量26.5 / 0.97 / −35.820.8 / 0.8159.1 / 1.74
排队·最迟过会优先(LIFO)26.8 / 0.97 / −36.421.7 / 0.8455.3 / 1.64

没有一个“挑券信号”在 train 和 test 同时赢过 FIFO:行业分散 train 反而更低(25.6 < 32.6)、低β/动量/小盘全期和 train 全面落后、最迟过会优先(LIFO)更是最差档。顺着“怎么选”这条线走,是走不通的。配债池的收益引擎不在选券,在 beta + 事件漂移本身。

三、真正的改进:把「满则跳过」改成「排队等槽」

唯一通过 OOS 纪律的改动

同参数、同成本,只改补位机制
全期 CAGR全期 Sharpe全期 MDDtraintest(OOS)
生产(满则跳过)31.5%1.08−34.9%26.7%59.2%
排队等槽(FIFO+gate15)37.0%1.24−31.6%32.6%62.3%
道理:现在生产是“当天过会、当天满员就永久跳过”——满员那一下,由恰好“今天刚过会”的券承担损失,哪怕它其实是只好券。改成排队后,过会券先进队,FIFO 排队,只要它到自己发行公告窗口之前还有槽位被补上,就不会被“满则跳过”误杀。这是把资金利用率从“随缘撞上”变成“排队先到先得”,捞回了原本被误跳过的正漂移。

代价要如实说:纳入笔数从 287 → 486,换手几乎翻倍(单边 0.2% 成本已含在内,净红利仍为正,说明值得);且排队口径的买入时点会晚于过会公告日(满员时得等),吃到的是漂移的中后段,真实滑点可能比理想下的 0.2% 更高——落地前要单独再验一次滑点与净换手。

四、一个必须写下来的数据纪律教训

回测里“每天在持谁”必须用「当天当时」的快照,不能错用回测跑完后的最终状态。我第一次实现时,算每日组合收益误用了循环结束时的 held 去回溯,导致 2017–2025 全部被判空、只剩最后 108 天,等于把“事后才知道的信息”当成了“当时就知道的”,是典型的前视/状态错位。修成按当天快照 hbd[date] 后数字才可信。这提醒:凡是“选谁/何时持有”的回测,都要逐日锁死状态边界。

五、诚实边界

这不是“排队就多赚 5 个点”的保证。① 换手翻倍,真实滑点/交易摩擦可能吃掉部分红利,需实盘前验证;② 排队口径买入时点后移,持有期变短、节奏更快;③ 收益本质仍是小盘 beta + 事件漂移的顺周期组合,2018/2022/2024 深回撤年份照亏(回撤虽从 −34.9 压到 −31.6,但仍是 β 性的);④ 单边 0.2% 是理想成本;⑤ 长历史基于真实过会日,但窗口只到 2026,不能外推未来发行节奏。

六、结论

  • “选哪 10 只”信号没用——行业分散/低β/动量/小盘/最迟过会优先,没有一项通过 train+test 双赢检验;配债池的收益来自 beta+事件漂移,不是选券。
  • 真改进 = 换队列机制——把“满则跳过”改成“过会排队、空槽按 FIFO+反追高15 补位”:全期 31.5→37.0%、train 26.7→32.6、test 59.2→62.3、回撤 −34.9→−31.6,四维全赢。
  • 排队优先服务“早过会、窗口够长”的券;窗口短、在排到前就到发行公告的,会出队不再入(既不白赚也不白亏)。
  • 回测必须逐日锁死“当天当时”持仓状态,否则会制造前视偏差。
  • 落地前要单独再验滑点与净换手;记住这里是 β + 事件漂移的顺周期组合,不是中性 alpha。
数据口径:长历史配债池,真实过会日(cninfo 逐家爬取,data/cb_pass_dates.json 944 条)与真实发行公告日(data/cb_ann_dates.json + 实盘 milestone 在途券),正股日线本地 daily 表 2017 起;cap=10 并发,等权,FIFO+反追高闸门 15%(入场前 10 交易日正股涨 >15% 跳过);选券信号含行业分散(申万一级)/β(对中证1000,入场前 60 日回归)/市值(总市值)/动量(入场前 10 日);train 2017–2024,test 2025+ 留作 OOS;每笔 0.2%/边。复现脚本见同目录 backtest.py收益为小盘 beta + 事件漂移的顺周期组合,非市场中性;历史不代表未来,不构成投资建议。
完成于 2026-08-07