系列·柒(完结篇)。前六篇分别讲了数据层(astock)、新闻层(news-mcp)、因子层(factor-miner)、预测层(kronos)和决策层(laya)。这一篇不加新组件,把已有的东西串成一条完整流水线,用今天的真实盘后数据跑一遍——包括那个最危险的案例:一只上市首日涨 653% 的股票。
全家桶地图
先把 quant-agent-skills 的技能全景放出来(共 22 个技能,按层归组):
数据层 astock-data-mcp 行情/K线/龙虎榜/资金流/指数/板块(六域数据源)
news-mcp 多源抓取 → 去重 → 事件分类 → 情绪打分
研究层 factor-miner-mcp LLM 写因子 → 沙箱执行 → tearsheet 评估 → 因子库
kronos-mcp 零样本 K 线概率预测(Kronos / Chronos-2 双后端)
决策层 laya(本地决策引擎) 非自回归语义判断:choice / score / yes-no
(闸门逻辑) 数值规则代码判,语义规则 Laya 判
编排层 quant-agent-skills 把上面所有技能编排成可复用的 Agent 工作流
前六篇已经把每一层单独拆开看过真实输出,这一篇回答最后的问题:它们之间怎么接,接起来之后表现如何。
流水线设计
一个可实盘化的每日收盘后流程:
15:05 astock.get_a_billboard_daily 拉当日龙虎榜
↓
初筛(代码):剔除 ST、剔除上市 < 60 日新股
↓
构造"状态文本":涨幅/净买/换手/上榜原因,逐条规则
↓
Laya 逐条判定:r1~r5 每条输出 P(true)
↓
代码合成:全部通过 → 进入风控分级;否则拒绝
↓
输出:候选名单 + 每条规则的通过概率(可审计)
审计性是这条流水线和"直接问 LLM 今天买什么"的本质区别:每条规则的判定概率都落盘,事后可以复盘"当时模型为什么放行/拒绝"。
真实运行:2026-09-29 盘后
今天的龙虎榜共 72 只。为控制篇幅,跳过初筛直接取 3 个风格迥异的候选(真实数据):
000002 万科A 涨幅 9.97% 净买 15960.8万 换手 8.26%
上榜原因: 日涨幅偏离值达到7%的前5只证券
002074 国轩高科 涨幅 10.01% 净买 36838.5万 换手 2.66%
上榜原因: 日涨幅偏离值达到7%的前5只证券
301716 鸿富诚 涨幅 653.16% 净买 42004.1万 换手 84.54%
上榜原因: 无价格涨跌幅限制的证券 ← 新股上市首日
规则设定(r1~r5):r1 当日涨幅合理(非异常暴涨)、r2 龙虎榜资金净流入为正且量级足够、r3 换手率处于可交易区间(8.26% 和 2.66% 合理,84.54% 明显过热)、r4 非新股上市初期、r5 上榜原因为正常波动而非异常交易。
Laya 逐条判定的真实输出:
--- 万科A (000002) 602 ms
r1_change=0.86✓ r2_netbuy=0.90✓ r3_turnover=0.18✗ r4_not_new=0.60✓ r5_reason=0.15✗
风险: medium (1.10/2) | 决策: skip (P=0.34) → ❌ 拒绝
--- 国轩高科 (002074) 492 ms
r1_change=0.84✓ r2_netbuy=0.64✓ r3_turnover=0.42✗ r4_not_new=0.61✓ r5_reason=0.17✗
风险: medium (1.03/2) | 决策: buy (P=0.36) → ❌ 拒绝
--- 鸿富诚 (301716) 496 ms
r1_change=0.58✓ r2_netbuy=0.50✓ r3_turnover=0.25✗ r4_not_new=0.82✓ r5_reason=0.11✗
风险: medium (1.35/2) | 决策: buy (P=0.36) → ❌ 拒绝
逐案复盘:模型哪里对了,哪里错了
三只全部拒绝,方向正确——尤其是鸿富诚。但仔细看概率,错误不少,值得逐个说:
鸿富诚的 r1_change=0.58✓ 是明显的误判:一只首日涨 653% 的股票,"涨幅合理"的概率给了 0.58 还判了通过。零样本模型对"653%"这种极端数值的敏感度不够(第 6 篇的结论再次出现:数值判断不要交给模型)。好在 r3(换手 84.54% 过热,P=0.25✗)和 r5(无涨跌幅限制的上榜原因,P=0.11✗)双保险,最终还是拒绝了。闸门的设计价值就在这里:不要求每一条都对,只要求错误的票至少撞上一条对的规则。
万科A 的 r3_turnover=0.18✗ 可疑:8.26% 的换手对一只涨停地产股其实是正常量级,模型给了偏低的通过概率。r5_reason=0.15✗ 也偏严——"日涨幅偏离值达到7%"是涨停股最常规的上榜原因。这只股票被错误拒绝,属于第 6 篇说的"偏严的代价是少赚钱"。
国轩高科的拒绝基本合理:10.01% 涨停 + 36838.5万 净买,看起来像强势票,但模型对 r3/r5 都不认可,叠加后拒绝——对这个案例,模型的保守是对的(单日龙虎榜净买巨大不等于后续可追)。
单规则零样本准确率大约七成,和第 6 篇的评估一致。要让这个闸门达到实盘标准,下一步是微调:拿历史龙虎榜案例标注"通过/拒绝",在 Laya checkpoint 上做几百步的 fine-tune,通常能把单规则准确率推到九成以上。微调是 Laya 官方支持的路线(checkpoint 就是标准 HF 格式)。
回顾整个系列
七篇下来,这套东西的方法论可以浓缩成四句话:
- 数据源是会死的(第 2 篇的涨停池失效、第 3 篇的财联社不可达)——多源冗余和"失效 ≠ 无数据"的区分,比任何单源数据质量都重要。
- AI 生成的策略资产必须过工程纪律(第 4 篇)——因子要过沙箱和 OOS,新闻要过去重和分类校验。
- 预测层和决策层要分开(第 5、6 篇)——Kronos 给概率预测,Laya 做语义闸门,谁也不越权做对方的判断;数值规则永远归代码管。
- 整条链路要可审计(本篇)——每条规则的 P(true) 落盘,决策可以复盘,这才是量化系统和"聊天问股"的分水岭。
这套全家桶的每个组件都是开源的,单组件可以独立用(只要行情数据就选 astock-data-mcp),也可以按本篇的流水线串起来。服务器上 Docker 一键部署,本地开发单机即可跑通研究链路。
项目地址:github.com/JingxuanC/quant-agent-skills 各组件: astock-data-mcp · news-mcp · factor-miner-mcp · kronos-mcp · laya