最近在做量化研究,需要使用到全部的财务数据,我看了很多平台,ptrade的数据比较全面,我们怎么样第哦啊有代码,下载全部的财务数据保存到本地做研究,今天我给研究的教程
先看一下财务数据的读取接口

对应的参数说明
fields:指明数据结果集中所需输出业务字段,支持多个业务字段输出(list类型),如fields='settlement_provi', 'client_provi';输出具体字段请参考
date:查询日期,按日期查询模式,返回查询日期之前对应的财务数据,输入形式如'20170620';支持datetime.date时间格式输入,不能与start_year与end_year同时作用;支持按日期查询模式,不传入date时默认取回测日期的上一个交易日数据(str);
start_year:查询开始年份,按年份查询模式,返回输入年份范围内对应的财务数据,如'2015',start_year与end_year必须同时输入,且不能与date同时作用(str)
end_year:查询截止年份,按年份查询模式,返回输入年份范围内对应的财务数据,如'2015',start_year与end_year必须同时输入,且不能与date同时作用(str)
report_types:财报类型;如果为年份查询模式(start_year/end_year),不输入report_types返回当年可查询到的全部类型财报;如果为日期查询模式(date),不输入report_types返回距离指定日期最近一份财报(str)。
- '1':表示获取一季度财报
- '2':表示获取半年报
- '3':表示获取截止到三季度财报
- '4':表示获取年度财报
~(已废弃)date_type:数据参考时间设置,该参数只适用于按日期查询模式(date参数模式)(int) :~
- ~(已废弃)date_type不传或传入date_type = None,返回发布日期(publ_date)在查询日期(date)之前指定财报类型数据(report_types),若未指定财报类型(report_types)则默认为离查询日期(date)最近季度的数据,数据未公布用NAN填充~
- ~(已废弃)date_type传入1,返回会计周期(end_date)在查询日期(date)之前指定财报类型数据(report_types),若未指定财报类型(report_types)则默认为查询日期(date)最近季度会计周期的数据,数据未公布用NAN填充~
merge_type:数据更新设置;相关财务数据信息会不断进行修正更新,为了避免未来数据影响,可以通过参数获取原始发布或最新发布数据信息;只有部分表包含此字段(int) :
- merge_type不传或传入merge_type = None,获取首次发布的数据,即使实际数据发生变化,也只返回原样数据信息;回测场景为避免未来数据建议使用此模式
- merge_type传入1,获取已发布财报数据的更新数据,更新数据范围包括但不限于相关日期数据,研究场景或交易场景建议使用此模式,但需要指定报告期,否则会获取到历史最近一期有过更新情况的财报数据(不一定是最近一个财报期)
is_dataframe:True-返回DataFrame格式;False-返回pandas.Panel格式(默认,仅python3.5的按年份查询模式有效)。
注意:
- date字段与start_year/end_year不能同时输入,否则按日期查询模式(date参数模式)
- 当date和start_year/end_year相关数据都不传入时,默认为按日期查询模式(date参数模式),研究和回测中date取值有所不同:在研究中,date取的是当前日期;回测中取回测日期的上一个交易日数据
- fields不传入的情况下,date必须传入,否则会报错。正确调用示例:get_fundamentals('600570.XSHG', 'balance_statement', date='2018-06-01')
比如我们需要下载资产负债表表

简单的例子参考
# 获取数据的两种模式
# 1. 按日期查询模式(默认以发布日期为参考时间):返回输入日期之前对应的财务数据
# 在回测中获取单一股票中对应回测日期资产负债表中资产总计(total_assets)数据
get_fundamentals('.SS','balance_statement','total_assets','20160628')
# 2. 按年份查询模式:返回输入年份范围内对应季度的财务数据
# 获取恒生电子(600570.SS)从2013年至2015年第一季度资产负债表中资产总计
#(total_assets)数据
get_fundamentals('0.SS','balance_statement','total_assets',start_year='2013',end_year='2015', report_types='1')
根据上面的思路,我们可以下载全部的财务数据,我用2014年开始下载,

大概的思路是先读取研究环境的路径,设置开始的时间

读取全市场的股票代码,在报告期没有上市的股票,财务数据是空的,比如2024年没有上市的标的,这个函数是读取最新全市场股票

写好代码挂模型交易就会自动下载数据,设置好下载的时间

挂策略交易就可以

下载好的数据保存在交易环境里面,研究里面

点击数据,点击下载按钮就可以保存到本地,点击鼠标右键,选择下载按钮就可以

下载的数据还是很不错的,可以自己保存到本地研究


不懂的问我就可以,加我备注入群可以加入量化研究群

代码参考学习。不做交易参考
'''
下载全部财务数据
'''
import pandas as pd
def initialize(context):
# 初始化策略
g.path=get_research_path()
g.start_year='2014'
g.end_year='2060'
run_daily(context, func=down_data, time='14:15')
def handle_data(context, data):
pass
def down_data(context):
'''
下载数据函数
'''
print("营运能力下载数据函数*********************************")
stock_list=get_Ashares()
print(stock_list)
df=get_fundamentals(stock_list,'operating_ability',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/营运能力.xlsx'.format(g.path))
print('营运能力数据下载完成******************************************')
#####################################################################
df=get_fundamentals(stock_list,'eps',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/每股指标.xlsx'.format(g.path))
print('每股指标数据下载完成******************************************')
###########################################################################
df=get_fundamentals(stock_list,'profit_ability',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/盈利能力.xlsx'.format(g.path))
print('盈利能力数据下载完成******************************************')
#####################################
df=get_fundamentals(stock_list,'growth_ability',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/成长能力.xlsx'.format(g.path))
print('成长能力数据下载完成******************************************')
########################################################
df=get_fundamentals(stock_list,'cashflow_statement',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/现金流量表.xlsx'.format(g.path))
print('现金流量表数据下载完成******************************************')
####################################################
df=get_fundamentals(stock_list, 'valuation', date = '20500101')
df.to_excel(r'{}/估值数据.xlsx'.format(g.path))
print('估值数据数据下载完成******************************************')
#########################################################################
df=get_fundamentals(stock_list,'debt_paying_ability',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/偿债能力.xlsx'.format(g.path))
print('偿债能力数据下载完成******************************************')
#######################################
df=get_fundamentals(stock_list,'income_statement',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/利润表.xlsx'.format(g.path))
print('利润表数据下载完成******************************************')
#######################################
df=get_fundamentals(stock_list,'balance_statement',start_year=g.start_year,end_year=g.end_year)
df.to_excel(r'{}/资产负债表.xlsx'.format(g.path))
print('数据下载完成******************************************')