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

你該逐個標的各自交易,還是建一個交易組合?

八十個凍結的策略、105 檔幣安永續合約、一條候選交易流,五種執行政策在 37 個樣本外月份裡競逐完全相同的一批交易。

每個系統化交易者最後都會走到同一個岔路口。規則同時在十五個標的上觸發,而資金不夠把十五個全都吃下來。

一種答案是照吃不誤,把每個部位都切得夠小,讓整本帳塞得進去。另一種是限制同時持有的部位數,讓訊號去搶那幾個名額。第二種答案就是多數人講「建一個交易組合」的意思,而它帶著一個沒說出口的承諾:挑哪些訊號來做,比全部都做更值錢。

這個問題聽起來早該有定論,實際上沒有,因為這兩個選擇同時在不只一個地方不一樣。容量限制一邊減少你做的交易筆數,一邊決定哪些交易活下來,而一般的比較讓這兩個效果混在一起跑,於是一個看起來像是在講挑選的結果,可能什麼都不是,只是在講周轉。

我們把它們分開。八十個凍結的策略跑過 105 檔幣安永續合約,生出一條候選交易流,接著五種執行政策在同樣的資金上消化這條完全相同的流:一種是每個訊號都接,一種限制部位數並隨機挑,另外三種限制部位數並依訊號強度、依量到的過往紀錄、依同一數字的波動度調整版本來排序競爭者。

有一件事應該擺在最前面,而不是塞進註腳。這是一份有揭露曝光的研究,而不是完全盲測的預先登記。每一項設計選擇都在任何樣本外數字存在之前就固定了,但規格書自己的關卡順序要求在凍結之前先跑排程器,所以第一次執行早於雜湊值,它的標題數字被看過。凍結之後重跑,逐位元組重現了那次執行,因為整條流程是決定性的,這證明了可重現性,但沒有把盲測還原回來。沒有任何已登記的選擇因為看到什麼而被改動。

可重現性

交易範圍的規則、價差的量測、排程機制、成本模型、虛無語料庫與凍結的雜湊值都放在自己的頁面上,這樣就不會在這裡把論證擠掉。

閱讀可重現性 →

我們測了什麼

交易所是幣安 USDT 保證金永續合約,交易範圍在2022年6月30日固定,依前一季的每日成交名目金額中位數決定,只用當天拿得到的資訊,而且之後死掉的合約全部留在裡面。這道篩選留下 105 檔合約,再從中取出 10、25、50、100 的巢狀階梯。有兩檔在確認交接處價格連續之後做了代號接續,MATIC 換成 POL、EOS 換成 A,因為改名不是死亡。

策略庫原封不動地沿用先前的工作:八個結構性家族,每個家族十組凍結的數值參數,總共八十個策略。這份研究在任何地方都沒有搜尋參數,這件事比聽起來重要。唯一用樣本內資料配適的東西是排序規則,其他每一層挑選偏誤都是靠架構本身不存在,而不是靠論述帶過去。

每個策略在各標的上跑自己的一本帳,所以不同家族的訊號從不共用同一個佇列,接著五條手臂在完全相同的訊號上競爭:

  • 獨立執行,每個標的最多持有一個部位、每個部位是資金的 1/50,也就是同一套機制在容量 50 時的情況;
  • 隨機,把同時持有的部位數限制在 K,並在競爭者之間抽籤決定,取 100 個帶種子重複的平均;
  • 訊號強度,依進場條件被超過多少來排序,單位是無尺度的;
  • 歷史期望值,依該標的在前十二個月裡每筆交易的平均淨結果來排序;
  • 資訊比率,同一個平均除以它自己的標準差。

Walk-forward 是十二個月樣本內接一個月樣本外,逐月滾動,得到從2023年7月到2026年7月共 37 個樣本外月份,排序在每個窗口邊界凍結、套用一個月,而不是在交易中途重新決定。

成本是 5 個基點吃單、2 個基點掛單、2 個基點滑價,加上每一次穿價成交都要付一半的實測價差,而價差來自聚合成交明細裡的買賣價跳動,而不是以K線為基礎的估計式。資金費率按觀察到的結算時點以真實的正負號收取。

