AITradingSimulator 實測:三個指令自架 LLM 紙上交易競賽

AITradingSimulator 是讓大型語言模型拿虛擬資金、在真實加密貨幣行情上每 180 秒做一次多空決策的開源模擬平台。本機三個指令就能自架,公開大屏不用登入;但模擬不扣手續費也不模擬滑價,排行榜成績該怎麼看,這篇用原始碼逐條攤開。

用 AI 摘要這篇文章:

把 AITradingSimulator 的原始碼抓下來、建好環境、按下啟動,前後三個指令;12 秒後終端機印出 trading loop started,本機多出一個即時交易儀表板,比特幣、以太幣等六種幣的報價每五秒刷新一次。行情是真的,錢是假的。這個 MIT 授權的開源專案做的事情,用一句話就能講完:讓你指定的幾個大型語言模型,各自拿一筆虛擬資金,照你寫的風格提示詞,每 180 秒在真實加密貨幣行情上做出多空決策,再把損益放進同一個排行榜互比。

我實際把它在本機跑起來,也把交易執行層的程式碼逐檔讀完。結論先說:當成觀察 LLM 交易行為的自家實驗室,值得;把排行榜名次當成挑模型或挑幣的依據,不行。問題不在 AI 身上,在模擬環境本身:成交不扣手續費、不模擬滑價,損益公式就是價差乘上數量。零摩擦環境算出來的成績,天生比真實交易好看,這點後面用程式碼逐條攤開。

一場錢不落地的紙上競賽:六種幣、180 秒一輪、二十倍槓桿

AITradingSimulator 的 GitHub 儲存庫建於 2025 年 10 月 22 日,到 2026 年 8 月累積約 321 顆星、73 次 fork。它站在一個現成的基礎上:README 開頭就交代,本專案基於 chadyi 的 AITradeGame 二次開發,疊上了帳號系統、Linux DO OAuth 登入與更強的 AI 回應解析器;上游本身有 904 顆星。兩邊的時間線放在一起看頗有意思:上游 2025 年 10 月 20 日建庫,11 月 3 日之後停更;下游晚兩天出現,10 月 23 日推送最後一個 commit 之後也靜止了。你現在拿到的,是一份凍結十個月的程式碼。

競賽規則集中在 config.py,讀起來像一份比賽章程:支援 BTC、ETH、SOL、BNB、XRP、DOGE 六種幣;每 180 秒執行一輪決策循環;單一部位槓桿 1 到 20 倍,做多放空都行;每個模型的初始虛擬資金一萬美元。每個模型可以掛自己的系統提示詞,把「保守型,只在 RSI 超賣時進場」或「高槓桿短線」這類風格寫進去。行情、部位與帳戶狀態會被組合成提示詞丟給模型,模型回傳 JSON 格式的決策,引擎照著在虛擬帳戶成交。按照 README 的說法,儀表板會畫出前六名模型加上比特幣基準的收益曲線,右側捲動顯示最新一百筆交易動態;績效頁提供夏普、Sortino、Calmar 比率與月度損益,另有回測模組用歷史行情重演策略。

一輪決策循環的內部順序,trading_engine.py 寫得很清楚:先抓六幣現價與技術指標,算出當前組合市值,接著檢查所有部位的停損停利條件,條件觸發就先平倉,然後才把市場狀態、部位與帳戶資訊組成提示詞送給模型;模型回傳的決策通過解析與驗證後執行,最後把更新過的帳戶市值寫回資料庫,每一輪的決策與截斷後的模型回覆也同步存檔。停損停利排在 AI 決策之前,代表風控規則的優先序高於模型意志,這是個值得給分的設計細節。

官方免責值得原樣轉述:平台僅供教育與模擬目的,不構成任何投資建議,不涉及真實資金交易。這幾句從程式碼結構看並非門面話:整個專案對外只有行情是讀取公開 API(Binance、CoinGecko、CoinCap、CryptoCompare 四個來源輪替備援),下單端點一個都不存在,部位與損益全存在本地 SQLite 裡。它沒有能力替你動真錢,而且這是刻意設計的結果。

本機實測:三個指令跑起來,公開儀表板不用登入

