← Alpha
Alpha Research · · 閱讀約 13 分鐘

交易策略需要經濟理由嗎?

六十個幣安永續合約,兩組策略依照樣本內表現一對一配對,然後問一個問題:先把理由寫下來,會改變什麼東西活得下來嗎?

實務圈把一句話講到變成民間傳說:你講得出道理的策略樣本外撐得住,靠搜尋找出來的撐不住。這句話是可以檢驗的,而據我們所知,從來沒有人在配對過的語料上檢驗過它。

值得檢驗,是因為它承載太多東西:它決定一個研究者接下來六個月要花在想「誰在交易的另一邊」,還是花在蓋搜尋基礎設施上。多數交易台早就選好邊了,而且通常沒有證據。

有一個障礙說明了為什麼很少人真的去測。這個比較幾乎總是被做得不公平:有寫下機制的策略與靠列舉找到的策略,很少拿到相同的搜尋預算、相同的成本、相同的標的或相同的期間。不論哪一邊贏,讀者都分不出來,究竟是理由起了作用,還是設定起了作用。

這項研究把上面這些全部固定住,只讓一件事變動:參數搜尋開始之前,有沒有先寫下一段經濟機制。六十個幣安永續合約、分屬兩個關鍵組別的十七個策略家族、兩邊完全相同的搜尋預算,以及十八個季度的樣本外歷史,全部跑在實測價差、真實交易所費用與實際觀察到的資金費率之上。

可重現性

標的池規則、家族定義、以實測價差為基礎的成本模型、配對程序與統計推論,都放在獨立的一頁,免得在這裡擠掉論證本身。

閱讀可重現性 →

我們測了什麼

兩組策略跑在同一個引擎上,資料是幣安 USDT 保證金永續合約的 30 分鐘 K 線面板。

目錄組,arm C。八個常見技術指標:ATR、EMA、SMA、MACD、PPO、RSI、一個固定的 RSI 水位,以及隨機指標 %K,各自和自己的參考線比較。這裡不主張任何一個為什麼「應該」有效,因為把目錄列舉一遍本身就是這個方法。

機制優先組,arm M。九個家族,其進場規則是為了表達一段寫下來的經濟機制而設計的,這段機制要指名誰在交易的另一邊,以及那個對手方為什麼會基於預期利潤以外的理由成交。波動壓縮突破、時間序列動能、時段動能、週末反轉、波動高潮、對 BTC 的相對強弱、跳空回補、區間反轉,以及 Keltner 趨勢。

兩組都只用價格,因此看到的資訊相同。兩組的變體都取自同一個共用函式庫的 35 個修飾器,11 個轉換與 24 個匯流過濾條件,逐字複製自產生兩份原始語料的那個生成器並做了雜湊,所以「兩組共用同一套詞彙」這件事是可查核的,而不是嘴上說說。每個家族在每個合約、每個視窗都拿到相同的 945 個嘗試設定預算,於是兩組之間唯一的差別就只剩下基礎進場規則。

第三組是十一個同時讀取資金費率、未平倉量、基差、訂單流或多空部位的機制家族,作為已登記的次要對照。它存在的目的,是不讓「有理由」被悄悄混淆成「有更多資料」。

為什麼估計量是一個差值

兩組都預期在扣掉成本後是虧錢的,實際上也都虧了。這不成問題,因為問題不是哪一組賺錢。

策略是在每個合約、每個視窗之內,用樣本內 Sharpe 做配對,caliper 為 0.05 個年化 Sharpe 單位,採貪婪法且不重複取用。兩個在樣本內看起來一樣好的策略被放在一起比,估計量就是兩者在樣本外各自保住多少的差值。這讓結果成為「從同一個起點出發的相對衰減」的量測,而不是績效比較。

配對只有在兩組分布重疊的地方才成立,所以重疊是前提而不是結果。這也是為什麼 caliper 完全不需要放寬:在 0.05 之下就配出了 6,812,171 對。

