← Research Feed
研究2026/05/29 上午08:01

Lookahead 修正後,14 策略誰是真贏家?K694 揭露 Sharpe 通膨最高 +2.04

Sharpe回測陷阱研究誠實lookahead策略審查平台修正

讀者互動

已追蹤瀏覽 0 次,登入會員可按讚與收藏。

分享到:LINEFacebookX / Twitter

你看到的 Sharpe 3.0,可能少打了一天時差

你在策略平台看到「Sharpe 3.7、年化 32%」,第一反應通常是兩種:覺得太神奇、或覺得回測有鬼。我們的反應通常是後者,因為 多數高 Sharpe 都不是真的策略強,而是 lookahead bias :一筆「今日才知道的訊號」被悄悄拿來決定「今日的部位」。

K693 揭穿了我們自家系統的這個 bug:paper_trading.json 在 9,935 筆紀錄裡,把 data_datetrade_date 對到同一天,也就是用收盤後才能算出的訊號,「回頭」拿去交易當天本身。修正方式很簡單:所有 portfolio_return 統統往後延一天,明天的部位用今天的訊號。

修完以後,問題來了: 之前看起來很猛的策略,到底有幾個是真贏家? 

K694 就是這個問題的答案:把 14 個 active / paper-traded 策略,用修正後的資料 重新跑一次審查 ,跟修正前(K640)做正面對比。

K694 怎麼設計:一次重審 14 個策略

設計上極度單純:

  •  資料 :storage/paper_trading.json,K693 已修正,1.23 年(2025-01-02 到 2026-03-27),309 個交易日
  •  方法 :把每個策略的 corrected portfolio_return 重算 Sharpe / Sortino / CAGR / MDD / Calmar / win rate,跟 K640 (lookahead 偏差版本) 並排
  •  沒有任何 signal shift、沒有任何 model retrain ——純粹是「同一條日報酬序列,往後挪一天」之後再算績效

也就是說, 修正前後的差距完全來自 lookahead 偏差本身 。沒有換策略、沒有換資料來源、沒有換期間。差多少就是 lookahead 偷偷給了多少免費 alpha。

結果:14 策略、最高通膨 +2.04 Sharpe

14 策略 Lookahead 通膨幅度

完整通膨幅度(Sharpe 修正前 − 修正後):

策略K640 SharpeK694 Sharpe(修正後)Delta
adaptive_tier3.7351.691 +2.04 
piecewise_conservative3.9751.961 +2.01 
taiwan_hybrid_leverage3.7622.018 +1.74 
tz_tw_jp_50505.4103.961 +1.45 
taiwan_spy_momentum4.6783.615+1.06
vix_cond_leverage2.8271.854+0.97
global_vt_tz4.0363.662+0.37
risk_parity2.4482.128+0.32
taiwan_8.63vix2.4842.258+0.23
vix_leading_guard1.8251.653+0.17
recommended_50501.9951.849+0.15
fear_dca0.4270.430-0.00
slow_vt0.2550.305-0.05
simple_12vix0.2320.393-0.16

幾個重點:

  1.  平均通膨 0.736 Sharpe(全 14 策略)/ 0.538(10 個 active) ——這不是小數
  2.  最嚴重 = adaptive_tier,+2.04(120.9%) :Sharpe 從 3.74 跌到 1.69,CAGR 從 31.9% 砍到 15.5%
  3.  時區套利 / 多市場混合策略受傷最重 :tz_tw_jp_5050、global_vt_tz、taiwan_hybrid_leverage 通膨都在 1+ Sharpe 等級
  4.  核心 VT 策略幾乎沒事 :slow_vt、simple_12vix、fear_dca 的 delta 都在 ±0.16 以內,部分甚至 修正後反而稍升 (因為 lookahead 在那些策略身上是中性甚至略負作用)

為什麼時區套利特別嚴重?核心 VT 為什麼幾乎不受影響?

Sharpe 修正前 vs 修正後

直觀解釋一下這張散佈圖:每一點是一個策略, 離 y=x 對角線越遠,lookahead 偏差越大 。

時區套利策略(tz_tw_jp_5050、global_vt_tz)依賴的是「 台股已經收盤、日股下午盤訊號 」這類序列關係,當交易紀錄少打一天時差,下午才該知道的訊號被拿來決定上午的部位,等於白拿了好幾小時的市場資訊。所以通膨大。

反過來, slow_vt / simple_12vix 這類核心 VT 策略 用的是 signal[t-N:t] 的長期 EWMA / vol target——慢訊號 對 1 天延遲幾乎不敏感 。這是個 important finding: VT 家族在設計上對 lookahead 是 robust 的 ,這也是為什麼學術文獻多年來敢用它們做 baseline。

重點:通膨 ≠ 作弊

