有學員帶著一份回測報告走進課堂,策略是常見的雙均線交叉,勝率寫著 78%。他問我,為何這套 程式交易 系統一上實盤就完全不是那回事。我看了他下載數據的日期與來源,很快便找到原因:數據本身有問題。很多人把程式交易的成敗歸結於策略寫得好不好、參數調得準不準,卻忽略了所有回測、優化與訊號判斷,全部建立在一批數據之上。數據是髒的,策略再漂亮也是白算。
過去幾年,我在 AI Trading Academy 課堂上反覆見到同一個現象:學生從網上找到一份策略代碼,複製到回測平台,跑出亮麗的績效曲線,興奮一陣子,上實盤後卻屢屢失利。問題幾乎不在策略本身,而在餵給策略的數據。為了讓這個問題可以被記住、被討論,我把它整理成三個最常見的錯誤,命名為「髒數據三陷阱」:時間戳錯位、複權遺漏、幸存者偏差。三者只要中一個,回測結果就會失真,而這份失真的成績單,最終會原封不動帶進實盤。
為什麼數據品質是程式交易的第一道關卡?
交易者常有一種心態:策略好就夠了,數據隨便。我在課堂上問過不少學生,你的回測數據從哪裡來?十個有八個答不上來,或者說「從某個免費網站下載的」。下載本身沒有問題,問題在於他們從未檢查過這批數據是否可靠。
回測的邏輯其實很簡單:把一段歷史價格數據餵給一套規則,規則說買就買、說賣就賣,最後統計績效。策略只是規則,數據才是原料,原料出錯,成品必然出錯。更關鍵的是,這條鏈是連鎖的:資料源決定原始數據是否真實,清洗決定數據是否可用,回測結論影響策略參數,參數又直接帶到實盤。任何一環的偏差,都會被下一環放大。這就是為什麼我會把數據品質視為 程式交易 的第一道關卡。
我在 USIC 比賽中見過不少參賽者,策略邏輯寫得有板有眼,最後卻敗在回測與實盤的落差上。他們總以為是市場變了,很多時候其實是數據從來沒有乾淨過。
數據錯誤還有一個被低估的特性:它會在優化過程中被放大。參數優化本來就是在歷史數據上尋找最佳組合,如果數據本身帶有錯誤,優化器會把這些錯誤當作真實訊號,死命去貼合。結果是參數被調到恰好配合錯誤數據的形狀,換到乾淨數據上反而完全失效。這就是「連鎖影響」四個字的意思:源頭的一點雜質,會沿著資料源、清洗、回測、優化一路放大,最後變成實盤上的巨大落差。
同一個策略、兩種數據:勝率相差二十個百分點的算例
以下數字是教學示範,並非實際交易紀錄或回報預測。
假設一套 20 日與 50 日雙均線交叉策略,應用於 EUR/USD 日線,時間跨度二十年。交叉向上買入、交叉向下賣出,規則本身不複雜,這類工具的基本原理,可以參考IG 交易學院關於移動平均線的教學。
第一組測試用經過清洗的數據:時間戳完整、價格已前複權、沒有缺失或重複的交易日。回測共觸發約三百次交易,勝率 55%,盈虧比約 1.2,淨值曲線平滑向上。
第二組測試同一套代碼、同一個參數,一字不改,只把數據換成從免費網站下載的原始檔案:沒有複權、部分日期缺失、時間戳偏移。結果觸發交易多了三成,因為缺失日期令均線短暫失真,產生大量假訊號,勝率跌到 35%,與第一組相差二十個百分點。

