三大法人買賣超怎麼用

三個法人各自在做什麼、多少算大,以及三個用實測數字就能拆掉的誤讀。

最後更新 2026-09
重點整理
  • 三大法人買賣超=外資及陸資、投信、自營商當天的買進減賣出。TWSE 收盤後當日下午公布:全市場報表(BFI82U)以金額(元)計、個股報表(T86)以股數計。
  • 自營商那一欄有近八成是避險部位:近 60 個交易日(2026-06-24~2026-09-16)避險佔自營商成交金額 78.0%,避險淨額佔自營商絕對淨額的中位數 76.6%。
  • 外資買賣超跟當天漲跌高度同向(r=+0.773),跟隔天幾乎無關(r=+0.097,n=230)——同日的高相關是機械性的,不是預測力。
  • 三大法人常常互相打架:2025-09-17~2026-09-16 外資與投信同方向只有 47.5% 的交易日,三者同方向只有 32.6%(n=242)。
  • 多少算大?2025-09-17~2026-09-16 外資單日買賣超絕對值中位數 262 億元,超過 757 億元才進入前 10%(n=242)。

外資買超那天大盤漲,你以為抓到訊號。但外資的買盤本身就是那天成交量的一部分——漲跌和買超其實是同一件事被算了兩次。這篇把三大法人買賣超的官方口徑、值域級距,以及三個最常被誤讀的地方,用實測數字一次講完。

什麼是三大法人買賣超?

三大法人買賣超是臺灣證券交易所每個交易日公布的一組數字,內容是外資及陸資、投信、自營商三類法人當天的買進金額(或股數)減去賣出金額(或股數)。正值代表這類法人今天淨買進,負值代表淨賣出。

TWSE 對三類法人的定義是身分別,不是行為別(報表註記原文,2026-09-17 抓取):

法人TWSE 定義原文
自營商「自營商表示證券自營商專戶。」
投信「投信表示本國投資信託基金。」
外資及陸資「外資及陸資表示依『華僑及外國人投資證券管理辦法』及『大陸地區投資人來臺從事證券投資及期貨交易管理辦法』辦理登記等投資人。」

兩張報表,兩種單位

全市場的三大法人買賣金額統計表(BFI82U)回傳 6 列、單位是;個股的三大法人買賣超日報(T86)逐檔揭露、單位是(實測 2026-09-15 回傳 15,840 檔)。BFI82U 的 6 列裡,外資自營商是獨立的一列;在 Blave 的資料序列中,這一列自 2024-08-16 起每日皆為 0。

提示: BFI82U 與 T86 都只涵蓋上市(集中市場)。媒體講「今天外資買超 XXX 億」講的通常就是這個數字;上櫃的三大法人要另外看櫃買中心(TPEx)的報表。

這個數字會不會被回頭改?

不會。TWSE 在報表註記講得很白:

「本統計資訊含一般、零股、盤後定價、鉅額,不含拍賣、標購。」
「本資訊以當日原始成交情形統計,不以證券商申報錯帳、更正帳號等調整後資料統計。」

也就是說,三大法人是一張原始成交的快照,公布之後不因錯帳更正而回頭調整。這一點跟融資餘額剛好相反——融資餘額的授信機構在次日還在調帳,TWSE 明講要以「前日餘額」為準(見〈融資餘額怎麼用〉)。同樣是籌碼面,兩個指標的資料性質不同,做研究時的處理方式也不該一樣。

公布時間是收盤後的當日下午。TWSE 官方頁面沒有明文寫死時間,所以本文不給一個精確到分鐘的說法。

多少算大?2025-09-17~2026-09-16 的值域

單日買賣超淨額分布,單位億元。視窗 2025-09-17~2026-09-16,n=242,資料取自 Blave 的三大法人資料序列(上市市場):

法人 p05p25 中位數 p75p95 平均 買超日佔比
外資−892.6−377.0−52.3+165.2+603.3−86.243.8%
投信−77.0−20.0+14.6+71.0+160.9+27.659.9%
自營商−301.1−104.9−14.3+60.5+153.3−34.647.1%
合計−1,077.3−380.7−45.4+227.0+683.8−93.146.3%

要回答「今天這個數字算不算大」,看絕對值級距比看正負有用(同視窗,n=242):

法人(億) 絕對值中位數 p80p90p99 期間最大
外資2625457571,3401,883
投信4288135267383
自營商75156206548822

外資單日買賣超 260 億元上下是家常便飯;要超過 757 億元才進得了這個視窗的前 10%。投信的量體小一個級距,中位數只有 42 億元——用同一把尺去看三個法人,會把投信的「大動作」看成沒事。

