每年六月底,財經版面都會出現「作帳行情」「半年報行情」這幾個字。投信要結帳、法人要美化半年報持股、外資要回補,所以六月底到七月會有一波上漲。聽起來很有道理,但它到底是真的可重複,還是只是事後看圖說故事?
我們用 finlab 把台股加權報酬指數(含息)拉出來,從 2003 年測到 2025 年,一年只取一個獨立樣本,做了一個乾淨的事件研究。結論是:作帳行情這件事在大盤層級確實存在、而且統計上站得住腳;但市場上對它的四種主流解釋,幾乎全部錯了。

關鍵數字(2003–2025,台股加權報酬指數)
| 進場時點 | 持有交易日 | 平均報酬 | 勝率 | t 值 |
|---|---|---|---|---|
| 六月半年報結帳日(收盤) | 5 日 | +1.21% | 57% | +2.11 |
| 六月半年報結帳日(收盤) | 8 日 | +1.51% | 70% | +2.15 |
| 六月半年報結帳日(收盤) | 10 日 | +2.06% | 70% | +2.73 |
| 六月半年報結帳日(收盤) | 12 日 | +2.22% | 78% | +2.32 |
| 六月半年報結帳日(收盤) | 15 日 | +2.42% | 78% | +2.74 |
| 同期間任意 10 日(無條件基準) | 10 日 | +0.61% | — | — |
(來源:finlab benchmark_return:發行量加權股價報酬指數,2003–2025 共 23 年,一年一個觀察值。t 值為跨年度單樣本 t 檢定,對虛無假設「平均報酬為零」。)
一句話:在六月結帳日收盤買進大盤、持有 8 到 15 個交易日(大約到七月中),23 年來平均報酬約 +2%,是同期間隨便挑十天平均報酬(+0.61%)的三倍多,而且 t 值穩定落在 2 以上。
作帳行情:泛指機構投資人在季底或半年底結帳日前後,為了美化財報或基金淨值持股,買進或撐住手中重押的股票,帶動指數短線走強的季節性現象。學名叫「window dressing(櫥窗效應)」。更多量化名詞可參考我們的量化投資詞彙表。
什麼是作帳行情?為什麼是六月?
台灣的會計年度以 12 月底為年結,6 月底則是「半年」的結帳點:上市櫃公司要編半年報、基金與法人要結算上半年淨值與績效。Lakonishok, Shleifer, Thaler & Vishny (1991) 研究美國退休基金時就發現,基金經理人傾向在季底「美化持股」,把表現好的、權值大的標的買到帳上,這就是 window dressing 的原始定義。
六月底還疊了第二件事:台股的除權息旺季落在七、八月,六月底正好站在配息行情的起跑線前。兩股力量加起來,使得六月半年結這個時間點,比其他三個季底更容易出現結帳後的延續性上漲。
但「有故事」不等於「可賺錢」。早在 Lakonishok & Smidt (1988) 用九十年資料檢驗各種日曆效應時就提醒,許多看似穩定的季節性其實經不起跨期考驗。更直接的陷阱,是 Sullivan, Timmermann & White (2001) 指出的「資料探勘」問題:你把一年 250 個交易日、各種月份與節氣都試一遍,總會挑到幾個看起來很神的日期。所以下面每一步,我們都用一年一個獨立樣本、跨年度檢定,並且和其他三個季底、和無條件基準對照,盡量把運氣的成分擠掉。
事件研究:持有十到十五個交易日最甜
把「進場後持有 N 個交易日」的平均報酬畫成一條曲線(上方第一張圖),你會看到報酬從結帳日起穩定往上爬,在第 8 到第 15 個交易日之間進入一段平台,平均累積報酬大約 +2.0% 到 +2.4%,t 值在這段都維持在 2.3 以上。超過 20 個交易日之後,平均報酬還在高點附近,但波動變大、訊號變鬆,性價比下降。
我們也測了進場日的敏感度。把進場點從結帳日前三天移到後兩天、持有天數從 5 天掃到 15 天,做成一張報酬與 t 值的網格,最強的組合是在結帳日前一個交易日進場、持有 10 個交易日,t 值高達 3.43。換句話說,這個訊號不是只在某一個精準的進出點才成立,它在一整片合理的進出組合上都站得住,這正是穩健訊號該有的樣子。
更重要的是穩健性檢查。我們對 10 日報酬做「逐年剔除」(jackknife):每次拿掉一年再重算,23 次裡最低的 t 值還有 2.43,最高 3.15,全部都 ≥ 2.0。也就是說,這段報酬不是靠某一年撐起來的。貢獻最大的一年是 2003 年(+10.2%),最差的一年是 2008 年金融海嘯(−3.8%),把這兩個極端拿掉,結論都不變。
如果再嚴格一點,扣掉「那一年大盤本來就有的平均漲幅」,只看超額的季節性部分,結帳後 10 日的超額報酬仍有 +1.68%(t = 2.36,p = 0.028)。所以這 +2% 不是把大多頭年的趨勢算進去而已,它本身就帶著一塊獨立的季節性溢酬。
逐年拆解:23 年裡有 16 年收紅

