01学完这一课,你能做到什么
一套交易系统不只是“模型给出买入”。它还要回答:研究用了什么信息,信号何时产生,风控检查了什么,谁批准了订单,最后到底是提交、拒绝还是成交。
学完这一课,你应该能:
- 画出研究、信号、风控、审批和执行五个节点的顺序;
- 为每个节点规定输入、输出和需要保存的状态;
- 让风控拒绝、人工拒绝、模拟执行和异常恢复都有明确路径;
- 区分流程跑通、策略有效和真实成交。
- 1研究观点、催化剂、风险、来源
- 2信号方向、价格、数量、版本
- 3风控规则结果与最终决策
- 4审批授权或终止
- 5执行模拟回报与日志
一句话记住流程跑通,不等于策略有效或真实成交。
02先定义状态,再安排节点
这五个角色可以用 Charles、Joe、Chris、Human 和 Eason 来表示:
- Charles 研究公开信息,输出投资观点、催化剂、风险和来源;
- Joe 把观点与量化信号合成订单意图;
- Chris 调用确定性的风控引擎;
- Human 审阅并授权;
- Eason 执行获批订单,并记录回报。
顺序不是装饰。研究适合使用智能体、技能和检索;信号可以运行普通脚本;风控应调用确定性规则;执行则调用交易适配器。外层工作流把这些不同工具固定在同一条路径上。
State(状态)就是贯穿流程、记录输入和中间结果的结构化对象。它至少应包含证券、运行日期、初始资金、用户问题、是否自动审批、节点产出、消息和重试次数。以约 100 万元资金研究贵州茅台为例,金额、持仓和数据截止时间都要进入状态,不能只放在聊天上下文里。
节点应返回自己的局部更新,让图管理器合并;不要让多个节点随意修改同一个共享字典。每次任务使用独立的 thread_id(会话标识),避免不同任务的上下文串台。
约束
证券、资金、问题、审批模式和数据截止时间。
证据
研究观点、信号、规则结果、消息与重试次数。
回报
订单版本、审批结果、模拟成交或拒单原因。
一句话记住每个节点只负责自己的输出,状态负责串起全流程。
03研究节点要留下可复查产物
不要把所有研究能力都塞进节点文件。可以加载已有的研究模块,创建智能体,通过 invoke 传入用户问题和会话配置。模块化的好处是研究能力能复用,节点只负责编排和接收结果。
一次研究完成后,同时保存结构化观点和原始文本,生成 Markdown 与 HTML 报告。报告至少写明:
- 使用了哪些来源;
- 数据截至哪一天;
- 哪些字段缺失或尚未核实;
- 观点、催化剂和风险分别是什么。
报告好看不代表数据正确。若某个数据源的字段、权限或失败行为没有核对,就把缺口写出来,不要把模型生成的结论当成已经验证的事实。已有模块包含多个技能时,也要逐项核对来源、参数、返回结构和错误处理,而不能只凭“有七个技能”推断能力。
一句话记住研究报告要保留来源、日期和缺失项。
04把观点转成可检验的信号
Joe 不应该直接把“看多”改写成买入,而要把它和明确的量化规则合并。示例可以复用 、双均线或 Backtrader 脚本。脚本由独立进程运行时,节点必须检查退出码、错误输出和结果文件,不能只看“文件存在”。
信号输出至少包含:方向、参考价格、拟议数量、信号时间、策略版本和依据。假设研究观点的模型分值是 0.82,信号仍然较弱,系统可以给出小仓试单的意图;但 0.82 不是 82% 的盈利概率,除非另有校准和验证。
数量还要先过交易单位约束。若只允许不足一手,不能默认向上凑到 100 股。正确选择是返回“不交易”,或进入一条已经定义好的人工处理规则,再重新进行风控。约 33% 也不能单独评价趋势策略,还要看平均盈利、平均亏损、成本和回撤。
- 1研究观点方向与证据
- 2量化信号规则和时间
- 3订单意图价格、数量、版本
- 4数量约束不足一手可不交易
一句话记住模型分值不是盈利概率,不足一手不能强行凑单。
05风控节点只能按规则做决定
Chris 从 State 读取订单、账户快照和市场快照,调用统一的 RiskManager。统一调用的意思是:规则只维护一份,工作流不在各个节点里复制关键词、金额、价格、 和宏观检查。
风控结果要写回状态,并保存每条规则的结果和最终优先级:
- 通过不等于没有风险,只表示当前规则允许继续;
- warning 可以给出警告或允许上限;
- halt 表示暂停,不应被研究观点覆盖;
- 不可修复的拒绝应终止流程。
任何订单修改都要重新风控。比如原来批准 100 股,后续节点改成更多数量,不能沿用旧的批准结果。账户和持仓必须来自带时间的可信快照,不能让模型凭空把已有当成零。
一句话记住订单一旦改变,就必须重新经过风控。
06审批和执行必须分开
审批界面或命令行应同时展示研究摘要、信号、风控理由、证券、方向、数量和价格条件。Human 选择拒绝时走 END;只有同意才进入交易节点。
dry-run(演练模式)表示流程可以运行,但适配器禁止发送真实订单。不能只在页面写一句“模拟”,而要在适配器层阻断真实发送。以贵州茅台为例,100 股可能对应十多万元,因此“只买一手”也不等于小额测试。
自动审批参数只能用于边界明确的演示或已经授权的流程。真实系统还要处理委托受理、部分成交、拒单、撤单、超时和账户对账。收到不等于已经成交;模拟回报也不能证明真实接口可用。
收到模拟回报
说明节点顺序和状态流转能跑通。
真实成交回报
还需要授权、撮合、成交和对账证据。
一句话记住收到委托编号,不等于成交完成。
07静态流程图和运行轨迹要一起保存
可以把 Charles→Joe→Chris、风控分支、重试节点、Human 的 yes/no 分支和 Trader→END 导出为 Mermaid 文本,再交给支持 Mermaid 的工具查看。
静态图回答“可能有哪些路径”;运行日志回答“这一次实际走了哪条”。两者都要保存。一次演示约三分钟,其中研究节点约两分半,这只是特定环境的观察,不是性能承诺。优化时可以缩小股票范围、缓存已验证数据、减少重复搜索和只传递必要字段,不能靠删除风控或审批来提速。
一句话记住流程图看可能路径,日志看实际路径。
08把最容易出错的地方变成检查项
工程问题往往不是“代码没启动”,而是信息在节点之间悄悄丢了。至少建立四项检查:
- 账户与持仓来自带时间的可信快照;
- 聊天建议和已保存计划分开显示,写入后回读确认;
- 计划变更展示新旧差异,保留版本,审批绑定具体版本;
- 中断恢复和外部副作用分开,避免恢复时重复下单。
例如把止盈条件改成 MA20×0.95,必须先说明这是价格阈值还是另一种条件,再核实数据库里真的写入了新规则。模型说“已修改”不等于修改成功。
测试顺序也要分层:先检查行情,再检查指标和回测;然后检查风控,最后接模拟交易。数据错、信号错、数量错、规则错和发送错应能分别定位。前端和后端框架的名称不会自动让策略有效。
一句话记住写入后回读,修改要有版本,恢复不能重复下单。
09动手任务
用一只模拟证券和一份模拟账户跑通一次流程,保存 State 终态、Markdown/HTML 研究报告、Mermaid 流程图和逐节点日志。
然后依次测试:
- 研究观点改成中性,确认流程按规则结束;
- 信号改成不交易,确认没有生成订单;
- 资金降到不足一手,确认系统不向上凑单;
- 修改订单计划,确认展示差异、写入新版本并重新风控;
- 中断后恢复,确认不会重复发送副作用。
验收时回答:报告来自哪里,信号使用哪段数据,数量是否超预算,风控是否真的执行,审批是否绑定订单版本,Trader 是否确实处于 dry-run。能核查这些内容,才叫模拟闭环跑通。
一句话记住验收看证据链,不看一张漂亮的买入名单。
4 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
让每个节点按固定顺序读写状态,订单改动重新风控,审批版本和执行回报都可追溯。
- 状态要有证据
- 不足一手不凑单
- dry-run 不是真成交
记住这 5 句话
- 01五个节点依次是研究、信号、风控、人工审批和执行,State 负责保存输入、证据和回报。
- 02研究报告要保留来源、数据日期和缺失项;模型分值不能直接当盈利概率。
- 03信号要写方向、价格、数量、时间、策略版本和依据,不足一手不能默认凑单。
- 04风控规则集中维护,订单变化必须重新检查,halt 不能被观点覆盖。
- 05dry-run、委托受理和真实成交是不同状态,流程日志与模块化测试要能追溯每一步。
完成这一课
读完讲义、答对小题,这一课就算学完了。
- 读完讲义
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定教学样本
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。