最關鍵的一點:自營商那一欄不是「自營商在看多」

大多數人讀三大法人時,會把自營商的淨額當成券商自營部的方向判斷。但 TWSE 把自營商拆成「自行買賣」和「避險」兩欄分開揭露,而後者的量體遠大於前者。

近 60 個交易日的實測(TWSE BFI82U 逐日直取,2026-06-24~2026-09-16,n=60):

觀察數值
避險佔自營商成交金額(買+賣)78.0%
避險淨額佔自營商絕對淨額(逐日中位數)76.6%
避險日均成交金額 vs 自行買賣日均769 億元 vs 218 億元
期間平均淨額避險 −81.1 億元/日、自行買賣 −8.3 億元/日
兩者同方向天數/逐日相關73.3%/r=0.716

換句話說,你看到的「自營商買超」有將近八成的量體來自避險那一欄。合併看會被避險主導,但不是完全被決定(r=0.716)——要讀自營商的方向,至少得把兩欄分開看。

提示: TWSE 只把避險與自行買賣分開揭露,沒有在任何報表註記裡定義避險部位的成因。市場上常見的「避險=權證造市」說法我們查不到官方明文,所以本文不這樣寫。你可以確定的是量體比例,不是它背後的動機。

外資+投信+自營商,會等於「合計」嗎?

不會。你把 foreigninvestment_trustdealer 三欄相加,算出來的數字跟新聞上那個「三大法人合計」對不起來——不是你算錯。

TWSE 的官方合計是四項相加:外資及陸資(不含外資自營商)+投信+自營商(自行買賣)+自營商(避險);外資自營商那一欄不計入官方合計。但 Blave API 的 dealer 欄把外資自營商併了進去,所以三欄相加=官方合計+當日外資自營商淨額。

以 2019-06-03 全市場為例(FinMind 原始資料,單位元):

項目淨額計入官方合計
外資及陸資+4,256,940,836
投信−470,794,770
自營商(自行買賣)+234,212,750
自營商(避險)−634,731,645
外資自營商−1,635,530
官方合計+3,385,627,171前四項相加

前四項相加與官方合計分毫不差,被排除在外的是外資自營商那 −1,635,530 元——而它在 Blave API 的 dealer 欄裡面。2018–2024 共有 1,553 個交易日,三欄相加對不上官方合計;2024-08-16 之後這一欄恆為 0,近期的差額是零,但歷史區間的落差是真的。

所以要對上新聞或官方公布的數字,直接讀 total 欄,不要自己把三欄相加——total 就是官方合計,不是各欄相加算出來的。只做近期資料的話兩種算法一樣;區間跨到 2024 年以前、又想把外資自營商單獨拆出來看,就回 BFI82U 原始報表,在那裡它是獨立的一列,Blave API 沒有對應欄位。

提示: 這是 Blave 與官方口徑的落差,不是資料源的問題。FinMind 把外資自營商當獨立欄位揭露,它的合計也排除這一欄,與 TWSE 一致;併進 dealer 是 Blave 自己的慣例。用這份資料做跨 2024 年以前的研究時,要自己把這個差額算進去。

外資買超,隔天就會漲嗎?

同日高相關,隔日接近擲硬幣。這是本文最該帶走的一條。

視窗 2025-09-17~2026-09-16,買賣超對加權指數報酬的相關係數,n=230(相關性樣本比值域表的 242 少 12 天,是指數資料缺 12 個交易日所致,兩處的 n 請勿混用):

對象與當日大盤報酬 r與隔日大盤報酬 r
外資+0.773+0.097
投信+0.119+0.004
自營商+0.716+0.003
合計+0.824+0.079

當日的高相關是機械性的:法人的買盤本身就是當天成交量的一部分,價格漲與法人買超本來就是同一件事的兩種記法。真正有價值的問題是隔天,而隔天的相關係數只剩 +0.097。

勝率也是同一個結論:外資買超日的隔日上漲機率 59.0%(n=100)、賣超日 52.7%(n=129),全樣本基準 55.5%。差距存在,但把樣本拉到 5 年(n=1,200)就縮成 56.4% vs 54.4%(基準 55.3%)。而且隔日平均報酬反而是賣超日比較高——賣超日 +0.286%、買超日 +0.256%。勝率略高、平均報酬略低,兩邊互相抵銷。

三個法人要分開看,還是看「合計」?

分開看。同一個視窗(2025-09-17~2026-09-16,n=242)三者的方向根本不常一致:

觀察數值
外資與投信同方向的交易日47.5%
外資與自營商同方向75.2%
三者同方向32.6%
「合計」與外資方向相反9.9%
外資佔三大法人絕對淨額(中位數比重)67.4%
外資佔三大法人成交金額(買+賣)83.7%

「法人買超」當成單一訊號,在資料上就不是一件事——三者同方向的日子只有三分之一。而且「合計」基本上是外資的影子:外資佔了成交金額的 83.7%,只有 9.9% 的日子合計會跟外資反向。你以為在看三個法人的共識,其實九成在看外資一個人。

怎麼把它放進策略

1. 取數:全市場與個股是兩層資料

全市場層是金額、個股層是股數,欄位名稱也不同,混用會算出錯的東西。

from lib.data import fetch_twmarket_institutional, fetch_twstock_institutional

# 全市場:單位是元,欄位 foreign/investment_trust/dealer/total,2004-04-07 起
mkt = fetch_twmarket_institutional('2025-09-17', '2026-09-16', headers)

# 個股:單位是股,買、賣分開兩欄;lib 直接給 foreign_net
df = fetch_twstock_institutional('2330', '2025-09-17', '2026-09-16', headers)
foreign_net = df['foreign_net']   # 外資買進股數 − 賣出股數

個股層還多給了拆分欄位:自營商的自行買賣(dealer_self_*)與避險(dealer_hedge_*)是分開的,要做上一節那個「把避險拆出來」的判斷,個股層抓得到。

2. 當條件,不要當訊號

比較務實的用法是把「今天法人動作大不大」變成一個可以測的條件,掛在你自己的主訊號前面,而不是直接拿它進出場。

# 級距取自 2025-09-17~2026-09-16 外資單日買賣超絕對值分位數:p50 262 億、p90 757 億(n=242)
BIG = 75_700_000_000          # 元;這是資料的級距,不是回測出來的參數

big_buy = mkt['foreign'] > BIG
signal = primary.copy()        # primary 是你自己的主訊號
signal[~big_buy] = 0.0         # 外資沒有大買的日子不接受多單

說清楚:這個門檻是分布級距,不是回測驗證過的參數。它回答的是「今天這個數字在歷史上排第幾」,不回答「這樣做會不會賺」——後者只有回測能講,而且要避開拿同一段資料反覆調參數的坑(見〈避免過度擬合〉)。

3. 自己接官方檔?先看欄位順序

提示: T86 的回傳陣列有一個順序陷阱:自營商買賣超股數(合計)排在「自行買賣」三欄之前(索引 11),而自行買賣那組才是買進→賣出→買賣超(索引 12/13/14)。照直覺假設「先自行買賣、再避險、最後合計」會整組錯位。用欄位名稱解析,不要用位置解析。

參數與時間框架怎麼選

三大法人只有日頻,沒有時間框架可調;能調的是「看哪一層、看幾天」。

取法適合注意
全市場單日淨額判斷大盤層級的資金流向強度只有上市;「合計」83.7% 是外資的影子,別當共識讀
全市場連續段想描述「連買幾天」這種狀態2025-09-17~2026-09-16 買超段 49 段、平均 2.16 天、最長 6 天;賣超段 50 段、平均 2.72 天、最長 13 天(n=242)——「連買五天」比你以為的稀有
個股單日淨額個股籌碼面條件、選股濾網單位是股;上市走 T86、上櫃走 TPEx,兩邊都有
個股拆分欄位要把避險從自營商裡拿掉時只有個股層保留拆分欄位

本文的範例用全市場單日淨額,理由很簡單:值域與相關性的實測都做在這一層,門檻級距才對得上。換到個股層,級距要重新用個股自己的分布算。

誠實提醒: 三大法人買賣超是參考資料,不是買賣訊號。本文所有數字都標了視窗與樣本數,而樣本會說話:外資買賣超對隔日大盤報酬的相關係數是 +0.097(n=230),5 年樣本是 +0.053(n=1,200)——接近零。任何把「法人買超」直接翻譯成「明天會漲」的說法,在這份資料上站不住。要拿它做策略,把它當條件、當濾網,然後回測(回測報告怎麼讀,見〈回測是什麼?回測報告怎麼看〉)。

三大法人的口徑搞懂了,下一步是把它變成一個你能驗證的條件:叫 Blave Agent 把這組資料抓下來、寫成濾網、回測給你看——資料層與欄位它都接好了,你只要講你想測什麼。全市場與個股的圖也可以直接在 Studio 看:大盤三大法人個股籌碼