iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0

同一個訊號、同樣持有分數最高的 20 檔、同一段 2013 年到今天。換手免費的話,每天照最新排名換股,年化 23.8%。把每檔來回 0.471% 的成本算進去,年化 7.7%,輸給什麼都不挑的流動股等權 12.8%。

差在中間那 16 個百分點:每天換股的組合一年換手 5,927%,成本一年吃掉 14 個百分點。訊號給的東西,一大半付給了券商和國庫。

這篇講的是選股層最後一道工:怎麼決定一檔股票什麼時候出場,才不會被自己的換手吃掉。


設定

訊號用 Day 13 的六因子分數,每天都有值,不用等模型。母體是 20 日均成交金額破千萬的流動股。組合固定 20 檔等權,用 t−1 日收盤的排名決定 t 日的持股(訊號延遲一天)。每換一檔算一次交易:賣掉 1/20 的部位再買 1/20,來回 0.471%。閒置現金報酬 0。

十二種規則:

定期換       每天照前 20 換;每 20 日換一次;每 60 日換一次
緩衝         每天看,掉出前 M 名才賣,賣掉的空位用當天前 20 裡沒持有的補;M = 40、60、100、200
出場加料     緩衝 20/60 加停損 10%、停損 15%、持有上限 60 日、120 日;每 20 日換加停損 10%

邊界上的股票每天在換

先看訊號本身。個股排名的日自相關 0.976,隔 20 日 0.644——分數很黏,一檔股票今天排第 5,明天大概還在第 5 附近。問題不在頂端,在邊界:

排名前 10 的股票,隔天還在前 20 的機率         97%
排名 15~25 的股票,隔天在前 20 的機率          50%
前 20 名每天平均換人                             2.4 檔

第 18 名和第 22 名的分數差 0.008,跟一檔股票的分數一天的正常變動(中位 0.007)一樣大,隔天誰在線上誰在線下是擲銅板。對照一下:第 20 名和第 100 名差 0.084,是十一天份的變動。每天照前 20 換股,就是每天替這些擲銅板的股票付來回成本——2.4 檔乘以 250 天,一年 600 次交易,每次是 1/20 部位的 0.471%,加起來就是那 14 個百分點。


三種做法

毛與淨

                      毛年化    淨年化   Sharpe   最大回檔   年換手    成本/年   持有中位   交易筆數
每天換(前 20)        23.8%     7.7%     0.66     −24%     5,927%    14.0 點     3 日     7,902
每 20 日換             20.5%    16.2%     1.28     −23%     1,556%     3.7 點    20 日     2,074
每 60 日換             19.9%    17.6%     1.38     −23%       827%     1.9 點    60 日     1,102
緩衝 20/40             22.8%    18.1%     1.42     −23%     1,646%     3.9 點    17 日     2,194
緩衝 20/60             21.5%    18.4%     1.45     −25%     1,121%     2.6 點    23 日     1,495
緩衝 20/100            20.5%    18.5%     1.47     −24%       722%     1.7 點    35 日       962
緩衝 20/200            18.5%    17.5%     1.41     −24%       360%     0.8 點    58 日       480
流動股等權(無成本)   12.8%    12.8%     0.73     −35%

**定期換股是最直覺的解法,代價是訊號變舊。**每 20 日換一次,換手降到 1,556%,淨年化 16.2%;每 60 日換,換手 827%、淨年化 17.6%,但毛年化從 23.8% 掉到 19.9%——兩個月不看排名,持股裡有一些早就該走了。

**緩衝是更好的解法:每天看,但只在真的掉出去的時候動。**進場門檻前 20、出場門檻前 60,換手 1,121%,毛年化 21.5% 只比每天換少 2 個百分點,淨年化 18.4%。出場門檻放到前 100,換手 722%、淨年化 18.5%、Sharpe 1.47,是全部裡最好的。

同樣換手 800% 上下,每 60 日換淨年化 17.6%,緩衝 20/100 是 18.5%。差別在緩衝對「真的變差」的股票每天都會反應,只對邊界的雜訊不反應;定期換兩者都要等。


緩衝該多寬

掃描

出場門檻從 20(沒有緩衝)拉到 400:

M         20      30      40      60      80     100     150     200     300     400
淨年化   7.7%   16.4%   18.1%   18.4%   18.6%   18.5%   17.5%   17.5%   16.8%   17.2%
換手   5,927%  2,351%  1,646%  1,121%    878%    722%    491%    360%    240%    158%

從 20 到 40 是陡坡:淨年化從 7.7% 到 18.1%,換手降七成。40 到 100 是平台,18.1% 到 18.6%。100 之後開始往下:毛年化一路掉(持股越來越舊),換手省下來的成本補不回來,400 的時候 17.2%。

