手動回測:用歷史資料檢驗規則

回測的目的不是證明策略有效,而是檢查規則在歷史情境中如何表現、何時失靈,以及結果對假設有多敏感。**歷史結果不代表未來結果**,回測也可能漏掉流動性、滑價、成本、規則變動與執行延遲。

約 20 分鐘歷史驗證 · 含 2 個互動練習承接出場規則
卷軸、顯微鏡和圖表表示用回測檢驗規則
學習目標
  • 建立不偷看未來資料的手動回測流程
  • 把交易成本、公司行動與下市偏誤納入紀錄
  • 使用多項指標描述結果,而不是只看總報酬
  • 區分樣本內調整、樣本外檢驗與滾動覆核,並辨認過度配適
  • 說明回測可能漏掉流動性、滑價、成本、規則變動與執行延遲,因此不代表未來結果
歷史成績最容易被調參美化

看完答案才挑參數,漂亮曲線還能相信多少?

回測是把規則放進歷史資料檢查,不是對未來的保證。若一邊看結果一邊改參數,很容易把歷史雜訊誤認成優勢。

Manual Backtest

不要只看一張漂亮圖:逐筆跑完 24 個歷史樣本

規則已固定。每點一次才揭曉下一筆 R 結果;指標會隨樣本增加即時變化。

????????????????????????
已測試樣本0/24
勝率0.0%
平均獲利+0.00R
平均虧損-0.00R
最大回撤0.00R
期望值+0.00R
先看一個小故事

邊煮邊調味,最後只證明你記住了這一鍋

阿明滷了一鍋肉,先嚐鍋面一口覺得太淡就加醬油,再嚐鍋底一口覺得太鹹就加水。反覆調整之後,他宣布「這個配方經過兩次驗證」。問題是兩次都參與了改配方,他沒有留下任何一口沒嚐過的來檢驗它能不能重現。

先寫測試協議

樣本、成本、資訊與版本缺一不可

1

樣本邊界:先鎖定版本

測試前寫下標的範圍、資料期間、樣本數、涵蓋的市況,以及納入與排除規則,並封存規則版本與生效日期。十幾次觀察不能冒充廣泛證據。

2

成本邊界:先寫死假設

手續費、交易稅、買賣價差、滑價、較大練習數量對價格的影響,以及未成交怎麼模擬,都要有明確假設;再檢查成本提高時結論會不會改變。費率、稅制與交易規則以商品最新正式文件與交易所、主管機關、服務機構的公告為準,並記下查閱日期,無法確認就停止。

3

資訊邊界:逐期判定

遮住未來 K 線,只使用當時已公布的價格與資訊。財報條件要用市場當時真正可取得的公告日,而不是報表所屬季度的最後一天;也要避免只挑後來仍然存在的標的,以及事後重編過的欄位。

4

配適邊界:逐筆留痕

樣本內用來發現問題,樣本外用來檢驗沒看過的資料,不得繼續調參。滾動覆核是按時間往前移動檢驗窗口,不是回頭重寫舊答案。符合與不符合都要留痕,不能只挑好看的案例。除權息、減資與股票分割會改變價格的可比性,調整方式必須寫在協議裡。

5

報告邊界:彙總檢查

同時揭露規則版本、觀察數、結果分布、最深的不利階段與失敗案例,並比較不同年度、市況與產業,不把單一數字當成結論。

互動練習一

觀察小樣本怎麼放大偶然性

改變觀察數量,比較「少數連續有利結果」與更長樣本的波動。樣本變多通常能降低單次偶然結果的影響,但它修不好錯誤的資料,也補不回制度或流動性的結構變化。後面那份 BT-01 只有六列,用來練習欄位與計算可以,用來評價一條規則遠遠不夠。

A

少於 20 筆

交易數量太少,不足以得出可靠結論——少數結果很容易被偶然性主導。

B

20–99 筆

值得繼續測試的早期讀數——模式出現的次數開始超過偶然,但樣本仍然偏小。

C

100 筆及以上

更大的樣本更有分量,但即使很大的歷史樣本,也永遠不能保證未來結果會重複過去。

漂亮曲線先接受壓力測試

歷史結果可能被理想成本與反覆調參美化

虛構練習案例

前 12 次有 9 次是正結果

加入隨後 88 次沒有參與調整的觀察後,100 次裡只有 51 次為正;再計入虛構的手續費、交易稅、買賣價差與滑價,整體結果又更低。數字全為虛構練習資料。

過度配適

在同一段資料上反覆找最佳門檻

每一次挑選都在吸收這段樣本的雜訊;即使樣本內的曲線更平滑,樣本外也可能很快失靈。

反例

樣本變多,卻全部來自同一種環境

高度相似或重複的觀察不等於廣泛涵蓋;制度、流動性或執行方式改變時,歷史關係可能不再成立。

反例

只回測目前仍在市場交易的標的

