← Alpha
Alpha Research · · 閱讀時間12分鐘

把交易範圍擴大到流動性更差的合約,會讓系統化交易組合變好嗎?

用三十檔幣安永續合約取代六檔,一路下探到日成交名目金額只有比特幣兩百分之一的合約。其餘一切維持不變。

多數系統化交易組合只交易少數幾個標的。理由通常是方便而不是想清楚:資料好拿、合約流動性好,而且沒有人回頭去問這個交易範圍到底讓自己付出了多少代價。有兩個論點指向相反的方向。第一個是分散:三十條相關性很低的策略腿,Sharpe 應該會比六條好。第二個是擁擠:主流合約被每一個有終端機的人翻過一輪,交易所的長尾則沒有,所以剩下的優勢應該就躺在那裡。

兩個論點都可以檢驗,而且它們是不同的主張。一個講的是取平均的算術,另一個講的是訊號住在哪裡。一份把交易範圍擴大、卻只報告組合 Sharpe 的研究,沒辦法告訴你動的是哪一個。

所以我們拿一組在流動性最好的六檔幣安永續合約上已經在虧錢的古典交易規則,再給它二十四檔合約,其他什麼都不改:一樣的六個策略家族、一樣凍結的參數網格、一樣的逐步前推時程、一樣的成本、一樣的十四個樣本外季度。

可重現性

這裡每一個數字背後的完整作法,包括合約下市的處理規則、成本階梯與每一項洩漏檢查,都放在自己的頁面上。

閱讀可重現性 →

我們測了什麼

交易範圍是以2022年10月到12月的每日成交名目金額中位數排名的第1到第30名,取自到2022年底為止至少有兩年真實成交量歷史的幣安 USDT 保證金永續合約。第1到第6名正好是本研究所延伸的前一份研究的六個市場,這是排名規則被忠實重寫的第一個證據。排名軸涵蓋 205 倍的成交名目金額差距,從最上面的比特幣,到最下面每天大約成交 3,400 萬美元的合約。

每個市場上都跑六個結構性策略家族:EMA 趨勢、Donchian 突破、時間序列動能、RSI 反轉、布林通道反手,以及波動度壓縮突破。每個家族帶著一份凍結的六十四組數值參數清單,只生成一次,在每個市場、每個窗口重複使用,所以沒有任何市場享有比別人更寬的搜尋。三十個市場乘以六個家族得到 180 條策略腿,每一條都有自己的逐步前推迴圈,而且不論在不在交易,每一條腿都配置一樣的固定資金。

時程沿用前一份研究:樣本內十二個月、樣本外三個月,每次前進一季,共十四個完整的樣本外季度,涵蓋2023年1月到2026年6月。每個窗口內的挑選只讀樣本內區塊,而且從不碰 Sharpe。某條策略腿在某個窗口找不到合格的參數組時,那個窗口就持有現金,而不是被剔除,這樣流動性差的合約才不會悄悄把自己過濾出樣本。

同一份凍結排名的兩種切法擔起了工作。四個流動性層級,第1到6名、7到14名、15到22名、23到30名,問的是每條腿的損益是否隨流動性改變。六個巢狀階梯,前 6、10、15、20、25、30 個市場,問的是單靠廣度會對交易組合做什麼。兩種切法都不是看到任何結果之後才決定的。

主要衡量指標是二十四個新增市場的樣本外每腿淨期望值減去六個既有市場的同一數字,單位是每個「活躍腿日」的基點,區間來自以週分群的配對拔靴法。活躍腿日指的是合約當天確實在交易的日子,這一點很重要,因為新增合約中有四檔在樣本外期間被幣安強制結算。那些腿從結算起持有現金,資金絕不重新分配到存活的合約上,而死掉的日子也永遠不進入分母,所以合約下市無法藉由把新增組別稀釋往零而讓它看起來比較好。

成本在每一次成交上收取:五個基點的吃單手續費加兩個基點的滑價,從第1名到第30名的每個市場都一樣。這種一律相同的處理對長尾端明顯偏樂觀,規格書自己就這麼寫,因此它也事先登記了一個強制的不利模型,依層級收取 2、4、6、8 個基點的滑價,並在那組成本下重新挑選每一個參數組。

廣度這個問題是以模型而不是以比較的形式登記的。一個等權重腿組合的 Sharpe,應該等於每腿平均 Sharpe 乘上 N / (1 + (N-1) rho) 的平方根,其中 rho 是實際的平均兩兩相關係數。預測值與實現值都在同一組拔靴複本裡計算,所以兩者的差帶著區間,這座階梯就能對照自己的理論被評判,而不只是被描述。

