「同樣一套規則,為什麼我跑出來的曲線,和你跑出來的差這麼遠?」這是我在 AI Trading Academy 課堂上,每當教到ea策略回測時最常被追問的一句話。多數人第一反應是參數設得不一樣,但以我帶學員的經驗,八成以上的差距其實來自更前面的一步:大家餵進去的數據根本不是同一批。回測的可信度,從來不是由策略邏輯單獨決定,而是由「用什麼數據去驗證這個邏輯」決定。數據來源不透明、資料長度不足、成本假設失真,都會讓一條漂亮的資金曲線失去意義。這篇就從數據與研究的角度,把回測數據該怎麼挑、怎麼自己檢查講清楚。
回測的可信度,先取決於餵進去的數據
回測本質上是一場對歷史的重演。它讓一套 ea策略 沿著過去的報價逐根 K 線走一遍,看看規則在當時的環境下會得到什麼結果。這個過程有個容易被忽略的前提:重演的舞台是數據,如果舞台本身搭得不對,演員再專業也演不出真實。
我常常用一個比喻向學員說明。想像你要測試一部車在山路的爬坡能力,卻只在平坦的市區道路試車,得到的數據再漂亮也沒有意義。回測也一樣,如果歷史數據只涵蓋一段單邊上漲的行情,你測出來的就不是策略的真實能力,而是那段行情有多好走。策略與數據其實是一體的:一個在甲數據上表現優異的規則,換到乙數據上可能一文不值。所以評估一套系統,第一個該問的問題不是「勝率多少」,而是「這個數字是在什麼數據上算出來的」。
| 數據維度 | 常見的將就做法 | 較為可靠的做法 |
|---|---|---|
| 報價來源 | 只用單一平台自帶數據 | 至少兩個來源互相比對 |
| 點差假設 | 固定一個數值或直接略去 | 按時段設定浮動點差 |
| 資料長度 | 只取最近一兩年 | 覆蓋多種市況的多年數據 |
| 滑價處理 | 完全當作零成本 | 按歷史滑點分布模擬 |
這張表我先放在這裏,是因為後面每一節都在補充其中一列。你可以把它當成看完整篇之後回頭對照的骨架。
數據來源與品質:回測該核對的幾個維度
數據要可信,第一步是搞清楚它從哪來。市面上的歷史報價大致有三類來源:交易平台自帶的數據、第三方數據供應商整理好的數據、以及自己從經紀商原始報價累積下來的紀錄。三者的差異不在價格高低,而在於是否真實反映你下單時會遇到的成交環境,這正是評估一套ea策略時最容易被跳過的一環。
報價來源與點差假設
不同平台、不同供應商的報價會有細微差異,在波動劇烈的時段尤其明顯。同一分鐘內,甲平台的最低價可能比乙平台低幾個點,這個差距對長線持倉或許無關緊要,但對一套ea策略而言,進出場價位差半個點差,長期累積下來就不是小事。我自己核對數據時,習慣把兩個來源的同一段行情疊在一起看,先找出差距最大的那幾天,再判斷是否會影響策略的進出場判讀。
比報價差異更容易被忽略的,是成本假設。投資者及理財教育委員會關於槓桿外匯的介紹提醒,槓桿會同時放大盈利與虧損,而交易成本正是那個每天悄悄拿走一部分的地方。一份沒有把點差、隔夜利息、佣金算進去的回測,就算結構正確,也只是在算一個理想世界的結果。我的建議很簡單:回測裏的點差不要用單一平均值帶過,而是分成活躍時段與清淡時段兩檔,因為真實市場的點差本來就會隨時間擺動。
三個最常見的數據陷阱
挑對來源只是第一步,數據還可能被用錯。以下三個陷阱在學員交回來的回測報告裏反覆出現,而且往往同時存在、彼此掩護。任何一套ea策略的驗證,都值得先針對這三點各問一句。
首當其衝的是倖存者偏差。這是指做研究時只看到還活著的樣本,卻看不到已經消失的那些。放在交易數據上,就是有人只取用目前仍在交易的品種,或只回測現存平台的報價,忽略了這期間已經退市、合併或改規則的對象。結果是回測天生樂觀,因為死掉的那部分根本沒被算進來,而真實市場裏,正是那些消失的對象最值得警惕。
接着是重複樣本與過度擬合。這兩個毛病常常結伴出現:同一段行情被拆成好幾份重複使用,等於同一份證據數了好幾次;再配合參數反覆微調,就會得到一組剛好貼合歷史的設定,卻對未來毫無預測力。我在課堂上看過一份報告,參數被調到把小數點後兩位都用上,看起來精準無比,實際上只是把雜訊也一起記住了。想更完整地理解這類落差,可以參考回測最常見的幾種誤解那篇。
第三個是前視偏差。這指的是回測時的判斷,不小心用到了當時還不知道的資訊。最典型的例子是拿收盤價來決定同一根 K 線的進場,因為收盤那一刻你才知道收盤價是多少。其他像是用當天最高最低價去算訊號,或把結算後才公布的數據提前用上,都屬於同一類錯誤。這種偏差最隱蔽,因為程式的邏輯看起來完全合理,只有對照真實下單時序才會發現。

