iT邦幫忙

2026 iThome 鐵人賽

DAY 29
0

前面二十八天各自量各自的東西:Day 3 的六因子、Day 15 的分類器與大盤狀態、Day 20 的擇時、Day 26 的文字特徵、本週的 21 個新特徵。每一個當時都有自己的尺,彼此不能直接比。

這篇把它們放在同一條生產線上:同一個引擎(Day 27 的實務版,一千萬本金、整張、手續費、證交稅、漲跌停、單筆不超過當日量 5%)、同一條規則(風險平價、只買排名前 20、掉出前 20 就賣、不擇時)、同一段期間(2016 到 2026)。唯一換掉的是給引擎的那張排名表。

L1  六因子等權:波動低、殖利率高、益本比高、離 52 週高近、營收加速、短期動能低(Day 3 的基準,不訓練)
L2  48 個特徵的 LightGBM 分類器(Day 15 的模型,目標:20 日報酬進前 5%)
L3  L2 + 大盤狀態三欄(廣度、位置、波動)= 現在每天在跑的分類器
L4  L3 + 特徵實驗室的 21 個新特徵(週轉、樂透、產業相對動能、殘差波動、券資比、財報季變化……)
L5  L4 + Day 20 的階梯擇時,乘在權益上
L6  L4 + Day 26 的文字特徵三欄
對照  0050 買進持有

分類器每年重訓、清 28 天,2016 到 2026 逐年預測。設計期是 2016 到 2021 年 5 月,確認期是 2021 年 6 月之後。


結果

分層

                          前 5% 命中率   年化     Sharpe   回檔    10.4 年幾倍   設計期 年化/Sharpe   確認期 年化/Sharpe
L1 六因子等權             1.6%         +8.7%    1.30    −11%     2.4          9.3% /1.44         7.8% /1.15
L2 48 特徵分類器         14.1%        +22.7%    1.42    −21%     8.5         24.9% /1.63        20.0% /1.19
L3 +大盤狀態(現行)     14.2%        +24.8%    1.51    −19%    10.1         28.0% /1.84        20.8% /1.18
L4 +21 個新特徵          14.7%        +27.3%    1.67    −20%    12.4         29.1% /1.87        24.9% /1.45
L5 L4 +擇時(階梯)        —          +16.5%    1.26    −20%     4.9         13.7% /1.18        20.2% /1.36
L6 L4 +文字特徵          14.5%        +26.5%    1.64    −20%    11.6         34.0% /2.14        17.5% /1.08
對照 0050                  —          +24.6%    1.20    −34%     9.9         20.1% /1.20        30.7% /1.24

權益曲線

曲線看得到表格看不到的事:L5 那條紫線在 2020 年 3 月之後就沒跟上,因為階梯在那時候曝險最低;L6 那條橘線在 2021 年之前一路領先,之後就被 L4 追過去,這就是「設計期好看、確認期還原」的樣子。


每一層各值多少

歸因

**選股那一層值最多。**六因子等權到分類器,年化從 8.7% 到 22.7%,命中率從 1.6% 到 14.1%。

六因子的命中率低於隨機的 5%,這件事本身要解釋清楚:它不是壞分數,它是 Day 3 為了示範「選股跟擇時要分開」而設計的低波動價值型分數,選出來的是穩、便宜、動能低的股票,跟這條規則要抓的飆股正好相反。用它配這條規則,等於拿長抱的名單做兩週換手的進出。它的勝率 60.1% 是所有層裡最高的,每筆卻只賺 1.6%,剛好是「高勝率低期望值」的教科書案例。

**大盤狀態加 2 個百分點。**Day 15 量到 IC +0.009,翻成年化是 22.7% 到 24.8%。但兩段不平均:設計期 +3.1 個百分點,確認期只有 +0.8。

**新特徵再加 2.5 個百分點,而且確認期加得比設計期多。**24.8% 到 27.3%,確認期 20.8% 到 24.9%、Sharpe 1.18 到 1.45。這是這批特徵最好的證據:它們在設計期沒有被挑過,特徵實驗室用的是 Day 15 的尺、全期一起量,結果在沒看過的那一段反而更有用。

**擇時把年化砍到 16.5%。**設計期 29.1% 變 13.7%,Sharpe 1.87 變 1.18。跟結構回測一樣:這條規則的錢是在反彈那幾個月賺的,階梯剛好在那幾個月曝險最低。0050 那一袋用階梯是對的,飆股這一袋不是。

**文字特徵是零,而且不穩。**L6 全期 26.5% 對 L4 的 27.3%,但設計期 34.0%、確認期 17.5%,兩段差 16.5 個百分點,是所有層裡最不穩的。Day 26 量到的增量是 0.0004,這裡看到的是那個零加上雜訊。


交易長什麼樣

每一層的排名表不同,但規則一樣,所以交易的形狀可以直接比:

        筆數    勝率    每筆平均   每筆中位   平均持有
L1     2,825   60.1%   +1.59%    +0.96%    16.3 天
L2     3,571   47.9%   +2.58%    −0.40%     9.8 天
L3     3,570   47.4%   +2.72%    −0.58%     9.7 天
L4     3,558   48.2%   +2.94%    −0.33%     9.9 天
L6     3,592   47.7%   +2.82%    −0.40%     9.8 天

