恒生PTrade量化软件如何获取财务数据?PTrade量化软件怎么获取?

恒生PTrade量化软件如何获取财务数据?PTrade量化软件怎么获取?

get_fundamentals-获取财务数据

get_fundamentals(security, table, fields=None, date=None, start_year=None, end_year=None, report_types=None, merge_type=None)
使用场景

该函数可在研究、回测、交易模块使用

接口说明

该接口用于获取财务三大报表数据、日频估值数据、各项财务能力指标数据。

注意事项:

1、该接口为http在线获取,会存在因网络拥堵等原因导致应答失败的情况,如果返回数据结果为空请多次尝试,策略中请增加保护机制。

2、该接口有流量限制,每秒不得调用超过100次,单次最大调用量是500条数据,每一条数据的定义为:一个股票对应一个表的一个字段,相当于最大不超过5万条。因此如果涉及多股多字段的查询要考虑限流情况,依据实际调用场景加入sleep做时间间隔,方法可参考示例。

恒生PTrade  API接口说明链接:恒生PTrade测试软件/正式软件获取可联系交流↑↑!
参数

为保持各表接口统一,输入字段略有不同,具体可参见 财务数据的API接口说明

security:一支股票代码或者多只股票代码组成的list(list[str])

table:财务数据表名,输入具体表名可查询对应表中信息(str)

表名包含内容
valuation估值数据
balance_statement资产负债表
income_statement利润表
cashflow_statement现金流量表
growth_ability成长能力指标
profit_ability盈利能力指标
eps每股指标
operating_ability营运能力指标
debt_paying_ability偿债能力指标

fields:指明数据结果集中所需输出业务字段,支持多个业务字段输出(list类型),如fields=['settlement_provi', 'client_provi'](list[str]);输出具体字段请参考 财务数据的API接口说明

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)。

  • report_types='1':表示获取一季度财报
  • report_types='2':表示获取半年报
  • report_types='3':表示获取截止到三季度财报
  • report_types='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,获取已发布财报数据的更新数据,更新数据范围包括但不限于相关日期数据,研究场景或交易场景建议使用此模式,但需要指定报告期,否则会获取到历史最近一期有过更新情况的财报数据(不一定是最近一个财报期)

注意:

  • 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.按日期查询模式(date参数模式)返回数据类型为pandas.DataFrame类型,索引为股票代码,如get_fundamentals('600000.SS','balance_statement',date='20161201')将返回:

secu_abbrend_datepubl_datetotal_assets……total_liability
600000.SS浦发银行2016-09-302016-10-295.56e+12......5.20e+12

2.按年份查询模式(start_year/end_year参数模式)返回数据类型为pandas.Panel类型,索引为股票代码,其中包含的DataFrame索引为返回股票对应会计日期(end_date),如get_fundamentals(['600000.SS', '600570.SS', '000002.SZ'], 'balance_statement', start_year='2016', end_year='2016')将返回:

示例

import time
def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def before_trading_start(context, data):
     # 假设取4000股*10年一季报数据为4万条,之后再取中报又是4万条,因为规则要求每秒不得调用超过100次(单次最大调用量是500条数据),调用过程就需要sleep1秒,防止流控触发。
     funda_data = get_fundamentals(g.security, 'balance_statement', fields = 'total_assets', start_year='2011', end_year='2020', report_types = '1')
     time.sleep(1)
     funda_data = get_fundamentals(g.security, 'balance_statement', fields = 'total_assets', start_year='2010', end_year='2020', report_types = '2')
def handle_data(context, data):
     # 获取股票池
     stocks = get_index_stocks('000906.XBHS')
     # 指定股票池
     stocks = ['600000.SS','600570.SS']

     # 获取数据的两种模式
     # 1. 按日期查询模式(默认以发布日期为参考时间):返回输入日期之前对应的财务数据
     # 在回测中获取单一股票中对应回测日期资产负债表中资产总计(total_assets)数据
     #(回测中date默认获取回测日期,无需传入date,除非在回测中获取指定某个日期的数据,日期格式如”20160628”)
     get_fundamentals('600000.SS', 'balance_statement', 'total_assets')

     # 获取股票池中对应上市公司在2016年6月28日之前发布的最近季度(即2016年一季度)
     # 的资产负债表中资产总计(total_assets)数据,如果到查询日期为止一季度数据还,未发布则所有数据用Nan填充
     get_fundamentals(stocks, 'balance_statement', 'total_assets','20160628')

     # 获取股票池中对应上市公司在2016年6月28日最近会计周期(即20160331)的资产负
     # 债表中资产总计(total_assets)数据,如果未查到相关数据则用Nan填充
     get_fundamentals(stocks, 'balance_statement', 'total_assets','20160628', date_type=1)

     # 获取股票池中对应上市公司发布日期在2016年6月28日之前,年度(即2015年年报)
     # 资产负债表中资产总计(total_assets)数据,如果到查询日期为止还未发布则所有数据用Nan填充
     get_fundamentals(stocks, 'balance_statement', 'total_assets', '20160628', report_types='4')

     # 获取股票池中对应上市公司2016年6月28日最近季度资产负债表中对应fields字段数据
     fields =['sold_buyback_secu_proceeds','specific_account_payable']
     get_fundamentals(stocks, 'balance_statement', fields,'20160628',)

     # 获取股票池中对应上市公司2016年6月28日最近季度资产负债表中对应fields字段最新数据,
     # 如果最近更新日期(发布日期)在2016年6月28日之后则无法获取对应数据
     fields =['sold_buyback_secu_proceeds','specific_account_payable']
     get_fundamentals(stocks, 'balance_statement', fields,'20160628',merge_type=1)

     # 2. 按年份查询模式:返回输入年份范围内对应季度的财务数据
     # 获取公司浦发银行(600000.SS)从2013年至2015年第一季度资产负债表中资产总计(total_assets)数据
     get_fundamentals('600000.SS','balance_statement','total_assets',start_year='2013',end_year='2015', report_types='1')

     # 获取股票池中对应上市公司从2013年至2015年年度资产负债表中对应fields字段数据
     fields =['sold_buyback_secu_proceeds','specific_account_payable']
     get_fundamentals(stocks,'balance_statement',fields,start_year='2013',end_year='2015', report_types='4')
  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值