A股量化系统 · 架构讲解(业务版)

从行情数据到实盘买入
这套系统怎么运转

一套覆盖 研究 → 回测验证 → 实盘自动选股 全链路的 A 股量化系统。 本页用大白话 + 流程图,讲清楚每个环节做什么、为什么这么设计、以及背后的风险控制 —— 不涉及代码与具体策略参数。

覆盖周期 约 4 年历史行情 股票池 全市场约 5200 只 A 股 信号维度 上千个因子 运行方式 盘后自动重训 + 次日执行

📖 怎么读这一页

全文按"一只股票如何从行情变成买入信号"的顺序展开。每个环节都有三类提示框:

💡 业务作用
这一环在赚钱链条里负责什么。
✅ 为什么这样做
背后的取舍与考量。
⚠️ 关键风险
不做好就会亏钱的地方。

赚钱逻辑:核心思想 WHY

所有工程都是为了实现一个朴素的判断。理解它,后面每个环节为什么存在就都顺了。

「站在拉升主力的视角,做大规模找针」

A 股的超额收益来自识别 强力主力为"邀请散户跟风"而布置的信号,跟着进场、并赶在主力撤离之前先走。几条关键判断:

  • 拉升是为了出货,而出货必先控盘 —— 所以"控盘"痕迹会出现在"拉升"之前,我们要抓的是更早的控盘阶段。
  • 单笔成交可以伪装,但 K 线和板块不好伪装 —— 主力要让散户跟风,就必须把走势画得好看;这种"不得不真"的信号才可信。
  • 板块天然抗操纵 —— 一只股票可能被一个主力操控,但一个板块集体异动需要多方共振,造假成本极高,所以板块层面的信号最值得信赖。
  • 追求可信、可复现,而不是虚高的命中率 —— 宁可边际小一点,也要确保是真的。
💡 这决定了整个系统的形状
信号藏在海量行情里 → 需要因子环节做大规模廉价扫描; 容易自欺 → 需要研究环节的严格纪律 + 回测环节用真实规则做最终裁判; 机会有时效 → 需要实盘环节每天盘后自动重训、选股、次日执行。

端到端价值链 FLOW

一只股票从"原始行情"变成"实盘买入信号",要走完下面这条流水线。

原料
行情数据
逐笔成交 / 日线 / 指数
加工
因子信号
价量 / 资金流 / 筹码 / 板块
判断
模型训练
学习"会涨"的样子
挑选
选股
板块把关 + 个股排序
验证
回测裁判
用真实交易规则模拟
执行
实盘
盘后自动出候选名单
✅ 为什么"先粗筛、再真实回测"两道关
快速扫描全市场很便宜,但会系统性地高估收益。所以快速扫描只用来缩小候选范围;真正下结论,必须用贴近真实成交的回测引擎来验证,避免"纸面上很美、实盘亏钱"。
💡 一句话概括各环节
数据保证干净可信,因子把行情翻译成信号,模型学会识别机会,回测验真伪,实盘每天自动落地。环环相扣,上一环脏了下一环就白做。

系统模块总图 MAP

系统自下而上分层协作:底层提供地基,越往上越接近"投资决策"。还有一条贯穿全栈的A 股交易规则

研究 / 实盘
训练模型、滚动验证、双模型选股;并把成果搬到实盘,每天盘后自动选出次日候选股。
↑ 消费
回测引擎
用真实交易规则(涨跌停、T+1、费用)模拟成交,是判断策略到底赚不赚钱的最终裁判。
↑ 消费
模型与特征
把因子组织成训练数据、训练并评估模型;提供通用的建模能力。
↑ 消费
因子引擎
系统最大的引擎:把行情加工成上千个信号(价量、资金流、筹码、板块、市场情绪等)。
↑ 消费
数据底座
采集、清洗、校验、对齐行情数据,提供统一的读写接口与交易日历。
↑ 支撑
核心基础
配置、常量、基类、异常等全栈共享的底层设施。

⟂ 横切全栈 · A 股交易规则