障礙對每個策略都固定在 2.0 ATR 停損與 3.0 ATR 停利,由一次只讀持有期間、出場組成與部位佔用率、從不讀獲利的校準決定。那次校準以一種不尋常的方式承重,因為障礙寬度決定名額多常滿檔,而容量限制只有在部位帳真的卡住時才有力道。在 1.0 ATR 停損下,容量 5 只會在 10.9% 的K線上卡住,處理效果幾乎不存在;而選中的這組給出 6.39 的平均同時持有部位數,對上焦點容量 5。

整個設計的關鍵在一個架構上的重點。在每個名額資金固定、不使用槓桿、不模擬市場衝擊的前提下,一筆交易的進場、出場與成本,都不取決於帳上還持有什麼,所以每個候選的結果只算一次,而每條手臂都變成同一張凍結表格上的排程政策,這張表有 16,452,374 筆結果。這幾條手臂不是「大致可比」,它們消化的是完全相同的交易。

登記在案的焦點格是 1 小時K線、前 50 名交易範圍、容量 5。主要估計值是以期望值排序的交易組合減去獨立執行的累積淨報酬,並以重抽日曆週建立配對的 95% 區間。兩個登記在案的分量把它拆開:D_cap,隨機減獨立,也就是單純的限制;以及 D_rank,期望值減隨機,也就是單純的挑選。它們在架構上相加就等於標題數字。

結果

不該。 在焦點格上,以期望值排序的交易組合落後獨立執行 8,090.2 個基點的固定資金,配對的以週分群 95% 區間是 -9,885.1 到 -6,210.9 bp。

Fig. 1: 五條手臂在焦點格上的累積淨報酬,1 小時K線、前 50 名交易範圍、容量 5,單位是固定資金的基點。獨立執行明顯高於每一本受限制的帳。

這是很大的差距,而且區間離零很遠,所以照字面讀,建議就是別再建交易組合了。拆解說出了更有用的東西,而且有一項登記在案的敏感度會把符號整個翻過來。

限制傷得很重,挑選則沒有可測量的幫助

效果估計值95% 區間
單純的限制,隨機對照獨立-8,617.0 bp-10,260.0 到 -6,868.9
固定容量下的排序,期望值對照隨機+526.8 bp+90.5 到 +959.7

焦點格上登記在案的拆解。兩個分量都通過了兩項檢定的 Benjamini-Hochberg 校正,而且它們相加正好等於標題數字。

Fig. 2: 主要估計值與它登記在案的拆解,帶著配對的以週分群 95% 區間,單位是固定資金的基點。

幾乎全部的虧損都來自限制本身,而不是來自挑選。在同樣的容量與同樣的名額下,排序看起來值幾百個基點,勝過隨機,而後面一項檢定會把這個看起來拿掉。

限制為什麼付出這麼多

這兩種模式投入運作的資金並不一樣多,而這正是這場比較的實質內容,不是它的瑕疵。每個標的持有一個部位、每個部位是資金的 1/50,會讓帳上有 88% 閒置;五個名額、每個名額五分之一的資金,則讓 48% 的資金在運作。

手臂累積平均投入資金每單位投入資金
獨立執行-3,585.4 bp11.75%-305.1
訊號強度-11,527.9 bp48.59%-237.2
資訊比率-11,623.1 bp48.47%-239.8
歷史期望值-11,675.5 bp48.47%-240.9
隨機-12,202.3 bp48.51%-251.5

焦點格上的累積樣本外結果、平均投入資金,以及同一結果換算成每單位實際投入資金。

這個策略庫扣掉成本後,平均每筆交易虧掉名目金額的 0.169% 左右,所以投入四倍資金的手臂,虧掉的錢大約是三倍。限制沒有挑到更差的交易,它只是把一個會虧錢的優勢做得更用力。

Fig. 3: 同樣五本帳,兩種分母。改用實際投入的資金標準化之後,排序整個翻轉,獨立執行變成五者之中最差的。

這個翻轉要配一個提醒。隨機手臂完全不帶任何挑選資訊,而它在這個衡量上也贏過獨立執行,所以這是一個關於資金效率的陳述,不是關於挑到更好的交易。

