樣本內與樣本外回測:加密貨幣策略指南|Traseq 部落格研究方法樣本內與樣本外回測:加密貨幣策略指南
一份實務指南,說明保留期、前進測試,以及如何在 Traseq 用同一個定版策略跨不同加密貨幣回測區間比較。
樣本內與樣本外回測,是檢查一套加密貨幣策略是否只貼合建構資料的簡單方法。你先在一段歷史資料上調整規則,接著凍結規則,再用另一段事先保留下來、建構時沒有拿來調整的歷史資料測試同一組規則。
Traseq 支援這種研究流程:建立策略、把版本定版、跨不同日期範圍執行回測,然後比較結果。Traseq 不是實盤交易、交易所執行、券商終端,也不保證未來績效。
樣本內期間用來建立與調整策略。樣本外期間只在規則凍結後使用。如果同一個定版邏輯在兩段期間都維持合理行為,這比只看樣本內回測更有研究價值;如果它在保留期崩掉,樣本內結果很可能已經過度擬合。
最重要的規則很嚴格:一旦你看過樣本外結果,就不要再調整同一套策略去修補它。那會讓保留期變成另一段樣本內資料。
把一個構想轉成可測試的版本。
從無程式的加密貨幣現貨策略開始,鎖定版本、執行回測,並讓結果保持可追溯以供比較。
這兩個詞描述的是某段歷史資料在研究過程中被如何使用:
- 樣本內(In-Sample, IS) 是你在建立與調整時看得到的資料。只要你看著這段資料調整移動平均週期、
RSI 門檻、停損幅度或濾網,這段就是樣本內。
- 樣本外(Out-of-Sample, OOS) 是你刻意保留、建立時不使用的資料。它只在策略規則凍結後才拿來測試。
這很重要,因為每一次參數選擇都是在向歷史資料學習。如果你用同一段資料來塑造規則又評分,分數自然會被灌水。樣本外測試比較乾淨,因為規則不是為那段期間量身打造的。
它要防的失敗模式就是回測中的過度擬合:策略描述的是某一段歷史切片,而不是能在另一段資料中維持的行為。
假設你有 2024-01-01 到 2025-12-31 兩年的 BTCUSDT 1d 資料。一個實務上的第一版切分可以長這樣:
| 期間 | 日期範圍 | 角色 | 要做什麼 |
|---|
| 樣本內 | 2024-01-01 至 2025-06-30 | 建立與調整 | 嘗試規則變體、調整參數、排除明顯錯誤 |
| 樣本外 | 2025-07-01 至 2025-12-31 | 只做驗證 | 執行凍結版本;不要為了改善這段結果而調整規則 |
這不是唯一正確的切法。交易較少的策略可能需要更長歷史來累積足夠交易數;較慢的策略可能需要更寬的期間,讓每段都涵蓋不只一種市場狀態。原則不變:在看答案以前,先決定哪一段是保留期。
你不需要專門的切分按鈕。使用 Traseq 的版本連結回測流程即可:
- 用 Sentence mode、Canvas mode、模板或可重用 block 建立策略。
- 只在樣本內日期範圍上執行與調整。
- 規則準備好測試時,把版本定版。定版版本會被鎖定供回測使用。
- 在樣本內範圍執行一次回測。
- 把同一個定版版本跑在樣本外範圍。
- 交易對、時間框架、手續費、滑價、初始資金與成交假設都維持相同,只改日期範圍。
- 把兩次執行加入同一個比較集合。
因為兩次執行都指向同一個定版策略版本,你能追溯到完全相同的邏輯。這正是版本控制在這個流程裡重要的原因。底層模型可參考核心概念;操作細節可參考執行第一個回測。
- 報酬: 方向與幅度是否仍在大致相近的範圍,還是劇烈反轉?
- 最大回撤: 風險是否遠大於樣本內期間?
- 總部位數: 保留期內是否有足夠交易數,能支撐有意義的判斷?
- 勝率與獲利因子: 交易分布是否仍合理,還是其中一段只靠少數結果撐起來?
- 權益曲線與回撤圖: 虧損是否集中在某一種市場狀態,或只是逐步衰退?
單一 IS/OOS 切分只給你一次保留期判斷。這很有用,但仍取決於你剛好選到哪兩段期間。前進測試會把同一個概念沿著時間重複:
- 在第 1 段調整
- 在第 2 段驗證
- 把兩段一起往前移
- 重複
在 Traseq 裡,你可以用手動方式近似這個流程:把版本定版,讓它跑過數個連續日期範圍,再把所有執行放進同一個比較集合。這比專用最佳化工具更手動,但研究紀律相同:先凍結邏輯,再測試沒有參與規則塑造的期間。
- 它仍然使用歷史資料。 通過保留期,代表規則在那段歷史裡能一般化,不代表它會持續有效。
- 它可能被污染。 如果你偷看保留期又回頭調整,它就不再是乾淨的保留期。
- 它取決於你選的期間。 趨勢市裡的一段 OOS,對盤整市場不一定有太多說明力。
- 它修不了有偏誤的資料。 前視偏誤、倖存者偏誤、不 realistic 的成本與薄弱成交假設仍然重要。請參考前視偏誤與倖存者偏誤。
請把樣本外結果視為更強的研究證據,而不是確定性。通常下一步是比較:用同一個定版邏輯測試更多期間,再看哪些行為改變、哪些行為穩定。
想親手試這個切分嗎?先執行互動 Demo,再建立策略版本,並在 Traseq 比較一次樣本內與樣本外執行。
樣本內與樣本外回測有什麼差別?
樣本內回測使用你在建立與調整策略時看過的資料。樣本外回測則是在規則凍結後,使用另一段保留期,因此策略不是為那段特定期間設計出來的。
為什麼只看樣本內回測有風險?
因為它用同一段影響規則的歷史資料替策略評分。當開發過程試過很多參數、濾網或日期範圍時,脆弱策略也可能看起來比實際更強。
我要怎麼選樣本外期間?
在調整策略之前先決定。保留期應該與樣本內有明確區隔、長到足以產生可判讀的交易資料,且不要只代表單一狹窄市場狀態。
如何在 Traseq 執行樣本外測試?
在樣本內日期範圍調整策略,把版本定版,再把同一個定版版本跑在樣本外日期範圍。交易對、時間框架、手續費、滑價、資金與成交假設維持相同,然後把兩次執行放進比較集合。
什麼是前進測試?
前進測試會把樣本內/樣本外切分沿著時間重複。你在一段期間調整、在下一段驗證,接著把兩段一起往前移並重複,避免結論只依賴單一保留期。
通過樣本外測試是否代表策略有效?
不是。它比只看樣本內更有研究價值,但仍然建立在歷史資料上。它不保證未來績效、不消除市場狀態風險,也不會把回測變成交易建議。
回測指標|勝率、獲利因子、夏普比率:該先看哪一個?