
執行這個策略
複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。
告訴你的AI:
幫我設定 FinLab,重跑法說會前買進、股東會前買進、季底作帳、月底月初、五窮六絕等 9 個台股季節性策略,和 0050 含息比較,請讀:https://finlab.finance/setup?relatedUrl=/blog/investor-conference-agm-seasonality-backtest
法說會前買股,前提是你要先知道哪天開。台股法說會多半只在召開前 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 含息:
- 參數高原: 每個策略 2 個主要參數,各取 3 個值(原值與兩個鄰近值),共 9 組,至少 7 組要贏。
- 前後兩段: 原參數在前半段、後半段各自都要贏。
- 交易成本: 用
sim()預設的手續費與證交稅,不設成 0。
三項都過的,再拿掉相對 0050 表現最好的那一年,看還贏不贏。每個訊號的定義、鄰近參數與組合版的底,都在跑任何結果之前寫定,之後沒有改條件。
三項驗證的結果:81 組參數只有 3 組贏

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 月起,我們每天抓資料時記下每場法說會第一次出現的時間,可以算出公司提前多久公布。

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

用實際召開日,從召開前第 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 個交易日越不落後,最好一組(平均反應 +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 檔(等權、不含成本)在兩個窗口的超額報酬:
| 窗口 | 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 報酬:

- 月底月初(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)。

五窮六絕在 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: 一年在場 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。

疊在月營收動能上的組合版要算新策略,除了三項驗證都過(底本身就過,前後兩段 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
- 事件日期要事先知道。 法說會的超額報酬集中在公布到召開的那幾天,事前只能用去年的日期猜,命中率不到一半;猜錯的那一半,就是隨機買進一批股票。
- 一年只在場一小段的策略,全年的夏普一定低。 股東會前在場 27%、季底作帳 17%、元月 4%、封關 3%,空手期間報酬是 0,日報酬的平均被拉低,要在場那幾天的夏普非常高才追得上全年持有的 0050。
- 成本吃掉小效應。 月底月初每年進出 12 次、法說會前每年約 1,310 筆交易,每次約 0.585% 的成本,比效應本身大。
- 小型股效應在近幾年反轉。 元月和封關的小型股超額報酬集中在 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 組贏才算通過。驗證口徑可以參考 夏普比率怎麼算 與 前視偏差 的說明。
參考文獻
- Frazzini, A., & Lamont, O. A.(2007). The earnings announcement premium and trading volume. NBER Working Paper 13090。盈餘公告月份有超額報酬,用去年同季的公告月預測今年的公告。
- Barber, B. M., De George, E. T., Lehavy, R., & Trueman, B.(2013). The earnings announcement premium around the globe. Journal of Financial Economics, 108(1), 118–138。全球多數市場都有公告前後的溢酬,同樣用預測的公告日避免前視。
- Bernard, V. L., & Thomas, J. K.(1989). Post-earnings-announcement drift: Delayed price response or risk premium? Journal of Accounting Research, 27, 1–36。盈餘公告後股價沿驚喜方向持續漂移。
- Lakonishok, J., Shleifer, A., Thaler, R., & Vishny, R. W.(1991). Window dressing by pension fund managers. American Economic Review, 81(2), 227–231。基金經理人在季底前調整持股、美化報表。
- Carhart, M. M., Kaniel, R., Musto, D. K., & Reed, A. V.(2002). Leaning for the tape: Evidence of gaming behavior in equity mutual funds. Journal of Finance, 57(2), 661–693。基金在季底最後一天拉抬持股、隔天回落。
- Rozeff, M. S., & Kinney, W. R.(1976). Capital market seasonality: The case of stock returns. Journal of Financial Economics, 3(4), 379–402。美股報酬集中在 1 月。
- Keim, D. B.(1983). Size-related anomalies and stock return seasonality: Further empirical evidence. Journal of Financial Economics, 12(1), 13–32。小型股溢酬近一半出現在 1 月,1 月的溢酬又有一半以上集中在新年第一週。
- Lakonishok, J., & Smidt, S.(1988). Are seasonal anomalies real? A ninety-year perspective. Review of Financial Studies, 1(4), 403–425。月底最後一天到月初前三天的報酬特別高。
延伸閱讀
- 法說會前買進加營收動能與停損:三項驗證
- 冰風暴概念股季節效應驗證
- 台股第四季走勢:35 年實測
- 新股抽籤與上市後買新股回測
- 股票股利、庫藏股、現金增資、減資回測
- 融資、注意股、跳空缺口 5 個散戶訊號回測
- 量化交易完整指南
- 台股選股完整指南:基本面、技術面、籌碼面
- 周轉率是什麼
- FinLab 公開策略庫
下載資源
| 檔案 | 說明 |
|---|---|
| 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 自動驗證、回測、給你答案
免費開始

