← 返回教程库

把下单权交给 AI 之前,这六个问题你得先答上来

最后更新 2026-08-19
📚 量化与 AI 投研 📖 AI 交易与 Agent ⏱ 约 18 分钟 R2 · 注意风险
你将学到
  • 用六个问题做一次结构化自查,每个问题都能说清答不上来会出什么事
  • 分清「能不能一键停」和「停下来之后怎么办」是两件事,理解为什么急停的安全默认是只撤单、不自动平仓
  • 知道这类约束为什么必须落在代码结构而不是提示词里,以及本站为什么不建议任何人把实盘下单权交出去

这个念头通常是这么冒出来的。

你用 AI 做研究做了几个月,手法越来越顺。它读财报比你快,它挑出来的疑点你回查过,八九不离十。某天晚上它给了你一个判断,你照着做了,第二天确实是那个方向。你盯着屏幕,脑子里冒出一句话:既然它都想明白了,为什么还要我手动去点那一下?

这篇就是给这个念头踩刹车的。但不是喊口号说「危险」,那没用。这篇给你六个具体的问题,你拿去问自己、问任何一个号称能自动交易的东西。六个里但凡有一个答不上来,就说明这件事还不能做。

先提醒一句:这篇讲的是问题,不是搭建教程。读完你应该更清楚风险长什么样,而不是更手痒。

还得说清这篇在整卷里的位置,免得你把它当成机制教程来读:这一篇是自查清单,不是原理讲解。 六个问题的重心全在「什么样算答上来了」——判断标准是什么、答不上来会出什么事,至于那些机制本身怎么实现,卷里另有三篇专门讲:一句话变成一张委托单中间要走多少步,见 从一句话到一张委托单;「想—做—看—再想」那个循环怎么转、约束该卡在循环的哪一环,见 Agent 循环;判活、对账、崩溃恢复、留痕这些东西在工程上具体怎么搭,见 从一个跑得通的 demo 到真能用。那三篇管「是什么、怎么做」,这一篇只管「你该问什么、答成什么样才算过」。碰到机制细节我会直接给链接,不在这里重讲一遍。

先说一件跟钱无关的事:你会把车钥匙给谁

想象你要把车钥匙交给一个刚拿驾照的亲戚。

你会问什么?大部分人第一反应是问「你开得怎么样」。但真到了要交钥匙那一刻,你脑子里冒出来的其实是另外几个问题:你开去哪儿、开多远、能不能上高速、我打电话你会不会马上靠边停、真出了事我怎么知道当时发生了什么、你手机没电了会怎么办。

注意这几个问题的性质。它们一个都不是在问技术水平。就算他是个老司机,这几个问题你照样得问。因为技术好只影响出事的概率,不影响出事之后的规模。而你交出去的是车,你要控制的是后者。

再想深一层:为什么你会本能地问这些?因为你知道自己不在车上。他开车的那段时间里,你对方向盘没有任何影响力,你能施加的全部控制,必须在钥匙交出去之前就设好。事后打电话已经是最弱的一层,前提还是他愿意接。

把下单权交给一个程序,是一模一样的处境。而且比交车钥匙更糟一点:你亲戚知道自己开得好不好,程序不知道。

放到账户上:分析错了能改,单子发出去改不了

上面那个类比落到投资上,核心是一句话:AI 分析错了和 AI 下单错了,是两个量级的事。

分析错了会怎样?你多花半小时,回查发现数字不对,把那份材料扔掉。代价是时间。

下单错了会怎样?委托单是你发给交易所的买卖指令。这个指令一旦成交,就成了既成事实——你账户里真的多了或少了那些资产,钱真的动了。你想撤回,只能反向再发一单,而这一来一回你要付两遍成本:手续费、印花税,还有滑点。滑点是指你以为的成交价和实际成交价之间那段差,市场急起来的时候这段差会变得很难看。也就是说,纠正一个下单错误本身就要花钱,而且花多少你事先不知道

第二层差别更要命:AI 犯的不是随机错误,是成串的错误。

一个人手滑点错按钮,是孤立事件,点完他自己会愣一下。程序不会愣。如果它对当前行情的理解在某个环节偏了——比如它拿到的价格是几分钟前的、或者它把一个代码认错成了另一个——它不会只错一次,它会在这个错误理解上连续做出一串一致的动作。等你发现的时候,你面对的不是一笔错单,是一串。