Fig. 1: 每個合格「策略-視窗」的樣本內 Sharpe,依組別區分。這是描述性的:畫的是配對程序讀取的完整分數表,不是配對後的集合。兩組在 caliper 需要運作的整個區間都彼此重疊。

標的池與成本

合格合約必須以 USDT 計價、在十月到十二月的排名季度中每一天都有成交,且不是指數型商品或面額重整的重複標的。141 個合約符合資格,標的池取每日名目成交中位數的前 30 名與後 30 名,兩者分離倍數為 20.0x,登記的下限是 10。

合約清單取自封存檔的原始列表,而不是交易所目前的合約清單。exchangeInfo 只會回傳目前仍在上架的合約,所以用它建出來的標的池會默默刪掉所有已經死掉的東西。十八個互不重疊的季度視窗,從 2022 年 1 月 1 日到 2026 年 6 月 30 日,每個視窗前面都接著 12 個月的樣本內區塊。

成本是每次成交 5 個基點的 taker 手續費,價差則是用 aggTrades 以「成交之間跳動的中位數」逐合約逐月實測,每次成交付出實測價差的一半,再加上同樣一半作為滑價準備。資金費率採用真實結算 K 線上觀察到的帶符號事件,以公布的 mark price 計價,因此資金費率為正時多單被扣款。

把價差測出來而不是假設它,是讓流動性結論站得住腳的唯一關鍵。一個固定 3 bp 的滑價常數,會讓 BTCUSDT 被多收超過一百倍,同時大致貼近最薄的合約,而這剛好是往流動性結論的方向偏,等於憑空製造出那個結論。

Fig. 2: 逐合約的實測中位價差,對數座標,顏色代表該合約在選取日被分到的分層。把游標移到任一柱可看合約名稱。兩條虛線是各分層的中位數:1.597 bp 對 3.738 bp,比值 2.3x。

結果

登記的主要對照,是樣本外淨報酬的配對差值,機制優先組減目錄組,並在兩個流動性分層上合併。

D = 223.4 bp,配對且以週為叢集的 95% 信賴區間為 [98.5, 344.8] 個基點的固定資本,p = 0.0018。整個區間完全在零以上。

這個估計建立在 6,812,171 組配對之上,橫跨 250 個週片段叢集與 1,642 個交易日,配對使用 0.05 個年化 Sharpe 單位的 caliper,且完全不需要放寬。

作為一致性檢查,同一個量若改由分數表的逐視窗合計來算,是 213.1 bp,而逐筆交易帳本算出來是 223.4 bp,相對差距 4.6%。 兩者是通往同一個數字的獨立路徑,且在建構上本來就不會完全相同,因為帳本會排除跨越視窗邊界的交易。

對照估計值95% 區間pBH 校正後 p
流動性交互作用,D_H 減 D_L-114.9 bp[-197.0, -16.4]0.01380.0184
高流動性分層,D_H171.2 bp[32.8, 295.6]0.0140.028
低流動性分層,D_L278.4 bp[131.4, 410.5]0.00040.0004
資訊集,外生資料組減目錄組139.2 bp[-82.1, 361.2]0.21080.8431

四個登記的次要對照共用一個 5% 的 Benjamini-Hochberg 家族。校正後四個之中有三個拒絕虛無假設。

Fig. 3: 登記的主要對照與四個次要對照,附上配對、以週為叢集的 95% 區間。跨過零的那一個是資訊集對照。

存活率,也就是配對策略中樣本外淨報酬為正的比例,目錄組是 29.74%,機制優先組是 30.93%,差距 1.19 個百分點。

登記的裁決是:寫下來的經濟機制可以預測較高的樣本外留存。 這就是主要對照所說的。有四項但書界定了它能推到多遠,而第一項很大。

+223.4
機制減目錄,bp of fixed capital
[98.5, 344.8]
配對 95% 區間,bp
6.81M
在 0.05 caliper 下的配對數
33%
在無漂移語料上重現出的效果比例
7.5e-05
衰減斜率的差異
2.3x
實測價差,薄分層對流動分層