我必須講清楚一件事:上面這些 +1.0、+2.0 的 Sharpe 通膨  不是策略作者作弊,也不是回測程式碼故意作假 。這是 平台層級的資料管線缺陷 ——daily_update.pydata_datetrade_date 對齊到同一天,這是個欄位設計 bug,所有用這份資料表的策略都會被同樣地「免費補一天時差」。

這也是為什麼 K694 的價值不只是「揪出哪幾個策略掉很多」,而是:

  1.  平台誠實展示修正過程 :先在 mile_921184c5(〈我們犯了一個重大錯誤,然後修正了它〉)公告 bug,再用 K693 修資料,再用 K694 公開重審 14 策略
  2.  核心策略仍然 robust :修正後 7/10 active 策略仍贏 SPY 買進持有(Sharpe ≈ 0.85),平均 Sharpe = 1.485、平均 CAGR = 17%——平台價值並沒有被 bug 整個掏空
  3.  這次 audit 是一條更長 chain 的一環 :K547 / K222 / K560 / K645 / K646 / K237 過去 18 個月的 lookahead audit family 已經改過數十處流程;K694 只是最新一次 systemic 抽查

10 個 active 策略 vs SPY

給讀者:你應該怎麼看高 Sharpe 數字

下次看到任何平台(包括我們自家)公告「Sharpe 3.0、年化 30%」,請套這三個檢查:

  1.  訊號來源跟交易時點之間有沒有 explicit lag?  沒寫 signal.shift(1) 或等價邏輯就不要信
  2.  核心 vs 衍生策略 :簡單慢訊號(VT、moving average)通膨幅度通常很小;複雜時區 / 多市場 / 多訊號嫁接的策略通膨機率高
  3.  平台願不願意公開 audit 結果 :如果一個平台從不撤回任何策略、從不公告 bug fix——它要嘛真的完美,要嘛你看不到問題

K694 就是我們的第二類:誠實貼出 14 個策略的「修正前 vs 修正後」,包括最丟臉的 +2.04 通膨。能上架的策略名單會根據 K694 corrected metrics 重新排序, adaptive_tier、piecewise_conservative 這類高通膨策略的 weight 會被調降或暫退 。

下一步是 K547-family 的延伸:讓 daily_update / paper_trading 寫入端強制 data_date < trade_date 不變式(已於 2026-03-17 落地),加 unit test 防止這個 bug 再復發。


 資料來源 :experiments/k694/k694_results.json(K694: CORRECTED Live Performance Audit, post-K693 lookahead correction)

 相關研究 :K640(原始 audit,pre-correction)、K692(identifies 801 lookahead entries)、K693(fixes 9,935 entries)、K547 family(系統性 lookahead audit chain)

 期間 :2025-01-02 → 2026-03-27,1.23 年,309 trading days

詳情

audience
research
experiment_refs
K694
audience_backfill
{"reason":"validator_371_historical_backfill","script":"scripts/backfill_audience.py","applied_at":"2026-05-26T16:21:47+00:00","article_id":"mile_a181cffa","previous_audience":"general"}

相關文章

先讀正式關聯,若無則使用標籤與主題相似度補齊

📄
從 Sharpe 2.16 到輸基準:一場 lookahead 的攔截實錄
# 從 Sharpe 2.16 到輸基準:一場 lookahead 的攔截實錄 ## 一句話結論 一個原本看起來「碾壓基準」的類股輪動策略,在程式內找到一個非常細微的時間錯位後,重新跑出來的真實風險調整後報酬只有 **0.7247**,反而**輸給單純的 50/50 基準(0.9359)**。原本看似驚人的成績,是 100% 來自一個未來資訊外洩的 bug。本篇文章把整個從「看似超強」→「au...
📄
我們稽核了自己網站上 525 篇文章——找到 4 篇必須立刻修的誤導內容
# 我們稽核了自己網站上 525 篇文章——找到 4 篇必須立刻修的誤導內容 > 一個研究平台跑了一年多,累積了 525 篇文章。其中有些結論後來被自家後續實驗推翻了,有些文章標題寫了「【已修正】」,但內文卻還在講舊版的錯誤結論。K320 這個實驗用程式自動掃 + 人工深讀,把 4 篇必須立刻修的「誤導文」、25 篇需要補強的「過時文」、還有 6 篇可以當作教材的「自我修正範本」一一找了出來。 ...
📄
300 個實驗之後仍未解的 24 個問題——研究前沿的誠實清單
# 300 個實驗之後仍未解的 24 個問題——研究前沿的誠實清單 ## 一句話結論 把過去 1142 條知識條目、300+ 個實驗整體攤開盤點之後,這個專案識別出 **24 個目前還無法回答的問題**,分布在 5 個本質不同的類別。其中只有大約三分之一是「方法找對就能解」,其餘要嘛在等資料、要嘛本質難以驗證、要嘛是過去實驗從未碰過的盲區、要嘛是現有實驗互相打架。這份清單的目的,是把研究前沿目...
Lookahead 修正後,14 策略誰是真贏家?K694 揭露 Sharpe 通膨最高 +2.04 | VolPred