回測績效虛胖?手動揪出倖存者偏差與未來函數
摘要:回測績效驚人卻一上實盤就虧損?本文拆解倖存者偏差與未來函數如何竄改結果,並以 MT4/MT5 策略測試器為例,示範一套手動檢查邏輯,幫助新手看清回測報表到底可不可信。

策略回測績效驚人,實盤卻連連虧損,斷裂常來自兩個隱形殺手:倖存者偏差與未來函數。本文以 MT4/MT5 策略測試器為例,解釋它們如何竄改回測結果,並示範手動剔除邏輯,不是教你交易,而是讓你看穿報表哪裡在作弊。
什麼是「倖存者偏差」與「未來函數」?
倖存者偏差指的是只觀察存活下來的品種或策略,忽略已淘汰的樣本,因而高估表現。在外匯回測中,常見的是拿現在還能交易的貨幣對(如 EURUSD)測試十年歷史,卻忘了當時還有很多因為流動性不足而下架的貨幣對。策略如果只挑選「活到最後」的品種,回測績效自然比隨機進場好太多。
未來函數是程式邏輯錯誤,讓回測使用了「未來才知道的資訊」。典型例子:K 線未收盤,策略用 iClose(NULL,0,0) 取當前收盤價,並在開盤即成交。這等於用未來價格決定開盤動作,回測便憑空獲得先見之明。指標重繪也屬此類:某些震盪指標會隨最新價格改寫歷史數值,策略引用它們,回測曲線自然完美。
核心邊界是:回測能模擬歷史行情,但無法模擬歷史當下的資訊不對稱。倖存者偏差竄改樣本組成,未來函數扭曲時間箭頭,都讓結果失真。
這兩個陷阱如何竄改你的回測結果?
MT4/MT5 策略測試器按歷史數據逐 K 線模擬,但若程式碼含未來函數,測試引擎不會警示,只是忠實計算已發生的價格,形同作弊。倖存者偏差則是數據端的問題:貨幣對清單或歷史報價本身就是「挑選過的」,回測等於事後找規律,容易過擬合。
以下為教學假設,所有數字僅為概念展示,非真實策略或操作建議。
假設一個雙均線穿越策略(MA10 與 MA30):快速均線上穿做多,下穿做空。本金 10,000 美元,時間範圍五年,只交易 EURUSD,固定 0.1 手。刻意設計一常見未來函數:當收盤價在慢速均線上方,且本根 K 線收盤價大於前高,立即以開盤價進場做多。該收盤價在開盤時不存在,回測卻允許取用。原始結果:期末淨值約 15,000 美元,淨利潤 5,000 美元,最大回撤 10%。
修正程式碼,將條件改為只能使用已固定資訊(如前一根 K 線收盤價),重新回測後多數訊號消失:淨利潤降至 2,000 美元,最大回撤擴大到 20%。若進一步排除已下架的交叉盤,EURUSD 本身可能根本不賺。
核心不在數字變小,而在原始數字摻雜了虛幻優勢。新手常以為回測曲線往上就有用,但未檢查陷阱的曲線如同事後劇本。

假設策略在未來函數修正後的淨利潤與最大回撤變化
手動剔除的實踐步驟
既然測試器不會自動揪出作弊,我們必須靠自己。以下步驟是一套手動檢查邏輯,適用於審視陌生 EA 或自寫策略。
- 第一步:確認歷史數據成分完整性
測試多品種策略時,先確認貨幣對是否一直存在。經紀商常只提供存活品種,可將範圍限縮至主要貨幣對(如 EURUSD、USDJPY)。若測試自建組合,解釋時應假設遺漏品種表現較差,將回測利潤打折。
- 第二步:檢查原始碼的未來資料引用
即使不熟 MQL,也可搜尋關鍵字:iClose(Symbol(),0,0)、iHigh(Symbol(),0,0)、iLow(Symbol(),0,0),以及進場判斷中使用 index=0 的價格。更隱蔽的是自訂指標未處理重繪,如某些 ZigZag 或分形指標會在新 K 線出現後回補修改前一個轉折點。檢測方法:在 MT5 視覺模式逐 K 線播放,觀察訊號箭頭事後是否移動或消失,若有即代表未來函數混入。
- 第三步:交叉驗證進出場時間
挑十到二十筆交易,記錄開倉時間,回歷史圖表檢查該時間點是否可能出現信號。例如,策略於星期一開盤跳空低開時立即市價賣出獲利,但該根 K 線開盤價已遠低於前收盤,真實市場的滑價和流動性難以達到回測的完美價格。若多筆交易集中在極端行情或流動性低時刻,應懷疑回測使用了未來資訊。
- 第四步:比較修正前後的績效落差
將原始回測、修正後回測、甚至限縮品種的結果並排。觀察落差幅度:若原始夏普比率 3.0,修正後只剩 0.8,代表原始績效大半來自未來函數或倖存者偏差。落差越大,可信度越低。
常見誤區與限制
手動剔除法能排除許多明顯作弊,但仍有其天花板,新手常見誤解包括:
- 修正後回測漂亮不代表策略會賺錢,只能消除已發現的偏差,無法預測未來或保證未過度最佳化。
- 多品種回測不能抵消倖存者偏差,除非涵蓋歷史所有品種(含已下架),否則只是稀釋而非消除。
- 只檢查明顯重繪指標,忽略隱晦未來引用。例如策略在整點根據「下一分鐘」數據決定出場,這需經驗辨識。
- 本方法非萬能,無法防止數據挖礦、過擬合或資金管理災難。
這些限制說明,手動剔除是「求真」程序的其中一環,而非終點。
它不是什麼:核心邊界
手動剔除倖存者偏差與未來函數,是用來減少回測欺騙的方法,它不代表修正後的策略就會在實盤獲利,也不代表未來行情會重複歷史規律。進行這套檢查,只是讓你更貼近策略的本來面目,避免把作弊的數字當成自己的能力。回測報表從虛胖變回精實,對策略的期待才回歸現實,這正是穩健交易的第一步。
免責聲明:
本文觀點僅代表作者個人觀點,不構成本平台的投資建議,本平台不對文章信息準確性、完整性和及時性作出任何保證,亦不對因使用或信賴文章信息引發的任何損失承擔責任