結果

在主要成本模型下,看不到可測量的流動性排名效果。 二十四個新增市場減去六個既有市場的每腿淨期望值是 -1.046 個基點每活躍腿日,95% 區間為 -2.996 到 +0.934。兩組都在虧:既有市場 -4.574,新增市場 -5.620。

在登記在案的不利成本模型下,區間完全落在零以下,為 -3.471,區間 -5.444 到 -1.515,新增市場掉到 -8.046。這是三個登記結論中的第二個:把交易範圍往流動性更差的方向擴大,會讓交易組合更糟。你該相信哪一個讀法,完全取決於你認為交易一檔一天只成交 3,400 萬美元的合約要花多少錢。

Fig. 1: 二十四個新增市場減六個既有市場的每腿淨期望值,在每個登記成本模型下的結果。兩個區間跨過零,強制的排名加權滑價模型則沒有。把游標移到某一列可以看到它的區間。

要看的是拆解,不是標題

毛損益、手續費、滑價與資金費率在交易明細裡是分開的欄位,而且能與淨值完全對帳,所以兩組之間的差可以毫無殘差地拆開。

Fig. 2: 差距落在哪裡。主要模型下毛損益項基本上是零,缺口來自周轉;排名加權滑價模型下手續費差距塌陷,幾乎整個差距搬到滑價上。

-0.009 這個毛損益項在主要模型下說了一件很具體的事:以每條腿為單位,這些規則從流動性排名第三十的合約身上榨出的原始優勢,和從比特幣身上榨出的基本一樣多。缺口的每一個基點都是收割它的成本。在那個模型裡,滑價一律是每次成交兩個基點,所以滑價帳單變大不可能代表成交品質變差,只能代表成交次數變多。

在不利模型下,手續費差距塌陷到 -0.006,因為重新挑選把流動性差的市場的周轉砍到幾乎剛好讓手續費打平,而差距搬進滑價,變成 -2.949。毛損益掉到 -0.501,因為最佳化器現在偏好的低周轉參數組,抓到的原始優勢比較少。

按流動性排序,毛損益上升,成本上升得更快

Fig. 3: 各流動性層級的每腿損益,主要成本模型。最薄的八檔合約同時擁有最高的毛期望值與最高的成本,而且每一層最後都是淨負值。

最薄的八檔合約,每腿毛期望值是流動性最好的六檔的四倍,+2.422 對 +0.597。把這件事讀成「擁擠論被量化出來了」很誘人,但它撐不起這個重量。用研究自己的以週分群配對拔靴法跑過去,T4 減 T1 的毛差距是 +1.825,95% 區間 -0.826 到 +4.493,p = 0.184,區間含零。規格書事先就說明這個設計無法分辨每天約 2 個基點以下的差異,1.825 因此落在線下,而且這個比較不屬於登記在案的次要檢定家族,那個家族是定義在淨值而非毛損益上的。

它還過不了更嚴的一關。在不利成本模型下,因為每次成交更貴會改變哪一組參數勝出,參數會被重新挑選,此時 T4 的毛期望值從 +2.422 掉到 +0.997,而 T1 仍停在 +0.597。一個只要重新為成交定價就腰斬的型態,從來就不是這些標的的性質。

成本才是這幅圖裡不脆弱的部分。它在四個層級上單調上升,從 T1 的每腿日 5.17 個基點到 T4 的 6.74,而且在兩種成本模型下都是如此。

檢定主要成本模型不利成本模型
Sharpe(30) 減 Sharpe(6)-1.066,p 0.0278,未拒絕-2.430,p 0.0002,拒絕
T2 減 T1-2.438,p 0.0362,未拒絕-3.381,p 0.0034,拒絕
T3 減 T1-1.006,p 0.4364,未拒絕-2.962,p 0.0122,拒絕
T4 減 T1+0.258,p 0.8409,未拒絕-4.080,p 0.0018,拒絕

登記在案的次要檢定家族,以 Benjamini-Hochberg 在 5% 下一起校正。主要成本模型下沒有任何一項通過校正;不利模型下四項全部拒絕,而且全部指向同一個方向。

廣度做的事,正好就是相關結構預言的事