把每一年結帳後 10 日的報酬畫成長條圖,23 年裡 16 年收紅、勝率 70%,紅綠分佈相當均勻,沒有「全靠兩三根大紅棒」的脆弱感。下跌的年份多半對應到當年的系統性風險(2008 海嘯、2011 歐債、2015 股災、2022 升息),這也提醒我們:這是一個「平均而言占上風」的季節性偏向,不是每年保證上漲。
只有六月特別強:四個季底的對照
如果作帳行情只是「結帳日後大盤都會漲」,那 3、6、9、12 月底應該都一樣強。事實不是這樣。

| 季底結帳日 | 結帳後 10 日平均報酬 | t 值 |
|---|---|---|
| 3 月底(Q1) | +1.38% | +1.59 |
| 6 月底(半年報) | +2.06% | +2.73 |
| 9 月底(Q3) | +0.40% | +0.44 |
| 12 月底(年報) | +0.54% | +0.73 |
(來源:finlab 加權報酬指數,2003–2025,結帳後 0 至 +10 交易日。)
四個季底裡,只有六月的結帳後延續性上漲達到統計顯著。九月、十二月幾乎沒有訊號,三月偏弱。這個對照很關鍵:它說明六月作帳行情綁定的是台灣半年報結算這個特定制度節點,而非泛泛的「結帳日通效應」,正好和 window dressing 的機制吻合。
值得一提的是,年底(12 月)在結帳「前」反而有明顯的卡位買盤(結帳前 10 日平均 +2.12%、t = 3.89),但那是另一個故事;本文聚焦的是可操作性最高、結帳「後」延續最穩的六月。
用 0050 實單複製:近八成勝率,含成本後依然站得住
指數不能直接買,但 0050(元大台灣 50)幾乎完美貼著加權指數。我們把規則落到 0050 上:在六月結帳日前一個交易日(倒數第二個六月交易日)收盤買進,約七月中(結帳後第 11 個交易日)賣出,一年只做這一趟,從 2007 測到 2025 共 19 年。

