金融量化数据接口Tushare & 股票基本接口
一. Tushare简介
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。
Tushare Pro版正是在基础版上做了大的改进,数据内容扩大到包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。今天主要介绍一下沪深股票数据接口的使用
使用前提
- 安装Python
- 安装pandas
- lxml也是必须的,正常情况下安装了Anaconda后无须单独安装,如果没有可执行:pip install lxml
建议安装Anaconda,一次安装包括了Python环境和全部依赖包,减少问题出现的几率。 各平台的安装方法请参考:Anaconda安装教程
下载安装
-
方式1:
pip install tushare
如果安装网络超时可尝试国内pip源,如pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple
-
方式2:访问https://pypi.python.org/pypi/tushare/下载安装 ,执行 python setup.py install
-
方式3:访问https://github.com/waditu/tushare,将项目下载或者clone到本地,进入到项目的目录下,
执行: python setup.py install
注册TUSHARE社区用户
1、 访问Tushare社区门户(https://tushare.pro/register),点击“注册”
2、 填入相应的注册信息,输入正确的手机号号码和图片验证码之后,点击“发送验证码”,可以收到验证码,填入后点“注册”按钮。
获取TOKEN凭证
1、登录成功后,点击右上角->个人主页
2、 在“用户中心”中点击“接口TOKEN”
3、 可以点击右侧复制按钮复制token
4、或者点击右侧睁开眼睛来获取token明文,复制并保存
注意:token是调取数据的唯一凭证,请妥善保管,如发现别人盗用,可在本页面点击“刷新”操作,之前的token将失效。
调取PRO版数据
下面介绍两种常用的数据调取方式:
- 通过tushare python包
- 使用http协议直接获取
前提条件
1、已经注册了tushare社区用户 【注册用户】
2、已经获取到tushare token凭证 【获取token】
Python SDK
下载SDK
下载并安装最新版tushare SDK 【安装和升级方法】
导入tushare
import tushare as ts
这里注意, tushare版本需大于1.2.10
设置token
ts.set_token('your token here')
以上方法只需要在第一次或者token失效后调用,完成调取tushare数据凭证的设置,正常情况下不需要重复设置。也可以忽略此步骤,直接用pro_api(‘your token’)完成初始化
初始化pro接口
pro = ts.pro_api()
如果上一步骤ts.set_token(‘your token’)无效或不想保存token到本地,也可以在初始化接口里直接设置token:
pro = ts.pro_api('your token')
数据调取
以获取交易日历信息为例:
df = pro.trade_cal(exchange='', start_date='20180901', end_date='20181001', fields='exchange,cal_date,is_open,pretrade_date', is_open='0')
或者
df = pro.query('trade_cal', exchange='', start_date='20180901', end_date='20181001', fields='exchange,cal_date,is_open,pretrade_date', is_open='0')
调取结果:
exchange cal_date is_open pretrade_date
0 SSE 20180901 0 20180831
1 SSE 20180902 0 20180831
2 SSE 20180908 0 20180907
3 SSE 20180909 0 20180907
4 SSE 20180915 0 20180914
5 SSE 20180916 0 20180914
6 SSE 20180922 0 20180921
7 SSE 20180923 0 20180921
8 SSE 20180924 0 20180921
9 SSE 20180929 0 20180928
10 SSE 20180930 0 20180928
11 SSE 20181001 0 20180928
二. 股票数据接口使用
1. 基础数据
股票基础列表
接口:stock_basic
描述:获取基础信息数据,包括股票代码、名称、上市日期、退市日期等
pro = ts.pro_api()
#查询当前所有正常上市交易的股票列表
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
或者
#查询当前所有正常上市交易的股票列表
data = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
数据样例
ts_code symbol name area industry list_date
0 000001.SZ 000001 平安银行 深圳 银行 19910403
1 000002.SZ 000002 万科A 深圳 全国地产 19910129
2 000004.SZ 000004 国农科技 深圳 生物制药 19910114
3 000005.SZ 000005 世纪星源 深圳 房产服务 19901210
4 000006.SZ 000006 深振业A 深圳 区域地产 19920427
5 000007.SZ 000007 全新好 深圳 酒店餐饮 19920413
6 000008.SZ 000008 神州高铁 北京 运输设备 19920507
7 000009.SZ 000009 中国宝安 深圳 综合类 19910625
8 000010.SZ 000010 美丽生态 深圳 建筑施工 19951027
9 000011.SZ 000011 深物业A 深圳 区域地产 19920330
10 000012.SZ 000012 南玻A 深圳 玻璃 19920228
11 000014.SZ 000014 沙河股份 深圳 全国地产 19920602
12 000016.SZ 000016 深康佳A 深圳 家用电器 19920327
13 000017.SZ 000017 深中华A 深圳 文教休闲 19920331
14 000018.SZ 000018 神州长城 深圳 装修装饰 19920616
15 000019.SZ 000019 深深宝A 深圳 软饮料 19921012
16 000020.SZ 000020 深华发A 深圳 元器件 19920428
17 000021.SZ 000021 深科技 深圳 电脑设备 19940202
18 000022.SZ 000022 深赤湾A 深圳 港口 19930505
19 000023.SZ 000023 深天地A 深圳 其他建材 19930429
20 000025.SZ 000025 特力A 深圳 汽车服务 19930621
上市公司信息
接口:stock_company
描述:获取上市公司基础信息,单次提取4500条,可以根据交易所分批提取
接口示例
pro = ts.pro_api()
#或者
#pro = ts.pro_api('your token')
df = pro.stock_company(exchange='SZSE', fields='ts_code,chairman,manager,secretary,reg_capital,setup_date,province')
数据示例
ts_code chairman manager secretary reg_capital setup_date province \
0 000001.SZ 谢永林 胡跃飞 周强 1.717041e+06 19871222 广东
1 000002.SZ 郁亮 祝九胜 朱旭 1.103915e+06 19840530 广东
2 000003.SZ 马钟鸿 马钟鸿 安汪 3.334336e+04 19880208 广东
3 000004.SZ 李林琳 李林琳 徐文苏 8.397668e+03 19860505 广东
4 000005.SZ 丁芃 郑列列 罗晓春 1.058537e+05 19870730 广东
5 000006.SZ 赵宏伟 朱新宏 杜汛 1.349995e+05 19850525 广东
6 000007.SZ 智德宇 智德宇 陈伟彬 3.464480e+04 19830311 广东
7 000008.SZ 王志全 钟岩 王志刚 2.818330e+05 19891011 北京
8 000009.SZ 陈政立 陈政立 郭山清 2.149345e+05 19830706 广东
9 000010.SZ 曾嵘 李德友 金小刚 8.198547e+04 19881231 广东
10 000011.SZ 刘声向 王航军 范维平 5.959791e+04 19830117 广东
11 000012.SZ 陈琳 王健 杨昕宇 2.863277e+05 19840910 广东
12 000013.SZ 厉怒江 阮克竖 刘渝敏 3.033550e+04 19920114 广东
13 000014.SZ 陈勇 温毅 王凡 2.017052e+04 19870727 广东
14 000015.SZ 宿南南 马骧 蒋孝安 1.598761e+05 19880408 广东
15 000016.SZ 刘凤喜 周彬 吴勇军 2.407945e+05 19801001 广东
各交易所交易日历
接口:trade_cal
描述:获取各大交易所交易日历数据,默认提取的是上交所
接口示例
pro = ts.pro_api()
df = pro.trade_cal(exchange='', start_date='20180101', end_date='20181231')
或者
df = pro.query('trade_cal', start_date='20180101', end_date='20181231')
数据样例
exchange cal_date is_open
0 SSE 20180101 0
1 SSE 20180102 1
2 SSE 20180103 1
3 SSE 20180104 1
4 SSE 20180105 1
5 SSE 20180106 0
6 SSE 20180107 0
7 SSE 20180108 1
8 SSE 20180109 1
9 SSE 20180110 1
10 SSE 20180111 1
11 SSE 20180112 1
12 SSE 20180113 0
13 SSE 20180114 0
14 SSE 20180115 1
15 SSE 20180116 1
16 SSE 20180117 1
17 SSE 20180118 1
18 SSE 20180119 1
19 SSE 20180120 0
20 SSE 20180121 0
沪深股通成份股
接口:hs_const
描述:获取沪股通、深股通成分数据
接口使用
pro = ts.pro_api()
#获取沪股通成分
df = pro.hs_const(hs_type='SH')
#获取深股通成分
df = pro.hs_const(hs_type='SZ')
数据样例
ts_code hs_type in_date out_date is_new
0 603818.SH SH 20160613 None 1
1 603108.SH SH 20161212 None 1
2 600507.SH SH 20141117 None 1
3 601377.SH SH 20141117 None 1
4 600309.SH SH 20141117 None 1
5 600298.SH SH 20141117 None 1
6 600018.SH SH 20141117 None 1
7 600483.SH SH 20151214 None 1
8 600068.SH SH 20141117 None 1
9 600594.SH SH 20141117 None 1
10 603806.SH SH 20160613 None 1
11 600867.SH SH 20141117 None 1
12 601012.SH SH 20141117 None 1
13 601231.SH SH 20141117 None 1
14 601888.SH SH 20151214 None 1
15 601099.SH SH 20141117 None 1
16 603025.SH SH 20151214 None 1
IPO新股列表
接口:new_share
描述:获取新股上市列表数据
限量:单次最大2000条,总量不限制
接口示例
pro = ts.pro_api()
df = pro.new_share(start_date='20180901', end_date='20181018')
数据示例
ts_code sub_code name ipo_date issue_date amount market_amount \
0 002939.SZ 002939 长城证券 20181017 None 31034.0 27931.0
1 002940.SZ 002940 昂利康 20181011 20181023 2250.0 2025.0
2 601162.SH 780162 天风证券 20181009 20181019 51800.0 46620.0
3 300694.SZ 300694 蠡湖股份 20180927 20181015 5383.0 4845.0
4 300760.SZ 300760 迈瑞医疗 20180927 20181016 12160.0 10944.0
5 300749.SZ 300749 顶固集创 20180913 20180925 2850.0 2565.0
6 002937.SZ 002937 兴瑞科技 20180912 20180926 4600.0 4140.0
7 601577.SH 780577 长沙银行 20180912 20180926 34216.0 30794.0
8 603583.SH 732583 捷昌驱动 20180911 20180921 3020.0 2718.0
9 002936.SZ 002936 郑州银行 20180907 20180919 60000.0 54000.0
10 300748.SZ 300748 金力永磁 20180906 20180921 4160.0 3744.0
11 603810.SH 732810 丰山集团 20180906 20180917 2000.0 2000.0
12 002938.SZ 002938 鹏鼎控股 20180905 20180918 23114.0 20803.0
price pe limit_amount funds ballot
0 6.31 22.98 9.30 19.582 0.16
1 23.07 22.99 0.90 5.191 0.03
2 1.79 22.86 15.50 0.000 0.25
3 9.89 22.98 2.15 5.324 0.04
4 48.80 22.99 3.60 59.341 0.08
5 12.22 22.99 1.10 3.483 0.03
6 9.94 22.99 1.80 4.572 0.04
7 7.99 6.97 10.20 27.338 0.17
8 29.17 22.99 1.20 8.809 0.03
9 4.59 6.50 18.00 27.540 0.25
10 5.39 22.98 1.20 2.242 0.05
11 25.43 20.39 2.00 5.086 0.02
12 16.07 22.99 6.90 37.145 0.12
以上问简单的数据查询操作, 更多数据详细操作https://waditu.com/document/2
####如果你觉得不错,赶快点击https://tushare.pro/register注册吧.