涨跌停、T+1、手续费印花税 —— 这些不属于某一层,而是注入到回测和实盘的每一笔成交判定里,确保模拟和实盘都贴合真实市场。详见 A股交易规则


数据:可信地基 基础

💡 业务作用:把"散落在各处的原始行情"变成"干净、对齐、可信、随时可查"的数据底座。地基脏了,上面的因子和回测全是空中楼阁。

数据从哪来、怎么进系统

采集
日线 / 指数
行情接口直拉
采集
逐笔成交
网盘下载后解压
把关
质量校验
不合格当天直接拦下
整理
对齐入库
统一时间口径
触发
启动因子计算
数据齐了才往下走
✅ 为什么要把"原始数据"和"加工结果"分开存
原始行情和加工后的因子用两套独立存储、互不混用:原始数据保持原样可追溯,加工结果便于快速查询。职责清晰,出问题好定位。
⚠️ 数据质量是第一道生命线
系统在每天数据入库前设了一道硬质量闸门:当天数据如果出现"大面积缺失""成交量异常""价格越界"等疑似损坏迹象,就整天拦下、隔离、并自动重新拉取,绝不让脏数据流进后续计算。另有定时的"心跳"健康检查,数据迟到会自动告警(企业微信 + 语音)。
两个容易踩的真实坑
① 除权日的参考价必须用交易所官方值,本地公式重算会算错涨跌停区间; ② 判断"是否停牌"要看当天有没有成交量,不能信可能过期的状态字段。
~4 年
历史行情覆盖
~5200
全市场股票
23
跟踪指数
每日
自动同步 + 校验

因子:找针的扫描器 核心引擎

💡 业务作用:把原始行情翻译成上千个"信号"(因子),每个信号都试图捕捉主力的控盘、吸筹、拉升痕迹。这是"大规模找针"的扫描器,也是整个系统最大的引擎。

因子有哪些家族

家族用大白话说,它在看什么
价量 K 线价格和成交量的形态、趋势、波动 —— 最基础的"走势好不好看"。
资金流从逐笔成交还原主动买卖:谁在主动扫货、谁在悄悄出货、有没有对敲洗盘、有没有冰山大单。
筹码分布持仓成本的分布与集中度 —— 主力是否在低位吸够了筹码、套牢盘压力在哪。
板块把个股聚合成板块,看板块整体的强弱与宽度 —— 抗操纵、最可信的一层。
指数 / 市场情绪大盘环境、市场宽度与情绪 —— 判断"现在适不适合出手"。
✅ 为什么追求"又多又快"
因为要在全市场上千只股票、海量逐笔成交里找信号,因子必须能批量、廉价、高速地算出来。系统用了高度并行的计算方式,全市场一天的因子可以在很短时间内算完,这样才能支撑每天的滚动重算。
⚠️ 绝不允许"逐行慢算"
逐笔数据动辄数千万行,如果用低效的逐行处理,一天的计算可能要跑几十分钟甚至卡死;改成批量向量化后同样的工作几秒就能完成。这是一条硬性的工程红线。

计算分两步走,所以能"只算新增"

第一步 · 当天能算的

只看当天行情就能得出的信号(如当日形态、当日资金流),每天独立计算,可以充分并行。

第二步 · 需要回看历史的

需要一段历史窗口才能得出的信号(如趋势、滚动统计),在第一步基础上叠加计算。

为什么这样分:日常只需要增量计算新增的交易日,不必每天把几年的历史全部重算(全量重算非常耗时)。分两步后,新数据进来能快速接上。

计算的先后顺序

先确认数据齐全 —— 行情和逐笔数据日期对得上,才往下算。
把个股聚合成板块 —— 为板块层信号打底。
算价量因子(个股 / 板块 / 指数,可并行)。
算资金流因子(个股 → 板块 → 全市场逐级聚合)。
算筹码因子(先建分布,再算指标,再聚合到板块)。
算市场情绪因子 → 最后做一遍校验,确认结果完整无误。

研究:训模型与选股 决策大脑

💡 业务作用:从上千个因子里挑出真正有用的,训练模型学会"识别会涨的股票",再通过滚动验证确认它不是碰运气,最后输出选股名单。这是系统的"决策大脑"。