無法被操弄的分母

真正拍板的衡量指標,正是為了這件事而事先固定下來的:每個提供給該手臂的候選所對應的淨 R。這個分母來自凍結的候選交易流,在架構上對每條手臂都完全相同,所以任何關於資金投入的東西都動不了它。

手臂每個提供的候選每個接下的候選接下的候選比例因部位帳已滿而拒絕
獨立執行-0.0532 R-0.0718 R74.1%0.0%
隨機-0.0201 R-0.0690 R29.1%61.7%
訊號強度-0.0191 R-0.0688 R27.8%64.4%
歷史期望值-0.0191 R-0.0660 R28.9%62.0%
資訊比率-0.0191 R-0.0659 R28.9%62.0%

焦點格上的曝險中性診斷,來自一份涵蓋全部五條手臂、2,303,532 列的逐部位明細。

Fig. 4: 用一個資金投入動不了的分母來看挑選品質。以提供的候選為分母時,受限制的帳與獨立執行分了開來;以實際接下的交易為分母時,五者彼此相差都在 0.006 R 以內。

有兩件事掉了出來。限制確實有咬住,因為 62% 到達的候選是因為部位帳已經滿了而被擋掉,對照獨立執行這個對照組是 0%。在提供的候選這個分母上,排序手臂勝過隨機 0.001 R,而隨機勝過獨立執行 0.033 R,所以 改善之中,來自「少做交易」的大約是來自「挑哪些交易」的三十倍

以實際接下的交易來看,排序手臂稍微好一點,-0.066 R 對上隨機的 -0.069 R。這個差距是真的,但很小,而且它和虛無語料庫在完全沒有可預測性的資料上做出來的差距是同一個量級。

資金慣例到底出了多少力,最乾淨的示範藏在一項登記在案的敏感度裡。把獨立執行那本帳按照一個「每個訊號都以固定尺寸下去做」的交易者實際會用的方式定尺寸,也就是每個部位 1/K、同時持有數不設上限,這時它的平均投入資金會跑到 117.7%,而受容量限制的交易組合在這個對照下 贏了 24,178 bp。標題數字的符號是資金慣例的性質,而不是挑選品質的性質。

-8,090
交易組合減獨立執行,固定資金的基點
-8,617
其中來自單純限制的部分
62.0%
因為部位帳已滿而被拒絕的候選
30×
以提供的候選看,少做交易對上挑得更好
+24,178
同一對照,改用有槓桿的獨立帳
16.5M
候選結果,只算一次並由每條手臂共用

挑選看起來有用,然後就沒有了

排序在整片登記在案的曲面上都贏過隨機。在 32 個以相同容量對照隨機的格子裡,有 16 個為正且在校正後顯著,沒有任何一個顯著為負,而且交易範圍越寬,梯度越往上。

Fig. 5: 排序減隨機,單位是基點,跨越交易範圍大小與容量、兩種頻率。虛線圈起來的是登記在案的焦點格。

這個型態正是一個真實的挑選效果該有的樣子,所以這份研究才登記了一項有能力把它殺掉的檢定。那項檢定是零漂移的虛無語料庫:三十個完全沒有任何報酬可預測性的合成交易範圍,每個標的帶著一檔真實合約的實現波動度與價差,每一個都跑過從訊號到手臂的整條流程。排序手臂在那裡賺到的任何東西,都是機制製造出來的,而不是在市場裡找到的。

排序手臂真實估計值虛無中位數經驗 p 值區間高於零
歷史期望值+526.8 bp+64.1 bp0.13330 個裡 0 個
訊號強度+674.4 bp+514.8 bp0.40030 個裡 8 個

第 20 道關卡。登記在案的通過條件是:沒有任何排序手臂對隨機的優勢,在各個種子上有 95% 區間完全高於零。

Fig. 6: 每個點是一個零漂移語料。實心點代表該語料的 95% 區間完全落在零以上,而垂直線是這條手臂在真實資料上賺到的數字。

訊號強度在三十個完全沒有訊號的語料裡,有 8 個做出了完全高於零的區間,直接沒過登記在案的通過條件,而它在真實資料上的結果,正好落在同一套程序在雜訊上產出的中位數。期望值通過了登記的條件,但它的 +526.8 bp 落在虛無分布的第 87 個百分位,經驗 p 值是 0.133。

