使用 Tiingo 作为量化分析数据源

在学习量化交易过程中,数据源非常重要。之前一段时间使用的是 Quandl 提供的免费数据,然而现在发现它免费的数据里并没有 ETF,而且一些数据也有问题(例如 SHAK 拿不到正确的数据),遂决定寻找替换方案。从 pandas-datareader 了解到 Tiingo 这个数据源,一番测试下来,觉得符合自己目前的需求。

首先需要在 Tiingo 注册账号,得到自己的 API Key。

然后安装开源的 API 客户端 Tiingo Python

$ pip install tiingo

使用方法:

from tiingo import TiingoClient

config = {}
config['session'] = True
config['api_key'] = "MY_SECRET_API_KEY"

client = TiingoClient(config)

historical_prices = client.get_ticker_price("GOOGL",
                                            fmt='json',
                                            startDate='2017-08-01',
                                            endDate='2017-08-31',
                                            frequency='daily')

get_ticker_price 取得的历史数据会是 json 格式的,为了方便使用,我对其进行了简单的封装,将值转换成 DataFrame

def get_df_from_tiingo(symbol, start, end):
    df = pd.DataFrame(client.get_ticker_price(symbol,
                      startDate=start,
                      endDate=end,
                      frequency='daily'
                     ))
    df.set_index('date', inplace=True)
    df.index = pd.to_datetime(df.index)
    del df.index.name
    return df