第三层:它的错误分布,你其实没量过。 你做研究的时候有多少次它是对的,你有个模糊印象。但「它下单会不会出事」这个问题需要的不是印象,是极端情况下的表现——市场剧烈波动、数据源抽风、某个接口返回了一个格式不对的东西。这些场景你在平时用的时候根本遇不到,所以你那份「它挺靠谱的」的经验,恰恰在最需要它的地方是空白的。关于模型在真实环境里怎么慢慢走样,可以看模型衰减那篇。

所以下面这六个问题,没有一个是在问「它准不准」。全都是在问「它能闯多大的祸」。

六个问题,一个都别跳

一、它到底被允许动什么——授权范围

这是最基础也最容易糊弄过去的一个。

「让 AI 帮我交易」这句话里,藏着一堆没说清的东西:它能动这个账户里全部的钱,还是只能动划出来的一小块?它能买股票、能买 ETF,那能不能碰期权、能不能碰外汇合约?它能不能用杠杆——杠杆就是借钱放大仓位,一样的判断错误,带杠杆亏的是好几倍。

答不上来会怎样?会出现一种特别典型的事故:你以为你授权的是「小试一下」,它理解的是「这个账户随便用」。 你俩谁都没说谎,只是这个范围从来没被写下来过。

工程上认真做这件事的做法,是把授权做成一份结构化的、明文列清楚的合约。以 Vibe-Trading 这个开源项目为例,它把这份合约称作 mandate(授权书),里面分了两层:一层是数量上的天花板,一层是标的范围的筛子。标的这层的设计有个细节我觉得很聪明——它不是给你一张股票白名单,那样等于剥夺了程序自己发现标的的能力,而是设几道结构性的筛子:允许哪几类资产、市值不能低于多少、日均成交额不能低于多少、外加一份绝对不许碰的黑名单。程序在筛子里面自由挑,挑出筛子就拒绝。

还有两个细节值得单拎出来。允许的品种列表如果是空的,含义是「全部拒绝」,不是「全部放行」。 这个默认方向选反了,就是灾难和无事的区别。以及,这份授权在程序启动的时候读一次,之后不可修改——程序自己没有任何途径去改写自己的权限。

二、单笔多大、总共多少、一天几次——额度上限

范围解决了「能碰什么」,额度解决「能碰多狠」。

这里至少要三个数:单笔委托最大多少钱、所有持仓加起来最多占用多少、一天最多下多少次单。 前两个防的是一次性的大错,第三个防的是另一种事故——程序陷在某个循环里反复下单。这种事听起来很蠢,但它是自动化系统最常见的故障形态之一,而且每一次重复都在真实地付手续费。

比这三个数更重要的,是它们在哪一层被执行

同样是「最多只能动这么多钱」,写在程序自己的代码里,和把钱单独放在一个隔离账户里、由券商那边卡住,是完全不同的两种保证。前者依赖程序自己没写错;后者是物理上的——程序想突破也没有入口。前面那个项目就是这么分层的:资金总额的天花板由券商侧的独立账户余额卡死,被明确称为「绝对上限」,而它自己代码里那份镜像的金额只是多加一道防线,不作为主要保证。

这个分层思路值得你记住,因为它可以直接搬到你自己身上:你能给出的最硬的额度限制,是别把那笔钱放在那个账户里。 任何写在配置里的上限都软于这一条。

三、你能不能一键停——以及停完之后那些单怎么办

这个问题绝大多数人只问了前半句。

前半句是:出了状况你能不能马上让它停下来。这一半的判断标准只有一条——这个「停」依不依赖被停的那个东西配合。如果停止的实现是「往对话里发一句让它停」,那它依赖模型愿意听、依赖那条消息被读到、依赖整个循环还在转,而你最需要停它的时刻恰恰是这三样全都靠不住的时刻。算数的急停必须是结构性的:在模型够不着的那一层强制生效,并且出错时倒向「停」而不是倒向「继续」。这个开关具体做成什么样、为什么连读坏了也按「已停止」算,从一句话到一张委托单 里有完整的机制说明;停完之后你个人该怎么收拾,见 从一个跑得通的 demo 到真能用。这里都不重复。

所以前半句你只需要问一句:你说的那个停止动作,能不能在程序已经疯了的前提下依然生效? 答不上来就别往下看了。答得上来,才轮到真正难的后半句。

现在说后半句,那个被忽略的一半:停下来之后,已经挂在市场上还没成交的单怎么办?

