三大法人买卖超怎么用

三个法人各自在做什么、多少算大,以及三个用实测数字就能拆掉的误读。

最后更新 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 看:大盘三大法人个股筹码