同一個訊號、同樣持有分數最高的 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 個百分點。