機関投資家の売買超過の使い方

三者がそれぞれ何をしているのか、どこからが大きいのか、そして実測値で崩せる三つの読み違い。

最終更新 2026-09
要点まとめ
  • 機関投資家の売買超過=外国人・中国系投資家、投資信託、自己売買部門のその日の買付から売却を引いた額。TWSE が引け後の当日午後に公表します。市場全体のレポート(BFI82U)は金額(TWD)、個別銘柄のレポート(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 億 TWD、上位 10% に入るには 757 億 TWD 超が必要でした(n=242)。

外国人が買い越した日に指数が上がった、これでシグナルを見つけたと思う。しかし外国人の買いはその日の出来高の一部そのものです——値動きと買い越しは、同じ一つの出来事を二度数えているにすぎません。この記事では機関投資家売買超過の公式な定義、実際の値域、そして最も誤読されやすい三点を、実測値で一度に片づけます。

機関投資家の売買超過とは?

機関投資家の売買超過は、台湾証券取引所が毎営業日公表する数値です。内容は外国人・中国系投資家、投資信託、自己売買部門という三種類の機関が、その日に買った金額(または株数)から売った金額(または株数)を引いたもの。プラスはその種別が買い越し、マイナスは売り越しを意味します。

TWSE の三種別の定義は「誰であるか」であって「何をしたか」ではありません(レポート注記の原文、2026-09-17 取得):

機関TWSE の定義(原文)
自己売買部門「自己売買部門とは証券会社の自己勘定口座をいう。」
投資信託「投資信託とは国内の証券投資信託ファンドをいう。」
外国人・中国系投資家「外国人・中国系投資家とは、『華僑及び外国人の証券投資管理弁法』及び『大陸地区投資人の台湾における証券投資及び先物取引管理弁法』に基づき登録した投資者等をいう。」

二つのレポート、二つの単位

市場全体の機関投資家売買代金統計表(BFI82U)は 6 行を返し、単位は TWD です。個別銘柄の機関投資家売買超過日報(T86)は銘柄ごとに開示され、単位はです(2026-09-15 の実測で 15,840 銘柄)。BFI82U の 6 行のうち外国人自己売買部門は独立した 1 行ですが、Blave のデータ系列ではこの行は 2024-08-16 以降、毎日 0 です。

ヒント: BFI82U と T86 はどちらも上場(集中市場)のみを対象とします。メディアが「今日の外国人買い越しは XXX 億」という場合、通常はこの数値です。店頭(OTC)の機関投資家動向は櫃買センター(TPEx)の別レポートを見る必要があります。

この数値は後から修正されるのか?

されません。TWSE はレポート注記ではっきり書いています:

「本統計情報には通常取引、単元未満株、引け後定価取引、大口取引を含み、競売及び入札は含まない。」
「本情報は当日の原始約定状況に基づき集計し、証券会社が申告した記帳誤り、口座訂正等の調整後データでは集計しない。」

つまり機関投資家売買超過は原始約定のスナップショットであり、公表後に記帳訂正で遡って調整されることはありません。この点は信用買い残高とちょうど逆です——信用買い残高の与信機関は翌日もまだ帳簿を調整しており、TWSE は「前日残高」を基準とするよう明言しています(〈信用買い残高の使い方〉参照)。同じ需給データでも二つの指標はデータの性質が異なり、リサーチでの扱いも同じであってはなりません。

公表は引け後の当日午後です。TWSE の公式ページに時刻の明文はないため、本稿では分単位の言い方はしません。

どこからが大きい? 2025-09-17~2026-09-16 の値域

一日のネット売買超過の分布、単位は億 TWD。期間 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):

機関(億 TWD) 絶対値の中央値 p80p90p99 期間最大
外国人2625457571,3401,883
投資信託4288135267383
自己売買部門75156206548822

外国人の一日の売買超過が 260 億 TWD 前後というのは日常茶飯事で、この期間の上位 10% に入るには 757 億 TWD 超が必要です。投資信託は規模が一段小さく、中央値はわずか 42 億 TWD——三者を同じ物差しで見ると、投資信託の「大きな動き」が何事もないように見えてしまいます。

最も重要な点:自己売買部門の列は「自己売買部門が強気」ではない

多くの人は機関投資家データを読むとき、自己売買部門のネット額を証券会社の自己売買デスクの方向感だと受け取ります。しかし TWSE は自己売買部門を「自己売買」と「ヘッジ」の二列に分けて開示しており、後者の規模は前者をはるかに上回ります。

直近 60 営業日の実測(TWSE BFI82U を日次で直接取得、2026-06-24~2026-09-16、n=60):

