11 · 量化套利系统:市场数据→价格聚合→路径搜索→利润计算→风控→执行→监控
11 · 量化套利系统:市场数据→价格聚合→路径搜索→利润计算→风控→执行→监控(★★★★★)
这里是真正工作的地方——你的套利系统。前面十个模块是知识储备,本模块是把它们组装成 一条端到端的自动化管道。与
12-系统架构设计.md强绑定:本篇讲"每个环节做什么、 为什么必须有这一环",12篇讲"这些环节怎么落地成具体的服务/模块"。
0. 一句话本质
量化套利系统的本质是一条流水线:不断吸入市场数据、算出所有可能路径的预期利润、 用风控规则过滤不能承受的下行、自动执行、失败时安全回滚、并把每一步都记录下来 供事后复盘和监控告警。系统的价值不在"发现了一次机会", 而在"7×24 小时稳定地重复这条流水线,且失败时不会造成超出预期的损失"。
1. 完整管道逐环节拆解
市场数据 ──▶ 价格聚合 ──▶ 路径搜索 ──▶ 利润计算 ──▶ Gas 预测 ──▶ Bridge 费用
│
▼
风险控制
│
▼
自动执行
│
┌─────────┴─────────┐
成功 失败回滚
│ │
└─────────┬─────────┘
▼
日志 + 监控
1.1 市场数据
- 数据源:链上事件(
Swap/Sync/Transfer,见04-Solidity进阶.md§8)、mempool 待处理交易 (见10-MEV.md)、链下 CEX 行情(用于跨链/跨市场比价)。 - 关键要求:低延迟(WebSocket 订阅优于轮询,见
01-计算机基础.md§1)、多链并发采集、 数据一致性校验(防止用过期数据算出"虚假机会")。
1.2 价格聚合
- 把多个 DEX/多条链的价格统一归一化(处理不同
decimals,见06-Token标准.md), 构建一张"实时可比"的价格图(Price Graph)。 - 常见坑:只看单个池子的"瞬时价格"而不看深度——深度不够,报价再好,真实成交也会有巨大滑点。
1.3 路径搜索
- 本质是在"价格图"上找最优路径的图搜索问题:三角套利(A→B→C→A)、多跳套利、跨链套利 (A 链→桥→B 链→套利→桥回→A 链)。
- 常见算法:Bellman-Ford 类算法找负权环(价格图取对数后,套利机会对应一个"负权环"); 实时场景通常需要增量更新而非每次全量重算,否则搜索本身的延迟会吃掉机会窗口。
1.4 利润计算
- 必须扣除的成本项(新手最容易漏算的部分):
- 每一跳的 DEX 手续费(
07-DEX与做市.md) - 滑点(路径越长、单笔越大,滑点累积越明显)
- Gas 成本(见 1.5)
- 跨链场景的 Bridge 费用(见 1.6)
- MEV 竞价成本(如果要走私有 Bundle,可能需要给 Builder 支付小费)
- 每一跳的 DEX 手续费(
- 净利润 = 预期收益 − 上述全部成本,任何一项漏算都会导致"模拟盘赚钱、实盘亏损"。
1.5 Gas 预测
- 预测这笔交易实际会消耗多少 gas(依赖
03-EVM原理.md的 opcode 成本模型), 以及当前网络的 base fee/priority fee 走势(EIP-1559 双价制)。 - 难点:你的交易本身可能改变链上状态(比如你的套利会改变池子价格), 导致实际执行路径和"干跑模拟"时不完全一致,gas 预测需要预留合理缓冲。
1.6 Bridge 费用
- 见
09-跨链生态.md§1(Fee/Gas/Refund 环节),跨链套利必须把桥的手续费、 目标链预付 gas、可能的失败退款延迟都计入决策。
1.7 风险控制
- 仓位限额:单笔/单日最大敞口,防止单次异常放大损失。
- 滑点保护:设置最小可接受输出(
amountOutMin),超出容忍度直接 revert 而非"亏本也要成交"。 - 熔断机制:连续失败 N 次、或检测到异常 gas 飙升/极端行情时自动暂停策略,等待人工介入。
- 私钥/资金隔离:执行账户资金规模与总资产隔离,避免单点故障波及全部资金(呼应
05-钱包与账户.md)。
1.8 自动执行
- 把计算好的路径转成实际交易(或 Bundle,见
10-MEV.md),处理 nonce 管理、 gas 定价策略、提交渠道选择(公开 mempool / Private RPC / 直连 Builder)。
1.9 失败回滚
- 链上交易本身失败会自动 revert(不消耗除已用 gas 外的资金,见
03-EVM原理.md§2), 但系统层面还需要处理:这笔失败交易的资金是否卡在中间状态(尤其跨链场景)、 是否需要重试、重试几次后放弃并告警。
1.10 日志
- evidence-first 精神(见
notes/19-evidence-first方法论.md):每一次决策依据(用了什么价格数据、 算出的预期利润、实际执行结果)都要落盘,事后能完整复盘"为什么这次决策是对的/错的"。
1.11 监控
- 实时看板:策略盈亏曲线、失败率、gas 消耗趋势、各链 RPC 健康状态。
- 告警:异常亏损、连续失败、RPC 断连、私钥余额低于阈值等触发即时通知(对应
01-计算机基础.md的运维基本功)。
2. 前置名词小词典
- 负权环(Negative Cycle):价格图取对数后,套利机会在图论上表现为一个总权重为负的环路。
- 干跑(Dry-run):不实际发送交易,仅在本地/fork 环境模拟执行结果,用于验证策略而不花真实 gas。
- 熔断(Circuit Breaker):达到预设风险阈值时自动停止策略执行的保护机制。
- 滑点保护(Slippage Protection):设定最小可接受输出/最大可接受输入,防止极端行情下"亏本成交"。
3. 常见误区
- ❌ "模拟盘赚钱,实盘就一定赚钱" → 模拟往往忽略了 gas 波动、真实滑点、被抢跑等因素, 必须把全部成本项纳入回测而非事后才发现。
- ❌ "路径搜索算法越复杂越好" → 复杂算法的计算延迟本身可能超过机会窗口, 实时场景往往"够快的简单算法"比"理论最优但慢的算法"更有效。
- ❌ "只要有风控就不会亏大钱" → 风控只能限制"已知风险模式",黑天鹅、新型攻击、协议本身的漏洞 仍可能造成超出预设阈值的损失,风控是降低而非消灭尾部风险。
- ❌ "日志只是给自己看的" → 良好的日志设计是系统能不能被审计、能不能快速定位故障根因的基础, 应当从系统设计第一天就纳入架构,而不是事后补。
4. 与套利实践的对应 / 自检问题
对应:整个模块就是 12-系统架构设计.md 中 Strategy Center / Price Engine / Risk Engine /
Executor 等组件的功能性描述,12 篇给出这些组件如何被组织成具体系统。
自检:
- 给你一笔看起来利润丰厚的三角套利路径,你会依次检查哪 5 项成本,才能确认它是"真机会"?
- 为什么"干跑模拟成功"不能保证"实盘执行也成功"?
- 熔断机制应该在什么条件下触发?触发后系统应该做什么,而不只是"停止交易"?
- 一次执行失败的交易,你的系统需要记录哪些信息才能支持"复盘定位失败原因"?
── Q&A / 更正记录区(按日期追加)──
原始讨论记录见
Q&A/(按日期归档,保留完整来回过程);本节是同步后的结论摘要, 只增不删——若后续发现本篇正文表述不准确,按更正记录追加在此,不删改正文, 保留"原来写的是什么 → 后来发现哪里不准 → 更正为什么"的轨迹。规范见Q&A/README.md。
- (2026-07-26 建立。暂无 Q&A——后续围绕本篇的提问/质疑/更正在此累积。)