跳至主要內容
台股研究 約 16 分鐘閱讀

法說會前買股有用嗎?股東會、作帳、五窮六絕等 9 個台股說法回測都輸 0050

法說會前買股有用嗎?台股法說會多半只提前 3 天公布,用去年日期預測、提前 10 天買進,年化 -9.9%。股東會前、季底作帳、元月效應、月底月初、結算週、五窮六絕、封關行情等 9 個說法 81 組參數,只有 3 組贏 0050 含息,疊在月營收動能上也沒有新策略,附可重跑程式。

免安裝,用 AI 重跑這篇的策略

在瀏覽器開啟 FinLab Studio,AI 依本文的條件重跑回測,接著可以改條件再測。

在 Studio 重跑
9 個說法回測

法說會、股東會、作帳與季節性 18 個設計的日夏普與同期 0050 含息:9 個單獨版日夏普 -0.37 到 0.90,全部低於同期 0050 的 0.75 到 1.08;疊在月營收動能上的 4 個組合版 1.13 到 1.48,底本身是 1.42;5 個擇時組合版 0.44 到 1.07,都沒有高於 0050

依本文重跑

執行這個策略

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

幫我設定 FinLab,重跑法說會前買進、股東會前買進、季底作帳、月底月初、五窮六絕等 9 個台股季節性策略,和 0050 含息比較,請讀:https://finlab.finance/setup?relatedUrl=/blog/investor-conference-agm-seasonality-backtest

免安裝,開啟 FinLab Studio

法說會前買股,前提是你要先知道哪天開。台股法說會多半只在召開前 3 天公布,2024 年 2 月以來的 10,859 場裡,提前 10 個交易日以上公布的只有 5.7%。用「去年同一天」預測召開日、提前 10 個交易日買進,2007 年底到 2026 年 10 月年化 -9.9%、日夏普 -0.37,同期 0050 含息年化 14.5%、日夏普 0.77。我們用 finlab 把法說會、股東會、季底作帳與 6 個台股季節性說法做成策略,每個換 9 組參數、切前後兩段、扣手續費與證交稅:81 組參數只有 3 組贏 0050。

同一批法說會,如果事後用實際召開日回頭看,從召開前第 10 個交易日到召開當天,平均比 0050 多漲 0.75%;改用事前就能知道的預測日,同一段只剩 -0.05%。用召開日回推 10 天的回測,就用到了事後才知道的日期。

季節性說法的問題不一樣。月底月初的 0050 平均比較強(日報酬換算年化 27.1%,其他日子 13.1%,但差異的 t 值只有 1.1),一個月進出一次,手續費和證交稅就把它吃光。五窮六絕在台股不成立:2007 年以來 0050 的 5、6 月有 11 年上漲,平均日報酬還略高於其他月份。元月效應和封關行情的小型股,在 2020 年以前平均有超額報酬,2021 年起多數年份落後(元月 6 年裡 5 年、封關 6 年裡 4 年)。

我們也把法說會、股東會與投信作帳條件疊在已驗證的 月營收動能策略 上,4 個組合版都沒有在 9 組參數裡有 7 組以上比原策略好,所以不另開策略。

關鍵數字

訊號(原參數) 年化報酬 日夏普 最大回撤 前/後半段日夏普 9 組參數贏 0050 同期 0050 年化/日夏普
1 預測法說日前 10 個交易日買進,法說日收盤賣出 -9.9% -0.37 -94.1% -0.67/-0.05 0 組 14.5%/0.77
2 法說兩日反應比 0050 多 2% 以上,之後持有 60 天 7.9% 0.46 -65.1% 0.13/0.80 0 組 14.2%/0.75
3 股東常會前 10 個交易日買進,開會當天賣出 -3.9% -0.19 -71.1% -0.49/0.11 0 組 14.2%/0.75
4 季底前 10 個交易日買近 60 日投信買超比率前 20 檔,季底賣出 -0.3% 0.03 -31.6% 0.00/0.05 0 組 20.0%/1.08
5 12 月最後一個交易日買市值最小 50 檔,新年第 10 個交易日賣出 0.5% 0.25 -7.9% 0.46/0.02 0 組 20.0%/1.08
6 只在月底最後 1 天與月初前 3 天持有 0050 -2.3% -0.20 -59.2% -0.18/-0.21 0 組 14.3%/0.76
7 每月結算日前 2 個交易日到結算日空手,其餘持有 0050 5.6% 0.38 -50.2% 0.06/0.73 0 組 14.3%/0.76
8 五窮六絕:5、6 月空手,其餘持有 0050 10.6% 0.63 -48.9% 0.39/0.90 0 組 14.3%/0.76
9 封關前 5 個交易日買市值最小 50 檔,開紅盤後第 3 個交易日賣出 2.2% 0.90 -4.1% 1.03/0.79 3 組 20.1%/1.08