所以那個 +90.5 到 +959.7、不含零的 bootstrap 區間,回答的是一個比它看起來更窄的問題。它衡量的是實現報酬裡的抽樣變異,也就是說它看不到這套機制在機械上就傾向於贏過隨機,而一旦那個傾向被直接量出來,這個效果就再也和它區分不開。

機制並不神秘。障礙是按 ATR 縮放的,而成本是名目金額的固定比例,所以低波動度的標的每單位風險付的成本按比例更高。兩種排序規則都和波動度相關,而波動度有持續性,所以一條排序規則可以在完全不預測任何東西的情況下,系統性地挑到「每單位風險比較便宜」的交易。

「排序勝過隨機」這個主張撤回。 兩項佐證的敏感度也同意:在 24 個月估計窗口放得下的那 25 個月子區間裡,排序值 +256.6 bp,區間從 -139.7 到 +657.0,而同一子區間上對應的 12 個月窗口給出 +154.0 bp,兩者都無法和零分開。

它的梯度走法也一樣,隨著交易範圍變大而上升,在一百個標的、十五分鐘K線上達到 4,409 bp,小時線上是 3,204 bp,接著隨著容量變大而下降。這個形狀是挑選效果該有的樣子,而它也正是虛無會產出的樣子,因為被丟掉的替代方案數量會放大這個假象,就像它會放大一個真實效果一樣。

哪一條排序規則,現在已經沒差了

這三條規則值得分開來看,因為這份研究更早的一版草稿,曾經在它們之間的差異上建立了一個主張。

規則對照隨機估計值95% 區間顯著
訊號強度+674.4 bp+200.5 到 +1,139.5
資訊比率+579.2 bp+137.2 到 +1,016.5
歷史期望值+526.8 bp+90.5 到 +959.7

焦點格上每一條排序規則對照隨機,帶著配對的以週分群 95% 區間。

那版草稿主張量到的過往紀錄勝過訊號幅度,理由是在更早的一次執行裡,期望值過了門檻而強度沒過。拿一個顯著的結果去和一個不顯著的結果比,並不是在檢定兩者之間的差異,而真正能拍板的那個對比從來沒有被算過。直接算出來之後,期望值在 32 個格子裡顯著優於訊號強度的有 零個,顯著較差的有 十一個,焦點格上的差距是 -147.6 bp,區間從 -770.4 到 +480.8。

反正虛無語料庫已經讓這個問題變得沒意義了,因為訊號強度正是這套機制在沒有訊號的資料上最偏愛的規則,這也正是它在真實資料上看起來最強的原因。

各項敏感度

Fig. 7: 每一個登記變體之下的標題數字。把游標移到某一根長條可以看到它的兩個分量。最後一列把獨立執行那本帳以 1/K 定尺寸、同時持有數不設上限,讓它跑在 117.7% 的投入資金上,符號因此翻轉。

在每一個維持資金慣例的變體之下,標題數字與限制分量都很穩定。進場日歸屬、固定資金費率、依尺寸變動的滑價,以及條件式排序限制,全部落在基準線的幾百個基點以內。排序分量在名目上也穩定,但虛無語料庫顯示那份穩定是一個假象的穩定,而不是一個效果的穩定。

八項登記在案的敏感度裡跑了七項。持續佇列那一項沒跑,理由是結構性的而不是實務上的:排隊等待的候選會在較晚的一根K線上、因此以不同的價格進場,所以它是另一筆交易,而那筆交易不存在於讓其他每條手臂完全可比的凍結結果表裡。

檢查

第一次凍結之後做了兩次檢查,一次針對引擎、一次針對統計,找出了會改變數字的缺陷。排程器會對任何在自己進場K線內就平倉的交易釋出名額,所以有 7.4% 的交易根本沒佔到容量。候選只要 ATR 為正就被接受,這讓非正規化的風險分母做出大到 1e95 的結果。部位帳在每個月的邊界都被清空,而平手時用的是 parquet 的列順序,而不是凍結的交易範圍索引。全部修正之後,標題數字從 -10,459 bp 移到 -8,090 bp,所有符號與結論都沒有改變。

