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

機器學習能把虧錢的交易策略改善多少?

拿一套會虧錢的規則庫,在上面放一個模型,讓它決定要做哪些交易,再量測這樣能在 420 條規則、兩個市場與 43 個月之間挽回多少。

機器學習在系統化交易裡有一種常見的賣點:策略本身不動,在上面疊一個模型。規則照常產生訊號,而一個用它們過去交易訓練出來的模型,決定要接哪些訊號、部位要多大,或先做哪一個。這對模型的要求比直接預測市場低,因為模型只需要判斷一條已知規則的下一筆交易會不會賺錢。

要公平地檢驗這個賣點,需要三個對照。一個交易得比較少的模型,不必挑出更好的交易就能贏過一個虧錢的基準,所以比較時需要一個虛無對照,隨機地交易同樣少。一套因為規則早就賺錢才被挑中的規則庫,會把這份選擇帶進結果裡;而預測準確度的提升,也完全說明不了損益能不能撐過價差、手續費與資金費率。

這項研究在一套固定的規則庫上疊一層模型。這套規則庫有 420 條技術規則,在測試的兩個市場、兩種 K 線頻率下扣掉成本後都虧錢。接著把它 walk-forward 推進 43 個月,量測模型能挽回多少虧損。每一種模型策略都拿來和「每個訊號都做」以及一個簡單的人工過濾條件比較,而這些比較在任何樣本外數字出現之前就已經登記好。

可重現性

每個數字背後的完整做法都放在獨立的一頁:規則網格、特徵、模型搜尋、walk-forward 迴圈、成本模型、統計推論與各項檢核。

閱讀可重現性 →

我們測了什麼

規則。420 條機械式策略,分屬 14 個家族,每個家族 30 組參數:趨勢追蹤、均值回歸、突破、動能、波動擴張與收縮、均線交叉、通道與 Donchian 突破、RSI 與 Bollinger 反轉、成交量確認的動能、開盤區間突破,以及固定時段進場。沒有任何一條是因為賺錢才被選進來的,所以虧錢的規則也留在庫裡;一條規則只會因為機械性的理由退出某個訓練視窗,例如交易次數太少,學不到東西。

市場。十檔大型美股與十個流動性好的幣安 USDT 保證金永續合約,各自跑 15 分鐘與一小時 K 線,因此共有四個「市場-時間框架」格子,樣本外交易期間從 2023 年 1 月到 2026 年 7 月。每筆交易在訊號出現後下一根 K 線的開盤價進場,持有固定根數的 K 線後出場,沒有停損也沒有目標價。

每一組「規則-標的」同一時間最多持有一個部位,每一組分到的資金都相同。

模型看得到什麼。在訊號 K 線上由價格與成交量建出的市場特徵、規則的家族與參數、訊號的方向與強度,加上這條規則在該標的上以及跨標的的近期紀錄。成本、價差、資金費率與下一根 K 線的開盤價永遠不會成為輸入,因為做決定的當下,這些都還不知道。

模型。一個正則化線性模型、一個梯度提升樹集成,以及一個小型神經網路,每一個都訓練兩次:一次預測該筆交易的淨報酬,一次預測它最後是否獲利。每個月,每個模型嘗試 30 組固定設定,在前 24 個月中保留出來的一段資料上選出一組,再用完整 24 個月重新擬合,然後對接下來的一個月預測一次,總計從 30,960 組嘗試過的設定中選出 1,032 個模型。

模型可以做什麼。三種用法,分別測試。當作過濾時,只有預測為正才做這筆交易;用來調整部位大小時,每筆交易都照做,依預測值的排名把部位縮放到正常大小的 0.25 到 1.75 倍之間。

用來排序時,在每個時間戳保留新訊號中排名前五分之一的那些,並把整批的全部進場預算交給它們。

比較對象。每一種模型策略都和兩個替代方案比較。一個是每個訊號都做,也就是基準;另一個是簡單過濾條件,只有在三個條件中至少兩個成立時才交易(高波動、強趨勢、高成交量),每個條件都以該標的自己的樣本內中位數為準。

成本。加密貨幣每次成交付 5 bp 的幣安 taker 手續費與 2 bp 滑價,進場與出場各再付實測價差的一半,並加上持倉期間實際收取的資金費率。股票每次成交付實測價差的一半,加上 0.5 bp 的費用。