每個策略從第一次持股起算到 2026-10-30,0050 含息從同一天起算。1、2、3、6、7、8 從 2007 年起,4 從 2013-06 起(投信資料 2012-05 起、市值資料 2013-04 起),5 從 2013 年底、9 從 2014 年 1 月起(市值資料 2013-04 起)。前後兩段在 2017 年初到 2021 年初之間切開,0050 前後兩段 0.36~0.40/1.15~1.17(2007 年起的策略),或 0.66~0.88/1.16~1.39(2013 年起的策略)。第 9 個前段 1.03 贏 0050 的 0.73,後段 0.79 輸 1.16。

研究問題:9 個說法,各用哪份資料驗證

說法 finlab 資料 文獻
法說會前買進,可以吃到「即將公布好消息」的漲幅 investors_conference(召開日,2007 年起) Frazzini & Lamont(2007)、Barber et al.(2013)
法說會後反應好的股票會繼續漲 同上,加上 etl:adj_close 算召開前後兩日的反應 Bernard & Thomas(1989)
股東會前公司會拉抬股價 shareholders_meeting(常會的開會日與公告日期) —
季底投信作帳,認養股季底前會被拉上去 institutional_investors_trading_summary:投信買賣超股數、etl:market_value Lakonishok et al.(1991)
小型股元月效應 etl:market_value(2013-04 起) Rozeff & Kinney(1976)
月底月初效應 etl:adj_close 的 0050 Lakonishok & Smidt(1988)
台指期結算週偏弱,避開比較好 台指期每月第三個週三,遇休市順延 —
五窮六絕,5、6 月減碼 0050 —
封關前買小型股、開紅盤後賣 交易日曆的春節休市、etl:market_value —

台股六月半年報作帳、紅包行情的 0050 版本、美股的聖誕行情與「Sell in May」,已經分別在 六月作帳行情回測、紅包行情完全攻略、美股 5 個日曆效應回測 驗證過,本文沒有重做。第 4 個訊號看 4 個季底、用投信近 60 日買超佔流通股數的比率排名,第 9 個買的是小型股、用實際的封關與開紅盤日期,跟這兩篇的版本不同。

回測方法

項目 本文的做法
股票池 上市櫃 4 碼普通股,排除 0 開頭的 ETF 與 91 開頭的存託憑證,含後來下市的股票;沒有排除金融股、KY 股與全額交割股
流動性 1~4 在訊號日要求 20 日均成交金額 2,000 萬以上;5、9 跟 小型股效應 那篇一樣不設門檻,市值最小的股票實際很難照收盤價買到
權重 同時持有的事件等權,沒有事件的日子空手;1 平均同時持有 57.5 檔、2 約 85.6 檔、3 約 99.6 檔(集中在 5、6 月)、4 與 5 是 20 檔與 50 檔;沒有單檔上限
換股 事件觸發,每天更新持股;6~8 只在窗口切換時進出
交易成本 sim() 預設:手續費 0.1425%(買賣各一次,未打折)、證交稅 0.3%(賣出)。一次買進再賣出約 0.585%。0050、00631L 的實際證交稅是 0.1%,另列對照,不當判定
滑價 未另外假設,以收盤價成交
前視偏差 訊號日收盤後才知道,sim() 在隔一個交易日收盤成交。法說會的召開日不能事先知道(見第一節),所以「法說會前」用去年召開日 + 364 天的預測日;法說會後的訊號在召開隔天收盤後才算得出來。股東常會用公告日期(2015 年起,各年中位數比開會日早 60~77 天),2015 年以前用開會日前 30 天(公司法第 172 條:公開發行公司的股東常會要在 30 天前通知股東)
周轉 1 每年約 1,310 筆交易、3 約 666 筆、2 約 305 筆;6、7 每年進出 12 次
樣本 全段都是樣本內,沒有樣本外測試;「前後兩段」是同一段期間對半切
容量 未估算。實際衝擊取決於資金規模與成交量
基準 0050 含息(etl:adj_close 還原價)買進持有,不扣成本,和策略同一段日期
統計口徑 日夏普=日報酬平均 ÷ 標準差 × √252,不扣無風險利率

