对于量化投资者来说,拥有准确、全面的数据是非常重要的,而在众多的数据获取工具中,Tushare(官网:tushare.pro)无疑是一个受欢迎的选择。
Tushare是一个为金融行业研究人员、数据分析师、算法交易者提供历史市场数据、实时行情、交易数据、参考数据、社会网络数据、新闻及研报等的金融数据接口库。它为我们提供了一个简单方便的方式来获取和分析金融数据。
Tushare的数据不是直接从互联网抓取,而是通过社区的采集和整理存入数据库经过质量控制后再提供给用户,数据的质量和稳定性更有保障。
01
Tushare安装和使用
1. 如何安装Tushare
Tushare的安装命令如下:
pip install tushare
如果遇到安装网络超时可改用国内pip源安装:
pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple
Tushare版本升级的命令:
pip install tushare --upgrade
查看当前版本的方法:
import tushare
print(tushare.__version__)
2. 如何注册并获取Tushare的API密钥
在安装完成后,我们需要注册并获取Tushare的API密钥,这是使用Tushare获取数据的必要步骤。访问Tushare的官方网站(tushare.pro),点击“注册”按钮进行注册。注册成功后,你可以在个人中心找到你的API密钥。
3. 如何在Python中配置Tushare
在获取API密钥之后,我们需要在Python中配置Tushare。首先,我们需要导入tushare库:
import tushare as ts
然后,我们可以使用以下命令设置API密钥:
ts.set_token('your token')
请将'your token'替换为你在Tushare网站获取的API密钥。这样,你就可以开始使用Tushare获取A股数据了。
4. Tushare的积分的作用
在使用Tushare时,你会注意到有一种叫做“积分”的概念。Tushare的数据服务是需要积分等级的,在使用Tushare获取数据前,你需要认真阅读相关的积分权限。你可以通过在Tushare社区做出贡献、参与活动、发表文章等方式获取积分,也可以通过赞助来获取Tushare的积分。
下面将举例说明如何从Tushare获取数据。
02
获取A股基础数据
Tushare提供以下基础数据:股票基础信息、交易日历、股票曾用名、沪深股通成份股、上市公司基本信息、上市公司管理层、管理层薪酬和持股、IPO新股列表等。
可以使用 Tushare 的 stock_basic 接口来获取 A 股的基础信息。此接口提供了包括股票代码、名称、上市日期、退市日期等基础信息的数据。
下面是一个接口示例,用于查询当前所有正常上市交易的股票列表:
pro = ts.pro_api()
# 查询当前所有正常上市交易的股票列表
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
在这个示例中,我们没有指定交易所(exchange),上市状态为正常上市(list_status='L'),并且我们选择显示Tushare代码、股票代码、股票名称、公司地域、所属行业和上市日期这些字段。
数据示例如下:
使用此接口需要输入一些参数,下面是这些参数的详细描述:
-
ts_code(类型:str):TS股票代码,不是必须输入的参数。
-
name(类型:str):股票的名称,不是必须输入的参数。
-
market(类型:str):市场类别,包括主板、创业板、科创板、CDR和北交所,不是必须输入的参数。
-
list_status(类型:str):上市状态,L代表上市,D代表退市,P代表暂停上市,默认是L,不是必须输入的参数。
-
exchange(类型:str):交易所,包括SSE上交所、SZSE深交所和BSE北交所,不是必须输入的参数。
-
is_hs(类型:str):是否为沪深港通标的,N代表否,H代表沪股通,S代表深股通,不是必须输入的参数。
输出的参数包括以下信息:
-
ts_code(类型:str):Tushare中的代码,将会默认显示。
-
symbol(类型:str):股票代码,将会默认显示。
-
name(类型:str):股票名称,将会默认显示。
-
area(类型:str):公司地域,将会默认显示。
-
industry(类型:str):所属行业,将会默认显示。
-
market(类型:str):市场类型(主板/创业板/科创板/CDR),将会默认显示。
-
list_date(类型:str):上市日期,将会默认显示。
-
其他输出参数如股票全称、英文全称、拼音缩写、交易所代码、交易货币、上市状态、退市日期等信息默认不会显示,但可以根据需要选择显示。
03
获取股票行情数据
Tushare提供以下股票行情数据:日线行情、周线行情、月线行情、复权行情、复权因子、每日停复牌信息、每日指标、个股资金流向、每日涨跌停价格、沪深港通资金流向、沪深股通十大成交股、港股通十大成交股、港股通每日成交统计、港股通每月成交统计等。
可以使用 Tushare 的 daily 接口来获取 A 股的日线行情数据。此接口可以提供每个交易日的数据,数据在每个交易日的15点到16点之间更新。需要注意的是,这个接口提供的是未复权行情,停牌期间不会提供数据。
下面是一些接口使用示例:
pro = ts.pro_api()
# 查询单个股票的日线行情
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
# 查询多个股票的日线行情
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20180701', end_date='20180718')
# 查询某一天全部股票的日线行情
df = pro.daily(trade_date='20180810')
在这些示例中,我们展示了如何查询单个或多个股票的特定日期范围内的日线行情,以及如何查询特定日期的全部股票的日线行情。
数据示例如下:
当使用这个接口时,你需要输入以下参数:
-
ts_code(类型:str):股票代码,如果你想同时查询多个股票,可以用逗号分隔,这不是必需的参数。
-
trade_date(类型:str):交易日期,格式为YYYYMMDD,如20181010,这不是必需的参数。
-
start_date(类型:str):查询开始日期,格式为YYYYMMDD,如20181010,这不是必需的参数。
-
end_date(类型:str):查询结束日期,格式为YYYYMMDD,如20181010,这不是必需的参数。
此接口的输出参数包括:
-
ts_code(类型:str):股票代码。
-
trade_date(类型:str):交易日期。
-
open(类型:float):开盘价。
-
high(类型:float):最高价。
-
low(类型:float):最低价。
-
close(类型:float):收盘价。
-
pre_close(类型:float):昨收价(前复权)。
-
change(类型:float):涨跌额。
-
pct_chg(类型:float):涨跌幅,未复权,如果你需要复权数据,可以使用通用行情接口。
-
vol(类型:float):成交量(单位:手)。
-
amount(类型:float):成交额(单位:千元)。
04
获取财务数据
Tushare提供以下财务数据:利润表、资产负债表、现金流量表、业绩预告、业绩快报、分红送股、财务指标数据、财务审计意见、主营业务构成、财报披露计划等。
以下示例使用 Tushare 的 forecast 接口来获取 A 股的业绩预告数据。当前这个接口主要用于按单只股票获取其历史业绩预告数据。
pro = ts.pro_api()
# 获取单个股票的业绩预告数据
df = pro.forecast(ann_date='20190131', fields='ts_code,ann_date,end_date,type,p_change_min,p_change_max,net_profit_min')
# 获取某一季度全部股票的业绩预告数据
df = pro.forecast_vip(period='20181231',fields='ts_code,ann_date,end_date,type,p_change_min,p_change_max,net_profit_min')
在这些示例中,我们展示了如何查询单个股票的特定日期的业绩预告,以及如何查询特定季度的全部股票的业绩预告。
数据示例如下:
当使用这个接口时,你需要提供以下输入参数:
-
ts_code(类型:str):股票代码,该参数与下一个参数 ann_date 二选一。
-
ann_date(类型:str):公告日期,该参数与上一个参数 ts_code 二选一。
-
start_date(类型:str):公告开始日期,这不是必需的参数。
-
end_date(类型:str):公告结束日期,这不是必需的参数。
-
period(类型:str):报告期,格式为每个季度最后一天的日期,如20171231表示年报,这不是必需的参数。
-
type(类型:str):预告类型,可选的类型有预增、预减、扭亏、首亏、续亏、续盈、略增、略减,这不是必需的参数。
此接口的输出参数包括:
-
ts_code(类型:str):TS股票代码。
-
ann_date(类型:str):公告日期。
-
end_date(类型:str):报告期。
-
type(类型:str):业绩预告类型,包括预增、预减、扭亏、首亏、续亏、续盈、略增、略减等类型。
-
p_change_min(类型:float):预告净利润变动幅度下限(%)。
-
p_change_max(类型:float):预告净利润变动幅度上限(%)。
-
net_profit_min(类型:float):预告净利润下限(万元)。
-
net_profit_max(类型:float):预告净利润上限(万元)。
-
last_parent_net(类型:float):上年同期归属母公司净利润。
-
first_ann_date(类型:str):首次公告日。
-
summary(类型:str):业绩预告摘要。
-
change_reason(类型:str):业绩变动原因。
05
获取市场参考数据
Tushare提供的市场参考数据包括:融资融券交易汇总、融资融券交易明细、融资融券标的、前十大股东、前十大流通股东、龙虎榜每日明细、龙虎榜机构明细、股权质押统计数据、股权质押明细、股票回购、限售股解禁、大宗交易、股东人数、股东增减持等。
以下示例如何使用 Tushare 的 top_list 接口来获取 A 股的龙虎榜每日交易明细:
pro = ts.pro_api()
# 获取某一交易日的龙虎榜交易明细
df = pro.top_list(trade_date='20180928')
在这个示例中,我们展示了如何查询特定交易日的全部股票的龙虎榜交易明细。
数据示例如下:
当我们使用这个接口时,需要提供以下输入参数:
-
trade_date(类型:str,必选):交易日期。
-
ts_code(类型:str,非必选):股票代码。
此接口的输出参数包括:
-
trade_date(类型:str):交易日期。
-
ts_code(类型:str):TS股票代码。
-
name(类型:str):股票名称。
-
close(类型:float):该股票当日的收盘价。
-
pct_change(类型:float):该股票当日的涨跌幅。
-
turnover_rate(类型:float):该股票当日的换手率。
-
amount(类型:float):该股票当日的总成交额。
-
l_sell(类型:float):该股票当日龙虎榜的卖出额。
-
l_buy(类型:float):该股票当日龙虎榜的买入额。
-
l_amount(类型:float):该股票当日龙虎榜的成交额。
-
net_amount(类型:float):该股票当日龙虎榜的净买入额。
-
net_rate(类型:float):该股票当日龙虎榜的净买额占比。
-
amount_rate(类型:float):该股票当日龙虎榜的成交额占比。
-
float_values(类型:float):该股票当日的流通市值。
-
reason(类型:str):该股票进入龙虎榜的理由。
06
获取特色数据
Tushare还提供了很多特色数据:卖方盈利预测数据、每日筹码及胜率、每日筹码分布、股票技术因子、中央结算系统持股汇总、中央结算系统持股明细、沪深港股通持股明细、每日涨跌停和炸板数据、机构调研数据、券商每月金股、游资名录、游资每日明细等。
以下示例获取每日筹码分布数据:
可以使用 Tushare 的 cyq_chips 接口来获取 A 股的每日筹码分布情况。这个接口能够提供每个价格点的占比,数据从2010年开始,每天在17到18点之间更新当日数据。注意,这个接口有每次的提取限量,但可以通过循环股票代码和日期来提取更多数据。
pro = ts.pro_api()
# 获取某一股票在某一时间段内的筹码分布情况
df = pro.cyq_chips(ts_code='600000.SH', start_date='20220101', end_date='20220429')
在这个示例中,我们展示了如何查询特定股票在特定时间段内的筹码分布情况。
数据示例如下:
当我们使用这个接口时,需要提供以下输入参数:
-
ts_code(类型:str,非必选):股票代码。
-
trade_date(类型:str,非必选):交易日期,格式为YYYYMMDD。
-
start_date(类型:str,非必选):筹码分布的开始日期。
-
end_date(类型:str,非必选):筹码分布的结束日期。
此接口的输出参数包括:
-
ts_code(类型:str):股票代码。
-
trade_date(类型:str):交易日期。
-
price(类型:float):成本价格。
-
percent(类型:float):该价格占总成本的比例,单位为百分比。
Tushare 是一个非常强大且易用的金融数据接口库,它不仅可以帮助我们获取到 A 股数据,还包含了指数、基金、期货、现货、期权、债券、外汇、港股、美股、宏观经济等多种数据。这些数据的价值非常巨大,通过对它们的深入挖掘和分析,我们可以从中发现许多有价值的信息和投资机会。