怎樣才算改善。一個對照只有在七道登記的門檻全部成立時才獲得認定:淨報酬在總額上、以及每單位投入資本上都要贏過比較對象,且在全部 144 個對照上經 Benjamini-Hochberg 校正後的 q 低於 0.05,同時贏下超過一半的月份,且獲利大於虧損。這份增益還必須在刪掉最好的那個月之後依然存在,並贏過一個虛無對照的 95%;這個虛無對照以相同曝險、隨機挑出同樣數量的交易。

要宣稱「機器學習能改善這些策略」這個一般性結論,必須在兩個市場、兩種時間框架,以及三個模型家族中至少兩個,都有獲認定的結果。

結果

模型確實學到了東西,而加密貨幣的領先大多來自波動

合併 43 個月來看,分類模型區分賺錢與虧錢交易的 ROC AUC,在股票上介於 0.512 到 0.523,在加密貨幣上介於 0.566 到 0.618。預測淨報酬與實現淨報酬之間的 rank IC,股票是 -0.0006 到 0.0135,加密貨幣則是 0.0165 到 0.0376。

格子ROC AUC,三個模型家族波動 × √持有期,無模型Rank IC,三個模型家族
股票 1h0.512 到 0.5130.509-0.0006 到 0.0085
股票 15m0.521 到 0.5230.5150.0095 到 0.0135
加密貨幣 1h0.566 到 0.5740.5540.0165 到 0.0255
加密貨幣 15m0.606 到 0.6180.6030.0242 到 0.0376

全部 43 個樣本外月份的預測品質。「無模型」一欄以 24 根 K 線的波動乘上持有期的平方根來為每筆交易打分。

加密貨幣的差距大多根本不需要模型。用標的近期波動乘上持有期的平方根來為每筆交易打分,這個數字對方向沒有任何看法,但在一小時 K 線上就已經達到 0.554 的 AUC,在 15 分鐘 K 線上達到 0.603,因為一筆預期波動較大的交易,不論往哪個方向走,都比較有機會越過固定 14.8 bp 的來回成本。

相對於這個分數,模型在加密貨幣上只多出 0.003 到 0.020 的 AUC,在股票上多出 0.004 到 0.009,所以兩個市場之間的差距,遠比原始數字看起來的小。

Fig. 1: 各格子合併的樣本外預測品質。在 AUC 檢視中,灰色柱是無模型的波動分數;在加密貨幣上,它就已經涵蓋模型相對於擲硬幣的大部分差距。

在任何模型碰到它之前,這套規則庫就在虧錢

每個訊號都做,在四個格子裡都虧錢。這裡的報酬是以帳戶資本計的每日報酬加總,而不是複利,因為加密貨幣的帳戶虧掉的錢超過本金,用複利會讓每一種加密貨幣策略都卡在 -100% 附近。

格子交易數每筆毛利每筆成本每筆淨額加總淨報酬
股票 1h1,560,113+0.62 bp3.30 bp-2.67 bp-10.65%
股票 15m5,272,831+0.34 bp3.30 bp-2.96 bp-39.35%
加密貨幣 1h6,888,035-0.56 bp14.79 bp-15.36 bp-268.19%
加密貨幣 15m26,187,705-0.24 bp14.79 bp-15.02 bp-993.24%

每個訊號都做。每筆交易的數字是所有實際執行交易的平均;成本是價差、手續費與滑價,資金費率併入淨額。

股票規則在毛利上賺一點點,再輸給 3.3 bp 的來回成本。加密貨幣規則毛利是零,然後每一次來回還要付 10 bp 的 taker 手續費與 4 bp 的滑價,所以任何加密貨幣模型一開始就落後大約 15 bp。

Fig. 2: 在所選策略下,一筆交易賺多少、付多少、留下多少。在每個訊號都做、簡單過濾條件與各種模型用法之間切換,可以看出毛利優勢在哪裡上升,而成本柱又在哪裡紋風不動。

144 個對照中有 19 個通過,一般性結論不成立

十九個對照通過所有門檻:股票一小時十個、股票 15 分鐘七個、加密貨幣 15 分鐘兩個、加密貨幣一小時零個。沒有任何加密貨幣對照在與簡單過濾條件比較時獲得認定,而登記的一般性結論需要兩個市場都成立,所以它不成立:模型在某些地方改善了其中某些策略,而不是整體改善了這些策略。