排除下市、合併與長期暫停交易的歷史成員,會改變當時的母體,這就是存活者偏誤;規則一致或重新加權都補不回缺少的樣本。

誤區

只看總報酬就夠了

平均值會藏住路徑風險。勝率與平均賺賠要一起讀,看結果是不是由少數大幅案例主導;最大回撤描述歷史最深的峰谷落差,不是未來的回撤上限;分期表現則顯示規則是不是只集中在某幾年成立。

風險邊界

歷史模擬不代表未來結果

回測只描述特定資料與假設下發生過什麼,可能漏掉流動性、滑價、成本、規則變動與執行延遲,也不提供具體標的、方向、價位或個人化指令;虧損是真實而且可能發生的結果。

互動練習二

找出一次回測是怎麼偷看答案的

【虛構練習資料 BT-01】起始模擬權益 100R,R 是練習單位,不是任何幣別或報酬率。六列紀錄如下:
R1 有訊號、已成交,毛結果 +2.0R、成本 0.1R,無事件;
R2 無訊號、不適用,成本 0R,無事件;
R3 有訊號、未成交,不適用,成本 0R,保留這一列不刪除;
R4 有訊號、已成交,毛結果 −1.0R、成本 0.2R,虛構 1 拆 2,題目價格已調整,不再重複調整;
R5 無訊號、不適用,成本 0R,虛構現金分配 0.3R,因為沒有部位,只留事件註記;
R6 有訊號、已成交,毛結果 +0.4R、成本 0.1R,無事件。
已成交列的淨結果=毛結果−成本,依序為 +1.9R、−1.2R、+0.3R;未成交與無訊號列保留,但不放進勝敗分母。固定答案:成交 3 筆、未成交 1 筆、無訊號 2 筆,總淨結果 +1.0R,期末權益 101.0R,勝率 2 ÷ 3,最大回撤 1.2R。六列都要保留,並填齊觀察序號、當時可得資料、訊號是/否、執行狀態、毛結果、成本、事件、事件處理、淨結果與偏差十個欄位;本題所有偏差固定為「無」。
接著稽核下方的虛構方案,只問四件事:規則什麼時候封存?樣本外是不是真的沒有參與調參?當時取不到的資料有沒有混進來?費用、價差、滑價與未成交有沒有被漏掉?

A

曲線擬合

交易者反覆調整規則的精確門檻,直到它在同一段被測試的歷史資料上取得最佳結果。這有曲線擬合的風險:把規則調成匹配某個資料集裡的雜訊,而不是更普遍的規律。

B

樣本太小

交易者用 8 筆歷史交易測試規則,全部獲利,就斷定規則已被證明。8 筆太少,無法排除偶然,無論其中多少筆獲利。

C

樣本外測試

交易者用一段歷史資料設計規則,再在另一段設計時從未見過的後期資料上單獨測試。在規則設計時從未見過的資料上測試,比用同一段資料測試更有意義。

事實、解釋、預測、反例

歷史模擬的每個結論都要能被推翻

01

事實

記錄固定規則在指定歷史樣本裡的逐筆模擬結果、正結果比例、最大回撤、成本假設與規則版本。以 BT-01 為例,六列的訊號、執行狀態、毛結果、成本、事件處理與淨結果都要原樣留存。

02

解釋

這些數字只描述那一段歷史區間與模擬假設,推不出規則在未來仍然成立,也不能直接外推到真實執行。

03

預測

測試前先寫下可檢驗的預期:在沒有參與調參的歷史樣本裡,結果應落在事前寫好的容忍區間。

04

反例

若加入合理成本、換到樣本外區間,或只是輕微改變參數就讓結論翻轉,就應報告規則脆弱,而不是把這個結果藏起來。

帶走這一課

三件用來閱讀回測報告的工具

測試協議卡

測試前封存規則版本、樣本邊界、資訊口徑與成本模型,並記下正式來源的查閱日期。

樣本內外隔離

把發現問題與檢驗重現分開;樣本外一旦參與調整,就要重新留出新樣本。

敏感度與失敗清單

改變成本、區間與參數檢查穩定性,同時保留最差階段、未成交列與反例。

知識檢測

檢驗你是否真正理解

檢查你是否能辨認手動回測中的常見偏誤。送出作答後會顯示每一題的原理說明。

第 1 題,共 3 題

使用財報條件回測時,哪個日期最重要?

第 2 題,共 3 題

只回測目前仍在集中市場交易的股票,主要可能產生什麼問題?

第 3 題,共 3 題

一份虛構回測在同一段資料上試過 40 組參數,留下表現最好的一組;接著在沒有參與調參的區間檢驗,結果也不錯。哪種處理最合適?

認識你的學伴

卡住了?讓 Mira 幫你拆解

Mira 僅協助檢查去識別化的教學情境,不收集真實帳戶、個人、資產或憑證資料;可整理欄位與找出偏誤,但不提供具體標的、方向、數量、時點或確定性預測。

正在檢查登入狀態...