標籤: LLM

  • In-Place Test-Time Training 讓模型邊推理邊變強

    📌 本文重點

    • In-Place TTT 讓 LLM 在推理時就地微調
    • 只更新 MLP projection,成本可控又穩定
    • 對小模型與超長 context 任務效果特別明顯

    傳統 「先訓練後部署」 的模型,在上線後面對新 domain、新長文檔,只能靠 prompt/RAG「繞著問題走」,權重本身完全不會變。In-Place Test-Time Training(In-Place TTT)要解決的就是:

    在不重新訓練整個模型、不影響服務穩定性的前提下,讓 LLM 在推理過程中針對當前 context 做「就地微調」,即用即學。

    對開發者的直接好處:

    • 小模型 + 超長 context 的 任務表現大幅提升(paper 裡 0.4B 模型在 128k context 明顯變強)
    • 某些固定 domain(公司內知識庫、特定專案)可以在 session 內 自動做 domain adaptation,不用頻繁 retrain
    • 不需要新架構、不改 attention,只在 MLP projection 上動手腳,工程改動可控

    💡 關鍵: In-Place TTT 用少量 MLP 投影更新,就能在 128k 這種超長 context 下明顯強化 0.4B 等小模型的表現,達到「小模型大任務」的效果


    重點說明

    1. TTT 是什麼?為什麼舊做法不適合 LLM?

    Test-Time Training(TTT) 的想法很簡單:

    1. 推理時,先根據當前輸入做一點訓練(更新一小部分參數 = 快權重 fast weights
    2. 再用更新後的模型做真正的預測

    在 CV/小模型上,常見做法是加一個小 head、對自監督目標(rotation、jigsaw 等)做幾步 gradient update。

    但直接搬到 LLM 會踩坑:

    • 架構不兼容:很多 TTT 方案假設有額外 head 或特定 feature,LLM 一般沒有設計這種 TTT head
    • 計算太貴:如果動 transformer block 的多數權重,長 context 下反向傳播非常重
    • 目標不對齊:TTT 的 loss 不是 next-token prediction,會和原本的語言建模目標衝突,容易越調越壞

    In-Place TTT 的貢獻,就是解決這三個問題:

    • 不改架構,只把 MLP 最終 projection matrix 視為快權重
    • 只在這些 projection 上做反向,成本可控
    • 設計與 自回歸 NTP(next-token prediction)對齊 的訓練目標

    2. 為什麼選 MLP 最終 projection 當快權重?

    以典型 transformer block 的 FFN 為例:

    x -> W1 -> act -> W2 -> 殘差加回
    

    In-Place TTT 把 W2(MLP 最終 projection) 變成可更新快權重,原因:

    1. 局部但影響力大:W2 直接把非線性特徵投回主 hidden space,調這一層可以改變 token 的語義表徵,但不動 attention 結構
    2. 參數量適中:比動整個 block 或 embedding 便宜得多,長 context 反向成本可接受
    3. 穩定性好:不動 attention,有助於保持原模型的「語言能力」,在此之上做局部適配

    實務上的感受是:這種類似 LoRA 但只開在 MLP output projection 的調整方式,對長上下文裡的 pattern 適配非常有效,且容易控制範圍。

    💡 關鍵: 只動 MLP 的最後投影 W2,等於用最小的權重區塊,撬動整個 hidden space 的語義調整,兼顧效果與穩定性


    3. 如何設計與 next-token prediction 對齊的 TTT 目標?

    In-Place TTT 不再另外設計自監督任務,而是直接基於 自回歸 NTP

    • 你有一段長 context:[x1, x2, ..., xT]
    • 原本推理只 forward,loss 不回傳
    • 現在在部分 token 上:
    • 用原模型 logits 做 next-token cross-entropy
    • 但只對 MLP W2 回傳梯度並更新(其他權重 frozen)

    為了讓計算量可控,實作上會:

    • 把長 context 切成多個 blocks(例如每 512 或 1024 tokens)
    • 每個 block:
    • 先 forward 得到 loss
    • 只在該 block 上做一兩步梯度更新
    • 不回頭修正舊 block 的輸出(in-place)

    這樣:

    • 目標和原 pretrain 任務完全一致,不會「學歪」
    • 計算複雜度近似於「多做一輪 forward+backward」,可以和現有 KV cache/長 context 優化一起用

    4. 分塊更新如何兼容長上下文與多請求並行?

    對系統工程師來說,最大問題是:

    長 context + 反向傳播 + 多 request,會不會把 GPU 打爆?

    In-Place TTT 的分塊策略大致如下:

    • Block-wise TTT
    • Example:128k context,每 1k tokens 一塊,共 128 個 block
    • 每個 block:forward、算 loss、只更新 W2 的少量參數
    • 不需要保留整段的中間梯度,只需要當前 block 的 activations
    • 和 KV cache 相容
    • KV cache 還是照原本自回歸生成方式累積
    • TTT 僅對當前 block 的 MLP projection 做 backward,不需要對 KV 做反向
    • 多請求並行
    • 每個 request 自己帶一組「快權重 state」(或 delta)
    • 服務層可以:
      • 把 base 模型權重設為 read-only
      • 為每個 session 存一個 快權重 buffer(例如低秩 delta 或 mask 更新)

    這點和 KV cache 管理框架(vLLM, InfiniGen, H2O 等) 類似:

    • KV cache 管 context-dependent activations
    • 快權重則是 context-dependent 權重偏移

    兩者一起用時要特別小心記憶體分配和 eviction 策略:TTT 的 state 不宜無限制累積。

    💡 關鍵: 把 TTT 的更新設計成 per-session 的小型權重偏移,就能在保持多並發與穩定性的前提下,讓每個請求都「自己學自己」


    實作範例:在推理服務中加一層簡單的 In-Place TTT

    以下用 PyTorch 風格虛擬碼示意,重點是流程與邊界,而非完整訓練程式。

    1. 模型改造:標記可更新的 MLP projection

    class TTTMLP(nn.Module):
        def __init__(self, inner_dim, hidden_dim, enable_ttt=False):
            super().__init__()
            self.w1 = nn.Linear(hidden_dim, inner_dim)
            self.act = nn.GELU()
            self.w2 = nn.Linear(inner_dim, hidden_dim)
    
            # 只在 TTT 模式下允許 w2 被更新
            self.enable_ttt = enable_ttt
            for p in self.w1.parameters():
                p.requires_grad = False
            for p in self.w2.parameters():
                p.requires_grad = enable_ttt
    
        def forward(self, x):
            return self.w2(self.act(self.w1(x)))
    

    在整個 transformer 裡,只需要把原本 MLP 換成 TTTMLP(或只在指定層啟用 enable_ttt)。

    2. 推理 + In-Place TTT loop(單 request)

    def run_with_ttt(model, tokenizer, input_ids,
                     max_new_tokens=128,
                     ttt_block_size=1024,
                     ttt_steps=1,
                     ttt_lr=1e-4):
        """
        model: 已載入的 LLM,除了 MLP.w2 之外都 frozen
        input_ids: 長 context token ids
        """
        device = next(model.parameters()).device
        input_ids = input_ids.to(device)
    
        # 建一個專用 optimizer,只管 MLP.w2
        ttt_params = [p for n, p in model.named_parameters()
                      if p.requires_grad and 'mlp.w2' in n]
        optimizer = torch.optim.AdamW(ttt_params, lr=ttt_lr)
    
        model.eval()
    
        # === 1) 先在 context 上做 block-wise TTT ===
        for start in range(0, input_ids.size(1) - 1, ttt_block_size):
            end = min(start + ttt_block_size, input_ids.size(1) - 1)
            block = input_ids[:, start:end+1]  # [B, L_block+1]
    
            with torch.enable_grad():
                logits = model(block[:, :-1])  # predict next token
                target = block[:, 1:]
                loss = torch.nn.functional.cross_entropy(
                    logits.reshape(-1, logits.size(-1)),
                    target.reshape(-1),
                )
    
                optimizer.zero_grad()
                loss.backward()
                # 只會更新 MLP.w2
                optimizer.step()
    
        # === 2) 使用更新後的模型繼續生成 ===
        generated = model.generate(
            input_ids=input_ids,
            max_new_tokens=max_new_tokens,
            do_sample=False,
            use_cache=True,
        )
        return generated
    

    重點:

    • TTT 階段
    • torch.enable_grad() 打開梯度
    • 只在 context token 上跑 1~數步更新
    • 生成階段
    • 關掉梯度,只用更新後的快權重

    3. 服務層:何時開啟/關閉 TTT?

    可以在 serving config 裡加一個 flag:

    model:
      name: my-ttt-llm
      enable_ttt: true
      ttt_block_size: 1024
      ttt_steps: 1
      ttt_lr: 1e-4
      ttt_max_tokens: 32768   # 超過就不再做 TTT,避免過度漂移
    
    policy:
      enable_ttt_for:
        - domain: "enterprise_qa"
        - domain: "long_doc_summarization"
      disable_ttt_for:
        - domain: "safety_sensitive"
        - domain: "code_generation_prod"
    

    路由層可以依「任務類型」或「租戶設定」決定是否啟用 TTT。


    建議與注意事項

    1. 哪些任務適合/不適合開 TTT?

    適合:

    • Domain adaptation:企業內知識庫 QA、專案文件解讀、特定產品 FAQ
    • 超長 context 理解:法律條文、技術規格書、長期會議紀錄
    • 單 session 可犧牲一點穩定性、換取更高表現 的任務(例如 research 助理)

    不太適合:

    • 安全敏感場景(合規、法務、金融決策):
    • TTT 可能放大 prompt 中的偏見或惡意樣本
    • 多人共用同一快權重的情境
    • 不建議跨 user 共用 TTT state,否則有「資訊污染」風險
    • 需要行為高度穩定可重現 的任務(例如 production codegen、評測 pipeline)

    建議做法:

    • 預設 關閉 TTT,只對少數實驗/內部使用場景逐步開啟
    • 透過 A/B 測 和離線 eval 確認收益和風險

    2. 如何限制更新範圍,避免「越調越壞」?

    可以採幾個防護措施:

    1. 學習率和步數上限
    2. ttt_lr 通常比 finetune 更小(例如 1e-4 或更低)
    3. 每個 block 最多 1~2 步更新即可
    4. Layer 範圍限制
    5. 只開啟 中後段幾層的 MLP.w2,減少對基本語言能力的影響
    6. 正則化 / 參考權重
    7. 在 loss 中加入對 base 權重的 L2 正則
    8. 或採 低秩 delta/adapter(權重不直接改動,易於 reset)
    9. TTL / Reset 策略
    10. TTT state 掛在 session 上,session 結束就丟棄
    11. 長 session 內可定期 reset:例如每處理 64k token reset 一次

    3. 與 RAG、cache、LoRA 等架構的整合與踩坑

    與 RAG:

    • RAG 解決「資料更新」,TTT 解決「怎麼更好地用同一份長 context
    • 組合策略:
    • RAG 提供切好的 chunks
    • In-Place TTT 在讀完多個 chunks 後,讓模型更懂這批文件中常見的 schema/名詞
    • 踩坑:
    • 若檢索結果品質不穩,TTT 可能被噪音「帶偏」,建議在高 confidence 檢索結果上才啟用 TTT

    與 KV cache:

    • 注意 權重更新與 KV cache 一致性
    • 一般做法是 TTT 階段只用來更新權重,不直接用於生成
    • 開始生成時,重新用更新後權重+原 context 做一次 forward 建立 KV(或只從 TTT 後的 block 開始)
    • 若使用 vLLM 類似框架,要確保:
    • 同一 session 的 KV cache 與 TTT 權重版本對齊,避免「舊權重產生的 KV」搭配「新權重」

    與 LoRA / adapters:

    • 一種實務上更穩的做法:
    • base 模型 frozen
    • 安裝一個 LoRA-adapter 只開在 MLP.w2
    • TTT 只更新 LoRA 權重
    • 好處:
    • 快權重是「外掛」,可以 per-session 建立、銷毀
    • 也可以在 A/B 測時方便地比較「有/無 TTT adapter」

    4. 小模型 + 超長 context:何時值得導入?

    In-Place TTT 對 參數較小、context 很長 的組合特別有價值:

    • 小模型在長 context 內本來就容易「記不住 pattern」,TTT 可以在當前 session 內補強
    • 和 LongSpec 等 長 context + speculative decoding 技術搭配:
    • 先用 LongSpec 等提升解碼效率
    • 再用 In-Place TTT 提升長文本任務表現

    可以用以下 heuristics 判斷是否值得導入:

    • 模型 ≤ 7B,context ≥ 32k,而且任務高度依賴長文本理解 → 強烈建議實驗 TTT
    • 模型很大(70B+)且 context 不長(≤ 8k) → TTT 收益相對有限
    • 對 latency/成本極敏感的線上服務 → 可以先在 async 或批次任務(離線總結、分析)試水溫

    總結:In-Place TTT 提供了一個工程上可落地的途徑,讓 LLM 在推理時針對當前長 context 做小幅度、可控的「就地學習」。

    若你正在:

    • 用小模型硬扛超長 context
    • 常常為某個固定 domain 調 prompt/RAG 卻仍覺得不穩

    那麼在 pipeline 中加入 MLP projection 級別的 In-Place TTT,是很值得 A/B 測的一步升級。


    🚀 你現在可以做的事

    • 在現有 LLM 服務中挑選一個長文本任務(如長文總結)實作一版只更新 MLP W2 的 In-Place TTT PoC
    • 針對「開/關 TTT」設計離線與線上 A/B 測試,觀察長 context 任務指標與 latency、成本變化
    • 若已有 RAG pipeline,在高信心檢索場景下試著加入 block-wise TTT,評估對 domain QA 準確率的提升
  • AI 代理衝進預測市場:PolySwarm、TimeSeek,模型真的贏得過金融市場嗎?

    如果有一群 24 小時不睡覺的「AI 小操盤手」,幫你盯著預測市場、算機率、調倉、抓套利機會 —— 你會把錢交給它們嗎?

    現在不再是理論題,而是真的有人把這件事做出來了。

    這篇文想聊兩個很有意思、而且是實際拿真金白銀去試的研究:

    • PolySwarm:一個在去中心化預測市場上做交易、還會玩「延遲套利」的多代理 LLM 系統。
    • TimeSeek:一個用 Kalshi 真實市場,系統性量測十個前沿模型「預測能力隨時間衰退」的基準。

    最後,我會談談殘酷一點的問題:

    就算 AI 代理會寫 code、會查網路、會算機率,它們真的能穩定打敗市場、賺到超額報酬(alpha)嗎?

    還是,只是換了一種更炫炮的方式,去繳學費?


    一、PolySwarm:50 個 LLM 小操盤手組成的「AI 交易部門」

    PolySwarm 這篇論文的副標題,如果翻成白話,大概是:

    「我們用 50 個不同人格的 LLM,真的在去中心化預測市場上交易,還順便做延遲套利。」

    論文在 arXiv 上可以看到:PolySwarm: A Multi-Agent Large Language Model Framework for Prediction Market Trading and Latency Arbitrage

    1.1 先搞清楚:他們在玩什麼市場?

    PolySwarm主要鎖定的是像 Polymarket 這類去中心化預測市場。

    例如:

    • 「某候選人今年選舉勝出?」是 / 不是(Yes/No)
    • 「某支股票年底前會不會跌破某價位?」
    • 「某項政策會不會在某日期前通過?」

    每個市場其實就是一個二元期權

    • 市場價格 0.64,可以解讀為「市場認為事件發生的機率是 64%」。
    • 如果你買「Yes」,最後事件發生,你拿到 1;不發生,你拿 0。

    PolySwarm 要做的,就是:

    1. 評估每個事件「發生的機率」。
    2. 看現在市場價格划不划算(有沒有錯價)。
    3. 按照風險控管規則下單,賺取預期正報酬。

    聽起來跟一般量化交易很像,但差別是:

    所有決策都是由一群 LLM 代理討論出來的。

    1.2 50 個 LLM 代理:不像量化團隊,更像一個 AI 版 Reddit 投票版

    PolySwarm 一次丟出 50 個不同 persona 的 LLM 代理,讓他們同時對同一個市場做預測。

    這些代理的差異可能包括:

    • 不同提示語(prompt)設計
    • 不同角色設定(保守派、激進派、數據派、新聞派…)
    • 不同工具使用方式(有的偏重歷史數據,有的偏重新聞、社交媒體)

    每個代理會輸出:

    • 對事件發生機率的估計(例如 0.73)
    • 自己的「信心程度」

    有點像你開了一個 Telegram 群組,裡面有 50 個超認真的 AI 網友,每人都會附帶:「我覺得有 73% 會發生,我蠻有把握,信心 8/10。」

    1.3 他們怎麼把 50 人意見聚合?Bayesian + 市場共識

    重點來了:多代理系統的精髓不是問一堆人,而是「怎麼聚合」這些意見。

    PolySwarm 用的是一種 信心加權的貝葉斯聚合,大致流程:

    1. 先把市場當作一個「先驗機率」
    2. 如果市場價格是 0.64,系統就先假設:目前「公共資訊」說機率 64%。
    3. 再把 50 個代理的估計視為「額外證據」
    4. 每個代理的概率 + 信心,進入貝葉斯框架,調整原本的 0.64。
    5. 信心高的代理,權重比較大
    6. 有點像一群人投票,但可信度高的人票比較重。

    最終得到一個 聚合後機率,例如:0.71。

    這個 0.71 會拿來和市場價格(0.64)比較:

    • 如果我們覺得機率 71%,但市場只賣 0.64,那就是一個「期望正值」的機會。

    1.4 用 Kelly 公式控制下注大小:AI 也要控風險

    大部分散戶在市場上死得很慘,有一大半原因不是方向錯,而是倉位管理爛

    PolySwarm 很加分的一點是,他們沒有只「猜對方向」,還把風險控管公式搬進來,用的是:

    • 四分之一 Kelly(Quarter-Kelly)策略

    Kelly 公式是老牌賭徒+量化交易都用過的一套東西,用來決定:

    在一個有正期望值的賭局裡,你應該壓資金的多少比例,才能在長期最大化資本成長,又不容易破產。

    簡化一下直覺:

    • 如果你認為「發生機率 70%,賠率也不錯」
    • Kelly 會給你一個建議比例,比如 20% 資金
    • PolySwarm 還再打 1/4,只下 5%,保守很多

    這類保守的 Kelly 變體,在實際交易界是有共識的:

    • 純 Kelly 太兇,很容易在短期波動下被打爆。
    • 四分之一 Kelly 是在「成長」跟「不破產」之間折衷。

    1.5 延遲套利:抓「市場 lag」賺無風險(或低風險)利潤

    PolySwarm 研究中最有趣的部分之一,是它們做的 Latency Arbitrage(延遲套利)

    利用不同市場更新速度不一樣,去剪那幾秒鐘到幾十秒鐘的價差。

    具體是這樣玩的:

    1. 假設某事件,在一個中心化交易所(CEX) 有交易,例如某種衍生品或相關標的。
    2. CEX 的流動性比較好、參與者多,價格更新較快
    3. 同一個事件,在 Polymarket 上的價格,可能更新比較慢。
    4. PolySwarm 用一個 對數常態模型,從 CEX 的價格推回「隱含機率」。
    5. 如果發現:
    6. CEX 隱含機率已經跳到 80%,
    7. 但 Polymarket 還停在 65%,
    8. 而這個差距超過手續費、滑點等成本
    9. 就在那個短窗內直接下單套利。

    這種作法在傳統金融世界也有:

    • 高頻交易會盯著不同交易所的同一標的,利用更新延遲賺 tiny spreads。
    • 差別只是現在「判斷是否值得套利」的邏輯,是 AI 代理做的。

    1.6 用資訊論檢查「錯價」:KL、JS 散度登場

    PolySwarm 還加了一個有點 geek 的模組:市場資訊分析引擎,用的是:

    • KL 散度(Kullback–Leibler Divergence)
    • JS 散度(Jensen–Shannon Divergence)

    用在兩種情境:

    1. 跨市場效率低落
    2. 比如兩個高度相關的市場,理論上機率應該接近,結果價格差很大。
    3. 否定對市場(negation pairs)錯價
    4. 例如:「某候選人會不會當選?」Yes 市場價格是 0.7,No 市場應該要在 0.3 附近(扣掉費用)
    5. 如果兩者加起來 ≠ 1,就有明顯錯價。

    資訊論指標本質上就是在量一件事:

    「這兩個機率分布到底差多少?差到不合理嗎?」

    一旦判斷「差很多又不合理」,系統就會啟動交易策略,去吃這個錯價。

    1.7 實驗結果:多代理聚合 > 單一模型

    論文裡用 Brier 分數、對數損失、校準分析做評估,得到的核心結論:

    • 單一模型做預測的表現,的確不穩定。
    • 多代理 + Bayesian 聚合後的群體共識,整體上更穩、更準。

    換句話說,他們做出了一個「AI 版的 crowd wisdom」,而且在真實市場中跑得動。這件事本身就非常重要,因為:

    這不只是 LLM 回答問題,而是直接把模型的輸出,接上了金融市場的錢包。


    二、TimeSeek:模型的預測能力,會不會「變舊」「失效」?

    如果說 PolySwarm 是「把 AI 丟進真實市場,看它能不能賺錢」,

    TimeSeek 比較像是:「系統性地測量,這些 AI 預測者到底多久會變鈍。」

    論文連結在這裡:TimeSeek: Temporal Reliability of Agentic Forecasters

    2.1 實驗設計:10 個模型、150 個 Kalshi 合約、5 個時間點

    TimeSeek 的設定蠻嚴謹的:

    • 市場:美國 CFTC 監管的 Kalshi 二元期貨市場
    • 合約數:150 個不同市場(通膨、政治、天氣、宏觀數據等等)
    • 模型數:10 個前沿 LLM
    • 時間點:每個市場在生命週期的 5 個不同時間點做預測
    • 情境:每個預測又分成「有網頁檢索」vs「沒檢索」

    總計:

    • 150 市場 × 10 模型 × 5 時間點 × 2(有/無檢索) = 15,000 次預測

    這規模不算天文數字,但已經足夠得到一些有說服力的「時間向」結論。

    2.2 評估指標:Brier Skill Score 看誰比市場強

    他們主要用 Brier Skill Score(BriSS) 來衡量預測品質。

    簡單理解:

    • Brier 分數:
    • 介於 0~2,越小越好。
    • 例如:事件發生(=1),你預測 0.9,比你預測 0.6 要好。
    • Brier Skill Score:
    • 通常是「相對某個 baseline(例如市場價格)」的改進程度。
    • 0 代表你比 baseline 強,< 0 代表你拖後腿。

    TimeSeek 的重點就是在看:

    在不同時間點,模型的預測,到底比「市場價格」好多少?還是其實更爛?

    2.3 核心發現一:模型在「市場早期」與「高不確定」時期較有優勢

    結果蠻有趣,也某種程度符合直覺:

    • 市場剛開始、資訊還很分散的時候:
    • 模型的預測相對有競爭力,有時可以接近甚至略贏市場
    • 市場接近結算、共識變得很強的時候:
    • 模型就比較常被市場「打臉」,表現明顯下降。

    可以把它想像成:

    • 剛開盤的時候,大家都在猜,資訊優勢還存在,模型有機會靠「廣泛檢索+邏輯推理」抓到一些尚未體現在價格上的面向。
    • 但隨著時間過去,專業交易者+內部資訊+更多數據一路往市場裡灌,價格越來越凝聚,最後變成「你跟一群職業玩家在對賭」。

    在這個階段,要期望 LLM 穩定打敗市場,就有點不切實際了。

    2.4 核心發現二:檢索是好東西,但會「幫倒忙」的情況不算少

    TimeSeek 也測了「有檢索 vs 無檢索」兩種情境。

    結論:

    • 整體來說,加入網路檢索後:
    • 每個模型的 Brier Skill Score 都有提升
    • 但如果把時間點拆細:
    • 12% 的「模型 × 時間點」組合裡,檢索反而讓表現變更差

    這個結果非常值得金融圈、AI 應用圈都好好思考。

    因為我們太習慣一句話:

    「加檢索一定比較好。」

    但實務上至少有幾種「檢索幫倒忙」的場景:

    1. 檢索內容過時或誤導
    2. 舊新聞、錯資料在網路上一直都在。
    3. 模型對噪音過度自信
    4. LLM 很擅長把零碎資訊「拼一個很合理的故事」,但那故事可能建立在錯誤假設上。
    5. 真正有價值的資訊,在付費牆或專業報告裡,模型抓不到
    6. 這時候它就是在公開資訊池裡和大家一起瞎猜,反而權重過高。

    這呼應了一個殘酷現實:

    在已開放、已競爭的市場裡,「能被 LLM 找到的資訊」通常早就已經被價格內化。

    2.5 核心發現三:簡單的兩模型集成,比單模更穩,但還是「打不贏市場」

    TimeSeek 也試了簡單的 兩模型 ensemble

    • 就是把兩個模型的預測做平均或簡單加權。

    結果:

    • 確實可以降低預測誤差,比單一模型穩一點。
    • 整體來看,仍然無法全面超越市場本身

    也就是說:

    到目前為止,「拿幾個前沿模型 ensemble 一下」還不構成穩定 alpha。

    這個結論對 PolySwarm、對所有「AI 交易代理」都很關鍵:

    • 多代理本身不是魔法,聚合品質、模型多樣性、資訊來源、風險管理,缺一不可。

    三、AI 交易代理的現實風險:幻覺、延遲、檢索、Alpha 幻象與監管

    看到這裡,如果你有一點量化或交易經驗,大概會開始懷疑:

    「這些 AI 代理系統,看起來很猛,但真的可以長期穩賺不賠?」

    我們來拆幾個比較實際、也有點殘酷的面向。

    3.1 幻覺:在金融裡,一次瞎掰就可以讓你爆倉

    LLM 的老毛病就是:看起來超有自信地亂講

    在聊天機器人情境,這叫「幻覺」,最多是答錯題、讓使用者困惑;

    但在金融市場裡,幻覺會直接變成:

    • 採用錯誤數據
    • 理解錯新聞
    • 杜撰不存在的事件或來源
    • 然後下了一筆「看起來有理,其實完全錯誤」的交易。

    PolySwarm 有談到幻覺風險與校準分析,試圖用多代理共識與市場價格來緩解:

    • 如果某個代理的預測常常偏離實際結果,就降低它在聚合時的權重。
    • 用市場隱含機率當做「 sanity check 」,防止模型輸出太離譜的東西。

    但這還是有一個根本限制:

    你沒辦法完全防止 LLM 在關鍵事件上「看起來超合理卻完全錯」一次,而那一次就足以傷筋動骨。

    3.2 延遲:AI 再快,也有 API 延遲和交易路由的極限

    在延遲套利(latency arbitrage)這件事上,AI 其實不一定比傳統高頻系統更有優勢。

    • 真正的高頻交易用的是 C++、FPGA、物理距離最短的機房連接。
    • LLM 代理要:
    • 發出請求 → 模型計算 → 聚合 → 再發交易指令 → 上鏈或送到交易所。

    這整串延遲通常是 秒級 起跳,高頻交易玩的是 微秒級

    所以,PolySwarm 比較像是在「人類反應時間窗」內做延遲套利:

    • 不是跟 HFT 競速,而是比一般手動玩家快。

    這個定位是合理的,但也意味著:

    • 一旦市場裡有越來越多自動化系統,這種套利空間會被越磨越薄。

    3.3 檢索何時幫倒忙?TimeSeek 那 12% 是一個警訊

    TimeSeek 發現:檢索在 12% 的情境裡讓模型變笨,這一點非常值得擴寫。

    幾個可能場景:

    1. 「舊 alpha」問題
    2. 很多看起來聰明的策略,其實是 2010 年就被用到爛的東西。
    3. 公開資訊中出現的投資建議,通常已經不具備結構性優勢。
    4. 資訊洪流裡,模型容易抓錯重點
    5. LLM 很會總結,但不一定懂「什麼才是對價格有邊際影響的資訊」。
    6. 檢索的時序問題
    7. 即使內容是對的,也可能是一小時前的新聞,而市場在三分鐘內就 price in。

    所以在設計 AI 交易代理時,「要不要檢索」不能是一個常數,而應該是:

    • 根據市場類型、時間點、波動程度,動態調整使用檢索的頻率與權重。

    3.4 穩定 Alpha 存在嗎?多代理 ≠ 自動印錢機

    回到最關鍵的問題:

    在這些研究裡,有看到穩定、可實際部署的 alpha 嗎?

    目前的證據比較像是:

    • AI 在某些時間段、某些市場,能提供接近市場甚至略優的預測品質。
    • 透過多代理聚合,可以一定程度提升穩定性。
    • 但要長期穩定打敗整個市場,還看不到明確證據。

    幾個原因:

    1. 市場會反應 AI 行為
    2. 一旦 AI 代理大量進場,它們本身就會改變價格行為,原本可行的策略很快就失效。
    3. 模型更新與微調成本高
    4. LLM 對世界的「隱含知識」其實會過時,需要持續對新數據做訓練或微調。
    5. 真正的 alpha 常常來自非公開資訊或結構性優勢
    6. 比如:管道、供應鏈資訊、人脈、獨家數據源。
    7. 這些是 LLM 光靠網路檢索拿不到的。

    所以,我會這樣總結:

    AI 交易代理比較像「放大你原本有的 edge」的工具,而不是憑空創造 edge 的魔法。

    3.5 監管與道德:當 AI 開始「大規模下注」現實世界事件

    最後談一個不那麼技術,但很重要的面向:監管與倫理

    PolySwarm 論文其實有提到法規與反饋迴路風險,搭配 TimeSeek 的結果,可以看到幾個問題愈來愈接近現實:

    1. 監管:誰對 AI 下錯單負責?
    2. 如果一個全自動 AI 代理在 Kalshi 或 Polymarket 上大幅建倉,造成市場波動:
      • 交易所要不要限制某種「自動化 agent」的規模?
      • 如果 AI 因為幻覺導致誤判,造成洗倉,是開發者、部署者還是平台負責?
    3. 操縱與資訊迴路
    4. AI 代理如果開始引用社交媒體、新聞作為輸入,而同時又在市場裡下注:
      • 有沒有可能出現「自己看自己造成的新聞」、自我強化的價格泡沫?
    5. 賭博與社會影響
    6. 預測市場原本就被質疑有「賭博化政治、公共事務」的問題。
    7. 如果 AI 讓這些市場變得更高效、更容易參與,會不會放大這種影響?
    8. 道德邊界:AI 替人類做風險決策的程度
    9. 一般人如果把資產交給一個黑箱 AI 代理,連策略怎麼運作都不知道,只因為「它是某某大模型的 agent」,這基本上就是另類的「金融迷信」。

    我覺得,監管端遲早會問兩個問題:

    • 需不需要對「自動化 AI 代理」設立特別的識別與限制?
    • 是否應該要求這類系統具備某種「可解釋性」與「風險揭露」?

    結語:AI 代理不是神,卻正在改寫「誰可以參與金融市場」的邊界

    拉回一開始那個問題:

    「你會把錢交給一群 AI 小操盤手嗎?」

    在看過 PolySwarm 和 TimeSeek 之後,我的看法大概是:

    • 當輔助工具,可以。當唯一決策者,太早。
    • AI 代理目前最擅長的是:
    • 快速蒐集資訊
    • 提出合理的初步機率估計
    • 幫你做多市場、多策略的「第一輪篩選」
    • 但在「最終下注、風險承擔」這一層,
    • 人類仍然需要介入判斷,尤其是在杠桿高、尾風險重的情境。

    如果你是:

    • 做量化 / 風控 / 研究的:
    • 值得看 PolySwarm 和 TimeSeek 的完整論文,思考如何把「多代理 + 時間敏感的信任策略」加入你的 pipeline。
    • 對預測市場有興趣的:
    • 可以把 AI 當成「資訊整理助手」,而不是「自動印鈔機」。
    • 在監管或法遵領域的:
    • 現在是開始設計「AI 交易代理」規則的好時間,等整個市場都被這類系統塞滿,再來補課就太慢了。

    最後留一句我覺得很重要的提醒:

    市場不會因為你用了 LLM,就變得比較好賺。

    AI 能做的,是讓「有紀律、有方法」的人,放大自己的優勢;

    但如果只是想用一個炫炮的模型,跳過思考、直接賭一把,那你只是把傳統投機,包了一層新的 UI 而已。


    延伸閱讀