再把兩組結果放在一起看。乾淨數據的淨值曲線回撤較淺,最大回撤約一成半;髒數據的曲線起伏明顯更大,因為假訊號集中在某些月份,造成短時間內的連續虧損。同一套規則,兩張成績單,策略的好壞完全被數據品質蓋過。不少人在第二組數據上反覆調參,以為自己在優化策略,其實只是在遷就錯誤數據。
同一個 程式交易 策略,同樣的二十年,只因數據品質不同,回測結論完全兩樣。只看第二組結果,這套策略會被當作不可用而放棄;只看第一組結果,又會高估它的實盤潛力。數據品質決定你看見的是哪一份成績單。
回測還有另一個常見疏漏:點差、佣金與滑價。不少人假設以收盤價成交,忽略真實交易成本。正如投委會的交易須知所提醒,交易涉及買賣差價與各項費用,回測假設愈貼近真實成本,結果才愈可信。
髒數據三陷阱之一:時間戳錯位
每根 K 線都帶有時間標記,標記正確,才能分辨「今天收市」與「昨天收市」。一旦時區、夏令時間或伺服器設定不一致,同一根 K 線會被貼上錯誤的日期,策略看到的就是錯位的行情。
外匯市場尤其容易中招。市場 24 小時運作,沒有交易所的開收市鐘聲,日線的劃分完全依賴平台設定。我見過有人從某個免費網站下載歷史數據,伺服器採用格林尼治時間,本地軟件卻以香港時間解讀,相差八小時。均線交叉明明發生在香港時間下午,系統卻把它算進前一天,進出場價全部錯位。

時間戳錯位最難察覺,因為數據看起來完整,畫在圖上依然平滑。它不會令回測崩潰,只會令結果悄悄失真,令人誤以為策略不行,或者誤以為策略很行。對以收盤價觸發訊號的 程式交易 系統來說,這八小時足以顛倒一筆交易的成敗。
髒數據三陷阱之二:複權遺漏
第二個陷阱主要出現在股票與指數相關的策略。上市公司派息、拆股、供股時,股價會出現人為跳動。如果歷史數據沒有做前複權,價格線會出現斷層,均線與支撐位的計算全部失真。
最常見的後果是虛高回報。假設一檔股票一拆三,未複權的歷史價格顯示股價由三十元跌到十元,系統可能當作一次大幅下挫而買入,實則股東資產總值不變。用未複權數據回測,勝率與回報都會被高估,實盤自然對不上。
以派息為例再說明一次。一檔股票派發每股二元股息,除息日開市價會相應下調。如果數據未複權,系統會把這個自然調整誤讀成價格下跌,繼而錯誤發出買入訊號。一年派息幾次,這類假訊號就出現幾次,長期累積,勝率與盈虧比都被扭曲。前複權的做法,是把過去所有價格按派息與拆股比例向後調整,讓歷史價格與當前價格在同一基準上比較,訊號才不會被人為跳動干擾。

外匯與黃金看似沒有股息,容易令人忽略複權問題。實際上外匯有掉期利息,期貨合約有展期成本,指數在成份股調整時亦會出現跳空。處理這些細節的功夫,不亞於股票複權。資料源如果不主動說明處理方式,預設就要當作未複權看待。
髒數據三陷阱之三:幸存者偏差
許多免費數據庫只收錄仍然存在的股票,已經除牌、停牌或退市的公司會被直接刪走。回測時你只看見存活下來的股票,那些倒下的公司彷彿從未存在過,這個陷阱對以選股為核心的策略特別致命。
香港市場對這個陷阱特別敏感。細價股長期停牌、除牌、被收購合併的個案不少。一套篩選策略,如果只在今天仍然存在的股票上回測,表現自然亮麗;同一套篩選規則放回當年的全量名單,那些已消失的公司會立刻拉低勝率。差別有多大?視乎市場與期間,足以讓一個「可接受」的策略變成「不可用」。
我在課堂上常舉一個例子:把一隊只保留仍存活學生名單的班級拿來統計平均分,成績自然好看,卻看不出多少人中途退學。數據庫也一樣,刪走失敗者的名單,回測只剩下成功的故事。要避開這個陷阱,就要確認資料源包含已除牌的歷史標的,而不是只有今天的成份股。