三個模型家族都出現在十七個獲認定的股票結果中,而這些結果除了一個之外全都是過濾。調整部位大小在 48 次嘗試中一次都沒有獲得認定;排序對基準獲得認定三次,對簡單過濾條件則從未獲得認定。

19 / 144
獲認定的登記對照
0 / 48
獲認定的部位大小對照
0 / 36
對簡單過濾條件獲認定的加密貨幣對照
一般性結論:兩個市場、兩種速度
模型用法對基準獲得認定對簡單過濾條件獲得認定
過濾24 個中 7 個24 個中 9 個
調整部位大小24 個中 0 個24 個中 0 個
排序24 個中 3 個24 個中 0 個

其中兩個獲認定的排序結果在加密貨幣 15 分鐘 K 線上,那裡排序後的帳戶以加總報酬計虧掉 910.91% 與 927.76% 的資本,基準則是 993.24%。以複利計算,三個帳戶最後都是 -99.99%,而登記的總淨報酬門檻把這讀成以 0.00006 的差距勝出。

簡單過濾條件本身也是一個弱基準。面對同一個隨機挑選的虛無對照,它挑出的交易在每個格子都比隨機還差,經驗 p 值介於 0.896 到 0.998,這讓每一個拿它來比的對照都顯得比較好看。

另外還有十二個對照通過其他所有門檻卻仍然不獲得認定,因為它們在全部 43 個月都贏過比較對象:六個股票 15 分鐘的過濾,以及六個加密貨幣一小時的過濾,後者中有五個是對簡單過濾條件。沒有任何虧損月份,報酬風險比就沒有分母,而凍結的評分程式把未定義的值算作不通過。

如果把這十二個也算進去,會有 31 個獲得認定結果,加密貨幣一小時也會成為對簡單過濾條件獲認定的格子之一。但一般性結論仍會在加密貨幣 15 分鐘 K 線上不成立,因為那裡每一個過濾持有的資本都太少,每單位投入的虧損比簡單過濾條件還大。

Fig. 3: 每一個登記的對照。實心方塊代表獲得認定;虛線方塊是那十二個除了報酬風險比以外通過所有門檻的對照,當一個策略每個月都贏時,這個比值沒有定義。把游標移到方塊上或點一下,可看它的數字。

股票過濾是怎麼贏的

每個過濾相對於基準的領先,大部分來自交易得比較少。在股票 15 分鐘 K 線上,這些過濾只接下規則庫產生的訊號的 4.8% 到 13.0%,簡單過濾條件則是 57.7%;而一個只交易虧錢規則庫 5% 訊號的帳戶,光是這個理由就會虧得比較少。

真正的能力要看輪轉虛無對照,它讓一個隨機挑選者以相同曝險做同樣數量的交易。每一個獲認定的過濾都贏過 95% 的隨機挑選,經驗 p 值為 0.001,意思是模型留下的交易,比擲硬幣留下的交易更好。

策略接下的訊號每筆毛利每筆淨額加總淨報酬平均曝險日 Sharpe
每個訊號都做100%+0.34 bp-2.96 bp-39.35%19.6%-8.92
簡單過濾條件57.7%+0.40 bp-3.04 bp-23.31%11.8%-6.05
線性,淨報酬過濾4.8%+3.92 bp+0.86 bp+0.55%1.4%0.33
提升樹,獲利過濾6.7%+4.07 bp+0.84 bp+0.75%2.3%0.23
神經網路,獲利過濾9.5%+2.07 bp-1.18 bp-1.50%3.2%-0.45

股票 15 分鐘 K 線。以帳戶資本計、43 個月的加總淨報酬;曝險為平均總曝險。

在最好的幾個過濾下,每筆交易的毛利大約提高十二倍,從 0.34 bp 升到大約 4 bp,比 3.3 bp 的來回成本高出不到一個基點。

這份改善值多少

有三個股票 15 分鐘過濾在扣掉成本後、43 個月加總下是獲利的:線性淨報酬過濾 +0.55%、提升樹淨報酬過濾 +0.55%,以及提升樹獲利過濾 +0.75%。它們平均只持有 1.4% 到 2.3% 的資本,日 Sharpe 介於 0.20 到 0.33;三者的獲利單獨來看都無法與零區分,因為以週為單位重新抽樣週損益的 bootstrap,給每個帳戶的 95% 區間都跨過零。

