2026年十月4日 · 研究

如何避免 AI 策略代理把明天的資訊洩漏到今天?

如何避免 AI 策略代理把明天的資訊洩漏到今天?

AI 策略代理可能產出有效的回測,卻使用了在預定交易時點尚不存在的資訊。程式能執行,權益曲線看起來也合理,訊號甚至可能合情合理。但一個時間戳、一筆資料連接,或一個經修訂的資料欄位,都可能悄悄讓它提前知道明天的答案。

解決方法是把資料可用時間納入研究規範。每項輸入都必須清楚回答兩個問題:這個值描述的是什麼時點?策略最早何時能得知這個值?

AI 生成的策略會如何出現前視偏誤?

最明顯的情況,是用同一根 K 線的收盤價計算訊號,接著又以該收盤價成交。如果策略需要收盤價才能做決策,就不可能同時在那個價格交易。但代理在合併資料來源或選用方便的預設值時,常會產生更隱蔽的情況。

假設模型在每分鐘收盤時計算 20 根 K 線的移動平均,並在收盤價穿越均線時建立部位。如果回測以同一個收盤價成交,就等於在策略取得該筆交易資訊之前,先用了這根 K 線的最後一筆成交價。把委託移到下一根 K 線開盤成交,或許是合理的近似方式,但市價單仍須計入手續費與價格衝擊。

再把特徵換成每日股票基本面資料,或加密貨幣未平倉量快照。資料列的日期可能標示為星期一,但數值可能在星期一收盤後才發布,或日後才經過修正。日期不等於資料可用時間戳。

策略輸入的時間戳應該怎麼記錄?

只要來源資料允許,至少保留 3 種時間:數值描述的期間、發布者公布數值的時間,以及系統收到數值的時間。策略在決策時點的資訊集合,只能包含當時已可取得的數值。

欄位代表的問題常見陷阱
事件時間市場事件何時發生?在 K 線尚未完成前使用其收盤價
發布時間來源何時發布這個數值?把日終標記誤當成開盤時發布
匯入時間研究系統何時能讀取這筆資料?忽略供應商或資料管線的延遲
修訂時間這個版本何時被記錄或修正?把修訂後的歷史資料回填,當成原始資料使用

對 1 分鐘策略來說,延遲 1 秒不代表一定無傷大雅。影響大小取決於決策時間,以及訊號使用的資料。如果輸入是已完成的每小時統計值,影響可能微乎其微;如果輸入是在下單前後擷取的委託簿失衡值,則可能讓交易方向完全反轉。

特定時間點資料庫能防止資訊洩漏嗎?

可以,但前提是「特定時間點」代表你能查出歷史決策時點已知的數值,包括當時版本的修訂內容。只有歷史日期的資料表,仍可能包含今天才修正、但日期標示為過去的數值。

每筆紀錄都要保留有效期間與可用時間戳,並保留各次修訂,而不是直接覆寫。接著明確指定歷史查詢條件:回傳模擬決策時點以前可取得的最新版本。這對基本面資料、指數成分、經濟數據發布,以及經供應商清理的資料集尤其重要。

還有個不起眼的實務問題:即使發布時間完美無缺,若資料匯入工作晚了 20 分鐘才執行,也毫無用處。如果歷史資料庫沒有記錄匯入時間,就採用保守的延遲假設並清楚說明。來源從未記錄的精確度,只是裝飾。

哪些檢查能在模擬交易前抓出前視偏誤?

要求研究代理在回測之外,另外產出特徵與委託的時間軸。每次決策都要記錄每項特徵來源的最新可用時間、決策時間、委託時間,以及模擬成交時間。只要輸入晚於決策時間才到,就拒絕該筆資料。

這些檢查無法替策略背書,但能讓特定的時序假設清楚可見,並抓出常見的假設違反情況。

模擬交易能證明回測沒有資訊洩漏嗎?

不能。模擬交易可能會揭露即時資料管線延遲、缺漏,或與歷史資料對齊方式不同的問題,但無法證明舊的訓練特徵反映了當時已知的資訊。模型也可能只是因為不再看得到它意外取得的未來資料,而失去資訊洩漏帶來的好處。

把模擬交易當成一致性檢查:比較即時特徵值、決策時間戳、委託產生方式,以及模擬成交結果是否符合回測定義。如果有差異,就追查具體輸入與時鐘。能說明每次決策所用資訊集合的代理團隊,才是在做有用的研究。只能拿出一條平滑曲線的代理團隊,則跳過了最難的一項稽核。

AI 代理、前視偏誤、回測、資料工程、模擬交易
← 所有文章