这才是真正难的地方。你按下停止的那一刻,市场上可能还挂着几张没成交的委托。它们不会因为你的程序停了就消失——它们是发给交易所的,不在你的程序里。你以为你停了,其实还有单在等着成交。

所以急停必须拆成两个动作,而且顺序不能反:第一步撤掉所有还挂着的单,第二步才轮到考虑要不要把已有持仓平掉。

为什么顺序不能反?因为如果你先去平仓,而市场上还挂着一张没撤的买单,那张单完全可能在你平仓的同时成交,把你刚关掉的敞口又开回来。敞口就是你在市场上暴露的头寸规模——你手上真正持有多少、方向是什么,价格波动能影响到你的那部分。你按急停的目的就是把敞口摁住不动,结果先平后撤这个顺序会让它自己又长回来,而且长回来的那部分你毫无察觉。先撤单,让场面安静下来,敞口不再变化了,再处理手上真正持有的东西。

第二步还有个更微妙、也更容易被想当然的问题:急停要不要顺手自动平仓?

直觉上很多人觉得该平——都急停了,当然是全砍掉最安全。那个项目给的答案是默认不平,只撤单,理由写在注释里,一句话就说服了我:自动提交平仓单本身就是一次交易动作,而这个动作用户未必授权过。

这句话值得多嚼两遍。你按下急停,表达的意思是「别再替我做决定了」。而「按现价把仓位全砍掉」恰恰是一个非常重的决定——它决定了你的亏损在此刻兑现、决定了你放弃后面所有的可能性。尤其在市场极端的时刻,一把市价平仓的滑点可能难看到超出想象,结果就是:你为了避免程序继续闯祸而按的那一下,本身变成了当天最贵的一笔操作,而且还是程序替你做的。一个用来阻止未授权交易的按钮,自己触发了一次未授权交易,这个荒谬感是整条设计原则的来源。

所以想让急停带平仓,你得单独、显式地把那个选项打开——它是一个需要你事先想清楚的授权,不是急停的赠品。

这一条推广开来是一句挺硬的话:「停下来」和「恢复原状」是两件事,别指望一个按钮同时办到。 停下来是撤销未来,恢复原状是处置过去,后者永远需要一次新的、你本人认可的决定。关于停下来之后账户会经历什么,恢复期那篇讲的是同一件事的另一面。

四、三个月后,你还能不能查出它当时凭什么下那一单

这个问题平时最没存在感,出事那天最要命。判断标准可以说得很硬:随便挑一天的一笔操作,你能不能把三样东西对齐——这一单的内容、下单那一刻它手上的数据、以及它通过或被拒的判定结果。 三样凑齐才叫能重建现场,缺一样就只是「记了日志」。答不上来,你面对的就不只是一笔亏损,而是一个你永远无法改进的系统:你不知道该修哪儿,因为你不知道哪儿坏了。

还有一条判断标准更细,也更容易漏:失败路径记不记。 只在成功时写记录、出错时什么都不留的系统,日志在事故分析里基本没用,因为事故恰恰发生在失败的那些路径上。

顺着这条往下,还有一个我读源码才注意到的顺序问题,很值得你拿去问:是先写记录再返回结果,还是拿到结果之后回头补记? 那个项目的每一次券商交互——下单、撤单、调用出错——都是先写进审计账本,再返回结果。这个顺序是刻意的:先写再返回,意味着哪怕后面的步骤当场崩掉,这一步也已经留下了痕迹;反过来等结果回来再补记,崩在中间的那一下正好就是你最想查的那一下,而它恰恰没被记下来。账本本身怎么组织、授权链和敏感字段脱敏怎么做,见 从一个跑得通的 demo 到真能用

五、网断了,它是重试还是停手

这一条是所有问题里最技术的,但你不需要懂技术也能问。

一句话交代背景:下单这个动作重放一遍就是两笔单,所以「失败了自动重试」这个在别的软件里天经地义的做法,在交易里是最坏的选择——为了不丢一笔单,你冒的是双倍下单的风险。程序崩在发单中间会留下哪几种说不清的状态、崩溃恢复在工程上为什么是最难的一块,从一个跑得通的 demo 到真能用 里拆得很细,这里只留判断标准。

判断标准第一条,最好问:网断的时候它默认干什么? 答案如果是「自动重连然后继续」,这件事到此为止,不用听后面的了。听起来正确的答案是消极的——把这次失败记下来、停在那儿、交给人,绝不自己想办法圆回去。