三項驗證的「贏」都指日夏普高於同期 0050 含息:

  1. 參數高原: 每個策略 2 個主要參數,各取 3 個值(原值與兩個鄰近值),共 9 組,至少 7 組要贏。
  2. 前後兩段: 原參數在前半段、後半段各自都要贏。
  3. 交易成本: 用 sim() 預設的手續費與證交稅,不設成 0。

三項都過的,再拿掉相對 0050 表現最好的那一年,看還贏不贏。每個訊號的定義、鄰近參數與組合版的底,都在跑任何結果之前寫定,之後沒有改條件。

三項驗證的結果:81 組參數只有 3 組贏

法說會、股東會、作帳與季節性 9 個單獨策略各 9 組參數的日夏普:預測法說日前買進 -1.53 到 0.05、法說反應後持有 0.28 到 0.58、股東會前買進 -0.93 到 -0.10、季底作帳 -0.22 到 0.08、元月小型股 -0.06 到 0.85、月底月初 -0.69 到 -0.02、避開結算週 0.31 到 0.41、五窮六絕 0.50 到 0.67、封關小型股 0.29 到 1.22,只有封關小型股 3 組高於同期 0050

81 組裡贏 0050 的 3 組都在「封關前買小型股」:封關前 5 或 10 天買進、開紅盤後第 5 個交易日賣出,以及封關前 3 天買、第 5 天賣,日夏普 1.16 到 1.22,同期 0050 約 1.08。它前半段(2014 到 2020 年)贏、後半段輸,原參數也輸,第五節會看到原因。

把手續費和證交稅都設成 0,9 個原參數的日夏普是 0.25 到 1.12,只有封關小型股的 1.12 高過同期 0050;成本是一部分原因,但不是全部。

一、法說會前買進:要先知道日期才有用

台灣上市櫃公司召開法人說明會,要在公開資訊觀測站公告時間、地點與內容。FinLab 的法說會資料從 2007 年開始,但 2024 年以前的紀錄只有召開日,沒有公布時間;2024 年 2 月起,我們每天抓資料時記下每場法說會第一次出現的時間,可以算出公司提前多久公布。

法說會從公布到召開隔幾個交易日:2024 年 2 月起 10,859 場法說會,提前 1 個交易日公布的最多,有 4,637 場;提前 10 個交易日以上的只佔 5.7%

10,859 場法說會(排除我們整批補抓資料的日子)的公布到召開,中位數只有 3 個日曆天;提前 5 個交易日以上的 23.3%,提前 10 個交易日以上的 5.7%。「法說會前 10 天買進」這種寫法,在 94% 的法說會上,買進那天根本還不知道會開。

用實際召開日回頭算,法說會前確實會漲:

法說會前後 20 個交易日的累積超額報酬:用實際召開日,召開前第 10 個交易日到召開當天累積多漲 0.75%,最後 5 天漲最多;用去年召開日加 364 天的預測日,同一段幾乎沒有超額報酬