規格書登記了 21 道阻斷級關卡,其中八道已實作。第 20 道,零漂移虛無語料庫,因為沒過而改變了結論;而第 14 道,參考實作對照生產排程器的一致性,在全部五條手臂與 80 個策略上以零個不一致通過。

除此之外,numba 的首次穿越走訪在 59,214 個候選上完全重現了凍結的 Python 參考實作,六種出場原因全部被觸發過;成本恆等式在全部 16,452,374 筆候選結果上對帳到 0.0;面板 QA 在 105 檔合約與 481,644 筆資金費率事件上以零失敗通過。還有十三道關卡尚未實作,而其中沒有任何一道支撐本文提出的主張。

容量限制沒有挑到更差的交易。它把四倍的資金投進一個扣掉成本後每筆交易虧掉名目金額 0.169% 的策略庫,然後為此虧掉大約三倍的錢。

在這個交易所、這 37 個月、這個策略庫與這組成本之下,把同時持有的部位限制在每個名額 1/K 的資金,相對於每個訊號都以 1/U 去接,是虧錢的。幾乎整個差距都能用兩種模式各自投入多少資金來解釋,而不是用它們挑了哪些交易,而把資金慣例反過來,符號也就跟著反過來。

在相同容量下的挑選,並沒有被建立為值任何東西。那個看起來存在的排序效果,撐不過對照一個沒有任何可預測性的語料庫的校準;而在曝險中性的分母上,排序手臂勝過隨機的幅度,大約只有「單純少做交易」所達成的三十分之一,所以我們把它當成一個虛無結果來報告,而不是一個發現。

這些都不代表建交易組合是個錯誤。這裡每一條手臂都在虧錢,因為底下的策略庫扣掉真實成本後就是會虧,所以比較虧損並不是在比較優勢;而把更多資金投進一個為正的優勢會賺更多而不是虧更多,所以限制效果的符號很可能會跟著翻過來。

它也沒有把分母的問題定案。對一個帳戶規模固定的交易者來說,固定資金是誠實的會計方式,而按這個標準,獨立執行贏得很乾脆;至於實際投入的資金,則是衡量資金效率時誠實的會計方式,而按那個標準,受限制的帳贏了。只報其中一個而不報另一個,就是在選擇你偏好哪一個答案。

限制

  • 主要對比是在一個負優勢的策略庫上,拿一本投入 11.8% 的帳去比一本投入 48.5% 的帳,所以限制分量主要是資金投入程度的差異,而規格書在執行之前就這麼寫了。
  • 每一條手臂都在虧錢,這讓本研究成為一場虧損之間的比較,而不是優勢之間的比較,所以在一個會賺錢的策略庫上,限制效果的符號很可能會翻轉。
  • 排序只能重新排列在同一個時間戳到達的候選,也就是 9.8% 的到達事件。因為名額已經被佔住而造成的拒絕是看不到排序的,所以這裡的「排序」比這個詞聽起來的範圍要窄。
  • 成本在名目金額上是均一的,這對集中持有的手臂有利,而它們還是虧了。
  • 價差來自每個月抽兩天的樣本,其中 11.4% 的合約月份採用刻意放寬的備援值,為 3.18% 的成交交易定價。
  • 只有一個交易所,因為 Bybit 在任何可得的來源裡都沒有下市合約的歷史,把它納進來會重新引入這個設計花代價要避開的存活者偏誤。
  • 在 1 小時K線上,有 74.9% 的策略-標的格子過得了 20 筆交易的最低門檻,所以排序手臂在其餘格子上退回凍結的交易範圍順序,排序分量因此被衰減,對照十五分鐘K線的覆蓋率是 92.6%。
  • 這份研究沒有做價差驗證。第 16 道關卡的分層 bookTicker 檢查從來沒有跑過,而基準真值的比較是從更早的一次建置沿用下來的。

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

完整方法論

交易範圍規則、實測的價差序列、候選交易流、名額機制、成本模型、統計推論、虛無語料庫與每一道關卡,附雜湊值與程式片段。

可重現性 →