還有一層比較隱晦的影響:指數成份的更替。恒生指數成份股定期檢討,表現不濟的公司會被換走,加入表現較好的公司。指數的歷史數據看起來一直向上,實際是依靠不斷換血維持的。以指數成份作為選股池的策略,如果沒有意識到名單一直在變,很容易把「換血效應」誤當成自己的選股能力。這個問題連部分專業數據庫都未必處理得乾淨,更不用說免費來源。
免費與付費資料源比較:五步清洗行動清單
不同資料源的品質差異很大,選擇前先認清定位:
| 資料源 | 複權與除牌處理 | 時間戳品質 | 適合用途 |
|---|---|---|---|
| 免費網站下載 | 多數未處理 | 參差 | 學習與概念驗證 |
| 券商平台內置 | 視乎供應商 | 較佳 | 與實盤對照 |
| 專業付費數據 | 完整處理 | 穩定 | 正式回測與開發 |
| 自建採集報價 | 需自行處理 | 可控 | 高頻與特殊策略 |
選好資料源之後,每次跑回測前先過五步清洗檢查:
第一步,檢查時間戳。抽樣比對幾天的收市時間與收市價,確認與香港時間一致。
第二步,檢查缺失與重複。統計每日 K 線數量,出現零根或兩根的日子要逐一處理。
第三步,確認複權方式。問清楚資料源是前複權、後複權還是未複權,以「前複權」為優先。
第四步,核對除牌名單。確認歷史數據包含已除牌標的,留意測試前後期名單是否一致。可以取一年前的名單與今日名單對比,看看有多少公司已經消失,消失的比例愈高,幸存者偏差愈嚴重。
第五步,用一段已知行情驗證。對比幾日大市指數與個股高低位,確認數據與真實行情吻合。
如果資料源來自來歷不明的平台,訂購或開戶之前,可以先查閱證監會無牌公司警示名單,確認對方不是被點名的可疑機構。
回到開頭的心態:策略好就夠了,數據隨便,到底行不行?答案很直接。回測的本質,是把歷史數據餵給策略。資料源決定原料是否真實,清洗決定原料是否乾淨,策略只是在乾淨原料之上做運算。原料髒了,再好的廚師也煮不出好菜。把「髒數據三陷阱」寫成一張紙貼在電腦旁:時間戳對了嗎?複權做了嗎?名單完整嗎?每次跑回測之前先過這一關。市面上的教程都在教你寫策略代碼,卻很少人提醒你,數據才是第一道關卡。這正是我希望你在 程式交易 路上最早學會的一課。

常見問題
問:程式交易 用免費數據做回測,可以嗎?
答:可以,但要先檢查。免費數據常見時間戳參差、未複權與除牌遺漏三個問題。先完成清洗檢查,確認沒有明顯錯誤才用於回測,同時明白免費數據的結果只宜參考,不宜直接當作實盤依據。
問:回測勝率很高,是不是代表數據沒問題?
答:不一定。勝率高只能說明在「這批數據」上表現好,不能證明數據乾淨。反過來看,勝率高得異常,例如長期超過八成,反而要懷疑是否犯了複權遺漏或幸存者偏差。
問:回測結果和實盤差很多,問題出在哪裡?
答:先檢查數據,再看成本。時間戳錯位會令訊號晚一天出現,複權遺漏會高估回報,點差與滑價未納入也會拖低實盤表現。數據檢查完畢,才輪到檢討策略。
問:不懂清洗數據,可以直接用預設數據嗎?
答:可以用,但要設定較高的風險邊際。未經清洗的數據回測結果偏樂觀,上實盤時應以較小倉位測試,並把回測結果打個折扣看待,直至確認數據品質為止。
問:數據品質要多好才算合格?
答:簡單三條基準:時間戳與香港時間一致、歷史價格有前複權、資料庫包含已除牌標的。三條都通過,才達到可以信賴回測結果的最低門檻。
問:回測勝率高就可以直接上實盤嗎?
答:不可以。勝率只是其中一個指標,回撤、盈虧比與連續虧損次數同樣重要。即使數據乾淨,實盤仍受滑價、流動性與執行落差影響,建議先以模擬帳戶或小額資金驗證一段時間。
準備好開始你的交易之旅?立即聯絡我們的專業團隊。
WhatsApp:+852 5378 5383
網站:https://aitrading.ace-fortune.com/algo-trade-hk
投資涉及風險,過往表現不代表未來回報。本內容僅供教育參考,不構成任何投資建議。