第一步 · 因子筛选:去伪存真

面对上千个因子,先用统计指标衡量每个因子的预测能力稳定性,再去掉互相高度重复的,只保留少数既有效又彼此独立的因子。(具体的衡量标准与阈值属于内部配置,本页不展开。)

第二步 · 训练模型:学习"会涨的样子"

给模型看历史上"后来涨了"和"没涨"的样本,让它学会从因子里识别机会。其中如何定义"算成功"(标签)、用哪些股票训练、用什么评价标准,都是策略配方的一部分。

关于策略配方
具体的标签定义、入选条件、评价口径等,属于核心策略参数,本业务版文档刻意不展开 —— 这里只说明"系统具备这些能力",不披露具体取值。

第三步 · 滚动验证:确认不是碰运气

训练
用过去一段时间
学习规律
隔离
留出隔离期
防止偷看答案
测试
在没见过的时段验证
看真实表现
滚动
窗口向前滑动
重复多轮

模型"训练 → 隔离 → 在没见过的未来时段测试",并不断向前滚动 —— 这样得到的成绩才接近实盘真实表现,而不是对历史的死记硬背。验证时还内置了一套风控规则(连续亏损、回撤过大、单仓过重、行业过于集中等会自动收紧或停手)。

第四步 · 双模型选股

模型 A
个股模型
判断个股机会
+
模型 B
板块模型
判断板块爆发
把关
板块门控
先看板块强不强
合成
综合排序
给出候选名单
✅ 为什么用"个股 + 板块"两个模型
呼应核心思想:板块层最抗操纵,先用板块模型把关"这个方向是不是真的强",再用个股模型在强势板块里挑接力个股。两者独立判断、综合排序,而不是简单相乘,也绝不把一个模型的结论偷偷喂给另一个 —— 否则就失去了"两个独立视角互相印证"的意义。

贯穿研究的铁律:防自欺

量化最大的陷阱是"未来函数"——不小心用到了当时还不知道的信息,导致历史成绩虚高、实盘却亏钱。研究环节有一整套纪律来杜绝它,详见 防自欺:未来函数

⚠️ 真实教训
历史上曾有策略因为这类"偷看未来"的错误,纸面收益翻了十几倍,诚实重算后绝大部分收益消失。凡是高得离谱的回测结果,第一反应必须是"先查有没有泄漏",而不是高兴。

回测:最终裁判 验真伪

💡 业务作用:用一个真实的交易模拟引擎来检验策略,而不是用简化的估算。它把 A 股的涨跌停、T+1、手续费、盘口深度全都还原,是判断"到底赚不赚钱"的最终裁判。

它比"简单估算"严格在哪

真实成交规则

涨停买不进、跌停卖不出、当天买的明天才能卖 —— 这些都会真实地挡住交易。

真实成本

每一笔都扣手续费、卖出再扣印花税,账户现金不够时会真实地买不进。

真实盘口

逐笔模式下按真实买卖盘深度成交,量太大吃不下时不会"假装全成交"。

✅ 为什么不嫌麻烦也要用真实引擎
简化估算往往把收益算得过于乐观(流动性、成本、规则限制都被忽略)。只有贴近真实成交,才能在投钱之前就发现"看着很美其实做不到"的策略。系统因此规定:完整策略必须走真实回测引擎,禁止手写简化模拟

回测之后还要"对账"

跑完回测不能只看一个总收益数字,系统会自动产出明细(每一笔成交、每天的净值、被规则拦下的订单等),并做一致性核对 —— 确认"所有买入最终都对应了卖出""没有遗漏的持仓",结果才算可信。

⚠️ 最容易出现的假收益
曾经因为一个成交撮合的细节没处理好,几个持仓被"无声地长期挂着"吃账面浮盈,让某策略的回测收益虚高了一大截,对账后才发现真实收益只有原来的零头。这就是为什么"对账"是回测不可省略的一步。
研究纪律:自主回测一般只看最近一年左右的窗口就足以判断(不机械追求超长窗口);长时间回测在后台稳定运行,避免中途被打断。

