前言
許多人接觸到 Python,開始學習"網路爬蟲"、"資料分析"、"機器學習",有一部分的人是因為「股票」。但要自己爬取資料確實有點麻煩,而且不同網站可能還有反爬蟲的機制,這對於想要資料來做資料分析、預測股價的人來說,可能就是一個卡在前面的阻礙。
之前我發現一個 FinMind API,主要以台股為主,提供很多項的金融開源數據,方便讓我們來使用。
本篇文章會挑幾項功能來說明,以及 Python 範例程式碼。
FinMind 套件簡介
FinMind 提供以台股為主,超過 50 種金融相關數據資料,除了 API 可以取得資料、回測、繪製 k 線圖、儀表板,也提供網頁版的操作介面、策略分析與資料集下載功能。
因為是透過 API 串接,不限制程式,你想要使用 Python、JavaScript、PHP、C++、Java、Ruby……都可,或直接透過它的官網下載資料,對於想要做大數據、資料分析、預測股價的人來說,應該算是一個很方便的工具。
從官方 API 文檔可以看到大概有以下資料:
技術面 : 台股股價 daily、歷史 tick 逐筆交易、PER、PBR、每5秒委託成交統計、台股加權指數。
基本面 : 綜合損益表、現金流量表、資產負債表、股利政策表、除權除息結果表、月營收。
籌碼面 : 外資持股、股權分散表、融資融券、三大法人買賣、借券成交明細。
消息面 : 台股相關新聞。
衍生性商品 : 期貨、選擇權 daily data、交易明細、期貨三大法人買賣,期貨各卷商每日交易、選擇權各卷商每日交易。
國際市場 : 美股股價 daily、minute、美國債券殖利率、貨幣發行量(美國)、黃金價格、原油價格、G8 央行利率、G8 匯率、
ℹ 但比較可惜的一點是目前「不提供即時資料」,看文檔的說明是說由於資料源問題,移除即時報價:https://finmind.github.io/WhatIsNew/
教學
FinMind API 文檔 內都有簡單的程式碼範例,這邊我就挑其中的五種來示範說明。
程式一開始,先將需要的套件匯入,pandas
不一定要有(這裡只是拿來方便看資料):
|
|
股價日成交資訊
這項資料就是臺灣證交所的個股日成交資訊
|
|
輸出結果如下:
欄位依序代表:“日期”、“股票代碼”、“成交股數”、“成交金額”、“開盤價”、“最高價”、“最低價”、“收盤價”、“漲跌價差”、“成交筆數”
股票當日逐筆成交資訊
|
|
輸出結果如下:
欄位依序代表:“日期”、“股票代碼”、“成交金額”、“成交量”、“時間”、“漲跌(1:漲;2跌)”
股票綜合損益表
|
|
輸出結果如下:
股利政策表
|
|
輸出結果如下:
外幣對台幣匯率
共有 19 種幣別與新臺幣(TWD)的匯率,資料來源為台灣銀行,應該就是此網頁。
|
|
輸出結果如下:
欄位依序代表:“日期”、“貨幣”、“現金匯率>銀行買入”、“現金匯率>銀行賣出”、“即期匯率>銀行買入”、“即期匯率>銀行賣出”
範例程式碼
我將以上功能包裝成 class 的完整範例程式碼,附上給需要的人參考。
GitHub Gist:stock_finmind.py
流量限制 & 會員機制
FinMind API 有流量限制,每小時最多 300 次請求,如果註冊成為會員(免費),則提升至 600 次 / 小時。
另外還有兩種付款的會員,除了差在每小時的請求限制外,某些功能只有付費會員能使用,例如一次拿特定日期中全部股票的資料。
更多詳細會員機制的 "贊助方案" 參考官網說明:https://finmindtrade.com/analysis/#/Sponsor/sponsor。
結語
以上是直接對 API 請求,如果你是使用 Python,還有官方包裝好的套件(GitHub),還幫你寫好幾項量化工具 (回測、K 線、客製化看盤儀表板) 可方便使用。
更多其他資料或範例,參考 FinMind API 官方文檔。
除了本篇介紹的 FinMind,還有其他許多股票相關的套件可以嘗試:
- twstock https://github.com/mlouielu/twstock
- yahooquery https://github.com/dpguthrie/yahooquery
- pandas-datareader https://github.com/pydata/pandas-datareader
歡迎追蹤『IT空間』FB 粉專,取得最新發文通知🔔
參考:
FinMind 官方網站
FinMind API 文檔
FinMind GitHub
People at work, money at work.
人可以工作,錢也可以幹活。
🔻 如果覺得喜歡,歡迎在下方獎勵我 5 個讚~