判断标准第二条更硬,也是我认为整份代码里最值得抄走的一个设计:负责崩溃恢复的那部分,手上有没有写权限。 那个项目的做法是只给它只读接口——读持仓、读余额、读挂单,写接口根本不交给它。这样一来,它就算「想」重发也找不到入口,而不是靠一句注释提醒自己别重发。一旦发现账实对不上,它能做的动作只剩一个:让整个系统停下来,交给人。

这两条标准的分量不一样,值得说破。第一条问的是态度,对方完全可以嘴上答得漂亮;第二条问的是能力,能力上给不给是一个可以被检查的事实。所以你真正该追的是第二条:别问它保证不重复下单,问它凭什么想重复也做不到。 一个只能靠自律维持的边界,早晚有一天会在某个你不在场的凌晨失效。

六、这些约束是写在提示词里,还是写在代码里

最后一个问题是个元问题,但它决定前面五个的答案值不值钱。

结论一句话:写在提示词里的约束等于没写。 提示词会被后文影响、会在长对话里被稀释、会在模型状态混乱时失效,它是一句请求,不是一道墙;真正的边界必须在结构上成立,让程序想犯错都找不到入口。这句话为什么成立、约束该卡在「想—做—看—再想」那个循环的哪一环才不会被绕过,Agent 循环 里讲透了,这里不重复。

这一问下面我只展开一个动作,因为它是你随时能用上的:遇到分不清的情况,你是加小心,还是直接限权?

那个项目里有条规则很能说明问题。有些券商的接口,从外面根本分不出你连的是模拟盘还是实盘——同一套地址、同一种返回,靠的是账号本身的属性。对这类券商,它的处理不是「多加一次校验」,也不是「在文档里提醒用户注意别连错」,而是直接限死在模拟盘加只读:宁可少一个功能,也不接受一个靠人小心翼翼维持的区分。

这个判断我很服气,因为它认清了一件事:「记得每次检查一下」是一个每天都要重新做对的动作,而「不给权限」是一个只需要做对一次的决定。 前者的失败概率随时间累积,后者不会。人在半夜、在赶时间、在心里想着别的事的时候,一定会有某一次忘记检查——而在这件事上,一次就够了。

把这个动作学过来,你会发现它到处都能用:你分不清哪笔钱在哪个账户,那就别给那个账户开交易权限;你分不清某个脚本跑的是历史数据还是实时数据,那就别让它连下单接口;你分不清某个配置到底生效没有,那就把钱先划走。分不清就不给权限,比任何形式的「注意一点」都可靠。

顺带一提,这个「结构约束优于口头约束」的哲学,在量化里早有对应物。前视偏差最靠谱的解法从来不是「注意别用未来数据」,而是把数据管道设计成未来数据根本取不到。是一套东西。

认真做这件事的人,自己把线画在哪

我一开始怀疑这六个问题是不是我自己太紧张。后来去翻真正在做这件事的开源项目,发现他们的表述比我克制得多。

那个项目对自己的定位说得很清楚:面向研究、回测与留痕,不是面向「替你交易」。券商连接默认只读,实盘下单是要你主动打开的,打开之后还得先提交一份授权书,提交时界面上还要再确认一次。授权书有有效期,会自动过期。它不持有你的资金——钱在券商那儿,成交也由券商执行,程序这一侧只传递意图。而它给这块功能标的字是:实验性质,风险自负。

请注意这里面没有一句话是在承诺效果

我觉得这才是最有信息量的地方。一个技术能力完全足够让程序自动下单的团队,主动把默认状态按在只读上,给每个动作加锁,还在文档里管这叫实验性质——如果这条路真的好走,他们没有任何理由把话说得这么保守。

能做和该做,是两个问题。 一群离得最近的人,自己在这两者之间划了很宽的一条线。

说清楚:本站不建议你把实盘下单权交给自动系统

前面讲了这么多机制,可能会给人一种错觉——好像六个问题都答上来了就可以上了。

不是这个意思。本站不建议任何人把实盘下单权交给任何自动系统,包括你自己写的。 这六个问题是用来帮你看清风险的,不是一份验收标准。答上来只说明你知道自己在冒什么险,不说明这个险值得冒。