实盘:自动选股 落地

💡 业务作用:把研究成果搬到真实交易。每天收盘后系统自动重训模型、选出次日候选股;一个常驻服务持续消费实时行情,所有持仓和成交都记在一本"账本"上。设计目标是无人值守也不出错,出了错也不会悄悄藏起来

每天自动跑的一条线

盘后
数据就绪
当天行情同步完成
重训
自动重训模型
逐个串行、防内存爆
选股
生成次日候选
写入账本
次日
常驻服务执行
按候选名单跟踪行情

三个关键的可靠性设计

🛡️ 永不无声崩溃

常驻服务遇到行情中断、数据缺口等问题时,会大声记录、告警、退避后继续,而不是悄悄退出。周末、盘前等正常等待状态也能识别。

📒 账本是唯一真相

持仓和成交以一本可靠的"账本"为准(不是内存里的临时状态)。改持仓、切策略、换候选名单,很快就能热生效,无需重启

💾 内存安全闸门

重训前会检查内存是否充足、有没有别的训练在跑,绝不允许两个大模型同时训练,否则会拖垮服务器。

⚠️ 实盘最在意"不出错"而非"跑得快"
实盘环节宁可慢、宁可多校验,也要保证:持仓数字永远准、出问题第一时间有人知道、任何异常都有据可查。所有对交易框架的改动都要经过额外的代码评审才能上线。

通知与运维 护栏

💡 业务作用:让系统"会说话"。关键事件(选股完成、数据迟到、服务异常、风控触发)通过企业微信和语音主动推送给运营和操盘,把"自动运行"和"人能及时介入"连起来。

分流推送

运维类消息和操盘类消息分开推送到不同的群/通道,各看各的,互不干扰。

失败不阻断、不丢失

通知发送失败只会自动重试,绝不会因为"发通知"而卡住"做交易";积压过多会反过来告警提醒。


🤖 Agent 自动研究流程 研究方式

💡 业务作用:上面六个环节是"系统能做什么",这一节讲"谁在用它做研究、怎么做的"。如今的量化研究主要由 AI Agent 驱动 —— 一个主控 Agent 提出想法并编排全程,多个"专家 Agent"分工执行,再由独立的审计 Agent 把关,最后人来复核关键节点。它把"找策略"从手工试错变成了一条能自动跑、可复现、互相印证的流水线。

研究团队:一个主控 + 一群专家 + 一个第二意见

🧭 主控 Agent

提出研究假设、拆解任务、编排全流程、动手写策略、汇总结论。是整场研究的"项目经理 + 主力研究员"。

🔧 专家 Agent

每个深耕一块:数据、因子、回测引擎、模型训练、策略执行。遇到对应模块的问题就委派给最懂它的专家,又快又准。

🕵️ 审计 / 第二意见

独立的"挑刺"角色:未来函数猎手、模型评估、逐笔成交分析、性能审计,以及外部模型 codex 提供独立复核。

✅ 为什么用"多 Agent 分工"而不是一个人从头干到尾
并行覆盖:多个方向可以同时扫;② 专家更懂细节:各模块交给专门 Agent,少踩坑;③ 独立视角互相印证:得出结论后,由没参与得出该结论的审计 Agent 来反驳挑错 —— 这种"对抗式验证"能拦下很多"看着对其实错"的结果。

一轮研究怎么跑(自动闭环)

① 占坑
先登记方向
防多 Agent 撞车重复
② 立项
新建独立实验
不在旧策略上乱改
③ 粗筛
快速扫描缩范围
只用来排除候选
④ 验证
真实回测裁判
只验"幸存者"
⑤ 审计
独立挑错
防泄漏 + 评估 + 逐笔
⑥ 归档
落知识库 + 提交
成果永久留存
先占坑 —— 动手前在知识库登记"我要研究什么、什么假设",避免和其它 Agent(含 codex)撞车、重复劳动。
独立立项 —— 每个新想法新建独立的实验目录,绝不在已有策略上加分支开关,保证各实验互不污染、可单独复现。
粗筛缩范围 —— 先用便宜的快速扫描把候选从全市场缩到一小撮。粗筛只用于"排除",不用于"肯定"(它会高估收益)。
真实回测验证 —— 把粗筛活下来的少数策略,送进真实交易规则的回测引擎,得出可信的盈亏。
独立审计 —— 由审计 Agent 反向挑错:有没有未来函数泄漏?选股名单里有没有数据 bug?逐笔成交是否合理?通过审计前,结论一律不采信
归档提交 —— 无论成功还是失败,都写进知识库(要求"仅凭这一页就能复现"),并把代码与记录一起提交。

