这是《打造自己的套利机器人》课程的第 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 中。
然后像编辑一样检查这页设计方案。问问自己:我能用一句话说明每个文件的作用吗?各阶段的顺序和上面的图一致吗?如果智能体凭空加了你不理解的阶段或文件,就让它删掉。
练习
- 用上面的请求让智能体生成 DESIGN.md。
- 在设计方案中标出一个可以删除、删除后机器人仍能工作的文件(例如仪表盘),再标出一个不能删除的文件。
- 把上面的三枚币例子拿来手算阶段 2 的预期结果:支出 300.20,收入 300.10,净亏 −0.10。第 9 课你会检查代码能不能算出相同的数字。
接下来学什么
第 4 课会实际编写阶段 1:比较五家交易所的最佳价格,并统计扣除手续费后还能留下多少差价。