Tushare获取历史行情数据

一、数据获取需求

        在金融类的数学建模问题中,历史行情数据是构建模型的基础。无论是时间序列预测、波动率建模还是多因子策略研究,都需要获取以下核心数据:

  • 每日价格数据(开盘价、收盘价、最高价、最低价)

  • 成交量数据(用于流动性分析)

  • 复权价格(用于长期回测)

  • 股票基本信息(行业分类、上市日期等)

        以沪深300成分股的多因子模型为例,通常需要整合近5年的日线行情数据与季度财务数据,数据量级可达百万行。虽然从同花顺等平台可以下载历史数据,但手工下载方式效率低下,而Tushare提供了完美的解决方案。

二、Tushare简介

        Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程。

  1. 打开官网Tushare数据并注册;
  2. 注册成功后可以在个人主页获取【接口TOKEN】;
  3. 下载并安装最新版Tushare SDK Tushare数据;
  4. 获取数据需要积分(注册100积分,修改个人信息20积分),积分越高可获取数据的频次也越高,其他获取积分方式见Tushare数据

三、数据获取代码

安装Tushare(安装慢可用清华源)

pip install tushare

导入并查看版本(这里需要版本大于1.2.10)

import tushare as ts
print(tushare.__version__)

初始化接口(这里需要用到个人主页的接口TOKEN)

pro = ts.pro_api('your token')

数据获取(以A股日线为例)

函数pro.daily()

  • 输入参数
名称类型必选描述
ts_codestrN股票代码(支持多个股票同时提取,逗号分隔)
trade_datestrN交易日期(YYYYMMDD)
start_datestrN开始日期(YYYYMMDD)
end_datestrN结束日期(YYYYMMDD)
  •  输出参数
名称类型描述
ts_codestr股票代码
trade_datestr交易日期
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
pre_closefloat昨收价【除权价,前复权】
changefloat涨跌额
pct_chgfloat涨跌幅 【基于除权后的昨收计算的涨跌幅:(今收-除权昨收)/除权昨收 】
volfloat成交量 (手)
amountfloat成交额 (千元)
  • 查询单个数据
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20200701', end_date='20200718')
  • 查询多个数据
df = pro.daily(ts_code='000001.SZ,600000.SH', start_date='20200701', end_date='20200718')
  • 查询单日全部数据
df = pro.daily(trade_date='20200810')
  • 单日全部数据运行结果

### 使用 Tushare 获取复权后的历史股票数据 为了获取复权后的股票历史数据,可以利用 `tushare` 库中的接口。具体来说,`pro_api` 提供了一个名为 `daily_basic` 的方法来访问每日基本行情信息,而 `adj_factor` 方法则提供了复权因子的数据。 下面是一个完整的 Python 脚本示例,展示了如何通过 Tushare API 来获取并处理某只特定股票的前复权或后复权调整后的日线数据: ```python import tushare as ts from datetime import date, timedelta def get_adjusted_stock_data(ts_code='000001.SZ', start_date=None, end_date=date.today()): """ Get adjusted historical stock data from Tushare. Parameters: ts_code (str): Stock code e.g., '000001.SZ' start_date (date/None): Start Date for fetching records; None means all available history end_date (date): End Date for fetching records Returns: DataFrame containing daily trading information along with adjustment factors applied. """ # Initialize pro interface of Tushare with your token here pro = ts.pro_api('your_tushare_token') # Fetch raw unadjusted price series df_prices = pro.daily(ts_code=ts_code, start_date=start_date.strftime('%Y%m%d') if start_date else '', end_date=end_date.strftime('%Y%m%d')) # Fetch adj factor table corresponding to this ticker symbol df_adj_factors = pro.adj_factor(ts_code=ts_code) # Merge two tables by trade dates so that we can apply adjustments properly merged_df = pd.merge(df_prices, df_adj_factors[['trade_date', 'adj_factor']], on=['trade_date']) # Apply forward/backward fill strategy depending upon whether you want pre/post-adjustment prices respectively merged_df['close'] *= merged_df['adj_factor'] del merged_df['adj_factor'] return merged_df.sort_values(by="trade_date") if __name__ == "__main__": result = get_adjusted_stock_data() print(result.head()) ``` 此脚本定义了一个函数 `get_adjusted_stock_data()` ,它接受三个参数:股票代码 (`ts_code`)、起始日期(`start_date`) 和结束日期 (`end_date`) 。该函数返回一个包含已应用复权因子的日交易记录表单。注意,在实际调用之前需替换 `'your_tushare_token'` 为你自己的 Tushare Token[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值