跳至主要內容
FinLab

外資買入成本指標選股:Python 自製三大法人指標教學

上次已經介紹了如何爬取外資爬蟲~這次我們就用三大法人來製作指標! 自己做指標的好處是,數字都可以客製化,也可以搭配其它不同的指標進行選股和回測喔! 這次我們要做的指標是「外資買入成本」!

外資買入成本指標選股示意圖

計算指標前,先整理好財務數據

(沒上課程的請看這邊,上了課的可以跳過看下一段)

在計算外資買入成本前,我們必須要或得兩個 DataFrame:

  1. 「收盤價」
  2. 「外資買入張數」

這兩個 DataFrame,其 columns 是股票的代號,而 index 是每天的日期, 這兩個 DataFrame 要怎麼做出來呢?

首先,可以參考之前的文章,學習爬取股價跟三大法人:

  1. 爬取股價資訊
  2. 爬取三大法人買賣超

接下來,我們可以將這先每天都有的資料轉換成時間序列的 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 範例

這樣就可以,直接得到dataframe囉! 賣出也是依法炮製:

顯示程式碼
# 外資賣出(2017-12月後的格式)
陸資賣出 = data.get('外陸資賣出股數(不含外資自營商)', 250)
外資賣出 = data.get('外資自營商賣出股數', 250)
 
外資賣出 += 陸資賣出
 
# 外資賣出(2017~12月前的格式)
外資賣出.fillna(data.get('外資賣出股數', 250))

外資賣出股數 DataFrame 範例

然後是收盤價:

顯示程式碼
# 收盤價
收盤價 = data.get('收盤價', 250)

接下來我們就可以來計算指標了,首先:外資買入成本

其實這一步驟是最簡單的XD 最重要的只有兩個 function

  1. DataFrame 乘法:DataFrame的乘法很聰明,會將一樣的column name 跟 index 對應到的數字相乘,所以我們可以直接寫 外資買入 * 收盤價 這樣子的語法
  2. 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])

這樣就可以看到所有股價小於外資成本的股票囉! 方便您繼續追蹤,看這些股票有沒有突破外資成本,一飛沖天喔!

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始