从行情数据到实盘买入
这套系统怎么运转
一套覆盖 研究 → 回测验证 → 实盘自动选股 全链路的 A 股量化系统。 本页用大白话 + 流程图,讲清楚每个环节做什么、为什么这么设计、以及背后的风险控制 —— 不涉及代码与具体策略参数。
📖 怎么读这一页
全文按"一只股票如何从行情变成买入信号"的顺序展开。每个环节都有三类提示框:
这一环在赚钱链条里负责什么。
背后的取舍与考量。
不做好就会亏钱的地方。
赚钱逻辑:核心思想 WHY
所有工程都是为了实现一个朴素的判断。理解它,后面每个环节为什么存在就都顺了。
「站在拉升主力的视角,做大规模找针」
A 股的超额收益来自识别 强力主力为"邀请散户跟风"而布置的信号,跟着进场、并赶在主力撤离之前先走。几条关键判断:
- 拉升是为了出货,而出货必先控盘 —— 所以"控盘"痕迹会出现在"拉升"之前,我们要抓的是更早的控盘阶段。
- 单笔成交可以伪装,但 K 线和板块不好伪装 —— 主力要让散户跟风,就必须把走势画得好看;这种"不得不真"的信号才可信。
- 板块天然抗操纵 —— 一只股票可能被一个主力操控,但一个板块集体异动需要多方共振,造假成本极高,所以板块层面的信号最值得信赖。
- 追求可信、可复现,而不是虚高的命中率 —— 宁可边际小一点,也要确保是真的。
信号藏在海量行情里 → 需要因子环节做大规模廉价扫描; 容易自欺 → 需要研究环节的严格纪律 + 回测环节用真实规则做最终裁判; 机会有时效 → 需要实盘环节每天盘后自动重训、选股、次日执行。
端到端价值链 FLOW
一只股票从"原始行情"变成"实盘买入信号",要走完下面这条流水线。
快速扫描全市场很便宜,但会系统性地高估收益。所以快速扫描只用来缩小候选范围;真正下结论,必须用贴近真实成交的回测引擎来验证,避免"纸面上很美、实盘亏钱"。
数据保证干净可信,因子把行情翻译成信号,模型学会识别机会,回测验真伪,实盘每天自动落地。环环相扣,上一环脏了下一环就白做。
系统模块总图 MAP
系统自下而上分层协作:底层提供地基,越往上越接近"投资决策"。还有一条贯穿全栈的A 股交易规则。
⟂ 横切全栈 · A 股交易规则
涨跌停、T+1、手续费印花税 —— 这些不属于某一层,而是注入到回测和实盘的每一笔成交判定里,确保模拟和实盘都贴合真实市场。详见 A股交易规则。
① 数据:可信地基 基础
数据从哪来、怎么进系统
原始行情和加工后的因子用两套独立存储、互不混用:原始数据保持原样可追溯,加工结果便于快速查询。职责清晰,出问题好定位。
系统在每天数据入库前设了一道硬质量闸门:当天数据如果出现"大面积缺失""成交量异常""价格越界"等疑似损坏迹象,就整天拦下、隔离、并自动重新拉取,绝不让脏数据流进后续计算。另有定时的"心跳"健康检查,数据迟到会自动告警(企业微信 + 语音)。
① 除权日的参考价必须用交易所官方值,本地公式重算会算错涨跌停区间; ② 判断"是否停牌"要看当天有没有成交量,不能信可能过期的状态字段。
② 因子:找针的扫描器 核心引擎
因子有哪些家族
| 家族 | 用大白话说,它在看什么 |
|---|---|
| 价量 K 线 | 价格和成交量的形态、趋势、波动 —— 最基础的"走势好不好看"。 |
| 资金流 | 从逐笔成交还原主动买卖:谁在主动扫货、谁在悄悄出货、有没有对敲洗盘、有没有冰山大单。 |
| 筹码分布 | 持仓成本的分布与集中度 —— 主力是否在低位吸够了筹码、套牢盘压力在哪。 |
| 板块 | 把个股聚合成板块,看板块整体的强弱与宽度 —— 抗操纵、最可信的一层。 |
| 指数 / 市场情绪 | 大盘环境、市场宽度与情绪 —— 判断"现在适不适合出手"。 |
因为要在全市场上千只股票、海量逐笔成交里找信号,因子必须能批量、廉价、高速地算出来。系统用了高度并行的计算方式,全市场一天的因子可以在很短时间内算完,这样才能支撑每天的滚动重算。
逐笔数据动辄数千万行,如果用低效的逐行处理,一天的计算可能要跑几十分钟甚至卡死;改成批量向量化后同样的工作几秒就能完成。这是一条硬性的工程红线。
计算分两步走,所以能"只算新增"
第一步 · 当天能算的
只看当天行情就能得出的信号(如当日形态、当日资金流),每天独立计算,可以充分并行。
第二步 · 需要回看历史的
需要一段历史窗口才能得出的信号(如趋势、滚动统计),在第一步基础上叠加计算。
计算的先后顺序
③ 研究:训模型与选股 决策大脑
第一步 · 因子筛选:去伪存真
面对上千个因子,先用统计指标衡量每个因子的预测能力和稳定性,再去掉互相高度重复的,只保留少数既有效又彼此独立的因子。(具体的衡量标准与阈值属于内部配置,本页不展开。)
第二步 · 训练模型:学习"会涨的样子"
给模型看历史上"后来涨了"和"没涨"的样本,让它学会从因子里识别机会。其中如何定义"算成功"(标签)、用哪些股票训练、用什么评价标准,都是策略配方的一部分。
具体的标签定义、入选条件、评价口径等,属于核心策略参数,本业务版文档刻意不展开 —— 这里只说明"系统具备这些能力",不披露具体取值。
第三步 · 滚动验证:确认不是碰运气
模型"训练 → 隔离 → 在没见过的未来时段测试",并不断向前滚动 —— 这样得到的成绩才接近实盘真实表现,而不是对历史的死记硬背。验证时还内置了一套风控规则(连续亏损、回撤过大、单仓过重、行业过于集中等会自动收紧或停手)。
第四步 · 双模型选股
呼应核心思想:板块层最抗操纵,先用板块模型把关"这个方向是不是真的强",再用个股模型在强势板块里挑接力个股。两者独立判断、综合排序,而不是简单相乘,也绝不把一个模型的结论偷偷喂给另一个 —— 否则就失去了"两个独立视角互相印证"的意义。
贯穿研究的铁律:防自欺
量化最大的陷阱是"未来函数"——不小心用到了当时还不知道的信息,导致历史成绩虚高、实盘却亏钱。研究环节有一整套纪律来杜绝它,详见 防自欺:未来函数。
历史上曾有策略因为这类"偷看未来"的错误,纸面收益翻了十几倍,诚实重算后绝大部分收益消失。凡是高得离谱的回测结果,第一反应必须是"先查有没有泄漏",而不是高兴。
④ 回测:最终裁判 验真伪
它比"简单估算"严格在哪
真实成交规则
涨停买不进、跌停卖不出、当天买的明天才能卖 —— 这些都会真实地挡住交易。
真实成本
每一笔都扣手续费、卖出再扣印花税,账户现金不够时会真实地买不进。
真实盘口
逐笔模式下按真实买卖盘深度成交,量太大吃不下时不会"假装全成交"。
简化估算往往把收益算得过于乐观(流动性、成本、规则限制都被忽略)。只有贴近真实成交,才能在投钱之前就发现"看着很美其实做不到"的策略。系统因此规定:完整策略必须走真实回测引擎,禁止手写简化模拟。
回测之后还要"对账"
跑完回测不能只看一个总收益数字,系统会自动产出明细(每一笔成交、每天的净值、被规则拦下的订单等),并做一致性核对 —— 确认"所有买入最终都对应了卖出""没有遗漏的持仓",结果才算可信。
曾经因为一个成交撮合的细节没处理好,几个持仓被"无声地长期挂着"吃账面浮盈,让某策略的回测收益虚高了一大截,对账后才发现真实收益只有原来的零头。这就是为什么"对账"是回测不可省略的一步。
⑤ 实盘:自动选股 落地
每天自动跑的一条线
三个关键的可靠性设计
🛡️ 永不无声崩溃
常驻服务遇到行情中断、数据缺口等问题时,会大声记录、告警、退避后继续,而不是悄悄退出。周末、盘前等正常等待状态也能识别。
📒 账本是唯一真相
持仓和成交以一本可靠的"账本"为准(不是内存里的临时状态)。改持仓、切策略、换候选名单,很快就能热生效,无需重启。
💾 内存安全闸门
重训前会检查内存是否充足、有没有别的训练在跑,绝不允许两个大模型同时训练,否则会拖垮服务器。
实盘环节宁可慢、宁可多校验,也要保证:持仓数字永远准、出问题第一时间有人知道、任何异常都有据可查。所有对交易框架的改动都要经过额外的代码评审才能上线。
⑥ 通知与运维 护栏
分流推送
运维类消息和操盘类消息分开推送到不同的群/通道,各看各的,互不干扰。
失败不阻断、不丢失
通知发送失败只会自动重试,绝不会因为"发通知"而卡住"做交易";积压过多会反过来告警提醒。
🤖 Agent 自动研究流程 研究方式
研究团队:一个主控 + 一群专家 + 一个第二意见
🧭 主控 Agent
提出研究假设、拆解任务、编排全流程、动手写策略、汇总结论。是整场研究的"项目经理 + 主力研究员"。
🔧 专家 Agent
每个深耕一块:数据、因子、回测引擎、模型训练、策略执行。遇到对应模块的问题就委派给最懂它的专家,又快又准。
🕵️ 审计 / 第二意见
独立的"挑刺"角色:未来函数猎手、模型评估、逐笔成交分析、性能审计,以及外部模型 codex 提供独立复核。
① 并行覆盖:多个方向可以同时扫;② 专家更懂细节:各模块交给专门 Agent,少踩坑;③ 独立视角互相印证:得出结论后,由没参与得出该结论的审计 Agent 来反驳挑错 —— 这种"对抗式验证"能拦下很多"看着对其实错"的结果。
一轮研究怎么跑(自动闭环)
这套流程的真实留痕
这不是纸上谈兵。仅最近一个月(2026-05-14 → 2026-06-15)这一条研究线,就在知识库里留下了可核查的痕迹:
每篇记录都带结构化标签(类型 / 状态:草稿·进行中·已结论·已证伪·被取代)、内联的复现命令、逐日净值与结果表,以及关键产物的 SHA256 指纹(可逐字节核对是不是同一份结果)。标准是"仅凭这一页就能把实验重建出来"。失败的尝试也照写不误 —— 否则下次又会重走同一条弯路。
真实失败案例:一次被审计拦下的"假暴富"
这是项目里真实发生过的一次失败 —— 它最能说明"为什么得出结论后还必须让独立审计去挑错"。
背景:某个策略的回测结果好得惊人 —— 收益翻倍、风险调整后的成绩也高到不像真的。如果直接相信,很可能就拿真金白银上了。
*夏普比率:衡量"承担每一分风险换来多少收益",越高越好;6.77 是几乎不可能持续的水平,本身就是危险信号。
如果当初直接相信那份"暴富回测"上了实盘,亏的就是真钱。正是"由没参与得出结论的人来独立挑错"这道关卡,在投钱之前拦下了它。这也是为什么本系统把"防自欺"看得比"追求高收益"更重 —— 详见 防自欺:未来函数。
一次完整的迭代攻关(真实案例)
上面的"闭环"是一轮研究。真实的攻关往往是几十轮闭环连续滚动——一个想法不行就换下一个,每次失败都缩小下一步的搜索范围。下面是一场真实记录在案的攻关,目标是在 2024–2025 这段行情上冲击高收益。
*"固定不可调"很关键:评测窗口提前钉死,不允许挑一段对自己有利的行情来报成绩 —— 这是防自欺的一部分。
做法:用主力的"板块把关 + 个股池"策略真实回测整段行情。最佳那组的参数:每天选 5 个强势板块 × 每板 5 只、最多同时持 3 仓、单仓上限占 55%、资金利用率 97%、单笔约 19 万、入场延迟 18 秒。
结果:最好 +54.45%、夏普 2.285、账目完全干净(140 笔买入全部闭合) —— 但收益离"翻倍"还差一大截。
把每一笔交易按"当时市场状态"拆开看。
发现:2025 年 4 月那段弱市吃掉了大量净值;而强收益高度依赖少数几只"大赢家"(右尾)。这指明了下一步该往哪改。
假设:少而重地押大赢家,收益弹性应该更高。具体试了两组参数:① 极端集中 —— 最多只持 1 仓、单仓可占满仓 97%、每天最多买 1 只;② 中度集中 —— 最多 2 仓、单仓上限 75%、每天最多买 2 只。
结果:同样在 2025 年 4 月,高集中度把回撤放大到约 −33%,按"及时止损"纪律当场中止。结论:单纯加集中度不行。
做法:只回测"恢复段"(2025 年年中之后)。
结果:恢复段 +68.6%、风险调整成绩很漂亮 —— 但即便假设能完美避开前半段弱市,整段算下来仍够不到目标。关键结论:问题不是"能不能择时避开",而是策略本身的收益弹性不足。
测算表明:再怎么过滤弱交易,最多把 +54% 提到约 +64%,离目标还很远。于是定下方向:下一条结构必须是"状态路由" —— 弱市段换上不同的防守打法,而不是继续在同一套策略上微调。
做法:连续构造几十个"按市场状态切换买卖打法"的新结构,并行回测。
结果:绝大多数被判失败——有的"十月小样本"段成绩很亮眼(某变体 +4.19%、风险调整极高),但一进 2025 年 3–4 月弱段就被打穿;有的整段直接负收益(如把入场时段挪到尾盘 14:00–14:30 的变体,整段 −20%)。没有一个完整跑通且超过 +54.45%。
一个关键旁证:如果"作弊"地让模型事后知道每天该买哪只,收益能轻松翻倍以上——说明候选池里确实埋着足够的机会,难的是"实时、可交易地"抓住它们。这把问题从"有没有机会"收敛到了"执行结构"。每个失败都归档、缩小下一轮搜索空间。
目标尚未达成;这段行情上诚实、可比的最好成绩仍是 +54.45%。攻关没有停 —— 但每一步都建立在前面失败的明确结论之上。
同一族扫了十几个配置,最好也就这样
主力方案不是只跑一次,而是把"选多少板块、选多少股、入场时点、仓位松紧"等配置扫了一整族。下面是其中跑完整段、账目干净的代表性配置(按收益排序)——可见收益天花板就卡在 +54% 附近,再怎么调配置也顶不上去。
| 配置(同族不同设定) | 整段收益 | 风险调整成绩 | 最大回撤 | 账目 |
|---|---|---|---|---|
| 大池 · 均衡(最佳) | +54.45% | 2.285 | −12.66% | ✅ 干净 |
| 大池 · 变体二 | +51.50% | 2.299 | −10.91% | ✅ 干净 |
| 大池 · 更宽池 | +35.24% | 1.52 | −16.29% | ✅ 干净 |
| 大池 · 收益最高族(补跑) | +33.03% | 1.50 | −13.22% | ✅ 干净 |
| 更分散持仓 | +18.32% | 0.98 | −17.09% | ✅ 干净 |
| 全额退出腿 | +13.32% | 0.79 | −23.34% | ✅ 干净 |
| 实时开盘入场 | +1.24% | 0.19 | −25.83% | ✅ 干净 |
| 严格止损族 | −12.52% | −0.61 | −22.76% | ✅ 干净 |
*"账目干净"= 每一笔买入最终都对应了卖出、收盘无残留持仓。表中所有行都通过了这一对账(唯一一个对账不干净的配置已被直接排除,不计入战果)。这正是回测"对账"那一步在起作用。
为什么收益死死卡在 +54%?
弱段拖累
2025 年 4 月单月约 −7.5%,弱市状态是整个账户最大的单日亏损来源——前半段行情把后半段赚的吐回去不少。
右尾依赖
赚钱主要靠两类市场状态下的交易(分别 54 笔 和 26 笔),但这两类胜率只有约 44% 和 38%。收益几乎全压在极少数大赢家身上:单笔最大盈利约 +25 万,单笔最大亏损约 −10 万。靠运气成分高,不稳。
过滤天花板
就算"事后"把明显亏钱的几类交易全删掉,收益也只从 +54% 升到约 +64%,离"翻倍"还差一大截。说明靠筛选补不上缺口,必须换结构——这才逼出了"状态路由"那一轮。
报"某段行情的最好成绩",必须钉死窗口口径,否则极易拿"别的行情/子段/挑过参数"的高数字来自欺。本攻关中真实出现过的诱惑:
- 同一策略族在另一段行情(2025 年中→2026 年中)曾跑出 +154% / +240% / +251%——但项目明确规定这些不能迁移为 24–25 的证据(不同市况,且常伴随对该段的参数挑选)。
- 实证打脸:某高频变体在那段行情上 +110%,换到 2024 下半年→2025 年中直接 −33.92%——同一套参数,换段就崩。
- 还有一个 +113% 的低吸变体,但它跑的是另一个更短的子窗口、且属于另一条策略线(当前攻关规则不允许执行它),同样不算 24–25 整段成绩。
① 目标驱动、持续滚动:定死一个可量化目标,一轮不行换下一轮,几十轮不间断;② 每次失败都"长经验":归因→改结构→再验证,搜索范围越缩越小,而不是瞎试;③ 诚实是底线:评测窗口提前钉死、收益不够就如实说不够、漂亮的"恢复段/旧窗口"数字绝不冒充整段成绩。
量化研究里,"过拟合 / 只在某段行情好用"是常态,不是意外。一次回测不达标,并不代表方向错;它只是一个数据点。这套 Agent 流程的价值,正是能低成本、不间断、且不自欺地把大量想法一轮轮试下去 —— 把"碰运气"变成"系统化搜索"。这也呼应了那条朴素的核心思想:追求可信,而不是追求好看。
让自动研究"不跑偏"的几条护栏
多个 Agent 共用同一套代码、数据和算力,先在知识库占坑,才不会两个 Agent 同时研究同一个方向。
新口径、新对比一律新建,旧脚本只接受修 bug。杜绝"一个文件塞满开关"的杂烩,保证可复现。
涉及交易框架改动、数据库写入这类高风险操作,必须经过独立代码评审和用户批准,Agent 不能自行其是。
高得离谱的成绩先当"疑似泄漏"查;同时在持续探索模式下,一个方向走不通就换新结构再试,而不是轻易宣布"做不到"。
这套 Agent 研究流程的精髓是:用多个独立视角并行找机会、用对抗式审计防自欺、用知识库把每一次尝试(成功或失败)都沉淀下来 —— 让研究既快,又不会因为换人换时间而"重新发明轮子"。
A 股交易规则 风险控制
这三条是 A 股区别于其他市场的硬规则,被注入到回测和实盘的每一笔成交判定。漏掉任何一条,回测都会严重失真。
涨跌停
涨停时买不进、跌停时卖不出。不同板块的涨跌幅限制不同(主板、创业/科创、北交所、ST 各有规则)。
T+1
今天买入的股票,要到下一个交易日才能卖出。
交易成本
买卖都收佣金,卖出还要交印花税。系统在估算可买数量时会预留缓冲,避免现金不足。
在股价跌破关键均线、高位崩盘途中入场("接飞刀")即使看起来有利可图,也必须强制回避 —— 哪怕因此损失一些收益,也要换取"完全不接刀子"的安全。
防自欺:未来函数 风险控制
"未来函数"是量化最危险的自欺:不小心用到了当时还不知道的信息,让历史回测虚高、实盘却原形毕露。这是导致"回测很美、实盘亏钱"的头号元凶。
打个比方
就像"用今天的考试答案去做昨天的模拟卷"——分数当然高,但完全不能代表真实水平。一旦把这种信息用进策略,回测会好看得离谱,真金白银投进去就会现原形。
系统怎么防
| 风险 | 防御做法(业务视角) |
|---|---|
| 样本被"事后挑选" | 测试阶段保留全部样本,不能用"后来才知道的结果"提前筛掉一部分,否则成绩会虚高。 |
| 把决策日和买入日搞混 | 严格区分"今天根据收盘做判断"和"明天才真正买入",决不能在做判断时用到明天的数据。 |
| 反复在同一份测试集上调参 | 所有可调项一次性固定后,才在没碰过的数据上做最终检验,避免越调越像"背答案"。 |
| 用到了预先算好的不透明数据 | 策略所需指标当场计算,不读来路不明、时点不清的预生成数据。 |
一页总结 RECAP
- 一个判断:站在拉升主力视角,抓"不得不真"的控盘信号,跟进、先撤,追求可信而非虚高。
- 一条流水线:数据 → 因子 → 模型 → 选股 → 回测验证 → 实盘自动执行。
- 两道关卡:先快速扫描缩小范围,再用真实交易规则的回测做最终裁判。
- 两类风控:贴合 A 股真实规则(涨跌停 / T+1 / 成本)+ 全程防未来函数自欺。
- 一个落地:每天盘后自动重训、选股,常驻服务无人值守执行,关键事件主动推送。
这套系统的本质,是把"在海量行情里找出主力布的局"这件事,做成了一条可信、可复现、能每天自动运转的流水线 —— 而它花最多力气的地方,恰恰是防止自己骗自己。