三件事。第一,分類器那幾層的中位數是負的,一半以上的單子小賠出場,錢全部來自右尾。第二,勝率從 60% 掉到 48% 卻賺更多,因為每筆平均從 1.6% 升到 2.9%。第三,持有天數從 16 天掉到 10 天,因為飆股掉出前 20 名比價值股快,換手變高,成本也跟著高。

L4 這一層十年付了手續費 1,182 萬、證交稅 1,259 萬,合計 2,441 萬,是初始本金的 2.4 倍,而資產變 12.4 倍。毛利的 15% 付給券商和國庫。


逐年

逐年

        L1      L2      L3      L4     0050
2016   +10.5   +20.6   +24.7   +26.8   +22.1
2017   +11.4   +15.1   +30.4   +25.2   +18.1
2018    −1.0    −4.6    −2.0    +1.3    −4.9
2019   +13.9   +19.0   +16.0   +27.7   +33.5
2020   +10.0   +52.7   +49.7   +48.3   +31.1
2021   +10.4   +53.0   +54.0   +46.9   +21.9
2022    +1.5    −4.1    +1.2    −5.4   −21.4
2023   +20.8   +46.6   +21.2   +36.8   +27.5
2024    +9.8   +18.4   +26.4   +27.2   +48.6
2025    −0.3    +2.6    +0.5    +8.7   +36.9
2026    +5.1   +34.6   +52.3   +54.5   +66.3

L4 有七年贏 0050,輸的三年都有同一個原因:2019、2024、2025 是台積電把指數扛起來的年份,權值股漲、中小型股沒動。2022 是唯一的空頭年,L4 −5.4% 對 0050 −21.4%,這時候分散和快速換手保護了部位。

2025 年是最值得記住的一年:L4 只有 +8.7%,而 0050 有 +36.9%。如果只看那一年,這套系統看起來完全失效。回測要跨越這種年份才有意義。

命中率與回檔

命中率和年化幾乎是直線關係,每提高一個百分點的命中率大約換到 1.5 個百分點的年化。回檔那張圖是另一個角度:L4 最深 −20%,0050 −34%,差距最大的時候是 2020 年 3 月和 2022 年全年。


差一點就被收進來的 ADX

本週測過把 ADX14、DI 差值、ADX 乘方向三欄加進 L4。

ADX

              設計期     確認期
L4           +29.1%    +24.9%
L4 + ADX     +37.0%    +24.4%

設計期多了 7.9 個百分點,Sharpe 1.87 到 2.16,看起來是這一整週最好的發現。但確認期是 −0.5 個百分點。再往下拆,我也試過「大盤趨勢明確時才用 ADX」這種條件式切換,設計期更好看,確認期一樣沒有。

所以它沒有進 L4。這個決定寫下來比結果本身重要:一個特徵只在設計期有用,就是沒用。ADX 的程式留在特徵模組裡,預設關閉。


重訓一次,數字會動多少

變異

同一個 L3,把隨機種子換三次再跑:24.8%、26.5%、26.1%、24.7%。年化在 ±1 個百分點之間,前 20 名的名單每次只有 68% 到 69% 重疊。名單換了三成,成績只動 1 個百分點,因為規則每週看排名、抱不到兩週,名單的差異被換手洗掉了。

比種子大的是資料。用 9 月 9 日建的快取(那時候還沒補 23 個週六的補交易日、還沒修世紀鋼的分割)跑同一條規則是 31.0%;資料修好之後重訓,變成 24.8% 到 26.5%。這 5 到 6 個百分點是「回測的數字有多少是資料細節給的」,比模型的隨機性大五倍。

這件事的實務結論很簡單:任何一份回測數字都要註明是哪一版資料算的,不然兩份報告根本不能比。


跨過 Day 3 的門檻了嗎

Day 3 算過,每月換股的來回成本 0.471%,一年吃掉隨機選股 5.9 個百分點。這條規則一年買三百多次,成本壓力更大。

實務版量出來:L4 每筆平均賺 2.94%,來回成本 0.585%,是門檻的五倍;十年費用合計 2,441 萬,占毛利約 15%。門檻是跨過的,代價是 Day 27 量到的每年 3 到 5 個百分點。

要注意的是這個比例會隨規模變。一億本金的時候,量的限制會讓年化掉到 22.4%,那時候不是成本的問題,是買不進去。這條線的適用區間在一百萬零股到一千萬整張之間。


小結

**一層一層:8.7 → 22.7 → 24.8 → 27.3。**選股層值 14 個百分點,大盤狀態 2,新特徵 2.5;擇時 −11,文字 −0.8。0050 同期 24.6%,回檔 −34% 對 L4 的 −20%。

**高勝率不等於高報酬。**L1 勝率 60.1%、每筆 1.6%、年化 8.7%;L4 勝率 48.2%、每筆 2.9%、年化 27.3%。中位數是負的,錢在右尾。

**新特徵在確認期比設計期更有用。**20.8% 到 24.9%、Sharpe 1.18 到 1.45,因為它們沒在設計期被挑過。

**擇時不該套在這一袋上。**設計期年化砍一半,階梯留給 0050。

**只在設計期有用的特徵就是沒用。**ADX 設計期 +7.9 個百分點,確認期 −0.5,所以沒收。

**重訓差 ±1,資料差 ±5。**種子換三次年化 24.7% 到 26.5%,名單重疊七成;修資料前的快取是 31.0%。數字要註明資料版本。


上一篇
Day 28 - 回測引擎驗證:怎麼確認它沒有在騙我
系列文
台股日頻量化交易:開發一條從資料、特徵、模型到每日下單清單的產線29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言