只有線性那一個獲得認定,因為兩個提升樹過濾都屬於每個月都贏的那些對照;而另外三個獲認定的股票 15 分鐘過濾,則虧損 0.98% 到 3.78%。

在一小時股票上,每一個獲認定的過濾以絕對值計仍然虧錢,介於 -0.23% 到 -1.77%;唯一獲認定的排序,也就是 15 分鐘 K 線上的提升樹,最後是 -8.53%。整份研究中唯一另一個獲利的帳戶,是一小時股票上的線性獲利排序,+0.84%,它不獲得認定,因為 q 值為 0.35,而且它自己的週區間同樣跨過零。

改善就是這麼大。這層模型把一套大幅虧損的規則庫,變成一套幾乎打平、而且大部分時間幾乎不持有資本的規則庫,依過濾不同,把股票 15 分鐘 K 線從 -39.35% 拉到 -3.78% 到 +0.75% 之間。

Fig. 4: 逐週的加總樣本外報酬。選一個格子與一種模型策略;切到只看模型,可以用實際尺度讀模型自己那條線,切到成本前,則可以看成本吃掉了多少毛利優勢。

為什麼加密貨幣跟不上

在加密貨幣上,樹模型與神經網路過濾把每筆交易的毛利從大約零,拉到 15 分鐘 K 線上的 +3.6 bp 到 +8.5 bp,以及一小時 K 線上的 +4.5 bp 到 +5.8 bp;線性淨報酬過濾在一小時 K 線上則達到 +10.0 bp。這是比股票上任何結果都更強的挑選能力,但面對 14.8 bp 的來回成本,每筆交易最好的淨額仍然是 -4.7 bp。

一小時加密貨幣最接近。它有五個過濾在對簡單過濾條件時,除了那道未定義的報酬風險比之外通過所有門檻,六個全都贏過同樣大小的隨機挑選,但每一個仍然虧錢,從 -0.20% 到 -11.58%。

加密貨幣一小時的線性淨報酬過濾,以加總報酬計只虧 0.20%,而它的做法是從 6,888,035 個訊號中只接 16,755 個,平均只持有 0.09% 的資本。綜觀所有加密貨幣過濾,模型找到的毛利優勢,只能抵銷實際去做這些交易所需成本的四分之一到三分之二。

用模型過濾一套弱的規則庫,挑出的交易確實贏過同樣大小的隨機挑選,而在股票上,最好的過濾把每筆毛利提高十二倍。但留下的交易太少、太薄,無足輕重;而在加密貨幣上,它們帶著的優勢比手續費還小。

限制

  • 二十個標的、四個格子、43 個月。這個結果描述的是這套規則庫在這些市場上的表現,而不是一般的機器學習,也不是任一資產類別的全貌。
  • 交易按計時出場,沒有停損也沒有目標價;出場方式不同的規則庫,會給模型一個不同的學習目標。
  • 成本假設幣安基本費率等級,且沒有 maker 成交,所以掛單等待或手續費較低的交易台,面對的加密貨幣門檻會比較小,而這項研究沒有量測這一點。
  • 十二個每個月都贏的對照,六個在股票 15 分鐘 K 線、六個在加密貨幣一小時 K 線,被報告為不通過,因為當沒有任何月份虧損時,登記的報酬風險比門檻沒有定義。這條規則在執行之前就已固定,並照原樣保留。
  • 每個格子把全部 420 條規則與十個標的合併成每月一個模型,因此逐家族或逐標的的模型會是另一個測試。
  • 內層訓練與驗證之間的清除間隔是 16 根 K 線的時鐘時間,一筆隔夜持有的股票交易可能撐得比這更久。它會改變一個視窗內哪組設定勝出,但從不影響樣本外評分,在檢查過的視窗中,受影響的股票訓練列不到 0.1%。
  • 排序把整批的進場預算交給被選中的五分之一,所以獲利模型的排序平均承載的資本比基準多,30% 到 38%,對上 18% 到 22%。

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

完整方法

規則網格、特徵清單、模型搜尋、walk-forward 迴圈、成本模型與每一項檢核,並附上雜湊值與程式碼片段。

可重現性 →