风控拦住订单后,怎样避免系统一直重试,或者把错误放行?

风控拦截、重试与人工审批

约 9 分钟1 个动手实验4 道小题

学完你能说清楚用有限重试、暂停状态和人工审批控制订单生命周期。

01学完这一课,你能做到什么

风控拒绝不是一句“再试一次”就能解决。系统必须知道:这次失败能不能修复,最多尝试几次,什么时候暂停,以及什么时候交给人。

学完这一课,你应该能:

  1. 区分可修复错误和不可修复错误;
  2. 设计有上限、可记录的重试流程;
  3. 让缩量建议真正改变下一次订单;
  4. 分清 reject、halt、人工审批和最终放弃;
  5. 用 interrupt、resume、thread_id 和持久化状态实现人在回路;
  6. 识别模型复杂度、解释和分类指标的边界。

本课的金额、比例和尝试次数都是教学配置,不是任何账户的交易建议。

一句话记住不可修复就结束,可修复才重试。

02先看懂“一手也买不了”

假设账户有 20 万元,单笔上限是账户的 50%,也就是 10 万元。某标的一手约 14 万元,即使研究信号看多,最小可交易单位也已经超过上限。正确结果是拒绝,不是不断输出同样的一手。

这个例子说明,缩量只能处理“数量可以调整”的问题,不能修复最小交易单位已经超过限额的问题。也不能为了让示例成功,临时提高风控上限。

订单金额的计算是:

订单金额 = 价格 × 数量

假设价格为 1,400 元、数量为 100 股:订单金额 = 1,400 × 100 = 140,000 元,超过 100,000 元上限,因此应直接结束。

一句话记住最小单位超限,不靠重试解决。

03路由只决定去哪里,重试节点负责更新

可以把流程拆成:Chris 返回风险结论和建议上限;retry 节点更新 retry_count、订单上限和原因;再回到 Joe 重新计算。路由函数只读取状态并选择下一节点,不在判断时偷偷改状态。

“最多两次”必须先说清楚:是总共尝试两次,还是首次失败后额外重试两次。日志同时记录 attempt_no 和 retry_count,至少测试首次失败、最后一次允许重试和下一次超限。

如果输入和输出完全一样,重试没有新信息。网络暂时失败、数据刷新或明确的数量调整可能适合有限重试;最小可交易量超限、证券禁止买入等原因通常应直接结束。

有限重试的状态流
  1. 1风控判断返回原因和可调整上限
  2. 2更新状态记录次数、数量、原因
  3. 3重新计算新订单再次过风控
  4. 4结束或执行达到上限就停止

一句话记住每次重试都要改变状态或获得新信息。

04熔断不是多试几次直到通过

halt 表示系统进入暂停状态,不能靠重新生成信号解除。恢复要有独立条件、操作记录和授权。reject 是否可重试,则要按错误类别判断。

如果 warning 给出较小金额,Joe 必须在上限内向下取整。若向下取整后低于最小交易单位,就不能强行向上取整。调整后仍要再次经过风控。

连续拒绝时,系统要输出最终原因和完整尝试历史,不能悄悄结束,让使用者误以为订单成交。

一句话记住暂停要靠恢复条件,不靠碰运气重试。

05把人工审批做成可恢复的流程

关闭自动审批后,流程在 Human 节点调用 interrupt,展示研究依据、量化信号、风控判断和订单信息。人输入 yes 或 no,再用同一个任务标识 resume。yes 才能到 Trader,no 进入 END。

interrupt 是暂停,resume 是恢复,checkpointer 是保存状态。三者不是一回事。跨进程重启要使用真正的持久化保存器,不能把内存里的演示当成重启保证。恢复时必须绑定正确的 thread_id,避免把甲订单的批准用于乙订单。

审批可以来自 HTTP、飞书或其他获授权渠道,但都要验证操作者身份、权限、订单版本和有效期。审批入口变化,不能降低审计要求。

三个容易混淆的概念
流程控制

interrupt / resume

暂停当前任务,之后从正确节点继续。

状态保存

checkpointer

保存任务状态,支持回读和跨进程恢复。

一句话记住审批要绑定人、单、版本和期限。

动手试试

重试、审批还是放弃

逐张判断风控拦截后应该有限重试、转人工审批还是直接结束。

SCENARIO JUDGE