實際動手的流程比想像短,指令就是 clone、install、啟動三個。git clone 抓下專案,順手建個 Python 3.11 虛擬環境做隔離,pip install 裝完 requirements.txt(裡面只有十個依賴,Flask、Flask-SocketIO、openai 這個量級),python app.py 按下去就起來了。終端機在 12 秒內完成啟動:資料庫建表、交易循環開跑、Flask 監聽 35008 埠。打開瀏覽器就是即時儀表板,六種幣的報價與漲跌立刻出現,比特幣當下 63,071 美元、以太幣 1,880 美元,與交易所同步。值得注意的是公開頁不需要登入:登入牆只擋「建立模型」那一側,看盤與排行榜直接看,這讓自架版很適合當團隊或教室的展示牆。

AITradingSimulator 本機自架後的即時交易大屏首頁,六種加密貨幣報價直接顯示,不需要登入Pin
本機自架後的公開即時大屏:六幣報價直接可見,登入牆只擋建立模型那一側。

託管版就是另一回事了。官方線上站 trade.easy2ai.com 目前打開是 Cloudflare 的 522 連線逾時頁,源站沒有回應;想透過官方帳號體驗的人暫時無門(託管版走 Linux DO OAuth 登入,設定檔要求信任等級一以上)。自架反而是現在唯一穩定的入口,好消息是這條路不難走。

行情層的備援設計值得肯定。market_data.py 對四個公開行情源排了優先序與各自速率限制:Binance 半秒就能再請求一次,CoinGecko 免費版限制嚴格所以隔十秒,一路退化到 CryptoCompare,並且把結果寫進本地快取檔,斷線時還能用過期行情撐一陣子。實測第一層就成功,六幣全數取回,刷新間隔與 config 裡的 5 秒設定一致。這也代表模型每輪決策拿到的行情大約落後五秒,對 180 秒一輪的節奏來說夠用,但別期待它捕捉得到秒級的價格跳動。

模擬成績能信多少:三個寫在明處的零摩擦設計

把 trading_engine.py 的成交邏輯攤開,會看到幾個會讓成績偏樂觀的設計,全都寫在明處,打開原始碼就找得到。

成交價直接用行情快取價,沒有滑價。_execute_buy 拿市場狀態裡的價格當成交價,停損停利的檢查也一樣,條件一到就以檢查當下的行情價直接平倉。真實市場裡,急單會吃掉委託簿深度、大跳空會讓停損單成交在更差的價位;模擬裡沒有流動性問題,成交價永遠拿得到,停損落在哪裡只取決於 180 秒循環撞見的價格。

損益公式是純價差。做多平倉的損益等於 (現價 – 進場價) × 數量,放空反過來,沒有任何成本從虛擬現金扣掉。二十倍槓桿配上零資金成本,等於把波動放大二十倍卻不收利息,這種條件在真實交易所找不到。

手續費只進報表,不進帳戶。app.py 的績效統計確實有一個 total_fees 欄位,按進場金額的 0.1% 計算;但執行層沒有任何對應的扣款程式碼,排行榜的名次與收益曲線都是用沒扣費的權益畫出來的。報表頁告訴你「你花了多少手續費」,帳戶卻從來沒付過這筆錢,兩者並存是現況。換算成規模感:一萬美元的帳戶每進出一輪,真實交易所大約要付 20 美元等級的手續費,一天來回十次就是帳戶的 2%,一個月下來是會吃掉多數短線策略報酬的數字。模擬環境把這條成本曲線整條拔掉,交易越頻繁的風格在排行榜上因此越佔便宜。

還有一個配置與實作脫節的細節:config.py 宣告了 MAX_TOTAL_LEVERAGE = 3.0,註解寫「最大總槓桿倍數」,但整個程式庫沒有任何地方引用這個常數,實際被強制執行的只有單一部位 1 到 20 倍(_validate_leverage 函式)。帳戶整體的風險上限,只存在於設定檔的註解裡。把這幾條加起來,我的判斷是:排行榜名次反映的是零摩擦世界裡的策略加上運氣,把它當趣味競賽的相對比較可以,把它換算成任何真實獲利預期都會高估。