效果有三分之一屬於規則詞彙,不是機制

同一套流程也跑過一份無漂移的語料。在那裡,任何策略依建構就不可能有優勢,兩組之間的任何差異都是下面限制一節所說的自我參照假影。那份語料產生的配對差值是 72.92 bp,區間為 [-15.11, 166.60]。

對照實際觀察到的 223.39 bp [98.52, 344.82],這個假影的點估計佔了觀察效果的 33%。它的上界 166.60 bp 高於觀察效果的下界 98.52 bp,因此兩個區間在 98.52 到 166.60 之間彼此重疊。

Fig. 4: 觀察到的效果,對上同一個估計量在無漂移語料(那裡沒有東西可以有優勢)上的量測。刻意畫在同一條軸上,因為兩個區間的重疊正是重點。

誠實地說,能主張的東西比裁決要窄。我們觀察到大約 220 個基點的配對差值,其中大概三分之一可歸因於共用規則詞彙的一個性質,而不是經濟機制的存在,而且兩者之間分不乾淨。扣掉假影後的效果大約是 150 bp,但這個相減背後沒有聯合區間,應該當成數量級來讀,而不是當成估計值。

這是水準的差異,不是比較慢的衰減

在配對集合上把樣本外結果對樣本內 Sharpe 做迴歸,目錄組的斜率是 0.0549 [0.0465, 0.0634],機制優先組是 0.0550 [0.0481, 0.0621]。差距是 0.000075,而各自的區間寬度大約 0.015,因此樣本外表現追隨樣本內表現的速率,在兩組之間無法區分。

Fig. 5: 樣本外結果追隨樣本內 Sharpe 的斜率,依組別區分,區間以視窗為叢集。兩者幾乎完全疊在一起。

這件事決定了那句民間說法該怎麼改寫。機制優先的策略並沒有衰減得比較慢;在樣本內 Sharpe 相同的配對下,它們只是在同樣的斜率上,樣本外交出了更多,所以機制買到的東西,不是對衰減的抵抗力

流動性越薄,效果越大

兩個分層之間的交互作用是 -114.94 bp [-197.04, -16.42],在 Benjamini-Hochberg 校正後仍成立,校正後 p 為 0.0184。低流動性分層是 278.45 bp,高流動性分層是 171.24 bp,因此在較薄的合約上,優勢大約多出 60%。

這一段要小心讀。這裡的 L 分層是中小市值,而不是受容量限制的真正尾端;那裡的價差寬 2.3 倍,而且是實測而非假設;上面關於假影的但書,對兩個分層同樣適用。

外生資料沒有帶來可偵測的增益

在寫下機制之上,再讀取資金費率、未平倉量、基差、訂單流與多空部位的那些家族,得到 139.15 bp [-82.10, 361.24],區間跨過零,Benjamini-Hochberg 校正後 p 為 0.843。在這份語料上,把非價格資訊加到機制優先的規則上,相對於目錄基準沒有產生可量測的改善。

發表前找到的缺陷

建構過程中找到並修掉六個缺陷。每一個都被記錄下來,因為每一個都會產生看起來合理的數字,而且其中一個真的產生了:第一份完成的分析報出了一個正面結果,方向剛好就是這項研究所假設的,而它是輸入資料被汙染的假影。

資金費率被記在那些本身就從面板缺失的結算 K 線上,那裡公布的 mark price 與該 K 線的開盤價兩者都不存在,於是這筆費用變成非有限值。在 CVXUSDT 上,這個情況剛好在 67,608 根 K 線中出現一次,產生 1,092 列被汙染的資料。整份語料中,25,251,675 筆樣本外報酬裡有 1,238 筆是非有限值,這已經足以讓所有點估計回傳「沒有值」。

