策略如何進入實盤:金額配置、自動對帳、全部平倉與下單開關。
下單組合是允許實際下單的策略集合。組合裡的每個策略各配置一筆固定金額,reconciler 常駐程式持續讓交易所持倉對齊合併後的目標部位——這些單不需要你自己下。
strategy.py ──► state.json ──────────────┐
(cron) ├──► reconciler.py ──► exchange
amounts ──► portfolio_config.json ───┘
組合裡的每個策略各配置一筆金額(以帳戶幣別計,例如 USD)——訊號滿倉時這個策略動用的資金。每個標的的目標部位是所有策略的加總:
target[symbol] = Σ ( amount × position )
position 是策略訊號,可以是小數(波動率調整的策略可能輸出 0.5 或 1.8)。你設定多少金額就用多少金額計算倉位,不會隨帳戶淨值漂移。
manager/portfolio_config.json。金額請在工作區「下單設定」頁設定,或請 agent 代勞;優化器配重只透過 manager.py 套用——預設是 dry-run,你確認後加上 --apply 才會寫入。
Reconciler 是常駐程式,每 5 秒輪詢一次,遇到以下任一情況就對帳:
state.json 變動)每一輪把目標部位和交易所實際持倉相比,市價下單抹平差額;差額低於 $10 就略過。翻倉(多翻空)會拆成「只減倉平掉舊倉」加「重新開新倉」兩筆,雙向持倉帳戶不會同時持有多空。
如果連續 3 次讀不到交易所持倉(金鑰被撤銷、IP 未加白名單、交易所故障),reconciler 會自動掛上下單開關。它只會掛、不會自己解除——解除永遠由你決定。
工作區的「全部平倉」按鈕(或 python3 manager/flatten.py)把所有已串接交易所的持倉全部市價平掉。它是緊急煞車,不是調倉工具:
下單開關掛上後,所有會增加曝險的訂單都在程式層被拒絕。平倉、停損停利與取消訂單照常執行——開關不會困住你想減的倉位。
掛上的方式:工作區的「暫停下單」或「全部平倉」、跟 agent 說停止交易,或交易所斷線時自動觸發。開關永遠不會自動解除——只有你按下「啟動下單」或明確要求 agent 恢復,才會繼續下單。每一次下單嘗試與拒絕都會寫入稽核紀錄。
每筆已執行訂單都會連同它的 legs(逐腿成交明細)寫入 manager/orders.jsonl——每一腿記錄交易所回報的成交價與成交數量。翻倉會記兩腿:平倉腿是出場價,開倉腿是進場價。
部分失敗也會記錄:翻倉的平倉腿成交、開倉腿卻失敗時,這筆紀錄會保留並標記失敗——只要真的動到錢,交易歷史絕不隱藏。工作區的「交易歷史」分頁顯示的就是這個檔案。