用實際召開日,從召開前第 10 個交易日到召開當天,平均比 0050 多漲 0.75%,大部分集中在最後 5 天,召開當天就多 0.25%。這段剛好是公司公布法說會之後的那幾天,多出來的報酬要等公布才拿得到。改用事前就能知道的日期:Frazzini & Lamont(2007) 與 Barber et al.(2013) 研究盈餘公告溢酬(公告前後的超額報酬)時,用一年前的公告時間預測今年的公告。我們照這個做法,以同公司去年召開日加 364 天(同一個星期幾)當預測日;預測日前後 7 天內真的有開法說會的佔 46.3%。用預測日,同一段的累積超額報酬是 -0.05%。

做成策略也一樣。預測日前 10 個交易日買進、預測日收盤賣出,平均同時持有 57.5 檔,每年約 1,310 筆交易,不扣成本年化 12.7%、日夏普 0.67,扣掉 sim() 預設成本後年化 -9.9%、最大回撤 -94.1%。9 組參數(進場 5/10/20 天前 × 出場預測日前一天/當天/隔天)的日夏普是 -1.53 到 0.05。

本站另一篇 法說會營收動能策略回測 是用實際召開日加上營收成長條件,我們在那篇補了同樣的驗證:照原程式、sim() 預設成本,日夏普 0.90 輸 0050 的 1.06;把召開日換成預測日,日夏普 -0.31。

二、法說會後漂移:反應好的股票也沒贏 0050

Bernard & Thomas(1989) 發現盈餘公告後,股價會沿著公告時的方向繼續漂移幾十天。台股法說會沒有「盈餘驚喜」的標準化數字,我們用市場反應代替:召開日前一天收盤到隔天收盤的報酬減 0050,同時涵蓋上午與盤後召開的法說會。

依法說兩日反應把法說會分五組,之後 60 個交易日對 0050 的超額報酬平均:反應最差一組 -2.7%、第二組 -2.2%、中間 -1.8%、第四組 -1.3%、反應最好一組 -0.2%

方向對:反應越好,之後 60 個交易日越不落後,最好一組(平均反應 +6.2%)之後 -0.2%,最差一組(-4.8%)之後 -2.7%。但五組都輸 0050。這段期間 0050 漲得多,一般個股等權平均本來就落後,法說反應只能讓你少輸一點。

做成策略:反應比 0050 多 2% 以上的,召開後第 2 個交易日收盤買進、持有 60 天。平均同時持有 85.6 檔,年化 7.9%、日夏普 0.46,9 組參數(門檻 0/2%/4% × 持有 40/60/80 天)0.28 到 0.58,同期 0050 0.75。

三、股東會前買進:平均還略輸 0050

台股的股東常會集中在 5、6 月(2007 年以來 99% 在 5、6 月,81% 在 6 月)。「股東會前買進」做出來,一年大部分時間空手,只有 5、6 月同時持有上百檔,在場時間 27.2%。

股東常會前 10 個交易日(不早於公告後一天)買進、開會當天賣出,12,766 次的超額報酬平均 -0.12%、中位數 -0.86%,沒有拉抬的跡象。做成策略年化 -3.9%、日夏普 -0.19,不扣成本也只有 0.30。9 組參數(進場 5/10/20 天前 × 出場開會前 3 天/當天/後 3 天)全部是負的日夏普。股東會跟董監改選的關係,可以參考 董監改選行情。

四、季底作帳:投信認養股季底前沒有被拉上去

Lakonishok et al.(1991) 發現退休基金經理人會在季底前調整持股、賣掉虧損股,讓報表上的持股好看;Carhart et al.(2002) 進一步發現基金會在季底最後一天拉抬自己持有的股票。台股常說的「投信季底作帳」是相關的說法:投信買超最多的股票,季底前會被拉上去。

我們在每個季底前 10 個交易日,挑近 60 日投信買超佔流通股數比率最高的 20 檔(20 日均成交金額 2,000 萬以上),季底最後一個交易日賣出。2013 年 6 月到 2026 年 9 月的 53 個季底(2025 年 6 月中 0050 分割停止交易,那一季無法對比),這 20 檔在季底前 10 天平均只比 0050 多 0.15%,只有 43.4% 的季底贏 0050;季底後 10 天平均落後 0.94%。做成策略年化 -0.3%、日夏普 0.03,9 組參數(季底前 5/10/20 天 × 前 10/20/30 檔)-0.22 到 0.08。