这套流程的真实留痕

这不是纸上谈兵。仅最近一个月(2026-05-14 → 2026-06-15)这一条研究线,就在知识库里留下了可核查的痕迹:

174
篇实验记录页
83
个原始产物目录
42
篇带 SHA256 校验
35
个状态路由新结构
✅ 每一次尝试都可复核、可复现
每篇记录都带结构化标签(类型 / 状态:草稿·进行中·已结论·已证伪·被取代)、内联的复现命令、逐日净值与结果表,以及关键产物的 SHA256 指纹(可逐字节核对是不是同一份结果)。标准是"仅凭这一页就能把实验重建出来"。失败的尝试也照写不误 —— 否则下次又会重走同一条弯路。

真实失败案例:一次被审计拦下的"假暴富"

这是项目里真实发生过的一次失败 —— 它最能说明"为什么得出结论后还必须让独立审计去挑错"。

背景:某个策略的回测结果好得惊人 —— 收益翻倍、风险调整后的成绩也高到不像真的。如果直接相信,很可能就拿真金白银上了。

泡沫版(回测纸面)
+134.6%
夏普比率 ≈ 6.77 · 高到不真实
诚实版(修正后)
+6.6%
夏普比率 ≈ 0.65 · 平平无奇

*夏普比率:衡量"承担每一分风险换来多少收益",越高越好;6.77 是几乎不可能持续的水平,本身就是危险信号。

起疑 —— 成绩高得违反常识。按纪律,越漂亮的结果越要先当"疑似作弊"来查,而不是急着高兴。
审计定位 —— 独立的"未来函数猎手"翻查后发现:策略把"做决定的那天"和"实际买入的那天"搞混了 —— 在做买入判断时,悄悄用上了第二天才会知道的行情。等于"拿明天的答案做今天的题"。
诚实重算 —— 把这个错误堵上、严格区分决策日与买入日后重跑,约 95% 的收益当场蒸发,真实表现只是普通水平。
处理 —— 受同一错误影响的一整族策略全部作废、实盘停用,所有旧的漂亮数字标记为"禁止引用",并把这次教训写进知识库长期留存。
⚠️ 教训
如果当初直接相信那份"暴富回测"上了实盘,亏的就是真钱。正是"由没参与得出结论的人来独立挑错"这道关卡,在投钱之前拦下了它。这也是为什么本系统把"防自欺"看得比"追求高收益"更重 —— 详见 防自欺:未来函数

一次完整的迭代攻关(真实案例)

上面的"闭环"是一轮研究。真实的攻关往往是几十轮闭环连续滚动——一个想法不行就换下一个,每次失败都缩小下一步的搜索范围。下面是一场真实记录在案的攻关,目标是在 2024–2025 这段行情上冲击高收益

🎯 目标窗口:2024-10 → 2025-10(约一年,固定不可调) 达标线:收益翻倍以上 + 风险调整成绩高 + 账目干净(买卖闭合、无残留持仓)

*"固定不可调"很关键:评测窗口提前钉死,不允许挑一段对自己有利的行情来报成绩 —— 这是防自欺的一部分。

