原創主題配圖: 鏈觀 BTC866 原創主題圖解 · ChainView BTC866 Editorial · CC BY 4.0
回測只能使用當時已知資料
歷史模擬若在一月決策中使用三月才修訂的指標,就混入未來資訊。資料發佈、獲取和生效時間可能不同,合併資料前要建立時點規則。今天看到的完整歷史圖不一定是當時真實可取得的資料,尤其不能按最終榜單倒選早期贏家。
保存首次發佈版本能避免使用未來修訂。鏈上資料也會受確認和重組影響,信號若依賴尚未最終確定的區塊,需要寫出當時可觀察狀態。不能因歷史瀏覽器如今顯示完整就假設過去實時查詢也同樣完整。
保留失敗與退出樣本
只回測仍在交易的資產會忽略下架、倒閉和流動性消失的案例。歷史投資範圍應按當時可用名單重建,退出時如何估值也要寫明。完全找不到價格不能假設以最後價無成本賣出,應標注缺失和可能損失,避免幸存者偏差美化曲線。
資產池應包含當時具備交易條件的失敗項目,缺失價格的處理可能決定結果。若只能拿到幸存樣本,就在結論中限定範圍,而非給出整個市場通用收益率。資料成本與不可得性本身也是現實約束。
加入現實執行條件
手續費、價差、訂單量、延遲和可得深度都會影響結果。收盤價給出信號後再按同一收盤價成交可能不可實現,跨平台資金也不會瞬間到達。用不同成本和滑點假設做敏感性比較,比只展示一條最佳收益曲線更有資訊價值。
模擬成交量應與可得深度相容,不能讓一個大策略免費吃下全部歷史成交。手續費等級、返傭和資金借貸還需有合理假設,不能選擇今天最優惠等級反套過去。報告敏感性範圍比小數點後的漂亮精度更重要。
將選擇和檢驗分開
調參所用樣本與真正樣本外期間要區分,試過很多規則後挑最好一個會產生選擇偏差。記錄嘗試次數、參數範圍和棄用策略,不把偶然擬合包裝成發現市場定律。條件改變後應重新驗證,而不是不斷調整歷史規則讓過去永遠好看。
訓練集、驗證集和最終檢驗集各自承擔不同角色。若反復查看最終結果再改規則,該區間就不再是真正未見樣本。記錄實驗日誌和決定時間,讓他人理解是否存在選擇偏差,別用複雜術語掩蓋不斷追隨過去走勢。
報告限制與復現條件
研究說明應包含資料版本、投資範圍、調倉時點、成本、缺失處理和測試區間。假想策略即使回測盈利,也不能保證未來可執行或獲利。海外用戶還需考慮當地資格與貨幣,不應為驗證一張模擬圖就匆忙投入資金,先理解方法中的脆弱假設。
最終說明也要包括無法建模的風險,如停機、提款延遲和市場消失。歷史模擬可能無法準確估計極端事件,這不是省略風險的理由。讀者可用回測提出問題,但真實資金決定還需獨立評估和可承受損失範圍。
學習表可分別圍繞“時點資料”“完整樣本”“執行成本”“樣本外檢驗”記錄定義、輸入、結果和限制。先固定一組假想輸入,再單獨改變一個條件,觀察哪個結論隨之變化。所有數值都注明單位、時間和來源,未知項保留未知,不能自動補零。這個步驟的價值是暴露方法依賴,不是挑出最漂亮的結果;真實資金決定還應結合支出需要和可承受風險。