六月半年報的版本,六月作帳行情 那篇用 8 日投信買超與 60 日均量排名,結果也是投信認養股和整體股票池沒有差別;投信籌碼的其他用法可以看 投信買超策略實測。

五、元月效應與封關行情:小型股 2021 年起反轉

Rozeff & Kinney(1976) 發現美股等權指數的報酬集中在 1 月,Keim(1983) 指出小型股的超額報酬有近一半出現在 1 月,又集中在 1 月的頭幾個交易日。台股常說的「封關前買小型股、開紅盤後賣」也是類似的說法。

市值最小 50 檔在元月(12 月最後一個交易日到新年第 10 個交易日)與封關窗口(封關前 5 個交易日到開紅盤後第 3 個交易日)對 0050 的超額報酬:2014 到 2020 年多數年份為正,2021 年起多數年份為負,2026 年封關窗口 -11.7%

市值最小 50 檔(等權、不含成本)在兩個窗口的超額報酬:

窗口 2014–2020 年平均 2021–2026 年平均 13 年裡為正
元月:12 月最後一個交易日到新年第 10 個交易日 +1.95% -3.71% 7 年
封關前 5 個交易日到開紅盤後第 3 個交易日 +3.98% -2.36% 8 年

2020 年以前兩個說法都看得到,2021 年起反過來。做成策略,元月版一年只在場約 10 天(在場時間 4.2%),年化 0.5%、日夏普 0.25;封關版年化 2.2%、日夏普 0.90,同期 0050 年化 20.1%、日夏普 1.08。這兩個策略的回撤只有 -4% 到 -8%,因為一年 95% 以上的時間都是現金,用全年的夏普跟全年持有的 0050 比,結構上就吃虧,所以我們另外做了窗口外持有 0050 的組合版(見組合版一節),也沒有贏。市值最小的股票成交量很小,回測的收盤價成交在實單很難做到,見 小型股效應。

六、月底月初、結算週、五窮六絕:日曆效應被成本吃掉

這三個都是只看日曆、不選股的擇時,用 0050 做。先看每天的 0050 報酬:

0050 含息每日報酬換算成年化:月底最後 1 天加月初前 3 天 27.1%、其他日子 13.1%;結算週一到週三 7.5%、其他日子 17.3%;5、6 月 17.1%、其他月份 15.6%

  • 月底月初(Lakonishok & Smidt 1988): 月底最後 1 天加月初前 3 天,0050 的日報酬平均換算年化 27.1%,其他日子 13.1%,平均比較高,但差異的 t 值只有 1.1,統計上不顯著。
  • 結算週: 每月第三個週三結算,週一到週三的 0050 年化 7.5%,其他日子 17.3%,平均比較弱(t 值 -0.76,不顯著)。
  • 五窮六絕: 5、6 月年化 17.1%,其他月份 15.6%,5、6 月反而略強(t 值 0.12)。

0050 含息每年 5、6 月的報酬:2007 到 2026 年 20 年裡 11 年上漲,2008 年 -14%、2010 年與 2022 年約 -10%,2023 到 2026 年分別 +10%、+18%、+14%、+19%

五窮六絕在 2008 年(-14%)與 2010 到 2013 年連續 4 年都應驗,所以說法流傳很廣;2023 年起 4 年都是大漲。5、6 月空手、其餘持有 0050,年化 10.6%、日夏普 0.63,輸 0050 的 14.3%、0.76;9 組參數(空手起點 5 月第一個交易日前 10 天/當天/後 10 天 × 終點 6 月最後一個交易日前 10 天/當天/後 10 天)0.50 到 0.67。

月底月初與結算週的差異就算是真的,每個月也要進出一次:

日曆擇時的日夏普:月底月初持有 0050 不扣成本 0.54、ETF 證交稅 0.1% 是 0.06、sim 預設 -0.20;避開結算週 0.75、0.51、0.38;五窮六絕 0.66、0.64、0.63;0050 與 00631L 切換的三個版本不扣成本 1.02、0.98、0.95,sim 預設 0.44、0.58、0.91,同期 0050 0.76 與 1.07

  • 月底月初只持有 0050: 一年在場 19.5% 的時間,不扣成本日夏普 0.54,扣掉 0.3% 證交稅與手續費變成 -0.20;就算用 ETF 實際的 0.1% 證交稅也只有 0.06。
  • 避開結算週: 不扣成本 0.75,幾乎等於 0050 的 0.76;扣成本後 0.38。
  • 改用 0050 與 00631L 切換: 月底月初持有 0050 正2(00631L)、其他日子持有 0050,不扣成本日夏普 1.02,同期 0050 1.07、00631L 買進持有 1.01,月底月初多出來的報酬只夠補回槓桿的成本;每年切換 24 次,扣成本後 0.44。

組合版:9 個條件疊在已驗證的策略上

單獨做都輸,換兩種用法。選股訊號(1~4)當加分條件,疊在 月營收動能 10 檔 上:符合條件的候選股排在前面,同組內照 5 日動能排序(站上 20/60/120 日均線、近 3 月營收高於近 12 月,每月 11 日換股、10% 停損),回測從 2015 年起,第二個參數一律是持股數 8/10/12 檔。擇時訊號(5~9)改成和 0050 搭配:5、9 窗口外持有 0050、窗口內換成市值最小的那一籃小型股;6 在月底月初換成 00631L;7、8 平常持有 00631L,結算週或 5、6 月降回 0050。

設計(原參數) 年化報酬 日夏普 最大回撤 9 組贏 0050 9 組高於同持股數的底
底:月營收動能 10 檔(2015-02 起) 45.9% 1.42 -35.6% — —
1c 預測法說日在之後 20 個交易日內的優先 30.7% 1.25 -33.4% 9 組 4 組
2c 過去 40 個交易日內法說反應 > 2% 的優先 29.0% 1.13 -39.8% 5 組 1 組
3c 股東常會在之後 20 個交易日內的優先 44.4% 1.41 -39.0% 9 組 4 組
4c 3、6、9、12 月換股時,投信 60 日買超比率前 10% 的優先 48.1% 1.48 -46.1% 9 組 6 組
5c 0050,元月窗口換成市值最小 50 檔 18.6% 1.02 -36.2% 0 組 —
6c 0050,月底月初換成 00631L 7.9% 0.44 -52.2% 0 組 —
7c 00631L,結算週換成 0050 15.0% 0.58 -59.6% 0 組 —
8c 00631L,5、6 月換成 0050 28.9% 0.91 -55.4% 0 組 —
9c 0050,封關窗口換成市值最小 50 檔 19.7% 1.07 -33.7% 4 組 —

同期(2015-02-11 起)0050 含息年化 20.2%、日夏普 1.06、最大回撤 -34.0%;底的 8 檔、12 檔日夏普是 1.26、1.49。擇時組合版的同期 0050 日夏普是 1.07 到 1.09。

組合版每組參數的日夏普差:疊在月營收動能上的 4 個,1c 與 3c 各 4 組高於同持股數的底、2c 只有 1 組、4c 有 6 組;擇時組合版減同期 0050,只有封關換小型股有 4 組略高,月底月初換 00631L 九組都低 0.6 以上