Fig. 4: 廣度階梯與它登記在案的模型。實現 Sharpe 從六個市場的 -2.384 掉到三十個市場的 -3.450,而乘數模型單憑量到的相關結構就預測出同樣的下滑。
Fig. 5: 每個階梯的模型落差與它的配對 95% 區間。每一個區間都含零,所以廣度交出了相關結構所隱含的乘數,一單位也沒多。

這就是階梯往下走的原因。在六個市場時,這些腿彼此就已經接近正交,平均兩兩相關係數 0.011,所以分散乘數已經是 5.08,凹形的平方根早就壓平了。再加二十四個市場,也只把它推到 7.60。乘數只能縮放 Sharpe,改變不了它的符號,所以作用在每個階梯都為負的每腿期望值上,乘數越大,交易組合的 Sharpe 就越負,而這正是階梯所顯示的。每個階梯的累積淨報酬都是負的,所以不論怎麼讀,沒有一個階梯變好了。它們只是以不同的速度在虧。

規格書登記了一個可以分開兩種可能原因的反事實:把每一條新增的腿都固定在既有市場的每腿平均與波動度,同時保留實際量到的 180 條腿相關結構,那麼三十市場的交易組合會是 -3.572,而實際是 -3.450。用這個基準把 -1.066 的 Sharpe 惡化拆開,得到 -1.188 來自廣度乘數作用在負的每腿平均上,對上 +0.122 來自新增標的自身的期望值,後者其實非常輕微地往另一邊拉。殘差正好是零,而廣度分量的區間 -1.778 到 -0.649 不含零。

階梯下滑,是因為把更多虧損的賭注平均起來會讓虧損更銳利,而不是因為新加進來的標的更差。

周轉的故事,兩個數字就講完

Fig. 6: 沿著階梯,成交次數增加超過五倍,而平均毛曝險始終在資金的四分之一附近。把游標移到某一階可以同時看到兩個數字。

真正卡住的限制,在六市場的交易組合裡就已經看得見:樣本外期間毛損益是腿資金的 7.63%,而手續費、滑價與資金費率合計 66.05%。擴大交易範圍沒有改變這道算術,只是買了更多標的來付它。

以每次成交看,兩組幾乎分不出來:六個既有市場每次成交虧 6.248 個基點,新增市場虧 6.408。差別在成交次數,33,657 對 148,881。

180
逐步前推的策略腿,30個市場乘6個家族
-1.046
新增減既有,基點每活躍腿日
0.011
六個市場時的平均兩兩腿相關係數
0 / 14
二十個市場以上時賺錢的季度數
66.05%
六市場組合:成本對上7.63%的毛損益
205x
排名軸涵蓋的成交名目金額倍數

按窗口看的紀錄更直白。在二十個市場以上,十四個樣本外季度沒有任何一個賺錢;在六個市場時只有一個賺錢。而且拿掉表現最好的窗口,累積結果會更差而不是更好,因為根本沒有哪個好窗口在撐著結果。任何人若把這個當成上線交易的路線圖,該讀的是水準值而不是差值,因為每一條手臂都在虧。以週分群、涵蓋 184 週的拔靴法,把平均每週損益放在 -0.633,區間 -0.824 到 -0.434,不含零。

這排除了什麼,又沒排除什麼

它排除了這份研究當初要檢驗的主張:標的廣度是那道卡住的限制。在固定資金、其他一切不變的情況下,從六個市場走到三十個市場,讓每腿淨期望值移動的幅度,在主要成本模型下區間跨過零、在不利模型下完全落在零以下;同時它把組合 Sharpe 推往錯的方向,而理由是一條一行的公式就能完全解釋的。

至於較少人覆蓋的標的是否藏著更多優勢,那是另一個這份研究無法定案的問題,因為它量到的毛差距,在這個設計事先登記的解析度下,無法和零區分開。它確實建立起來的是成本那一側,而那一側毫不含糊。

補述:問題出在成本模型嗎?

上面的一切,都建立在把每一次成交都當作吃單來收費:五個基點的手續費加上兩個基點的不利滑價,進場、停損、停利、反手與時間出場一視同仁。這是刻意的保守,而且當初就是這麼聲明的,也是這份工作裡最大的單一假設。如果它錯了,上面的零結果就是它的產物。

它在一個很具體的地方確實錯了。停利不是市價單,而是掛在簿子上的限價單,而在幣安 USD-M 永續合約上,掛單成交付兩個基點而不是五個,並且在自己的限價成交而不是穿過去,所以不帶不利滑價。在 91,277 筆樣本外交易中,有 17,970 筆是在停利出場,占 19.7%,而且是這套架構裡唯一真的掛在簿子上的成交。

