查看原文
其他

神器Tushare,财经数据必备工具!

Lemon Python数据之道 2022-09-04


作者:Lemon

来源:Python数据之道

财经数据神器 Tushare

大家好,我是 Lemon 。

01 背景

前一段时间, Lemon 发了一期视频,分享了 Plotly 和 Dash 在投资领域的应用案例。

看完视频后,有同学提了如下的一个问题:

问题

关于财经数据,有多个Python库可以供咱们选择,其中 tushare 是国内较早开始发布财经数据的社区,其内容比较完善,今天咱们来重点介绍下 Tushare 。

Tushare 是一个金融大数据平台,数据内容包含股票、指数、基金、期货、债券、外汇、行业大数据等,同时包括了数字货币行情等区块链数据,为各类金融投资和研究人员提供适用的数据和工具,概览如下:

tushare概览

全部内容很丰富,为了有助于大家有个整体的了解,Lemon 绘制了一张完整的思维导图,截图如下:

tushare思维导图

注:文末提供了上图的高清pdf版的获取方式。

下面咱们一起来了解下这个高大上的财经数据神器 Tushare 。

02 使用 Tushare

Tushare 平台的数据,已全面升级到 tushare pro 了,通常情况下,还是称之为 tushare。

想使用 tushare 中的数据和功能,首先需要进行注册,获得一份 token (一串字母和数字组成的文本),然后才可以获取到数据,大家可以通过以下链接来注册(也可以点击文末的“阅读原文”):

https://tushare.pro/register?reg=129033

数据获取

tushare 中注册后,通过 “个人主页”——“接口TOKEN” 可以找到自己的 token 值,界面如下:

tushare接口TOKEN

复制 token 值,然后在代码中进行如下设置:

# 设置 token
# tushare 注册地址:https://tushare.pro/register?reg=129033
# 以上方法只需要在第一次或者token失效后调用,完成调取tushare数据凭证的设置,正常情况下不需要重复设置。
ts.set_token('你的token值')

pro = ts.pro_api()

在设置好 token 值后,我们就可以开始获取数据。

03 沪深股票

作为国内的投资,首先要接触的当然就是 A股,也就是沪深两市的股票。Tushare 在沪深股票方面,提供了大量的功能和接口,可以供咱们来使用,主要包括 基础数据、行情数据、财务数据和市场参考数据四个子板块。

沪深股票

每个细分板块都提供一些特定的接口来获取数据,下面分享部分用的较多的功能。

获取交易日历信息

通过 trade_cal 可以便捷的获取所有的交易日的日期信息,代码如下:

df = pro.trade_cal(exchange_id='', start_date='20180101'
                   end_date='', fields='pretrade_date',
                  is_open='0')

df

这个信息获取来有什么用呢?

在下面的文章中,曾提到过在绘制股票交易图表时,希望能够隐藏周六日和节假日,只显示交易日的交易信息,有了 tushare 的这个功能,就可以快速的对沪深股市进行设置。即从全部日期中剔除交易日,就是想隐藏的周六日和节假日的范畴了。

股票列表

获取股票信息列表也是我们经常需要获取的数据之一,在 tushare 中可以有几种方法来获取,包括 pro.stock_basicpro.query

股票列表

通过这个功能,可以快速的了解到,当前沪深两市,有4000多只股票在正常交易。

也可以通过下面的方法来获取这些信息:

#查询当前所有正常上市交易的股票列表
data = pro.query(
    'stock_basic', exchange='', list_status='L'
    fields='ts_code,symbol,name,area,industry,list_date,list_status')
data

股票的日线行情数据

获取日线行情数据,这恐怕是平时使用最多的功能了。在 tushare 中,日线行情数据的接口是 daily ,目前在 tushare 中可以通过三种方式来获取股票的日线行情数据。

  1. pro.daily() 方式

可以使用下面的代码来获取茅台股份的日线行情数据,如下:

日线行情

此外,还可以同时获取多只股票的日线行情数据,代码如下:

# 获取多只股票日线行情数据
# 茅台,600519.SH
# 300433 蓝思科技
data = pro.daily(
    ts_code='600519.SH,300433.SZ',
    start_date='20180101',
    end_date='20210120')
data

pro.daily() 方法还可以获取某个交易日,整个沪深市场所有股票的日线行情数据,如下:

# 获取历史某天全部股票的交易数据
df = pro.daily(trade_date='20210120')
df
  1. pro.query() 方法

第二种获取日线行情数据的方式是使用 pro.query() ,示例如下:

# 获取单只股票日线行情数据
# 300433 蓝思科技
data = pro.query('daily', ts_code='300433.SZ'
                 start_date='20180101', end_date='20210120')

data
  1. ts.pro_bar() 方法

此外,tushare 还提供了通用行情接口 pro_bar ,目前整合了股票(未复权、前复权、后复权)、指数、数字货币、ETF基金、期货、期权的行情数据。可以通过这个方法实现多种标的数据的获取。

通用行情接口,适合多种数据的获取。

# 获取多个股票的数据,有 bug?
data = ts.pro_bar(
    ts_code='600519.SH',
    start_date='20180101',
    end_date='20210120',
    adj='qfq',
)
data

上面的参数 adj ,复权因子,只适用于股票交易数据, qfq 表示的是 前复权。

04 指数数据

除了股票数据的获取,通常情况下,还会经常关注指数的行情,比如上证综合指数、沪深300指数等。Tushare 提供的指数分类信息如下:

指数

指数基本信息

通过接口 index_basic 可以获取不同市场指数的基本信息,比如可以设置参数 market='CSI 来获取中证指数的基础信息。

指数基本信息

目前,通过 tushare ,可以快速的获取以下市场的基本信息:

市场分类

指数日线行情数据

指数日线行情数据可以通过 index_daily 接口 或 通过行情接口 来获取数据。

  1. index_daily 接口
指数日线行情

index_daily 方法可以设置获取数据的开始日期和结束日期,如下:

# 获取沪深300指数的日线行情
# 设置开始和结束日期
df = pro.index_daily(ts_code='000300.SH',
                     start_date='20180101'
                     end_date='20210120')
df
  1. 通用行情接口

同样的,可以通过通用行情接口来获取指数的数据,设置参数 asset=I ,表示获取的是指数数据(I:index),代码如下:

df = ts.pro_bar(ts_code='000300.SH',
                asset='I',start_date='20180101', end_date='20210120')
df

05 积分

上面提到的这些接口和功能还只是很小一部分。

Tushare 提供的功能确实很多,而且基础功能都是免费提供的。在本文刚开始的时候,跟大家提到了使用 tushare 需要进行注册。

为啥需要注册呢,因为 tushare 进行了不同积分权限的设置,不同的积分,获取数据的权限是不一样的。

上面跟大家介绍的常用的接口和功能,大部分是注册之后就可以使用的。如果想更高频率的获取数据,或者想获取公募基金数据、港股、美股数据等,就需要提高积分权限了。

目前, tushare 官方给的一些提高积分的方法,有那么几种,一种是金额赞助,可以去换积分。另一种是官方给了一些推广的途径,去帮它推广也可以获取积分。

比如大家通过本文的 “阅读原文” 来注册 tushare 的话,我可以获得一丢丢的积分,哈。

其实,也是需要理解 tushare官方 的这种做法的,毕竟天下没有免费的午餐。这么好用的工具,如果完全免费,tushare官方估计也很难维护这样一个社区。

重要的事情,欢迎大家通过本文的 “阅读原文” 来注册 tushare。

此外,在本文开头提到的思维导图,Lemon 也给大家提供了一份高清晰的pdf版本,想要获取的同学,可以在公众号 「Python数据之道」 后台回复 code 来获取。

拓展阅读

在下面的文章里,Lemon 使用 Tushare 作为工具之一进行应用,有兴趣的同学可以点击链接前往:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存