套利系统的各个阶段:设计你的机器人

套利课程第3课。了解机器人为何分阶段工作、每个阶段负责什么,以及如何让 AI 智能体提供一份你能读懂和检查的设计方案。

这是《打造自己的套利机器人》课程的第 3 课。你已在第 2 课选好套利类型。今天你会了解机器人的组织方式,并得到一份单页设计方案。

为什么要分阶段?

想象你在一栋大房子里找一把丢失的钥匙。你不会拿着放大镜翻遍每一个抽屉。你会先快速看一眼桌子、门边的挂钩和外套口袋。只有这些地方都没有,才会开始打开抽屉。

机器人也是这样工作的。市场很多,价格每秒都在变化。逐一详细检查所有可能性太慢,所以机器人会先快速粗略地筛查,再对少数有希望的机会进行仔细检查。

各个阶段

阶段 1:筛选。每个市场只看两个数字,即最佳买价和最佳卖价(第 1 课)。这个阶段非常快,它要回答:“有没有看起来值得关注的机会?”输出是一份简短的候选清单。

阶段 2:成交模拟。对每个候选项查看完整订单簿,模拟买入和卖出,逐档计算成交。如果报价为“100.10”,这个价格只对少量交易有效。如果你想交易一千枚币,就要按不同档位吃掉许多报价,平均成交价也会变差。这个阶段要回答:“现在这样交易,会有多少钱成交?扣除手续费后利润是多少?”

阶段 3:执行。发送订单。在这门课程里,机器人以模拟模式工作:它假装进行交易,并把结果记在账本里。你不会承担资金风险,但能准确了解真正的机器人会看到什么。

风险检查会贯穿全部三个阶段:限制单笔交易最多能用多少钱;模拟余额跌得太多时停止;数据看起来异常时暂停。

prices  ->  stage 1 (screen)  ->  candidates  ->  stage 2 (walk the book)  ->  trade list  ->  stage 3 (execute / paper)
                                                                                     ^
                                                                          risk checks everywhere

每节课对应的阶段

课程阶段
4阶段 1,比较不同交易场所的最佳价格
5 至 8循环套利的阶段 1:把汇率表示为图,以及查找循环的算法
9 和 10阶段 2:订单簿和实际利润
11阶段 1 和阶段 2 为何与现实不符
12阶段 3 的模拟模式,以及风险限额

阶段 2 为什么不可少:一个简单的数字例子

最直接的设计会用一个函数找出价差,然后立刻买入和卖出。它很短,而且大多数最初的机器人都是这样开始的。下面的例子会展示这种设计漏掉了什么,这正是把机器人分成几个阶段的原因。

阶段 1 看到:交易所 A 的最佳卖价为 100.00,交易所 B 的最佳买价为 100.30。差价为 0.30。

阶段 2 打开订单簿。在 A,卖盘有 2 枚币的报价为 100.00,接着 3 枚币的报价为 100.20。在 B,买盘有 1 枚币的报价为 100.30,接着 5 枚币的报价为 99.90。

你想交易 3 枚币。在 A,你要付 2 × 100.00 + 1 × 100.20 = 300.20。在 B,你会收到 1 × 100.30 + 2 × 99.90 = 300.10。虽然阶段 1 显示每枚币有 +0.30 的差价,你最终还是亏了 0.10。第 9 和第 10 课会教你如何逐档计算。

机器人的文件结构

简单的文件布局就够了:

  • config.py:放置所有可能需要修改的数字(手续费、最低利润、交易规模)。
  • prices.py:获取最佳买价和卖价,之后还会获取订单簿。
  • screen.py:阶段 1。
  • simulate.py:阶段 2。
  • paper.py:阶段 3 和账本。
  • risk.py:各种限额。
  • main.py:把各部分接起来并循环运行。

你今天不需要把这些全都写出来,只要让智能体给出设计方案,然后读懂它。

让 AI 智能体起草设计方案

含糊的请求:

设计一个套利机器人。

把结构说清楚并要求输出可检查内容的请求:

我正在用 Python 编写一个模拟交易套利机器人,类型是:在一家交易所做循环套利(使用我写在 idea.md 中的类型)。它分为三个阶段:根据最佳买价和卖价进行快速筛选、逐档遍历订单簿的成交模拟,以及带账本的模拟交易执行器。请写一页 DESIGN.md,列出各个文件、每个文件的用途(用两句话说明)、文件之间传递的数据,以及风险限额。暂时不要写代码。所有数字都放在 config.py 中。

然后像编辑一样检查这页设计方案。问问自己:我能用一句话说明每个文件的作用吗?各阶段的顺序和上面的图一致吗?如果智能体凭空加了你不理解的阶段或文件,就让它删掉。

练习

  1. 用上面的请求让智能体生成 DESIGN.md。
  2. 在设计方案中标出一个可以删除、删除后机器人仍能工作的文件(例如仪表盘),再标出一个不能删除的文件。
  3. 把上面的三枚币例子拿来手算阶段 2 的预期结果:支出 300.20,收入 300.10,净亏 −0.10。第 9 课你会检查代码能不能算出相同的数字。

接下来学什么

第 4 课会实际编写阶段 1:比较五家交易所的最佳价格,并统计扣除手续费后还能留下多少差价。