把這些出場改用掛單費率重新定價,並且完全維持原本挑選出來的每一組參數,三十市場的交易組合會從 -64.68% 變成 -59.69%:五個百分點,只靠改變出場的收費就拿回來了。實際上你拿不到。逐步前推的最佳化器評分的正是淨報酬,所以讓一種出場變便宜,就會改變哪一組參數贏得那九個月的參數區塊。在修正後的成本模型下重跑登記在案的挑選流程,得到的是 -63.12%。

Fig. 7: 修正所承諾的,對上實際留下來的。機械上的節省是 +5.00 個百分點;真正實現的節省是 +1.57。

一旦最佳化器被允許對這個修正做出反應,它就吐回了 69% 的修正。最引人注意的是,造成這件事需要改變的東西非常少:在 2,520 個挑選決策裡,正好 105 個改變,也就是 4.2%,而這 4.2% 摧毀了 5.00 個百分點中的 3.43 個。

最佳化器並沒有在亂來。它做的正是「停利變便宜」應該讓它做的事:實際在目標價出場的比例從 19.687% 升到 20.778%,也就是往那個剛變便宜的成交靠過去。它只是沒有因為靠過去而得到回報,因為在修正後的目標函數下樣本內看起來比較好的參數組,樣本外的轉移表現反而比在錯誤目標函數下看起來比較好的那些更差。

成本模型的修正無法用「把一本固定的帳重新定價」來評估,因為在修正後的成本下,策略本來就不會做出那本帳。

這也代表一般的直覺是反的。發現自己的成本模型太嚴,感覺像是有一筆好消息等著去收,而其中大部分根本收不到。

在按單型定價下,主要衡量指標從 -1.046 移動到 -0.993 個基點每活躍腿日,區間仍然跨過零,所以沒有任何結論改變。廣度階梯的每一階在兩種成本模型下都仍是負的。把這份工作裡最大的成本假設,在它唯一真的錯的地方修正過來,也只是把一個六十五點的洞往前推了一點半。

限制

  • 一個交易所、一種合約、一組策略。 六個古典的趨勢、突破、動能與均值回歸家族,跑在小時線上,所以在這組規則下量到的排名效果,是關於這組規則的陳述。流動性差的合約在這些規則下付得不比較好,並不能建立「在那裡沒有任何東西付得更好」,而毛損益的結果其實指向另一邊。
  • 樣本外期間和先前那份六市場研究共用。 既有市場的貢獻是已知量,不是發現。真正沒被看過的資訊是二十四個新增市場,這也是為什麼主要衡量指標刻意是一個由它們主導的差值。
  • 排名加權的成本是宣告的,不是校準的。 原本打算用的估計式在小時線永續資料上是退化的,而它唯一的驗證資料來源起點落在樣本外期間之內,用它來決定就會洩漏。這裡也沒有任何逐筆報價來源涵蓋這些合約的樣本內窗口,所以一條真正校準過的成本階梯根本不存在。
  • 模型檢查帶著一個已聲明的偏誤。 相關係數是在每日的腿報酬序列上計算的,而其中大約四分之三的腿日正好是零,因為一條腿多數時間是空手的。這些零會機械性地壓低相關係數,進而抬高乘數、讓預測的 Sharpe 更負。這個偏誤的方向和「實現值貼著預測值走」的結論一致,所以點估計要帶著這一點來讀。
  • 先前一版草稿把層級毛損益型態當成正面發現放在最前面。 從原始程式碼把實作重新核對了一遍、不參照已經寫好的說明,確認那個對比含零、不屬於登記在案的估計量集合,接著又發現它撐不過自己登記在案的敏感度測試。那版草稿還把一項強制的敏感度寫得像已經跑過,其實沒有,而真的跑完之後結論就改變了。這兩件事都被記錄下來,而不是悄悄修掉,因為錯誤發生在分析正確之後的寫作階段,那是預先登記本身抓不到的。

本頁每一張圖都是在你的瀏覽器裡,直接用研究保存下來的結果表格畫出來的,和內文與可重現性頁面所報告的是同一批數字。它們背後沒有任何圖片檔。

完整方法論

交易範圍的建構、合約下市、逐步前推迴圈、成本階梯、統計推論、廣度模型檢查、每一項洩漏檢查,以及補述所用的方法。

可重現性 →