課程「建立自己的套利機器人」第 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。你虧 0.10,儘管階段 1 說每枚幣有 +0.30。第 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:它比較五間交易所的最佳價格,並計算有多少價差能在扣除手續費後留下來。