上次已經介紹了如何爬取外資爬蟲~這次我們就用三大法人來製作指標! 自己做指標的好處是,數字都可以客製化,也可以搭配其它不同的指標進行選股和回測喔! 這次我們要做的指標是「外資買入成本」,也就是投資人常說的外資成本線。它屬於估算指標:用外資買賣超張數與股價估算近期平均進出價,適合拿來觀察籌碼壓力與支撐區。

在算外資成本之前,先看懂外資買賣超的全貌:外資賣超原因全解析:外資一直賣、股價為什麼不跌?。
外資成本線怎麼看
外資成本線是「外資近期買進均價」的估算值,適合拿來判斷籌碼壓力,而不是單獨當買賣訊號。它回答的是:外資這段時間願意在什麼價位附近累積部位?股價落在成本線附近時,後續要看外資有沒有續買、成交量是否放大、基本面是否同步改善。
| 股價與外資成本線的位置 | 常見解讀 | 需要搭配檢查 |
|---|---|---|
| 股價低於外資買進成本 | 外資帳面可能處於虧損區,後續若續買,成本線可能形成壓力或支撐參考 | 外資是否連續買超、成交量是否縮到難以出場 |
| 股價站回外資買進成本 | 籌碼壓力下降,市場重新接受外資成本區 | 月營收、ROE、價格動能是否同步轉強 |
| 股價遠高於外資成本 | 外資帳上已有浮盈,短線拉回或調節機率提高 | 外資買超是否轉弱、法人是否換手給散戶 |
| 外資成本線快速上移 | 外資用較高價格追買,通常代表籌碼轉強 | 避免只看單日大量,至少看 20~60 日趨勢 |
這個指標最適合當「觀察清單」的濾網:先找出股價接近外資近期成本、外資沒有明顯撤退的股票,再用台股選股完整框架補上基本面、技術面與風險檢查。若只用「低於外資成本」一條件進場,容易買到外資一路攤平卻基本面轉弱的股票。
外資成本線 app 與自己算的差別
許多看盤軟體或籌碼 app 會直接顯示外資成本線,適合快速觀察;自己用 Python 算的價值在於可以調整口徑。不同口徑會得到不同成本線,所以做比較時要固定規則。
| 口徑 | 優點 | 盲點 |
|---|---|---|
| 看盤軟體現成外資成本線 | 開圖就能看,適合盤中快速判斷 | 不一定知道計算期間、是否扣除賣超、是否處理換手 |
| 只看外資買進加權成本 | 計算直覺,能抓出外資近期願意買的價格 | 賣超壓力沒有反映,適合觀察買方成本,不適合推估完整持倉 |
| 買進與賣出成本都算 | 可以同時觀察外資買方與賣方的壓力區 | 對資料品質與視窗參數更敏感 |
| 搭配回測與選股條件 | 可以驗證這條線是否真的改善策略 | 需要處理成本、流動性與前視偏差 |
本文用 60 日 rolling 視窗示範,是為了讓讀者看懂計算邏輯。實務上可以測 20、60、120 日三種視窗:20 日反應快但雜訊多,120 日較穩但轉折慢,60 日通常適合當中期籌碼觀察。任何參數都不要憑感覺決定,應該放進回測與交易成本一起檢查。
計算指標前,先整理好財務數據
(沒上課程的請看這邊,上了課的可以跳過看下一段)
在計算外資買入成本前,我們必須要或得兩個 DataFrame:
- 「收盤價」
- 「外資買入張數」
這兩個 DataFrame,其 columns 是股票的代號,而 index 是每天的日期,
這兩個 DataFrame 要怎麼做出來呢?
首先,可以參考之前的文章,學習爬取股價跟三大法人:
接下來,我們可以將這先每天都有的資料轉換成時間序列的 DataFrame:
時間序列實做
以上這篇文章只有教您怎麼整理「收盤價」,沒有教您怎麼整理「三大法人買賣資訊喔!」
但原理都是一樣的,所以就依法炮製可以做出「三大法人」的 DataFrame 喔!
好麻煩喔!有沒有更快的方式?(利用課堂的工具)
假如您有上課程的話,利用 爬取三大法人買賣超 這篇文章, 就可以將三大法人買賣超的資訊整理好喔!
所以您用我們課程中的code,只需要額外增加:
顯示程式碼
from finlab.data import Data
data = Data()以上的code就是一個可以跟資料庫索取資料的物件,接下來只要把資料讀進來就可以了:
顯示程式碼
# 外資買入(2017-12月後的格式)
陸資買進 = data.get('外陸資買進股數(不含外資自營商)', 250)
外資買進 = data.get('外資自營商買進股數', 250)
外資買進 += 陸資買進
# 外資買入(2017~12月前的格式)
外資買進.fillna(data.get('外資買進股數', 250))
這樣就可以,直接得到dataframe囉! 賣出也是依法炮製:
顯示程式碼
# 外資賣出(2017-12月後的格式)
陸資賣出 = data.get('外陸資賣出股數(不含外資自營商)', 250)
外資賣出 = data.get('外資自營商賣出股數', 250)
外資賣出 += 陸資賣出
# 外資賣出(2017~12月前的格式)
外資賣出.fillna(data.get('外資賣出股數', 250))
然後是收盤價:
顯示程式碼
# 收盤價
收盤價 = data.get('收盤價', 250)接下來我們就可以來計算指標了,首先:外資買入成本
其實這一步驟是最簡單的XD
最重要的只有兩個 function :
- DataFrame 乘法:DataFrame的乘法很聰明,會將一樣的column name 跟 index 對應到的數字相乘,所以我們可以直接寫
外資買入 * 收盤價這樣子的語法 - df.rolling(60).mean():就是時間窗格,例如今天的值,會變成過去60天的值的加總,每一天都如此計算。
所以就有以下的code:
顯示程式碼
外資買進成本 = (外資買進 * 收盤價).rolling(60, min_periods=1).sum() / 外資買進.rolling(60, min_periods=1).sum()就這樣算完了,但是有時候我們防止 DataFrame 裡面有 NaN ,我們希望就算有 NaN 也能算出值,就可以寫成:
顯示程式碼
外資買進成本 = (外資買進 * 收盤價).rolling(60, min_periods=1).sum() / 外資買進.rolling(60, min_periods=1).sum()當中的 min_period=1 代表60天中,只需要有一天不是 NaN,就可以將不是 NaN 的數字取平均喔!
所以這樣寫會是比較建議的。
這邊要注意的是,我們不只算了單一一檔股票,是把所有股票的外資買進成本都算出來囉!
外資賣出成本
這邊一模一樣,所以就直接放code:
顯示程式碼
外資賣出成本 = (外資賣出 * 收盤價).rolling(60, min_periods=1).sum() / 外資賣出.rolling(60, min_periods=1).sum()畫出曲線
我們可以將 買入、賣出 的成本都畫出來:
顯示程式碼
收盤價['1101'].plot()
外資買進成本['1101'].plot(color='red')
外資賣出成本['1101'].plot(color='blue')
紅色的線就是外資的買進成本 藍色的就是賣出成本
當買進成本高於賣出成本時,就是可以考慮買進的時機喔! 或是當股價上漲後,拉回到買進成本線,也是很好的買點喔! 大家可以試著回測看看~~
選股
我們也可以選擇股價小於外資成本的股票清單:
顯示程式碼
cond1 = 收盤價.iloc[-1] < 外資買進成本.iloc[-1]
print(cond1[cond1])這樣就可以看到所有股價小於外資成本的股票囉! 方便您繼續追蹤,看這些股票有沒有突破外資成本,一飛沖天喔!
使用外資成本線的三個限制
第一,外資不是同一個人。 外資買賣超是所有外資帳戶的加總,裡面可能同時有長線基金、ETF 造市、避險部位與短線交易。成本線只能估算整體籌碼壓力,不能解讀成單一主力的成本。
第二,成本線沒有告訴你公司值多少錢。 股價低於外資成本,不代表股票便宜;它只表示近期外資買進均價高於現價。公司基本面是否轉弱、產業是否衰退,仍要看月營收、毛利率、ROE 與估值。想把籌碼與基本面合併,可延伸看法人策略:投信買超加營收動能。
第三,短線交易成本會吃掉訊號。 外資成本線常被拿來做短線支撐壓力,但台股有手續費、證交稅與滑價。若訊號頻繁進出,回測一定要把交易成本內扣;回測觀念可參考回測是什麼。
常見問題(FAQ)
外資成本線是什麼?
外資成本線是用外資買進張數與成交價格估算出的近期平均買進成本。最常見做法是把一段期間內的「外資買進股數 × 收盤價」加總,再除以同期間外資買進股數,用來觀察外資籌碼可能集中在哪個價位。
外資持股成本是什麼?和外資買進成本一樣嗎?
外資持股成本指外資目前持有部位的平均成本。不過公開資料只有每日買賣超股數,無法還原外資真實的帳面成本,因此一般用一段期間的買進加權平均來估算,也就是本文的 60 日 rolling 公式:外資買進股數 × 收盤價加總,除以同期買進股數加總。要注意這種估算沒有扣除賣超,適合觀察買方成本,不適合推估完整持倉;兩個名稱常被混用,實際口徑並不相同。
外資成本線越低越好嗎?
不一定。成本線低只表示外資過去用較低價格累積部位;若股價已經大幅高於成本線,外資可能有調節空間。比較有用的情境是股價回測成本線附近、外資仍持續買超,而且基本面沒有轉弱。
股價跌破外資成本線要賣嗎?
不能只用這個訊號決定。跌破成本線可能代表籌碼轉弱,也可能只是短線震盪。要同時看外資是否連續賣超、成交量是否放大、月營收或獲利是否惡化。若基本面仍強,跌破成本線反而可能只是重新評估風險報酬的位置。
外資成本線和外資買賣超差在哪?
外資買賣超看「方向與力道」,例如今天買超或賣超多少;外資成本線看「價格位置」,也就是外資近期大概在哪個價位累積。兩者搭配才有意義:連續買超且成本線上移,比單日買超更值得追蹤。
外資成本線適合選股嗎?
適合當篩選條件之一,不適合單獨使用。比較穩健的流程是:用外資成本線找出籌碼可能有支撐的股票,再用營收成長、ROE、估值與價格動能過濾,最後用回測確認交易成本後是否仍有優勢。
外資成本要怎麼查詢?
有兩條途徑。第一,直接在看盤軟體或籌碼 app 查現成的外資成本線,速度最快,但不一定知道它的計算期間、是否扣除賣超。第二,用本文的 Python 公式自己算:拿外資買賣超與收盤價套 60 日 rolling 視窗,也可以依需求改測 20、60、120 日;再搭配文末的選股程式,一次列出全市場股價低於外資成本的股票清單,方便持續追蹤。
外資成本線 app 看得到,為什麼還要自己算?
自己算可以固定視窗、調整買賣口徑、把它接到選股與回測流程。現成 app 適合快速看圖,但不一定知道計算期間與細節;要做策略驗證時,自己掌握公式會比較可靠。
延伸閱讀
- 台股選股回測 2026:單因子全輸 0050,複合策略在風險調整後勝出 — 把外資成本線放回完整選股框架中比較
- 法人策略:投信買超 + 營收,年化 31.7% — 從法人籌碼延伸到可回測的選股策略
- 三大法人籌碼比較:外資、投信、自營商怎麼看
- 用 Python 抓台股資料:外資買賣超、月營收與還原價資料源比較
本文僅供教學與研究參考,不構成投資建議。過去績效不代表未來表現,投資一定有風險,請審慎評估自身風險承受能力。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