| 指標 | 0050 季節性進出(2007–2025,19 次) |
|---|---|
| 每次平均報酬 | +2.88% |
| 報酬中位數 | +3.54% |
| 勝率 | 79%(15/19 年收紅) |
| t 值 | +2.99 |
| 每趟風險報酬(平均/標準差) | 0.69 |
| 扣 0.15% 來回成本後平均 | +2.73%(勝率仍 79%) |
| 扣 0.30% 來回成本後平均 | +2.58% |
(來源:finlab price:收盤價 之 0050 收盤對收盤報酬,未計息為保守估計。成本敏感度為事後扣除來回交易成本。)
平均每趟 +2.88%、近八成年份收紅,這是一個曝險只有約 12 個交易日的季節性部位,不是長抱整年。即使把手續費與證交稅這類來回成本扣到 0.30%,平均報酬仍有 +2.58%、勝率不變,代表它不是被成本吃光的微小邊際。
為了給最保守的實測,我們再用 finlab 的回測引擎把它跑成一個「只有六月底到七月中進場 0050、其餘時間空手」的帳戶,內含手續費 0.1425%、ETF 證交稅 0.1%,而且部位變動隔一個交易日才以開盤價成交(更貼近實單)。下面是完整互動式回測:權益曲線、逐年報酬、月報酬全在裡面,可以直接在文章中操作:
這個含成本、隔日開盤成交的版本,19 年累積報酬 +48.3%、勝率 68%(13/19)、最大回撤 −11.1%。它比前面那張乾淨的 +68.9%(收盤對收盤、未扣成本)低,差距正是真實世界的摩擦:隔日開盤成交吃掉一點價差、加上交易成本。帳戶層的年化只有約 2.1%、日夏普約 0.06,看起來很低,但那是因為這個帳戶一年有 11 個月在空手、現金拖累了年化數字;它要看的是「每次進場的勝率與報酬」,不是「整年滿倉的夏普」。關於夏普這個指標怎麼讀、為什麼空手期會拉低它,可以參考夏普比率是什麼。
四個常見說法,資料全部否決
這一節是這篇和市場上其他作帳行情文章最不一樣的地方。大盤層級的季節性是真的,但坊間用來「教你怎麼賺」的四種版本,我們逐一用資料檢驗,結果全軍覆沒。
說法一:「投信作帳會把特定個股拉上去,跟著買就賺」
我們在六月中與結帳日,用「投信近 8 日淨買超股數 ÷ 近 60 日均量」這個強度指標,挑出投信買最兇的前 30 檔流動性股票組成籃子,和整個流動性股票池對照,從 2012 測到 2025。結果:持有 10 日,投信認養籃子平均 +0.88%,流動性股票池 +0.87%,兩者幾乎沒有差別(差距 +0.01%、t = 0.02)。多空(買最兇減賣最兇)也只有 +0.20%、t = 0.32,毫無統計意義。
換句話說,「跟著投信買認養股」吃不到超額報酬。作帳行情不是一個選股訊號,是一個指數現象。如果你想認真研究法人籌碼怎麼用,我們在法人籌碼選股策略與外資買賣超避險指標裡有更細的拆解。
說法二:「作帳行情是小型股雨露均霑、全市場普漲」
如果是全市場普漲,那把每檔股票等權重平均(breadth,廣度報酬)應該漲得比市值加權的大盤指數更多。事實正好相反。

| 區間 | 市值加權大盤 | 等權重(全市場) | 廣度溢酬(等權減市值) |
|---|---|---|---|
| 結帳前 10 日 | +1.05% | +0.40% | −0.65% |
| 結帳後 10 日 | +2.10% | +0.94% | −1.16%(t = −2.35) |
| 跨結帳日 −10 至 +10 | +3.22% | +1.39% | −1.83%(t = −3.05) |
(來源:finlab 流動性股票池等權報酬 vs 加權報酬指數,2007–2025。)
結帳後 10 日,等權重廣度反而比市值加權落後 1.16%(t = −2.35,p = 0.031),跨結帳日落後更達 1.83%。作帳行情高度集中在權值大、被法人重押的大型股,不是小型股普漲。這也和 window dressing 的邏輯一致:要美化半年報持股,買的是檯面上的權值龍頭,不是冷門小股。
說法三:「六月底搶息,高殖利率股最會漲」
台股七、八月除權息旺季在即,很多人以為六月底買高殖利率股「搶息」最甜。我們把流動性股票池依殖利率分三組,從結帳日前一天買進持有 12 日,2007 至 2025:高殖利率組平均只有 +0.02%,低殖利率組卻有 +1.37%,高減低的「搶息溢酬」是 −1.35%(t = −3.24,p = 0.006),方向完全相反。結帳後這段,資金明顯偏向成長型、低息的權值股,而不是高息定存股。
說法四:「外資作帳,結帳日前後大買」

