iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
4
AI & Data

量化交易30天系列 第 1

量化交易30天Day1 - 串接API,取得價量資料

量化交易30天
本系列文章是紀錄一位量化交易新手的學習過程,除了基礎的Python語法不說明,其他金融相關的東西都會一步步地說明,希望讓更多想學習量化交易但是沒有學過相關金融知識的朋友們,透過這系列的文章,能夠對量化交易略知一二,也歡迎量化交易的高手們多多交流。

量化交易的第一步,當然就是要先拿到股票的價量資料,目前市面上有許多免費的API可以拿到股票資料,而這邊我會使用Tiingo這個資料平台,因為它免費可以使用的量還蠻多的,免費用量如下表:

可以看到最下面Tiingo API的部份,每個月可以使用500檔標的(symbols)資料、每小時500個requests、每日最多requests是20000次、每月5GB的用量。

接下來就來介紹如何使用Tiingo的資料:

  • 先進入Tiingo API首頁,點擊右上角Sign-Up註冊

  • 註冊完之後,平台會給你一個token,就是等一下要帶入Python的程式碼裡面的,這個token在哪裡找呢,如下圖,在Documentation 的 1.2 Connecting的部份,點擊綠色按鈕就可以看得到囉。

  • 由於這邊是使用pandas-datareader套件來串接Tiingo的資料,因此需要回到pandas-datareader的說明文件看看語法怎麼寫,如下圖,語法非常簡單:

    不過經過我實際測試之後,發現api_key的部份,寫法不太一樣,直接等於上面Tiingo給的key的字串即可,不需要有getenv:
import os
import pandas_datareader as pdr

SPY = pdr.get_data_tiingo('SPY', api_key='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')

這樣就拿到美股的資料啦,是不是非常簡單!拿到的資料有包含Open、High、Low、Close(取第一個字母,就稱作OHLC data),以及volume(成交量),不過這些都是未還原的數值,一般分析會使用的是後面開頭有adj的欄位資料,而Tiingo也很貼心的把divCash(發放現金股利)、splitFactor(股票分割)的資料也一起納入,非常方便阿!

  • 科普一下還原/未還原資料、股票分割是什麼
    由於部份的讀者可能不太知道這些名詞代表什麼意義,這邊就舉個例子來介紹一下,我在寫這篇文章的時候,剛好Apple(美股代號AAPL)跟Tesla(美股代號TSLA)執行了股票分割,就爬一下AAPL的資料來看看吧!
date close adjClose volume adjVolume splitFactor
2020-08-28 499.23 124.8075 46907479 187629916 1
2020-08-31 129.04 129.0400 223505733 223505733 4
2020-09-01 134.18 134.1800 152470142 152470142 1

股票分割:就是將原有的股票,按照分割比例,1股分割成多股,通常進行股票分割的目的是降低每股股價,讓資本較小的投資人更容易買進。

AAPL這次的股票分割日是2020-08-31,股票分割比(split factor)是4,代表的就是將1股分割成4股,由於分割後AAPL的股票市值要保持不變,所以分割日前的收盤價應該要除以4,如同8/28號的資料,收盤價(close)是499.23,還原收盤價(adjClose)則是124.8075,就是用499.23除以4得到的數字,以此類推,交易量volume應該是乘以4,因為分割後股數變多了。

所以在做分析的時候,由於資料的一致性,通常就用還原後的價量資料,會是比較好的方式。

本篇總結
這篇寫了抓取Tiingo API的資料,也說明各個資料欄位代表什麼意義,以及科普什麼是還原資料、股票分割,接下來就要開始運用這些資料做點什麼啦,請繼續收看下篇文章。

筆者 Sean
奈米戶投資人 / Python愛用者
喜歡用Python玩轉金融數據,從個股基本面、技術面、籌碼面相關資料,一直到總體經濟數據,都是平常接觸到的素材;對於投資,除了研究歷史數據,也喜歡瞭解市場上大家在玩些什麼。


下一篇
量化交易30天 Day2 - 繪製K線圖
系列文
量化交易30天30

尚未有邦友留言

立即登入留言