POLOXUE's BLOG

POLOXUE's BLOG

04 Dec 2024

从 Tushare 数据下载金融数据

本文继续介绍如何获取金融数据。我将用 tushare 下载金融数据,主要还是通过最基础的数据介绍它的使用。

什么是 Tushare?

Tushare 是一个 Python 开源金融数平台,最初由 Jimmy 开发的,最早版 tushare 是借助爬虫从财经数据平台如新浪财经实时抓取数据。可查看 tushare.org,这是 tushare 早期的文档。

2018 年,Tushare 经过了几年的发展,Tushare 开发了独立的数据平台-tushare.pro,从爬虫方案改为自建服务存储数据,数据质量上有了质的提升,让 Tushare Pro 成为了金融分析师和研究人员常用的金融数据源之一。

我曾参与 Tushare 的开发工作,大概2018 下半年的半年时间,和 Tushare 作者 Jimmy 一起开发了 Tushare 的新平台,主要是构建了数据上线的流程,从零搭建了这个平台,为其提供了配置支持,简化了数据上线流程,加快了数据上线效率。

安装与注册

首先,你需要安装 Tushare 的 Python 包,在终端中运行以下命令来安装 Tushare。

1
pip install tushare

然后,注册 tushare.pro,获取 API 密钥。这个过程我就不介绍了,可查看 tushare.pro 操作手册

验证是否安装成功:

1
2
3
4
5
6
import tushare as ts

ts.set_token("Your API Token")
pro = ts.pro_api()
data = pro.daily(ts_code="000001.SZ")
print(data)

输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
        ts_code trade_date   open   ...        vol        amount
0     000001.SZ   20241206  11.44   ... 1726269.27  2.004270e+06
1     000001.SZ   20241205  11.44   ...  687108.83  7.861380e+05
2     000001.SZ   20241204  11.44   ... 1007470.59  1.154623e+06
3     000001.SZ   20241203  11.37   ... 1082559.36  1.236993e+06
4     000001.SZ   20241202  11.39   ...  975433.66  1.108786e+06
...         ...        ...    ...   ...        ...           ...
5995  000001.SZ   19990713  21.80   ...  305130.00  6.368993e+05
5996  000001.SZ   19990712  23.70   ...  269953.00  6.109031e+05
5997  000001.SZ   19990709  23.80   ...  139487.00  3.281077e+05
5998  000001.SZ   19990708  23.30   ...  156405.00  3.746743e+05
5999  000001.SZ   19990707  23.00   ...  244797.00  5.773778e+05

[6000 rows x 11 columns]

数据内容

Tushare 作者米哥 Jimmy 本身是有专业金融数据商的深度经验,从 Tushare 的数据组织上就能看出来,非常清晰和完善,基本上你想要的数据,tushare pro 都有提供,完全不亚于专业数据提供商。

积分费用

Tushare Pro 上每个接口都有积分要求,股票的日线行情调用积分要求是 120 积分,不过只要注册和修改昵称就能得到这 120 积分,所以说这部分数据就是免费的。更高阶的数据的积分也会要求比较高,关于它如何获取积分,文档 平台积分 中有具体的描述。

tushare 的积分可以通过邀请注册或者社区贡献获取,如多写几篇教程文章,其实难度不算高。如果不想浪费这个时间,积分也是通过捐助的方式获取,其实就是花钱买,100 块能得到 1000 积分,积分有效期一年。大概有 2000 积分,能调用 60% 的数据了,5000 积分的话,除了部分特色数据和高频数据,其余数据基本都能调用。这个费用不算高,我看过其他一些数据商,数据通常是分类售卖,1000 块也只能买到某个品类下的基础数据。

总体而言,虽然说 tushare 有收费,不过相对于其他的数据提供商,还是降低了普通散户获取专业金融数据的门槛。

开始介绍它的数据吧,我还是按照上篇介绍 akshare 的思路介绍如何在 tushare 获取 A 股的一些数据吧。

A 股数据

Tushare 提供了丰富的股票数据,包括历史行情、实时行情等,还提供了每日指标,方便我们选股。

历史行情

Tushare 提供了历史行情日/周/月线数据,包含了股票的开盘价、收盘价、最高价、最低价等信息,还有如。

示例代码:

1
2
3
4
5
6
# 获取某只股票(如平安银行)的历史日线数据
pro.daily(ts_code='000001.SZ', start_date='20230101', end_date='20231231')
# 获取某只股票(如平安银行)的历史周线数据
pro.weekly(ts_code='000001.SZ', start_date='20180101', end_date='20181101'
# 获取某只股票(如平安银行)的历史月线数据
pro.monthly(ts_code='000001.SZ', start_date='20180101', end_date='20181101'

daily 的积分要求是 120,weekly 和 monthly 要更高的积分才能调用。不过这两个接口,我们是可以通过 pandas 提供的 resample 将日线聚合成周线和月线,可以不用调用这两个接口。

如果你有更高频的数据要求,如分钟线,这块是付费数据。Tushare Pro 封装了一个 pro_bar 的通用行情接口,其中直接不同品类、不同频率的行情数据。

如获取分钟数据,示例如下:

1
ts.pro_bar(ts_code='000001.SZ', adj='qfq', freq='1', start_date='20180101', end_date='20181011')

实时行情

Tushare 的实时行情不是自建服务,就是提供了其他平台的转发。在 Tushare 中提供了便于使用接口。

1
ts.realtime_quote(ts_code='600000.SH,000001.SZ,000001.SH')

输出:

1
2
3
4
     NAME    TS_CODE      DATE      TIME       OPEN  PRE_CLOSE      PRICE  ...   A2_P  A3_V   A3_P  A4_V   A4_P  A5_V   A5_P
0  浦发银行  600000.SH  20231222  15:00:00      6.570      6.570      6.580  ...  6.590  1834  6.600  4107  6.610  2684  6.620
1  平安银行  000001.SH  20231222  15:00:00      9.190      9.170      9.200  ...  9.210  2177  9.220  2568  9.230  2319  9.240
2  上证指数  000001.SH  20231222  15:30:39  2919.2879  2918.7149  2914.7752  ...      0            0            0            0

财报数据

Tushare 提供了上市公司财报数据,包括资产负债表、利润表和现金流量表。

示例代码:

1
2
3
4
5
6
7
8
# 资产负债表
pro.balancesheet(ts_code='000001.SZ')
# 利润表
pro.income(ts_code="000001.SZ")
# 现金流量表
pro.cashflow(ts_code='000001.SZ')
# 分红送股
pro.dividend(ts_code='000001.SZ')

除此以外,还提供了财务指标数据,便于进行选股。

1
pro.fina_indicator(ts_code="000001.SZ")

说到财务指标,其实 Tushare Pro 的技术指标因子,如果你不想算的,可以从如下接口获取。

1
pro.stk_factor(ts_code="000001.SZ")

宏观经济

Tushare 提供了多种宏观经济数据,涵盖了 GDP、PMI、利率等重要经济指标。

GDP 数据

示例代码:

1
pro.cn_gdp(start_q="2018Q1", end_q="2019Q3")

输出:

1
2
3
4
5
6
7
8
  quarter       gdp  gdp_yoy       pi  pi_yoy        si  si_yoy        ti  ti_yoy
0  2019Q3  712845.4      6.2  43005.0     2.9  276912.5     5.6  392927.9     7.0
1  2019Q2  460636.7      6.3  23207.0     3.0  179122.1     5.8  258307.5     7.0
2  2019Q1  218062.8      6.4   8769.4     2.7   81806.5     6.1  127486.9     7.0
3  2018Q4  900309.5      6.6  64734.0     3.5  366000.9     5.8  469574.6     7.6
4  2018Q3  646710.9      6.7  39799.8     3.4  261822.8     5.8  345088.2     7.7
5  2018Q2  417215.4      6.8  21576.2     3.2  168558.1     6.1  227081.1     7.6
6  2018Q1  197920.0      6.8   8574.4     3.2   77116.7     6.3  112229.0     7.5

PMI 数据

PMI(采购经理人指数)反映了制造业经济的活跃程度。

示例代码:

1
2
# 获取最新的PMI数据
pro.cn_pmi(start_m='201901', end_m='202003', fields='month,pmi010000,pmi010400')

利率数据

Tushare 提供了中国央行的利率数据,帮助分析货币政策的变化。

示例代码:

1
2
# 获取贷款基础利率
pro.shibor_lpr(start_date='20180101', end_date='20181130', fields='date,1y')

其他还有cpi、ppi 等,就不一一演示了,可查看文档 宏观经济-国内宏观

特色数据

Tushare 还提供了如新闻联播文字稿、实时新闻资讯、甚至是新冠疫情的数据。

如新闻资讯数据,帮助我们及时了解股市、经济等领域的最新动态。

示例代码:

1
2
# 获取最新的股市新闻资讯
pro.news()

输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
                datetime                                            content title
0    2024-12-09 14:14:57  东吴证券维持宇通客车买入评级预计公司产销景气度将继续提升东吴证券研报指出宇通客...  None
1    2024-12-09 14:13:18  收购资产不及预期股价盘中一度跌停国网信通最新回应国网信通低开低走盘中一度触及跌停...  None
2    2024-12-09 14:12:21  高盛:《燕云十六声将是网易-S在2025年最重要的游戏发布和贡献之一高盛发布研究报告称...  None
3    2024-12-09 14:11:58  招银国际重申途虎-W买入评级 目标价升至26港元招银国际发布研究报告称重申途虎-...  None
4    2024-12-09 14:10:36  国债期货午后冲高回落30年期主力合约涨幅收窄至0.09%10年期主力合约跌0.01%5...  None
..                   ...                                                ...   ...
995  2024-12-08 20:58:39   伊朗外交部德黑兰继续支持国际机制特别是联合国安理会第2254号决议以推进叙利亚的政治进程  None
996  2024-12-08 20:57:45  伊朗外交部声明称伊朗呼吁迅速结束军事冲突防止恐怖主义行动并在叙利亚社会各界的参与下开始...  None
997  2024-12-08 20:57:38  也门胡塞武装与伊拉克民兵武装联合袭击以色列南部目标当地时间12月8日也门胡塞武装表示...  None
998  2024-12-08 20:56:25      伊朗外交部声明称伊朗尊重叙利亚的统一和国家主权叙利亚的前途和命运完全由叙利亚人民决定  None
999  2024-12-08 20:45:39                     约旦国王阿卜杜拉敦促避免叙利亚发生任何可能导致混乱的冲突  None

[1000 rows x 3 columns]

总结

Tushare 是一个强大的数据平台,主要适合于中国市场,包括 A 股、期货、期权等。通过简单的 API 调用,你可以轻松获取各类金融数据,并进行分析与研究。如果你正在寻找一个免费且高质量的金融数据源,Tushare 无疑是一个不错的选择。

有兴趣的话,还可以到它文档中搜寻一番,看看是否新的有趣数据是,或许能发现一些有意思的数据。据我之前的了解,Tushare 的作者米哥对挖掘新数据特别感兴趣。

本文来源于 POLOXUE's BLOG,地址: 从 Tushare 数据下载金融数据