AITradingSimulator 的 GitHub 儲存庫頁面,MIT 授權、約 321 顆星,最後推送停在 2025 年 10 月Pin
GitHub 儲存庫:MIT 授權,最後一次推送停在 2025 年 10 月 23 日。

自架門檻與金鑰去向:十個依賴、一個明文欄位

除了純 Python 流程,儲存庫也附了 Docker Compose 與 Gunicorn 的生產部署建議,README 給了 Nginx 反向代理與 SQLite 備份指令的範例。對照記憶體需求,這個專案輕得驚人:SQLite 加 Flask,不需要任何外部資料庫服務。比起要接硬體、刷韌體的自架專案例如自架 IP-KVM 控制台,這裡連螺絲都不用轉,一台小 VPS 或家裡的迷你主機就夠。

帳號體系有兩套。託管版用 Linux DO OAuth,設定檔裡寫明要求信任等級一以上,這是社群的防機器人門檻;自架版走傳統帳號密碼註冊,每個使用者的模型與交易紀錄在資料表層級分開存放,路由也有權限裝飾器擋著。自己架給自己用的話,登入其實可以當成選配。

金鑰的流向要看清楚。每個模型在介面裡填自己的 API 位址、金鑰與模型名稱,程式用它們建立 OpenAI 相容客戶端,所以 DeepSeek、Claude、Kimi 這類提供相容端點的服務都接得上。金鑰只會送向你自己填的端點,這個信任邊界與我們之前介紹過的自備金鑰工具相同:例如把題目直送使用者指定模型的作業解答工具,以及把同一段症狀丟給多個模型對比的 AI 會診面板。它們共同的原則是,平台不經手你的對話內容,你的金鑰也只對你設定的服務曝光。另一面是保管責任:database.py 的 models 資料表把 api_key 存成明文 TEXT,那顆 SQLite 檔案等於金鑰保管箱,自架在共用機器上的人要自己處理檔案權限與備份。

凍結十個月的程式碼,與三個要自己扛的風險

把限制集中講。維護狀態是最現實的一條:下游與上游的儲存庫都停在 2025 年 10 到 11 月,repo 目前開著三個 issue 沒有人處理,行情 API 或模型回應格式一改,修的就是你自己。依賴別人維護的開源專案都帶這種風險,之前介紹過的用 GitHub Actions 自架 RSS 管線就是同款劇本:儲存庫不動了,部署者的責任就變大。

模型決策品質、解析器對各家模型回應格式的容錯、績效指標的計算,都要掛上真實金鑰跑過才見真章;想部署的人,先拿小額度金鑰試一輪再說。

題材本身的界線同樣要劃清楚。加密貨幣波動大,二十倍槓桿在真實市場是能把本金快速歸零的工具;這個專案的價值恰恰在於它把這一切關在假錢裡。離開模擬環境之後的任何買賣決策,這裡一概不提供答案,官方免責也是這樣寫的。

判斷整理成一句話:如果你想觀察不同語言模型拿到同一份行情會做出什麼不同反應、想比較提示詞風格對決策的影響,或想在課堂上展示一個完整的交易系統骨架,自架一套相當划算,三個指令、十個依賴、一份凍結但能跑的程式碼。如果你想找的是「哪個 AI 選幣比較準」的答案,這裡沒有,也不該有。

我認為這個專案真正耐看的產物不是排行榜,是 conversations 資料表:每個模型每輪回傳的決策 JSON 與截成兩千字的原始回覆都存了下來,等於一座可以翻閱的 AI 交易日誌。要留意的是提示詞欄位只存一行摘要,想知道模型「當時看到什麼行情」,得拿交易紀錄對著時間軸還原;但也夠你掛上一個便宜的模型跑一個晚上,隔天翻它每輪的決策與理由,看它在什麼行情下選擇觀望、什麼行情下突然轉趨激進。這比任何績效數字都更接近「LLM 會不會交易」這個問題的答案。

所以若真要玩,順序建議這樣排:先掛一個模型跑半天,翻它的對話紀錄;再換一種風格提示詞跑第二輪;之後才打開排行榜。先看個體行為再看排名,你會對那些名次多一層懷疑,而那份懷疑,正是這個模擬器真正教會你的事。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 895

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...