
tushare平台的核心功能与数据范围
tushare是一个面向量化投资者的金融数据接口库,覆盖股票、期货、基金、期权等多个市场。股票数据包含日线、分钟线、复权因子、财务指标、龙虎榜、资金流向等。期货数据涵盖国内四大交易所的日线、分钟线、持仓排名、仓单日报、基差数据。用户通过Python调用接口,以统一格式返回pandas DataFrame,便于策略开发。
股票历史行情获取方法
安装tushare后,需要设置token。免费账户有积分限制,高频或全量数据需升级权限。获取股票日线行情使用pro.daily()接口。
import tushare as ts
pro = ts.pro_api('你的token')
df = pro.daily(ts_code='000001.SZ', start_date='20230101', end_date='20231231')
print(df.head())
返回字段包括trade_date、open、high、low、close、pre_close、change、pct_chg、vol、amount。复权行情使用pro.adj_factor()获取复权因子,再计算前复权或后复权价格。分钟线数据通过pro.stk_mins()获取,需要较高积分。
股票列表通过pro.stock_basic()获取,包含ts_code、symbol、name、area、industry、market、list_date。每日指标数据pro.daily_basic()提供换手率、量比、市盈率、市净率、总市值、流通市值。

期货数据获取方法
期货合约列表通过pro.fut_basic()获取,参数exchange指定交易所,如CFFEX、SHFE、DCE、CZCE、INE、GFEX。字段包括ts_code、symbol、name、fut_code、multiplier、trade_unit、per_unit、quote_unit、list_date、delist_date。
期货日线行情使用pro.fut_daily()。
fut_df = pro.fut_daily(ts_code='CU2312.SHF', start_date='20230101', end_date='20231231')
print(fut_df[['trade_date','open','high','low','close','vol','oi']])
返回字段有trade_date、open、high、low、close、settle、pre_settle、change1、change2、vol、oi、oi_chg。持仓排名数据使用pro.fut_holding(),获取每日前20名会员的成交量、多单持仓、空单持仓。仓单日报使用pro.fut_wsr()。基差数据通过pro.fut_basis()获取,包含现货价格、期货价格、基差、基差率。
主力合约与连续合约需要自行拼接。常用方法:按持仓量最大或成交量最大选择主力合约,构建连续价格序列。tushare提供pro.fut_mapping()获取主力合约映射表,减少手动处理。
数据存储与量化回测实践
获取数据后建议存入本地数据库。SQLite适合小规模存储,MySQL或PostgreSQL适合大规模。pandas的to_sql方法可直接写入。
import sqlite3
conn = sqlite3.connect('market.db')
df.to_sql('stock_daily', conn, if_exists='append', index=False)
量化策略回测需要处理停牌、涨跌停、复权、期货换月。股票回测中,使用后复权价格避免分红送股导致的价格跳空。期货回测中,主力连续合约需处理换月价差,常用方法为价差调整或比例调整。
tushare的积分体系影响数据获取频率。免费用户每分钟最多调用500次,部分接口需要2000积分以上。高频数据如分钟线、tick数据需要更高权限。对于个人量化交易者,建议先使用日线数据验证策略逻辑,再逐步升级数据频率。
常见问题与优化策略
接口返回空DataFrame时,检查日期格式、ts_code后缀、积分权限。股票ts_code后缀为.SZ、.SH、.BJ,期货后缀为.SHF、.DCE、.CZCE、.CFFEX、.INE、.GFEX。
批量获取多只股票数据时,使用循环调用会受限于每分钟请求次数。更高效的方法是按交易日获取全市场数据,pro.daily(trade_date='20231229')一次返回当日所有股票行情。期货同理,pro.fut_daily(trade_date='20231229')返回全市场期货日线。
数据清洗方面,处理缺失值、异常值、重复行。股票价格出现负值或零值需要剔除。期货持仓量突然归零可能是换月或数据错误。
对于量化交易者,tushare的优势在于数据规范、接口统一、社区活跃。劣势是高频数据成本较高,tick数据不完整。替代方案包括AkShare、Baostock、Wind、聚宽。组合使用多个数据源可以提高数据质量。