风控拦截后,应该有限重试、转人工审批,还是直接放弃?先判断原因是否可修复,再检查状态、身份和订单版本。

第 1 / 8 张
情景 01

网络暂时失败

订单参数和风险检查均通过,但提交交易所时网络请求超时,没有确认订单是否受理。系统还有一次明确允许的重试额度。

06把研究报告放在独立产物里

大篇幅研究报告不必全部塞进 State。可以把报告保存成独立 artifact,在 State 中留下受控路径或标识、摘要、版本和校验信息。这样便于持久化、回读和审计。

报告更新后,旧审批不能自动覆盖新报告和新订单。审批卡片至少汇总研究依据、量化信号和风控判断,让人核对未知条件和授权范围,而不是看到结果不顺眼就临时破坏规则。

某个框架循环限制约 54,只是框架层的防护配置,不能替代订单层的明确重试上限。业务上限仍要由 attempt_no、retry_count 和错误类别共同控制。

一句话记住框架限制不等于订单重试上限。

07更多因子和更复杂模型不一定更好

加入 52 个因子、把树模型数量缩到约 100 并加入正则化后,模型仍可能不如简单 。原因可能是特征重复、缺失、高噪声、标签设计、样本量不足和市场变化。复杂度增加,不会自动创造有效信息。

股票池从 16 只扩大到数千只时,行业权重、样本分布和共同波动结构都会变。SVD 保留前 4 个成分解释约 80%,只能说明压缩了大部分方差,不能证明剩余 20% 全是噪声,也不能证明预测更好。要比较预处理、载荷、解释方差和表现。

XGBoost 和 LightGBM 的重要性排名可能因树结构、分裂规则、随机性和口径不同而变化。split 次数和 gain 不能直接混用。更稳妥的补充是时间外置换检验、去掉特征后的性能变化和跨时间稳定性。

研究结果要分开看
模型

复杂度

因子数量、树数量和正则化要与样本量匹配。

数据

股票池

从 16 只扩到数千只,会改变分布和行业结构。

解释

SVD

解释方差描述压缩效果,不直接证明可交易。

重要性

统一口径

先分清 split、gain 和置换结果,再比较排名。

一句话记住解释方差高,不等于预测价值高。

08用统一验证判断策略是否值得执行

某段长期上涨中买入持有可能优于频繁交易,换成长期下跌标的则可能相反。不能只挑走出大行情的标的回看。择时可能降低暴露和回撤,也可能错过上涨并增加费用。

量化的价值,是把假设、规则和执行记录下来,方便复盘和比较。研究时至少保留退市样本,统一时间切分、费用、股票池和数据可得性,再比较收益、回撤、和稳定性。准确率、精确率、召回率不能直接等同于净收益:分类更准的模型,也可能把最大亏损判错。

验收要覆盖正常放行、最小一手超限、人工 yes/no,以及两次重复批准、审批过期、暂停后重启、订单已受理但回报未保存。不可修复订单不能无限循环;halt 不能被重试绕过;no 永远不能到 Trader;重复批准不能重复下单;恢复后先核对外部。

一句话记住先验证执行闭环,再比较模型表现。

检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01最小交易单位已经超过风控上限时,应该怎样处理?
02halt 状态能否通过重新生成信号解除?
03人工输入 yes 后,恢复流程至少要绑定什么?
04前 4 个 SVD 成分解释约 80% 方差,能直接说明什么?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · 风控拦截、重试与人工审批风控拦截后的正确处理原则是什么?

先判断原因能否修复,再按明确上限有限重试、转审批或结束,并完整记录状态。

  • 有限重试
  • 暂停可恢复
  • 审批可审计
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01不可修复的最小单位超限不能靠重试解决,正确结果可以是不交易。
  2. 02有限重试要记录 attempt_no、retry_count、原因和每次输入变化。
  3. 03halt 需要独立恢复条件;warning 缩量后必须向下取整并再次过风控。
  4. 04interrupt、resume 和 checkpointer 分别负责暂停恢复与状态保存,审批要绑定身份、订单和版本。
  5. 05模型复杂度、解释方差和分类指标都不能替代统一的样本外交易验证。
完成这一课

完成这一课

读完讲义、动手做一次实验、答对小题,这一课就算学完了。

  • 读完讲义
  • 完成一轮拦截处置判断
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定教学样本

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。