疊在月營收動能上的組合版要算新策略,除了三項驗證都過(底本身就過,前後兩段 1.38/1.47,0050 是 0.87/1.22),還要原參數日夏普高於底、9 組裡至少 7 組高於同持股數的底,而且原參數持有的股票日裡至少 20% 是底沒有持有的。

  • 4c 最接近: 日夏普 1.48 高於底的 1.42,三項驗證都過,拿掉表現最好的 2023 年仍是 1.33 對 0050 的 1.01,持股也換了 30.4%;但 9 組只有 6 組比底高:只加前 5% 的 10 檔、12 檔,與前 10% 的 12 檔低於底。沒有達到事先寫的 7 組,不另開策略。
  • 3c 只換了 12.9% 的持股。 股東會集中在 5、6 月,其他月份沒有候選股符合條件,組合版和底幾乎一樣,日夏普 1.41 對 1.42。
  • 1c、2c 換掉八成以上的持股,反而變差。 有預測法說日或法說反應好的候選股很多,加分後幾乎每個月都換了一批股票,1c 前半段 0.78 輸 0050 的 0.87。
  • 擇時組合版都沒贏 0050。 封關換小型股最接近,原參數 1.07 對 1.08,9 組有 4 組略高。

為什麼都贏不了 0050

  1. 事件日期要事先知道。 法說會的超額報酬集中在公布到召開的那幾天,事前只能用去年的日期猜,命中率不到一半;猜錯的那一半,就是隨機買進一批股票。
  2. 一年只在場一小段的策略,全年的夏普一定低。 股東會前在場 27%、季底作帳 17%、元月 4%、封關 3%,空手期間報酬是 0,日報酬的平均被拉低,要在場那幾天的夏普非常高才追得上全年持有的 0050。
  3. 成本吃掉小效應。 月底月初每年進出 12 次、法說會前每年約 1,310 筆交易,每次約 0.585% 的成本,比效應本身大。
  4. 小型股效應在近幾年反轉。 元月和封關的小型股超額報酬集中在 2014 到 2020 年,2021 年起多數年份落後;用全期的平均,等於押注它會回來。

用 finlab 重現:預測法說日前 10 天買進

下面是第 1 個訊號的完整寫法,跑出來的淨值與上表相同。把 10 換成 5 或 20、把賣出日改成預測日前一天或隔天,就是 9 組鄰近參數:

顯示程式碼
import pandas as pd
from finlab import data
from finlab.backtest import sim
 
close = data.get("price:收盤價")
amount = data.get("price:成交金額").reindex(close.index)
conference = data.get("investors_conference")
 
# 1. 股票池:上市櫃 4 碼普通股,訊號日 20 日均成交金額 2,000 萬以上
stocks = [s for s in close.columns if len(s) == 4 and s.isdigit() and s[0] != "0" and not s.startswith("91")]
liquid = amount[stocks].rolling(20, min_periods=20).mean() >= 2e7
 
# 2. 預測法說日:同公司去年召開日 + 364 天(同一個星期幾)
conf = conference[conference["stock_id"].astype(str).isin(stocks)]
conf = conf.assign(stock_id=conf["stock_id"].astype(str))[["stock_id", "date"]].drop_duplicates()
predicted = conf.assign(date=conf["date"] + pd.Timedelta(days=364))
predicted = predicted[predicted["date"] <= close.index[-1]].drop_duplicates()
 
# 3. 持有表:預測日前 10 個交易日收盤買、預測日收盤賣
#    sim() 在訊號隔天收盤成交,所以從買進日前一天標到賣出日前兩天
position = pd.DataFrame(False, index=close.index, columns=stocks)
for stock_id, day in zip(predicted["stock_id"], predicted["date"]):
    p = close.index.searchsorted(day)
    buy = p - 10
    if buy >= 1 and liquid[stock_id].iloc[buy - 1]:
        position.iloc[buy - 1:p - 1, position.columns.get_loc(stock_id)] = True
 
# 4. 回測:sim() 預設手續費 0.1425% 與證交稅 0.3%
report = sim(position.loc[:, position.any()], upload=False)
report.display()

9 個訊號、9 個組合版與所有統計都在下方的 research.py,安裝 finlab 後直接執行,約 1 分鐘跑完。

