如何安全地运行AI交易系统?AI Market Maker三种运行模式与双重门控安全机制详解
【免费下载链接】ai-market-makerAgentic AI Hedge Fund OS (AIMM)项目地址: https://gitcode.com/gh_mirrors/ai/ai-market-maker
AI Market Maker(AIMM)是一个开源的 Agentic AI 加密货币对冲基金交易操作系统。很多新手第一次接触 AI 交易系统时最担心一个问题:如何让 AI 自主交易又不让它在失控时烧掉本金?这篇文章带你搞懂 AIMM 提供的三种运行模式(backtest / paper / live),以及它的「双重门控」安全机制——为什么它的实盘模式必须同时打开两道"闸门"才能真正下单。
从上面的架构图可以看到,AIMM 的整个交易链路是:研究台 → 信号合成 → 组合管理 → 风控门卫(Risk Guard)→ 执行。安全设计就藏在每一环里,下面我们逐个拆解。
三种运行模式:先搞懂 backtest、paper 和 live
AIMM 的三种运行模式共用同一套 LangGraph 工作流,由一个run_mode配置项统一控制,定义见 src/config/run_mode.py,完整说明在 docs/run-modes.md:
| 模式 | 用途 | 订单执行方式 |
|---|---|---|
📊backtest | 历史回测 / K线回放 | 仅模拟成交,完全不需要真实 API Key |
📝paper | 默认的开发测试模式 | Binance 测试网(或模拟),不动真钱 |
💰live | 真实交易 | 真实下单,受双重门控保护 |
切换模式只需要改一个环境变量MODE,或者用命令行参数临时覆盖:
# 默认就是 paper 模式,无需任何配置 uv run python src/main.py # 单次指定模式(不修改配置文件) uv run python src/main.py --mode backtest💡新手建议:90% 的时间你应该待在backtest和paper模式里。paper 模式默认走测试网路径(src/config/exchange_env.py),不需要配置任何真实密钥,这也是默认值被设计为paper的原因。
第一道闸门:AI_MARKET_MAKER_ALLOW_LIVE 环境开关
第一重门控非常简单粗暴:除非你显式声明"我要真实交易",否则系统拒绝进入实盘路径。
在 src/config/run_mode.py 中,如果MODE=live但没有设置AI_MARKET_MAKER_ALLOW_LIVE=1(或true/yes),程序会直接抛出异常并退出:
Run mode 'live' requires AI_MARKET_MAKER_ALLOW_LIVE=1 (or true/yes)
同样的逻辑也保护了交易所适配层:只要EXCHANGE不是paper(比如设置为hyperliquid),就强制要求这个开关打开,否则会报"确认真实交易意图"的错误。
再看仓库的 .env.example,里面的默认值就是刻意留了一道坎:
# 必须为 1 才允许任何非 paper 交易所。纯纸面交易请保持 0。 AI_MARKET_MAKER_ALLOW_LIVE=0这就是所谓的"显式确认"设计:把实盘从"默认状态"变成"需要额外一步操作"的状态,防止一个手滑的export MODE=live直接烧钱。
第二道闸门:Risk Guard 的"一票否决权"
即使你打开了AI_MARKET_MAKER_ALLOW_LIVE,还有第二道闸门:Risk Guard(风控门卫)拥有对每一笔交易的最终否决权。
Risk Guard 是一个治理层 Agent(src/agents/governance/risk_guard.py),它的职责不是"打个分",而是真的能叫停执行。它检查的维度包括:
- 回撤止损:当前回撤达到策略设定的
risk_max_drawdown_stop阈值时,风险分直接拉满到 1.0,立即 VETO; - 杠杆/敞口上限:总敞口与权益之比超过策略允许的最大杠杆时,风险分被推到 0.95,触发否决;接近上限时风险分也会升到 0.75 作为警告;
- 紧急停止开关(Kill Switch):设置
AIMM_KILL_SWITCH=1或AIMM_RISK_GUARD_KILL_SWITCH=1后,所有执行提案一律被否决——这是留给人类的"物理急停按钮"。
被否决后会发生什么?看 docs/personas/14_risk_guard.md 中的图路由规则:
- ✅
APPROVED→ 进入portfolio_execute(执行节点) - 🚫
VETOED→ 直接跳到audit(审计节点),订单根本不会被创建
也就是说,否决发生在你以为会下单的那一刻之前,而且是流程层面的硬性跳转,不是日志里的一句"建议谨慎"。
更多内置的"防御性默认值"
除了双重门控,AIMM 在执行层还有几个值得了解的安全细节(均来自 docs/run-modes.md 的 Safety model 部分):
| 机制 | 说明 |
|---|---|
| 🧪 Dry-run 守卫 | HYPERLIQUID_DRY_RUN=1时,订单只做解析和校验,永远不会发往交易所 |
| 🌐 默认测试网 | HYPERLIQUID_TESTNET默认为1,主网需要你显式关掉的 opt-out 配置 |
| 🛑 Fail-closed 设计 | 遇到未实现的实盘路径,启动时就报错退出,而不是等到下单那一刻才炸 |
| 🔐 密钥脱敏 | 内部对象的__repr__永远不会把私钥/密钥打印进日志 |
| 🔁 幂等去重 | 开启 OMS 引擎(src/config/execution_engine.py)后,订单按 SHA-256 幂等键去重,重复提交不会造成重复下单 |
OMS 引擎还可以把订单状态持久化到 SQLite(src/oms/oms.py),让"重启后不会重复下单"和完整的事件审计日志成为可能。
新手推荐的上手路径 🚀
按下面这个顺序使用 AIMM,安全边际最大:
- 回测验证:
MODE=backtest跑历史数据,看超额收益(对比买入持有基准)是否成立; - 纸面交易:切到默认的
MODE=paper,在 Binance 测试网观察信号质量和组合行为,至少观察一段时间; - 打开第一道闸门:确认真的要实盘后,才设置
AI_MARKET_MAKER_ALLOW_LIVE=1+MODE=live; - 随时准备急停:了解
AIMM_KILL_SWITCH=1这个环境变量,出问题时一键否决所有执行。
常见问题 FAQ
Q:不设置任何环境变量,程序默认会实盘交易吗?不会。默认MODE=paper、AI_MARKET_MAKER_ALLOW_LIVE=0、交易所默认paper,所有路径都指向测试网/模拟环境。
Q:live 模式和 paper 模式用的是同一套代码吗?是的。三种模式共用同一个 LangGraph 工作流(详见 docs/langgraph-workflow.md),区别只在执行端如何落地订单。这意味着回测验证过的行为,在实盘中具有一致性。
Q:Risk Guard 否决后,AI 会继续"重试"下单吗?不会。图路由在 VETOED 时直接跳到 audit 节点,执行节点被整体跳过,且每轮决策都会重新走一遍 Risk Guard。
一句话总结:AI Market Maker 的安全哲学是"默认不交易,实盘要显式确认,每一笔单都要过风控门卫,且门卫有真正的否决权"。理解了这三种运行模式和双重门控,你就能放心地把探索留在 backtest 和 paper 的世界里,等策略被充分验证后,再决定是否打开那两道闸门。
【免费下载链接】ai-market-makerAgentic AI Hedge Fund OS (AIMM)项目地址: https://gitcode.com/gh_mirrors/ai/ai-market-maker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考