关于参数:下面各轮会列出具体调整的参数 —— 这些都是失败或未达标的配置,公开无妨;真正跑通的有效配方才属机密,本文不展开。
261
目标窗口交易日
12
完整跑通的配置
35
状态路由新结构
140
最佳组的闭合交易
"达标"的四个硬条件(逐字、机器自动判定):① 账户总收益 > 1.5(即 +150%)② 夏普 > 2.0 ③ 闭仓数 == 卖出成交数 ④ 未实现盈亏 == 0。前两条管收益与稳健,后两条管"账目必须干净"(无残留持仓、无孤儿仓)—— 四条缺一不可,不靠人情打分。最佳那组满足了 ②③④,唯独 ① 收益没够。
主力方案:用核心选股策略直接冲 部分达标
做法:用主力的"板块把关 + 个股池"策略真实回测整段行情。最佳那组的参数:每天选 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。杜绝"一个文件塞满开关"的杂烩,保证可复现。
🔒 关键改动必经人/codex 把关
涉及交易框架改动、数据库写入这类高风险操作,必须经过独立代码评审和用户批准,Agent 不能自行其是。
🔒 不轻信、不放弃
高得离谱的成绩先当"疑似泄漏"查;同时在持续探索模式下,一个方向走不通就换新结构再试,而不是轻易宣布"做不到"。
💡 一句话
这套 Agent 研究流程的精髓是:用多个独立视角并行找机会、用对抗式审计防自欺、用知识库把每一次尝试(成功或失败)都沉淀下来 —— 让研究既快,又不会因为换人换时间而"重新发明轮子"。

A 股交易规则 风险控制

这三条是 A 股区别于其他市场的硬规则,被注入到回测和实盘的每一笔成交判定。漏掉任何一条,回测都会严重失真。

涨跌停

涨停时买不进、跌停时卖不出。不同板块的涨跌幅限制不同(主板、创业/科创、北交所、ST 各有规则)。

T+1

今天买入的股票,要到下一个交易日才能卖出。

交易成本

买卖都收佣金,卖出还要交印花税。系统在估算可买数量时会预留缓冲,避免现金不足。

⚠️ 一条额外的硬纪律:不接刀子
在股价跌破关键均线、高位崩盘途中入场("接飞刀")即使看起来有利可图,也必须强制回避 —— 哪怕因此损失一些收益,也要换取"完全不接刀子"的安全。

防自欺:未来函数 风险控制

"未来函数"是量化最危险的自欺:不小心用到了当时还不知道的信息,让历史回测虚高、实盘却原形毕露。这是导致"回测很美、实盘亏钱"的头号元凶。

打个比方

就像"用今天的考试答案去做昨天的模拟卷"——分数当然高,但完全不能代表真实水平。一旦把这种信息用进策略,回测会好看得离谱,真金白银投进去就会现原形。

系统怎么防

风险防御做法(业务视角)
样本被"事后挑选"测试阶段保留全部样本,不能用"后来才知道的结果"提前筛掉一部分,否则成绩会虚高。
把决策日和买入日搞混严格区分"今天根据收盘做判断"和"明天才真正买入",决不能在做判断时用到明天的数据。
反复在同一份测试集上调参所有可调项一次性固定后,才在没碰过的数据上做最终检验,避免越调越像"背答案"。
用到了预先算好的不透明数据策略所需指标当场计算,不读来路不明、时点不清的预生成数据。
报告纪律:引用任何历史业绩时,必须先核对口径(是否满仓、按什么方式统计、有没有排查过泄漏)。高胜率结果,先证明它没作弊,才能采信。

一页总结 RECAP

  • 一个判断:站在拉升主力视角,抓"不得不真"的控盘信号,跟进、先撤,追求可信而非虚高。
  • 一条流水线:数据 → 因子 → 模型 → 选股 → 回测验证 → 实盘自动执行。
  • 两道关卡:先快速扫描缩小范围,再用真实交易规则的回测做最终裁判。
  • 两类风控:贴合 A 股真实规则(涨跌停 / T+1 / 成本)+ 全程防未来函数自欺。
  • 一个落地:每天盘后自动重训、选股,常驻服务无人值守执行,关键事件主动推送。
💡 给非技术读者的一句话
这套系统的本质,是把"在海量行情里找出主力布的局"这件事,做成了一条可信、可复现、能每天自动运转的流水线 —— 而它花最多力气的地方,恰恰是防止自己骗自己