把 2012 到 2025 年外資每日買賣超在結帳日前後加總起來看,結帳日前後十個交易日,外資平均是累積淨賣超,一路到七月中(結帳後第 9、10 日)才轉成買超。所以推動六月作帳行情的,並不是外資的結帳買盤。外資在大盤裡的角色我們另外在為什麼外資大賣,台股反而漲有完整討論。
把四個說法放在一起看,結論很乾淨:六月作帳行情是一個集中在權值大盤、偏成長型大型股、和個別法人籌碼與搶息都無關的季節性現象。能吃到它的工具,是大盤型 ETF(0050),不是任何一種選股版本。
回測方法與口徑限制
漂亮的數字必須交代清楚是怎麼算出來的,否則只是另一篇看圖說故事。以下是本文的回測口徑:
| 項目 | 本文做法 |
|---|---|
| 基準資料 | 大盤用 benchmark_return:發行量加權股價報酬指數(含息總報酬指數),不是純價格指數,避免低估報酬 |
| 0050 報酬 | 用 price:收盤價 之收盤對收盤、未計息,屬保守估計(實際含息會更高) |
| 樣本設計 | 一年只取一個獨立觀察值,避免重疊視窗造成的自我相關污染統計檢定 |
| 交易成本 | 事件研究本身不含成本;0050 另做 0.15% 與 0.30% 來回成本敏感度;finlab 互動回測內含手續費 0.1425% 與 ETF 證交稅 0.1% |
| 成交假設 | finlab 回測的部位變動隔一個交易日以開盤價成交,貼近實單;事件研究為收盤對收盤 |
| 流動性與股票池 | 個股橫截面檢驗(投信、殖利率、規模)限定近 20 日均成交額 > 5,000 萬元的流動性股票池,避免回測買得到、實單買不到 |
| 前視偏差 | 投信買賣超為當日收盤後才可得,進場一律設在訊號日收盤;不使用任何未來資訊 |
| 樣本內外 | 全段為樣本內事件研究;但 2003–2014 與 2015–2025 兩個子期間分別檢驗,後段結帳後 10 日仍有 +2.07%、勝率 82%、t = 2.83,等於用近十年資料做了一次準樣本外驗證 |
| 週轉率與容量 | 一年僅進出一次、曝險約 12 個交易日,週轉率低;0050 流動性充足,容量不是限制,但本文未估算大資金的市場衝擊 |
最大的限制要說在前面:季節性異象天生有資料探勘風險(Sullivan, Timmermann & White, 2001)。我們用跨年度檢定、逐年剔除、跨季底對照、子期間切分四道關卡來壓低這個風險,但它仍是一個「平均而言占上風」的統計偏向,不是物理定律。任何一年都可能因為當年的系統性事件而失效(2008、2022 就是例子)。回測方法與更多陷阱可參考什麼是回測。
怎麼用?用 AI 跟 finlab 跑一次
FinLab 的核心是讓你用白話跟 AI 對話、由 finlab 套件在底層跑真資料,而不需要你去背 Python 語法。上面所有數字,核心邏輯其實只有幾行:
顯示程式碼
from finlab import data
import pandas as pd
# 1. 載入台股加權「報酬」指數(含息),以及交易日曆
# finlab 需要資料時會自動引導你登入,照指示操作即可
bench = data.get("benchmark_return:發行量加權股價報酬指數").iloc[:, 0].dropna()
trading_days = pd.DatetimeIndex(sorted(bench.index))
# 2. 找出每一年六月的最後一個交易日(半年報結帳日)
def june_close(year):
june = trading_days[(trading_days.year == year) & (trading_days.month == 6)]
return june[-1] if len(june) else None
# 3. 從結帳日買進、持有 10 個交易日,計算每一年的報酬
returns = []
for year in range(2003, 2026):
anchor = june_close(year)
position = trading_days.get_loc(anchor)
one_year = bench.iloc[position + 10] / bench.iloc[position] - 1
returns.append(one_year)
result = pd.Series(returns)
print(f"平均報酬 {result.mean():.2%},勝率 {(result > 0).mean():.0%}")
# 平均報酬 2.06%,勝率 70%你可以把整段邏輯貼給你的 AI 助理,請它幫你改成 0050 實單、加上交易成本、或換成其他季底再測一次。完整的事件研究腳本與每年進出場明細,都在文末提供下載。想看更多用 AI 對話做量化研究的範例,可以從量化交易完整指南開始。
適合誰、不適合誰
| 說明 | |
|---|---|
| 適合 | 已經長期持有 0050 或大盤型 ETF 的人,把六月底到七月中視為「分批加碼的季節性窗口」;想用一個規則明確、低週轉的季節性偏向,輔助原本的資產配置 |
| 不適合 | 想靠它選個股、追投信認養股、或搶高息股的人(資料顯示這些版本沒有優勢);無法承受單一年份失效(如 2008、2022)的人;把它當成保證每年上漲的人 |
這是一個季節性「偏向」,最務實的用法是把它疊在既有的長期部位上,而不是當成獨立致富策略。把它和其他季節性研究一起看會更有感:例如我們對紅包行情的實測(網傳 80% 勝率其實只有 60%)、冰風暴概念股季節效應,以及處置股進出場時機。
常見問題
Q1:作帳行情到底是真是假? 在大盤層級是真的。台股加權報酬指數在六月結帳日後 10 個交易日,2003–2025 平均上漲 2.06%、勝率 70%、t = 2.73,並通過逐年剔除與子期間檢驗。但坊間「跟投信買個股」「搶息」「買小型股」等操作版本,經資料檢驗都沒有優勢。
Q2:為什麼是六月,不是其他季底? 六月底是台灣半年報的結帳點,疊上七、八月除權息旺季在即。四個季底對照中,只有六月的結帳後延續上漲達統計顯著(九月、十二月幾乎無訊號),顯示它綁定的是半年報結算這個制度節點。
Q3:最佳的進出場時間是什麼時候? 統計上最強的組合是六月結帳日前一個交易日進場、持有約 10 到 15 個交易日(大約到七月中)。但訊號在一整片合理的進出組合上都成立,不需要追求精準到某一天。
Q4:用 0050 真的可以複製嗎?成本會不會吃掉? 可以。0050 季節性進出 2007–2025 平均每趟 +2.88%、勝率 79%;扣 0.30% 來回成本後仍有 +2.58%、勝率不變。它曝險只有約 12 個交易日,週轉率低,成本不是主要障礙。
Q5:買投信認養股、外資作帳股可以嗎? 資料顯示不行。投信買最兇的前 30 檔,持有 10 日只贏流動性股票池 +0.01%(t = 0.02);而外資在結帳日前後其實是累積賣超。作帳行情是指數現象,不是選股訊號。
Q6:這個策略每年都會賺嗎? 不會。它是一個平均而言占上風的季節性偏向,23 年裡有 7 年是負的,通常對應當年的系統性風險(2008、2011、2015、2022)。請把它當成提高勝算的偏向,不是保證。
Q7:我要怎麼自己驗證?
文末提供完整的 Python 事件研究腳本與每年進出場、報酬的 CSV,你可以用 pip install finlab 自己重跑,或把程式碼貼給 AI 助理改成你想測的版本。
延伸閱讀
- 入門總覽:量化交易完整指南、股票選股完整教學
- 其他季節性研究:紅包行情實測、冰風暴概念股季節效應、處置股進出場時機
- 法人與籌碼:法人籌碼選股策略、為什麼外資大賣台股反而漲
- 觀念工具:什麼是回測、夏普比率是什麼、多因子選股贏過 0050?、景氣訊號做部位控制、月營收動能的季節性
想自己動手?用白話跟 AI 對話、由 finlab 跑真台股回測,免費開始使用 FinLab,把這個季節性套到你自己的資產配置上。
下載與重現
- 完整事件研究與 0050 季節性回測腳本:strategy.py
- 每年進出場日期與報酬資料:data.csv
- 完整互動式回測報告已內嵌於本文上方,可直接操作
最後更新:2026-06|回測區間:2003-06 至 2025-07(事件研究)/2007–2025(0050 實單)|資料截至 2026-06-17|作者:FinLab 量化研究團隊(經量化研究員審閱)
投資有風險,過去績效不代表未來表現。本內容僅供教學與研究參考,不構成投資建議,請依個人風險承受度審慎評估。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

