在正式的财报发布之前,上市公司往往先发布业绩预报,关于业绩预报在量化中的使用,有两个思路,一个是根据预报的表现进行价值投资,另一个是等真实财报出来发现和预报有出入,出现的事件型投资机会。虽然A股不方便做空,即使真实财报低于预期不能做空,但可以作为卖出条件;如果真实财报高于预期,虽然可能性比较低,但是也是一个非常好的事件型投资机会。
以下是通过python调用BaoStock平台获取季频上市公司业绩预告的方式。
季频公司业绩预告:query_forcast_report()
方法说明:查询季频公司业绩预告信息,可以通过参数设置获取起止年份数据,提供2003年至今数据。 返回类型:pandas的DataFrame类型。 使用示例
import baostock as bs
import pandas as pd
#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond error_msg:'+lg.error_msg)
#### 获取公司业绩预告 ####
rs_forecast = bs.query_forecast_report("sh.600000", start_date="2010-01-01", end_date="2017-12-31")
print('query_forecast_reprot respond error_code:'+rs_forecast.error_code)
print('query_forecast_reprot respond error_msg:'+rs_forecast.error_msg)
rs_forecast_list = []
while (rs_forecast.error_code == '0') & rs_forecast.next():
# 分页查询,将每页信息合并在一起
rs_forecast_list.append(rs_forecast.get_row_data())
result_forecast = pd.DataFrame(rs_forecast_list, columns=rs_forecast.fields)
#### 结果集输出到csv文件 ####
result_forecast.to_csv("D:\\forecast_report.csv", encoding="gbk", index=False)
print(result_forecast)
#### 登出系统 ####
bs.logout()
参数含义:
· code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
· start_date:开始日期,发布日期或更新日期在这个范围内;
· end_date:结束日期,发布日期或更新日期在这个范围内。
返回数据说明 | |
参数名称 | 参数描述 |
code | 证券代码 |
profitForcastExpPubDate | 业绩预告发布日期 |
profitForcastExpStatDate | 业绩预告统计日期 |
profitForcastType | 业绩预告类型 |
profitForcastAbstract | 业绩预告摘要 |
profitForcastChgPctUp | 预告归属于母公司的净利润增长上限(%) |
profitForcastChgPctDwn | 预告归属于母公司的净利润增长下限(%) |