這些資料可以怎麼用

  • 看到「法說會前買進」的回測,先問召開日是哪天知道的。 台股法說會多半只提前 3 天公布,用召開日回推 10 天的回測,買進那天大多還沒公布。
  • 法說會後的反應可以當參考,不能單獨當買進理由。 反應最好的一組之後 60 天也只是少輸 0050。
  • 季底、股東會前不必特別調整持股。 投信認養股季底前沒有被拉上去,股東會前平均還略輸 0050。
  • 月底月初平均比較強,但不適合用 0050 每月進出。 證交稅與手續費比效應大;手上本來就要買 0050 的人,把買進日排在月底,是不用多付成本的用法,本文沒有回測這種做法。
  • 五窮六絕、元月效應、封關行情不要當成固定規則。 元月效應與封關行情的小型股在 2021 年後多數年份落後,五窮六絕以 2007 年以來的平均看並不成立。事件研究的做法可以參考 事件研究法教學,其他台股說法的回測見 台股學術異常回測。

常見問題

法說會前買股會漲嗎?

用實際召開日回頭看,從召開前第 10 個交易日到召開當天,平均比 0050 多漲 0.75%,多半集中在最後 5 天。但台股法說會多半很晚才公布:2024 年 2 月以來的 10,859 場,公布到召開的中位數 3 個日曆天,最常見的是召開前 1 個交易日才公布,提前 10 個交易日以上的只有 5.7%。改用事前能知道的預測日,同一段只剩 -0.05%,做成策略扣成本後年化 -9.9%。

法說會後股價會怎麼走?

依召開前一天到隔天的反應分五組,之後 60 個交易日五組都落後 0050:反應最差一組平均 -2.7%,反應最好一組 -0.2%。反應越好、之後越不落後,但沒有一組贏。

股東會前會有行情嗎?

股東常會前 10 個交易日買進、開會當天賣出,12,766 次的超額報酬平均 -0.12%、中位數 -0.86%,沒有股東會前拉抬的跡象。

五窮六絕準嗎?

台股不準。0050 含息在 2007 到 2026 年的 5、6 月,20 年裡 11 年上漲,5、6 月的日報酬平均換算年化 17.1%,還高於其他月份的 15.6%;5、6 月空手的策略年化 10.6%,輸一直持有的 14.3%。

季底作帳是真的嗎?

以投信近 60 日買超最多的 20 檔來看,53 個季底的季底前 10 天平均只比 0050 多 0.15%,43.4% 的季底贏 0050;季底後 10 天平均落後 0.94%。半年報的版本見 六月作帳行情。

台指期結算週會跌嗎?

結算週的週一到週三,0050 的日報酬平均換算年化 7.5%,其他日子 17.3%,平均比較弱;但避開這三天、其餘持有 0050,扣成本後日夏普 0.38,不扣成本 0.75,都沒有贏一直持有的 0.76。

元月效應、封關行情在台股有用嗎?

市值最小 50 檔在 2014 到 2020 年的元月與封關窗口,平均比 0050 多 1.95% 與 3.98%;2021 到 2026 年反過來,平均落後 3.71% 與 2.36%。做成策略都沒有贏 0050,紅包行情的 0050 版本見 紅包行情完全攻略。

為什麼不把參數調到贏 0050 為止?

81 組參數裡總會有幾組剛好表現好,挑出來報告就是過度擬合。本文每個訊號的參數都在看結果前寫定,9 組裡要 7 組贏才算通過。驗證口徑可以參考 夏普比率怎麼算 與 前視偏差 的說明。

參考文獻

延伸閱讀

下載資源

檔案 說明
research.py 完整研究程式:9 個單獨訊號與 9 個組合版共 162 組參數、前後兩段、不扣成本與 ETF 稅率對照,以及法說會公布提前天數、預測日命中率、法說前後超額報酬、法說反應分組、股東會前、季底作帳、小型股窗口與日曆日統計
data.csv 18 個設計原參數與月營收動能 10 檔的每日淨值(各自從 1 起算),以及 0050 含息還原價
metrics.json 全部回測與描述統計的原始輸出,含重跑日與 finlab 版本

投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。

最後更新:2026-11|回測區間:2007-04 ~ 2026-10(季底作帳 2013-06 起、小型股 2013-12 起、月營收動能組合版 2015-02 起、00631L 組合版 2014-11 起,資料快照 2026-10-30,重跑日 2026-10-31)|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多總經與市場研究

查看全部