數據品質自查清單
講到這裏,你可能會想知道:我手上就只有一批數據,怎麼知道自己是不是中了上面的陷阱?答案是做功課,而不是憑感覺。一套ea策略的數據品質,靠的正是幾項可以重複執行的檢查。以下兩項測試,是我在課堂上要求學員一定要親手做一遍的。
兩個年份區間的重跑測試
把同一套策略,在同一批數據裏挑兩個不同年份的區間各跑一次,例如一段涵蓋 2019 至 2020,另一段取 2022 至 2023,兩段最好涵蓋不同性質的市況。然後比較兩次的關鍵指標:勝率、平均每筆盈虧、最大回撤。如果兩段的結果非常接近,說明規則抓到的可能是真實存在的結構;如果差異大到一個程度,就要提高警覺。以我的經驗值來說,若勝率差距超過十五個百分點,或最大回撤相差超過一半,通常不是市場變了,而是樣本根本不夠,或者參數已經過度貼合其中一段。這一步不需要高深工具,卻能篩掉很大一部分自欺的回測。
把點差假設調高 50% 的壓力測試
第二項測試專門對付成本。把你在回測裏設定的點差,假設性地調高百分之五十,然後用同一套策略、同一段數據再跑一次。這個動作的用意不是預測未來成本會上漲,而是檢驗策略的優勢有多厚。如果只是在成本上多加一點,整條資金曲線就由賺變蝕,說明這套ea策略的邊際本來就很薄,實盤只要成交品質稍差就會穿破。反過來說,調整之後仍能維持正期望值的設定,才值得再往下研究。美國商品期貨交易委員會關於降低外匯交易風險的建議也強調,對成本與風險保持現實的假設,是保護自己的基本功。
把上面兩項做成固定流程之後,我會建議在每次改參數或換品種時都重跑一遍。雖然多花一點時間,但比起用一份失真的回測去說服自己進場,這點工夫完全值得。
資料長度要覆蓋幾種市況才夠
數據不只是品質問題,還有長度問題。太短的資料,就像只看了三天天氣就斷定整年的氣候。一套ea策略要測出穩定性,至少要經歷過幾種不同的市況:單邊趨勢、區間橫盤、以及一次突發的劇烈波動。
單邊趨勢能看出策略跟不跟得上,橫盤能看出它會不會在沒有方向的行情裏被反覆磨損,劇烈波動則考驗風控與滑價處理。若你的數據只涵蓋其中一種,回測結果再好看,也只是在告訴你「這套規則適合那種市況」,而不是「這套規則長期可行」。以日線以下的持倉週期來說,我自己通常會要求涵蓋五年以上,且至少包含一次明顯的市場劇震;持倉週期越短,需要覆蓋的時間反而越長,因為短週期策略的樣本耗用更快。
在風險控制上,長期資料同樣重要。IG 交易學院關於控制風險的課程提到,合理的風險管理建立在對歷史波動的理解之上,而理解波動,前提是你手上的數據真的走過那些波動。

把自查變成習慣
數據這件事,說到底不是一次性的檢查,而是一種習慣。我在課堂上通常帶學員走三步:先固定數據來源並記錄版本,再在每次重大修改後重跑兩項測試,最後把每次的結果簡單記下來。
我在課堂上要求的三步
先固定來源與版本。不同時間抓下來的數據,可能因為供應商修正而不同,所以在檔名或筆記裏標明抓取日期與來源,日後回頭比對才不會張冠李戴。接着是重跑測試。只要動過參數、換過品種或調整過成本假設,就把兩個年份區間的重跑與點差壓力測試再做一次,兩項都過才繼續。最後是記錄。把每次的關鍵指標與當時的數據版本寫在同一份筆記裏,累積幾次之後,你會發現哪些結論是穩定的、哪些一改數據就翻盤。一套ea策略的研究品質,往往就在這些看起來瑣碎的記錄裏拉開差距。
要理解從回測走到實盤的完整路線,可以參考上線前後該準備什麼。另外,成本與數據密不可分,想弄懂回測裏那些數字在實盤會變成多少,也可以看成本結構的完整拆解。
常見問題
問:回測數據用平台自帶的就夠了嗎?
答:可以先從平台自帶數據入手,但不建議只用它。至少再用第二個來源核對同一段行情,特別留意波動劇烈時段的價位差異。若兩個來源差距明顯,就要判斷哪一個更接近你實際下單時的成交環境。
問:同一策略在兩個年份區間結果差很多,代表什麼?
答:通常代表樣本不足,或參數已經過度貼合其中一段行情,而不一定是市場改變了。以我的經驗值,勝率差距超過十五個百分點、或最大回撤相差超過一半,就值得把參數退回更保守的設定重測。
問:點差假設要怎麼設才合理?
答:不要用單一平均值帶過。把活躍時段與清淡時段分開設定,通常清淡時段的點差會明顯較寬。設好之後,再用假設性調高百分之五十的版本跑一次,檢驗策略的優勢夠不夠厚。
問:資料要涵蓋多久才夠?
答:關鍵不在年數,而在是否包含不同市況。至少要涵蓋單邊趨勢、區間橫盤與一次突發劇震。持倉週期越短,需要的歷史時間往往越長,因為短週期策略的樣本消耗更快。
問:做了這些自查,就能保證回測結果在實盤重現嗎?
答:不能。自查的作用是排除數據層面的明顯錯誤,讓回測數字至少建立在可靠的基礎上。實盤仍會受成交品質、執行環境與市況變化影響,兩者本來就不會完全一致。
立即 WhatsApp 聯繫小風團隊免費諮詢:+852 5378 5383
網站:https://aitrading.ace-fortune.com/EA
投資涉及風險,過往表現不代表未來回報。本內容僅供教育參考,不構成任何投資建議。