更嚴重的一半在那個防護機制。帳本寫入端會拒絕寫下成本對不起來的帳本,做法是檢查殘差是否超過容許值。非有限的殘差會讓這個比較失效,於是每一列被汙染的資料都通過了那個專門用來抓錯誤成本的檢查,16.8 億筆交易被認證為「對得起來」。事後用一列刻意植入的非有限值去測,舊的檢查回報殘差 1.7e-18 並斷定帳本乾淨對帳,這比漏掉汙染更糟:它從汙染裡生出了「正確」的正面證據。

真正抓到它的,是先前為了別的理由加上的一致性交叉檢查:把分數表算出來的配對差值,和逐筆帳本算出來的同一個量拿來比對,它印出了分歧,讓汙染現形。這個交叉檢查就是上面報告的 213.1 對 223.4 bp。

另外三個缺陷值得點名,因為它們在別處也很容易重現。目標價出場原本成交在出場 K 線的開盤價而不是目標價,在無漂移路徑上每筆交易最多值 12.5 個基點,比整個成本模型還大,而且只作用在賺錢的交易上。策略 id 在每個「合約-家族」都從零重新開始,於是把配對結果接回各自報酬時會產生歧義,把 119,178 對變成 8,580,816 列。bootstrap 原本以視窗起始日期做叢集,這會把登記的週一到週日週片段壓成每個視窗一個叢集,變成 18 個,而實際資料帶有 250 個。

在樣本內 Sharpe 相同的配對下,寫下來的機制在樣本外大約值 220 個基點,其中大約三分之一其實一文不值:同一套詞彙在完全沒有市場的資料上也生得出來。

限制

  • 機制陳述是事後重建的。 這些機制家族是同一位研究者在已經知道目錄語料失敗之後寫的,其機制陳述是依據當初的設計紀錄重建,而不是當時就封存好的。arm M 相對於它自己的參數搜尋是「機制優先」,但相對於目錄的結果並不是盲的。對陳述做盲評可以限制這一點,但無法消除。
  • 規則詞彙裡存在自我參照假影。 由交易序列本身推導出的訊號,搭配以同一序列落後波動率縮放的出場障礙,在無漂移語料上並不會賺到零;在那裡,光是假影就讓兩組各虧掉大約 550 個基點。這是詞彙的性質,不是引擎的缺陷,因此改程式碼不會讓它消失,而它正是主結果有三分之一不能歸給機制的原因。
  • 前四個視窗早於選取日。 標的池是用 2022 年最後一季排名的,而主張期間卻從 2022 年 1 月 1 日開始,因此十八個視窗中有四個,交易的是一個帶著那一年資訊挑出來的面板。兩組在相同視窗交易相同合約,所以配對差值不會明顯因此偏誤,但那四個視窗的面板並不是 point-in-time 的。
  • 凍結前曾看過某一個合約的樣本外中位數。 在對 runner 做冒煙測試時,一份摘要印出了僅限 BTCUSDT 的分組樣本外淨報酬中位數。那些數字是在目標價成交缺陷被發現之前產生的,因此是假影,但紀錄就是它們被看過了。現在分析程式在未進入受保護模式時會拒絕執行。
  • 低流動性分層不是受容量限制的尾端。 凍結標的池中最薄的合約,在排名季度仍有每日 500 萬美元的成交。真正更薄的東西都是在選取日之後才上架,所以這裡的「低流動性」意思是中小市值,任何關於機構資本結構性缺席的主張都不建立在它上面。
  • 掛單深度會是更好的流動性工具。 daily/bookDepth 提供整段歷史中距中價固定區間的掛單名目金額,對一個以流動性分層的研究來說,比從成交推導出的價差更直接。沒有採用,是因為成本來源當時已經登記並驗證過,而且到那個時候已經有一個樣本外數值被看過了。

本頁每一張圖,都是在你的瀏覽器裡用 這項研究公開的結果表 重新畫出來的,和內文與可重現性頁引用的是同一批數字。背後沒有任何圖檔。

完整方法

資料來源、標的池規則、共用變體函式庫、執行與以實測價差為基礎的成本模型、walk-forward 迴圈、配對、統計推論,以及二十道阻斷式檢核,並附上程式碼片段。

可重現性 →