観察項目数値
ヘッジが自己売買部門の売買代金に占める割合(買+売)78.0%
ヘッジのネット額が自己売買部門の絶対ネット額に占める割合(日次中央値)76.6%
ヘッジの日平均売買代金 vs 自己売買の日平均769 億 TWD vs 218 億 TWD
期間平均ネット額ヘッジ −81.1 億 TWD/日、自己売買 −8.3 億 TWD/日
両者が同方向の日数/日次相関73.3%/r=0.716

言い換えれば、あなたが見ている「自己売買部門の買い越し」は、その規模の八割近くがヘッジの列から来ています。合算して見るとヘッジが支配的ですが、完全に決まるわけでもありません(r=0.716)——自己売買部門の方向を読むなら、最低でも二列を分けて見る必要があります。

ヒント: TWSE はヘッジと自己売買を分けて開示するだけで、ヘッジ・ポジションの発生要因はどのレポート注記でも定義していません。市場でよく聞く「ヘッジ=ワラントのマーケットメイク」という説明は公式の明文が見つからないため、本稿ではそう書きません。確実に言えるのは規模の比率であって、その背後の動機ではありません。

外国人+投資信託+自己売買部門は「合計」と一致するのか?

しません。foreigninvestment_trustdealer の三列を足しても、ニュースにある「機関投資家合計」とは合いません——計算を間違えたわけではありません。

TWSE の公式合計は四項目の和です:外国人・中国系投資家(外国人自己売買部門を除く)+投資信託+自己売買部門(自己売買)+自己売買部門(ヘッジ)。外国人自己売買部門の列は公式合計に算入されません。しかし Blave API の dealer 列は外国人自己売買部門を取り込んでいるため、三列の和=公式合計+当日の外国人自己売買部門ネット額となります。

2019-06-03 の市場全体を例にとると(FinMind の元データ、単位 TWD):

項目ネット額公式合計に算入
外国人・中国系投資家+4,256,940,836する
投資信託−470,794,770する
自己売買部門(自己売買)+234,212,750する
自己売買部門(ヘッジ)−634,731,645する
外国人自己売買部門−1,635,530しない
公式合計+3,385,627,171上の四項目の和

上の四項目の和は公式合計と一円の狂いもなく一致し、除外されているのは外国人自己売買部門のあの −1,635,530 TWD——そしてそれは Blave API の dealer 列の中にあります。2018–2024 では合計 1,553 営業日で三列の和が公式合計と一致しません。2024-08-16 以降この列は 0 のままなので直近の差はゼロですが、過去区間の乖離は実在します。

したがってニュースや公式発表の数値と合わせたいなら、三列を自分で足すのではなく total 列を直接読んでください——total は公式合計そのものであり、各列の和として算出されたものではありません。直近データだけなら両者は同じです。区間が 2024 年以前にまたがり、かつ外国人自己売買部門を単独で切り出したい場合は、BFI82U の元レポートに戻ってください。そこでは独立した 1 行であり、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% 対 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

# 市場全体:単位は TWD、フィールドは 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          # TWD。これはデータの水準帯であって、バックテストで得たパラメータではない

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)——「5 日連続の買い越し」は思っているより稀です
個別銘柄の一日ネット額個別銘柄の需給条件、スクリーニングのフィルター単位は株。上場は T86、店頭は TPEx で、どちらも利用可能
個別銘柄の分割フィールド自己売買部門からヘッジを取り除きたいとき分割フィールドを保持しているのは個別銘柄の層だけ

本稿の例が市場全体の一日ネット額を使う理由は単純です。値域と相関の実測はすべてこの層で行っており、そうしてこそ閾値の水準帯が噛み合うからです。個別銘柄の層に移すなら、水準帯はその銘柄自身の分布で計算し直す必要があります。

正直な注意: 機関投資家の売買超過は参考データであって、売買シグナルではありません。本稿の数値にはすべて期間とサンプル数を明記しており、サンプルは正直です。外国人の売買超過と翌日の指数リターンの相関係数は +0.097(n=230)、5 年サンプルでは +0.053(n=1,200)——ほぼゼロです。「機関投資家が買い越した」をそのまま「明日は上がる」に翻訳する言説は、このデータの上では成り立ちません。これで戦略を組むなら、条件として、フィルターとして使い、そのうえでバックテストしてください(バックテストレポートの読み方は〈バックテストの読み方〉参照)。

定義が分かったら、次はそれを検証できる条件に変える番です。Blave Agent にこのデータを取得させ、フィルターとして書かせ、バックテストさせてください——データ層もフィールドも既に繋がっているので、あなたは何を検証したいかを言うだけです。市場全体と個別銘柄のチャートは Studio でも直接見られます:市場全体の機関投資家動向個別銘柄の需給