理由前面其实都铺完了,收拢起来是三条:你验不动它——你手上没有便宜的办法去检验一个会说话的东西在极端情况下的表现,LLM 交易范式那篇专门讲了为什么这个领域缺的不是模型能力,是证伪手段;错误会成串——自动化放大的不只是效率,还有一致性的错误;代价不可逆——研究错了改材料,交易错了改不了账户。

如果你确实想往这个方向摸索,有几条明显更划算的路:让它出建议、你来执行,这一条几乎保留了全部好处而去掉了全部不可逆性;只在模拟环境里跑,跑够长的时间,长到经历过几次真正难看的行情;把它当成监控而不是执行器——让它盯着你的持仓,触发条件的时候提醒你,而不是替你动手。这几条路和「让它自动交易」在收益预期上的差别,比你想象的小;在风险上的差别,比你想象的大。

⚠️ 风险提示

本文讨论的是自动交易系统的风险结构与工程边界,不是搭建指南,也不认为这条路能带来任何收益。任何形式的自动下单都涉及真实资金的不可逆损失,本站不建议读者尝试。文中所提开源项目的机制描述来自阅读其源码与文档,不是运行结果,也不构成对该项目的推荐。相关边界见 免责声明

几种常见的自我说服

守这条线的时候,有几种想法特别容易冒出来,每一种都值得当场掐掉。

「我先小仓位试试。」 小仓位限制的是单次损失,不限制这套系统的错误模式。而且小仓位跑顺了,你几乎一定会加。真正该问的是:这套东西在你打算最终投入的规模上,你敢不敢让它跑?不敢,那现在这个小仓位也只是在给自己攒信心,攒的还是样本内的那种信心。

「我会一直盯着的。」 你不会。自动化的全部意义就是让你不用盯,你盯着的话它对你没有价值。而且真到了该停的时刻,通常是半夜、或者你正忙、或者行情快到你反应不过来——这些恰恰是自动化系统最容易出问题的时刻。

「它已经连续对了很多次了。」 连续对了很多次,只说明它在你观察到的那段行情里是对的。这跟一个策略在样本内表现好、上了实盘就垮掉,是同一个逻辑错误,回测到实盘那篇讲的就是这中间会掉多少东西。给一个东西授权,看的是它最差的时候什么样,不是平均什么样。

「大不了我拔网线。」 拔网线停的是你这一侧。已经发到市场上的委托单还挂着,持仓还在那儿,行情还在动。拔网线不是急停,是让自己变成瞎子。

小结

  • 交出下单权时,该问的不是「它准不准」,是「它能闯多大的祸」。技术水平影响出事概率,边界设计影响出事规模,后者才是你唯一能提前控制的。
  • 六个问题:它被允许碰什么(品种、资产类别、能不能加杠杆)、额度上限(单笔、总敞口、每日次数,且最硬的上限是别把钱放在那个账户里)、能不能一键停(要独立于模型才算数)、停完剩下的单怎么办(先撤单再谈平仓,且自动平仓本身就是一次未必被授权的交易)、故障时默认干什么(下单不幂等,正确答案是永不自动重试、停下来交给人)、约束写在哪一层(写在提示词里等于没写)。
  • 出错的时候倒向「拒绝」而不是倒向「放行」,是整套安全设计里最该学的一个习惯:允许的品种列表为空意味着全部拒绝,急停的判定存疑时一律按已停止算。
  • 留痕要能把「这一单」「当时的数据」「判定结果」对齐,失败路径也要记,而且是先写记录再返回结果——顺序反了,崩在中间的那一下正好查不到。
  • 问「你保证不重复下单吗」没用,问「你凭什么想重复也做不到」才有用:能力上给不给,永远比态度上保不保证可靠。分不清模拟盘和实盘就直接限死只读,是这个原则最干净的一个例子。
  • 认真做这件事的开源团队,自己把默认状态按在只读、给功能标上实验性质、不承诺任何效果。离得最近的人这么保守,是最值得读的一个信号。
  • 本站的结论很明确:不建议把实盘下单权交给自动系统。想往这个方向走,先走「它建议、你执行」和「只在模拟环境跑」这两条,收益预期的差别很小,风险的差别很大。

用一句不带任何术语的话收尾:它想得对不对是一回事,它把事情办砸的时候你能不能兜住,是另一回事——而只有第二件事,是你现在就能决定的。

内容有错、看不懂、或想看下一篇?告诉我们 →

本文为投资教育整理,不构成任何投资建议;不荐个股/基金、不预测点位、不承诺收益。关键数据与结论请结合权威来源自行验证,并见风险免责声明