上傳你的交易紀錄、說出你的思路——讓 AI 回測你的策略、找出盲點、點出可以優化的地方。
“Backtest Silver Bullet on NQ — last 30 days”
仍在開發中,加入候補名單,上線時第一時間通知你。
開發日誌
從一個等券商審核時順手寫的 Python TUI,到跨券商 copy trading。底下的 commit 就是收據。最新的在最上面。
一批 migration 一直在默默失敗 — table ownership 沒設對,每次的 ADD COLUMN 都被當成警告印一下就過了。把失敗改成真正的錯誤之後,累積下來的改動才終於真的下去。
一個 worker 子進程在打一條 worker 模式下根本不存在的 connection pool — 每 5 分鐘漏一個 traceback frame 加上一點 buffer 狀態。20 小時下來孤兒漲到 4.8 GB,被 OOM 殺掉,臨終前還順便把機器吃滿。6 行 if db is None, return 之後,機器不再融化。
兩個回測改進。成交不再卡在 bar 收盤點 — intrabar 時點會被算進去,gap 也會被偵測到。舊的回測可以拿新引擎重跑、並排比對。研究結果變成跨版本可重現,不再被鎖在當時跑的那個版本上。
在這個 commit 之前,想要自訂策略你只能從預設裡挑、或者來找我。從今以後你自己在瀏覽器裡寫,用一套 typed 的小語言。跑一遍,看進出場畫在圖上,調整,再跑一遍。Moltfi 本人也能透過 agent 那扇門 — MCP — 用同樣的方式寫策略。策略不再是「你要求」的東西,變成「你寫」的東西。
回測改成 fire-and-forget — 送一個策略進去、拿一個 job id、之後慢慢輪詢狀態。這不只是 API 設計變漂亮 — 是 Moltfi 從這天起能用聲音驅動的前提:之前在 chat session 裡跑回測,agent 會卡在那邊等結果出來。非同步之後,Mate 把工作丟給 Moltfi、先回去跟使用者講話,結果好了再回頭處理。隔天 Mate 那邊就上線把這條路串起來的 tool(run_backtest 跟 get_run_status),第一條端到端用聲音做交易研究的迴路就成了。
策略變成資料,不是設定。ICT 那套原語 — fair value gap、order block、sessions — 變成 DSL 裡的一級型別。使用者幾天後會在編輯器裡看到的東西,後端這一半在這裡。
跟 Moltfi 整體對外開放同一天。背後的想法:agent 應該能用跟人類帳戶一樣的方式跟 Moltfi 講話。MCP 是那扇門。
跨券商 copy trading 實際上線那天。不同券商、不同部位大小、不同 member 倍率 — 全都同步,全都跟著同一個 leader 的動作反應。市面上多數 copy trading 系統都假設大家在同一個券商;prop firm 的世界不是這樣運作的。做這套東西,是 Moltfi 一開始存在的原因。這一章的山頂。
讓 Moltfi 跟我看過的任何交易工具都不一樣的功能,這天落成 code。你不再「一次管一個帳戶」,而是把「一個 leader 加一群 follower」當成一個單位。Leader 上的動作一次扇開到整個 group,引擎讓大家同步,架構文件跟它同一個 commit — 為了讓以後的我別忘了怎麼運作的。隔天可以跨券商上線了。
single-user prototype → SaaS 的轉折。同一天 login 接上 everydays.tools。陌生人從此可以共用同一台 server 而不出事。
順帶把連續合約支援也做了,這樣回測不會每三個月被 futures rollover 弄爆。整個 backtest 故事的種子。
同一個早上兩個 commit,前後差三小時。第一個:一個 standalone viewer 頁 — 唯讀的圖跟掛單簿,沒有下單按鈕,只是即時的畫面。第二個:一個小小的 admin 頁,可以發一個 token,給你一個可分享的連結。任何拿到連結的人都能看,只能看你給的那幾個 symbol;沒 token 的人 viewer 連開都不開。這顆小種子,後來長成今天遍布在 everydays.tools 的 token 系統。我第一次把 token 當成「你自己創造的東西」,不是「你登入後拿到的東西」。
在這之前,資料層是有機長出來的 — 全部東西塞在同一個大空間。這個 commit 把它拆成幾個 domain:行情、訂單、使用者、模擬,各自管好自己的 table,不再跨界混搭。Moltfi 後端架構的轉折點。
這個里程碑要有意義,得有兩件事在同一天到位。第一:我花了幾個禮拜,自己把 Python 接到 Rithmic 的 C++ SDK 上,沒去用現成的 wrapper。第二:券商當天通過我的帳戶可以實單交易。所以我送出去的第一張 market 單,是走我自己寫的 code — 鍵盤到交易所中間的每一層都是自己刻的。Market、limit、stop、cancel 全部都會動。Loop 第一次閉上。交易木工。
圖表接上即時報價,不再每隔幾秒去 db 撈一次。報價串進來,現在這根 bar 在原地動,線在動。在這之前,圖只是一張圖;這個 commit 之後,圖在呼吸。Moltfi 第一次看起來像一張圖,不是一張試算表。
TUI 在 10 天內把 Rithmic 協定講通了,但 web app 不可能蓋在 curses 上面。這個 commit 是轉折 — 底下協定那層留著,上面所有東西都得為瀏覽器重寫一次。Tick 資料從 in-memory dict 搬到 TimescaleDB,因為一般 Postgres 撐不住 hot-path 的報價流。FastAPI 夾在協定橋接層跟前端中間,讓 Vue 3 single-page app 可以吃。這天對使用者還看不見任何東西 — 但 Moltfi 後面每一個功能,都是從這天躺下的這副骨架長出來的。
Moltfi 真正的起點。等券商審核開實單期間,我用 paper 帳戶寫了一個會講 Rithmic 協定的 TUI。現在幾乎沒人在做 TUI 的交易終端機。我就是想做。
從前端下手。很快意識到:沒有券商連線、沒有歷史資料,前端根本沒東西 render。擱置 — 幾週後被回收,當作 Moltfi 前端的基底,今天回測就坐落在這上面。