所以緩衝的寬度不是越寬越好,是「寬到成本不再是主角」就夠。以這個訊號、20 檔、0.471% 的成本,出場門檻放在進場門檻的 3 到 5 倍。換一個訊號、換一個成本,這個數字會變,但形狀不會:先陡升,平台,再慢慢下滑。


停損和持有上限

出場加料

在緩衝 20/60 上加東西:

                              淨年化   Sharpe   最大回檔   年換手
緩衝 20/60                    18.4%     1.45     −25%     1,121%
+停損 10%                    18.3%     1.44     −24%     1,246%
+停損 15%                    18.5%     1.46     −25%     1,163%
+持有上限 60 日              17.3%     1.37     −24%     1,558%
+持有上限 120 日             17.8%     1.41     −24%     1,268%
每 20 日換 +停損 10%         16.3%     1.29     −23%     1,673%

停損沒有幫助:報酬持平,最大回檔一樣是 −24% 到 −25%,換手多 4% 到 11%。這個籃子是防守型的,個股跌下去平均會回來一部分——排名前 60 的股票裡,20 日內跌超過 10% 的,之後 20 日平均 +3.7%,沒跌的 +1.4%。停損砍在低點,砍掉的正是之後反彈最多的那批,還多付一次成本。持有上限更糟:60 日上限把淨年化打到 17.3%,因為它強迫賣掉排名還在前面的股票——分數黏,好的股票會好很久,硬規定「最多抱兩個月」是在對抗訊號。緩衝 20/60 的持有期中位數 23 天,但有 11% 的部位抱超過 100 天,那些就是它賺最多的。

這跟前幾篇對飆股名單的結論一致。出場該由訊號決定(排名掉出去),不該由價格或日曆決定。


成本敏感度

成本

每檔來回成本從 0 拉到 0.7%(小型股加滑價大概就是這個數):

                    0        0.3%     0.471%    0.7%
每天換            23.8%    13.3%      7.7%      0.6%
每 20 日換        20.5%    17.7%     16.2%     14.1%
緩衝 20/60        21.5%    19.5%     18.4%     16.9%
緩衝 20/100       20.5%    19.2%     18.5%     17.5%
每 60 日換        19.9%    18.4%     17.6%     16.5%

換手越高的線越陡。每天換的組合成本從 0.3% 到 0.7%,淨年化少 13 個百分點;緩衝 20/100 少 1.7 個百分點。這是為什麼緩衝要在設計時就放進去:實際成本永遠比回測估的高,換手低的規則對估錯成本不敏感,換手高的規則估錯 0.2 個百分點就差一大截。


規矩

從這篇出來的規則,接在 Day 20 的曝險規則後面:

1. 進場門檻前 N,出場門檻前 3N~5N;每天檢查,只在掉出時賣,空位用當天前 N 補
2. 不設停損、不設持有上限;出場由排名決定
3. 曝險變動(擇時層)另外算成本,不跟換股混在一起
4. 回測時成本用 0.471%,另附 0.7% 的版本;兩個版本都要贏基準才算數

Day 15 那把尺說「換手用分批,每天換 1/20、每批持有 20 天」,那是每 20 日換的版本,淨年化 16.2%。這篇把它換成緩衝 20/100,同一個訊號多 2.3 個百分點,全部來自少付的成本。


小結

**每天照排名換股,訊號會被自己的成本吃掉一大半。**毛年化 23.8%、淨年化 7.7%,一年換手 5,927%,因為前 20 名的邊界每天換 2.4 檔,排名 15~25 的股票隔天在不在線上是擲銅板。

**緩衝比定期換好。**進場前 20、出場前 100:換手 722%、淨年化 18.5%、Sharpe 1.47。同樣的換手,每 60 日換只有 17.6%,因為緩衝對真的變差的股票每天反應,只對邊界雜訊不反應。

**緩衝寬到成本不再是主角就夠。**出場門檻 20 到 40 是陡坡,40 到 100 是平台,之後持股變舊、慢慢下滑。

**停損和持有上限都是負的。**回檔不變、報酬持平或更低、換手更高。出場由排名決定,不由價格或日曆決定。

**換手低的規則對成本估錯不敏感。**成本從 0.3% 變 0.7%,緩衝 20/100 少 1.7 個百分點,每天換少 13 個百分點。


上一篇
Day 20 - 開關變斜坡,買到的不是報酬,是不用猜線在哪裡
下一篇
Day 22 - 擇時最大的陷阱:你只有六個樣本點
系列文
台股日頻量化交易:開發一條從資料、特徵、模型到每日下單清單的產線29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言