Python API文档

来自www.baostock.com
Baostock讨论 | 贡献2018年6月12日 (二) 04:05的版本 HelloWorld
跳转至: 导航搜索

入门示例

HelloWorld

此篇为平台入门示例,安装baostock后,可导入包运行此示例。示例数据:下载

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)

#### 获取历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节
rs = bs.query_history_k_data("sh.600000",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST",
    start_date='2017-06-01', end_date='2017-12-31', 
    frequency="d", adjustflag="3") #frequency="d"取日k线,adjustflag="3"默认不复权
print('query_history_k_data respond error_code:'+rs.error_code)
print('query_history_k_data respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
#### 结果集输出到csv文件 ####
result.to_csv("D:/history_k_data.csv", encoding="gbk", index=False)
print(result)

#### 登出系统 ####
bs.logout()

登录

login()

方法说明:登录系统。

使用示例:lg = login(user_id="anonymous", password="123456")


参数含义:

  • user_id:用户id,默认为"anonymous";
  • password:密码,默认为"123456"。


返回信息:

  • lg.error_code:错误代码,当为“0”时表示成功,当为非0时表示失败;
  • lg.error_msg:错误信息,对错误的详细解释。

登出

logout()

方法说明:登出系统

使用示例:lg = logout(user_id="anonymous")


参数含义:

  • user_id:用户id,默认为"anonymous"。


返回信息:

  • lg.error_code:错误代码,当为“0”时表示成功,当为非0时表示失败;
  • lg.error_msg:错误信息,对错误的详细解释。

获取历史A股K线数据

获取历史A股K线数据:query_history_k_data_plus()

方法说明:通过API接口获取A股历史交易数据,可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据,适合搭配均线数据进行选股和分析。

返回类型:pandas的DataFrame类型。

能获取1990-12-19至当前时间的数据;

可查询不复权、前复权后复权数据。


示例数据:下载

日线使用示例:

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)

#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sh.600000",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
    start_date='2017-07-01', end_date='2017-12-31',
    frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)

#### 结果集输出到csv文件 ####   
result.to_csv("D:\\history_A_stock_k_data.csv", index=False)
print(result)

#### 登出系统 ####
bs.logout()

分钟线使用示例:

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)

#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sh.600000",
    "date,time,code,open,high,low,close,volume,amount,adjustflag",
    start_date='2017-07-01', end_date='2017-07-31',
    frequency="5", adjustflag="3")
print('query_history_k_data_plus respond error_code:'+rs.error_code)
print('query_history_k_data_plus respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)

#### 结果集输出到csv文件 ####   
result.to_csv("D:\\history_A_stock_k_data.csv", index=False)
print(result)

#### 登出系统 ####
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • fields:指示简称,支持多指标输入,以半角逗号分隔,填写内容作为返回类型的列。详细指标列表见历史行情指标参数章节,日线与分钟线参数不同。此参数不可为空;
  • start:开始日期(包含),格式“YYYY-MM-DD”,为空时取2015-01-01;
  • end:结束日期(包含),格式“YYYY-MM-DD”,为空时取最近一个交易日;
  • frequency:数据类型,默认为d,日k线;d=日k线、w=周、m=月、5=5分钟、15=15分钟、30=30分钟、60=60分钟k线数据,不区分大小写;指数没有分钟线数据;周线每周最后一个交易日才可以获取,月线每月最后一个交易日才可以获取。
  • adjustflag:复权类型,默认不复权:3;1:后复权;2:前复权。已支持分钟线、日线、周线、月线前后复权。 BaoStock提供的是涨跌幅复权算法复权因子,具体介绍见:复权因子简介或者BaoStock复权因子简介

注意:

  • 股票停牌时,对于日线,开、高、低、收价都相同,且都为前一交易日的收盘价,成交量、成交额为0,换手率为空。

如果需要将换手率转为float类型,可使用如下方法转换:result["turn"] = [0 if x == "" else float(x) for x in result["turn"]]

关于复权数据的说明:

BaoStock使用“涨跌幅复权法”进行复权,详细说明参考上文“复权因子简介”。不同系统间采用复权方式可能不一致,导致数据不一致。

“涨跌幅复权法的”优点:可以计算出资金收益率,确保初始投入的资金运用率为100%,既不会因为分红而导致投资减少,也不会因为配股导致投资增加。


与同花顺、通达信等存在不同。


返回示例数据
date code open high low close preclose volume amount adjustflag turn tradestatus pctChg isST
2017-07-03 sh.600000 12.64 12.65 12.47 12.56 12.65 38778949 486264672 3 0.137985 1 —0.711456 0
2017-07-04 sh.600000 12.55 12.58 12.41 12.55 12.56 36659128 458434432 3 0.130442 1 —0.07962 0
2017-07-05 sh.600000 12.5 12.65 12.47 12.62 12.55 26470507 332542464 3 0.094188 1 0.557767 0
2017-07-06 sh.600000 12.62 12.72 12.51 12.66 12.62 37414241 471582096 3 0.133129 1 0.316957 0
2017-07-07 sh.600000 12.62 12.69 12.55 12.6 12.66 24667294 311101536 3 0.087772 1 —0.473929 0
返回数据说明
参数名称 参数描述 算法说明
date 交易所行情日期
code 证券代码
open 开盘价
high 最高价
low 最低价
close 收盘价
preclose 前收盘价 见表格下方详细说明
volume 成交量(累计 单位:股)
amount 成交额(单位:人民币元)
adjustflag 复权状态(1:后复权, 2:前复权,3:不复权)
turn 换手率 [指定交易日的成交量(股)/指定交易日的股票的流通股总股数(股)]*100%
tradestatus 交易状态(1:正常交易 0:停牌)
pctChg 涨跌幅(百分比) 日涨跌幅=[(指定交易日的收盘价-指定交易日前收盘价)/指定交易日前收盘价]*100%
peTTM 滚动市盈率 (指定交易日的股票收盘价/指定交易日的每股盈余TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/归属母公司股东净利润TTM
pbMRQ 市净率 (指定交易日的股票收盘价/指定交易日的每股净资产)=总市值/(最近披露的归属母公司股东的权益-其他权益工具)
psTTM 滚动市销率 (指定交易日的股票收盘价/指定交易日的每股销售额)=(指定交易日的股票收盘价*截至当日公司总股本)/营业总收入TTM
pcfNcfTTM 滚动市现率 (指定交易日的股票收盘价/指定交易日的每股现金流TTM)=(指定交易日的股票收盘价*截至当日公司总股本)/现金以及现金等价物净增加额TTM
isST 是否ST股,1是,0否

注意“前收盘价”说明

证券在指定交易日行情数据的前收盘价,当日发生除权除息时,“前收盘价”不是前一天的实际收盘价,而是根据股权登记日收盘价与分红现金的数量、配送股的数里和配股价的高低等结合起来算出来的价格。

具体计算方法如下:

1、计算除息价:

除息价=股息登记日的收盘价-每股所分红利现金额

2、计算除权价:

送红股后的除权价=股权登记日的收盘价/(1+每股送红股数)

配股后的除权价=(股权登记日的收盘价+配股价*每股配股数)/(1+每股配股数)

3、计算除权除息价

除权除息价=(股权登记日的收盘价-每股所分红利现金额+配股价*每股配股数)/(1+每股送红股数+每股配股数)

“前收盘价”由交易所计算并公布。首发日的“前收盘价”等于“首发价格”。

历史行情指标参数

日线指标参数(包含停牌证券)
参数名称 参数描述 说明
date 交易所行情日期 格式:YYYY-MM-DD
code 证券代码 格式:sh.600000。sh:上海,sz:深圳
open 今开盘价格 精度:小数点后4位;单位:人民币元
high 最高价 精度:小数点后4位;单位:人民币元
low 最低价 精度:小数点后4位;单位:人民币元
close 今收盘价 精度:小数点后4位;单位:人民币元
preclose 昨日收盘价 精度:小数点后4位;单位:人民币元
volume 成交数量 单位:股
amount 成交金额 精度:小数点后4位;单位:人民币元
adjustflag 复权状态 不复权、前复权、后复权
turn 换手率 精度:小数点后6位;单位:%
tradestatus 交易状态 1:正常交易 0:停牌
pctChg 涨跌幅(百分比) 精度:小数点后6位
peTTM 滚动市盈率 精度:小数点后6位
psTTM 滚动市销率 精度:小数点后6位
pcfNcfTTM 滚动市现率 精度:小数点后6位
pbMRQ 市净率 精度:小数点后6位
isST 是否ST 1是,0否


周、月线指标参数
参数名称 参数描述 说明 算法说明
date 交易所行情日期 格式:YYYY-MM-DD
code 证券代码 格式:sh.600000。sh:上海,sz:深圳
open 开盘价格 精度:小数点后4位;单位:人民币元
high 最高价 精度:小数点后4位;单位:人民币元
low 最低价 精度:小数点后4位;单位:人民币元
close 收盘价 精度:小数点后4位;单位:人民币元
volume 成交数量 单位:股
amount 成交金额 精度:小数点后4位;单位:人民币元
adjustflag 复权状态 不复权、前复权、后复权
turn 换手率 精度:小数点后6位;单位:%
pctChg 涨跌幅(百分比) 精度:小数点后6位 涨跌幅=[(区间最后交易日收盘价-区间首个交易日前收盘价)/区间首个交易日前收盘价]*100%


5、15、30、60分钟线指标参数(不包含指数)
参数名称 参数描述 说明
date 交易所行情日期 格式:YYYY-MM-DD
time 交易所行情时间 格式:YYYYMMDDHHMMSSsss
code 证券代码 格式:sh.600000。sh:上海,sz:深圳
open 开盘价格 精度:小数点后4位;单位:人民币元
high 最高价 精度:小数点后4位;单位:人民币元
low 最低价 精度:小数点后4位;单位:人民币元
close 收盘价 精度:小数点后4位;单位:人民币元
volume 成交数量 单位:股
amount 成交金额 精度:小数点后4位;单位:人民币元
adjustflag 复权状态 不复权、前复权、后复权


查询除权除息信息

股息分红:query_dividend_data()

方法说明:查询除权除息信息,可以通过参数设置获取对应年份、股票数据,提供1990年至2017年数据。

返回类型:pandas的DataFrame类型。


使用示例:

rs_dividend = bs.query_dividend_data(code="sh.600000", year="2017", yearType="report")
data_list = []
while (rs_dividend.error_code == '0') & rs_dividend.next():
    data_list.append(rs_dividend.get_row_data())
result_dividend = pd.DataFrame(data_list, columns=rs_dividend.fields)
print(result_dividend)


参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:年份,如:2017。此参数不可为空;
  • yearType:年份类别,默认为"report":预案公告年份,可选项"operate":除权除息年份。此参数不可为空。
返回数据说明
参数名称 参数描述
code 证券代码
dividPreNoticeDate 预批露公告日
dividAgmPumDate 股东大会公告日期
dividPlanAnnounceDate 预案公告日
dividPlanDate 分红实施公告日
dividRegistDate 股权登记告日
dividOperateDate 除权除息日期
dividPayDate 派息日
dividStockMarketDate 红股上市交易日
dividCashPsBeforeTax 每股股利税前
dividCashPsAfterTax 每股股利税后
dividStocksPs 每股红股
dividCashStock 分红送转
dividReserveToStockPs 每股转增资本

复权因子:query_adjust_factor()

方法说明:查询复权因子信息,可以通过参数设置获取对应年份、股票数据,提供1990年至2017年数据。

返回类型:pandas的DataFrame类型。


使用示例:

# 查询2015至2017年复权因子
rs_list = []
rs_factor = bs.query_adjust_factor(code="sh.600000", start_date="2015-01-01", end_date="2017-12-31")
while (rs_factor.error_code == '0') & rs_factor.next():
    rs_list.append(rs_factor.get_row_data())
result_factor = pd.DataFrame(rs_list, columns=rs_factor.fields)
# 打印输出
print(result_factor)

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • start_date:开始日期,为空时默认为2015-01-01,包含此日期;
  • end_date:结束日期,为空时默认当前日期,包含此日期。
返回数据说明
参数名称 参数描述
code 证券代码
dividOperateDate 除权除息日期
foreAdjustFactor 向前复权因子
backAdjustFactor 向后复权因子
adjustFactor 本次复权因子


查询季频财务数据信息

季频盈利能力:query_profit_data()

方法说明:通过API接口获取季频盈利能力信息,可以通过参数设置获取对应年份、季度数据,提供2007年至今数据。

返回类型: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)

# 查询季频估值指标盈利能力
profit_list = []
rs_profit = bs.query_profit_data(code="sh.600000", year=2017, quarter=2)
while (rs_profit.error_code == '0') & rs_profit.next():
    profit_list.append(rs_profit.get_row_data())
result_profit = pd.DataFrame(profit_list, columns=rs_profit.fields)
# 打印输出
print(result_profit)
# 结果集输出到csv文件
result_profit.to_csv("D:\\profit_data.csv", encoding="gbk", index=False)

# 登出系统
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:统计年份,为空时默认当前年;
  • quarter:统计季度,可为空,默认当前季度。不为空时只有4个取值:1,2,3,4。
返回示例数据
code pubDate statDate roeAvg npMargin gpMargin netProfit epsTTM MBRevenue totalShare liqaShare
sh.600000 2017-08-30 2017-06-30 0.074617 0.342179 28522000000.000000 1.939029 83354000000.000000 28103763899.00 28103763899.00
返回数据说明
参数名称 参数描述 算法说明
code 证券代码
pubDate 公司发布财报的日期
statDate 财报统计的季度的最后一天, 比如2017-03-31, 2017-06-30
roeAvg 净资产收益率(平均)(%) 归属母公司股东净利润/[(期初归属母公司股东的权益+期末归属母公司股东的权益)/2]*100%
npMargin 销售净利率(%) 净利润/营业收入*100%
gpMargin 销售毛利率(%) 毛利/营业收入*100%=(营业收入-营业成本)/营业收入*100%
netProfit 净利润(元)
epsTTM 每股收益 归属母公司股东的净利润TTM/最新总股本
MBRevenue 主营营业收入(元)
totalShare 总股本
liqaShare 流通股本


季频营运能力:query_operation_data()

方法说明:通过API接口获取季频营运能力信息,可以通过参数设置获取对应年份、季度数据,提供2007年至今数据。

返回类型: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)

# 营运能力
operation_list = []
rs_operation = bs.query_operation_data(code="sh.600000", year=2017, quarter=2)
while (rs_operation.error_code == '0') & rs_operation.next():
    operation_list.append(rs_operation.get_row_data())
result_operation = pd.DataFrame(operation_list, columns=rs_operation.fields)
# 打印输出
print(result_operation)
# 结果集输出到csv文件
result_operation.to_csv("D:\\operation_data.csv", encoding="gbk", index=False)

# 登出系统
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:统计年份,为空时默认当前年;
  • quarter:统计季度,为空时默认当前季度。不为空时只有4个取值:1,2,3,4。
返回示例数据
code pubDate statDate NRTurnRatio NRTurnDays INVTurnRatio INVTurnDays CATurnRatio AssetTurnRatio
sh.600000 2017-08-30 2017-06-30 0.014161
返回数据说明
参数名称 参数描述 算法说明
code 证券代码
pubDate 公司发布财报的日期
statDate 财报统计的季度的最后一天, 比如2017-03-31, 2017-06-30
NRTurnRatio 应收账款周转率(次) 营业收入/[(期初应收票据及应收账款净额+期末应收票据及应收账款净额)/2]
NRTurnDays 应收账款周转天数(天) 季报天数/应收账款周转率(一季报:90天,中报:180天,三季报:270天,年报:360天)
INVTurnRatio 存货周转率(次) 营业成本/[(期初存货净额+期末存货净额)/2]
INVTurnDays 存货周转天数(天) 季报天数/存货周转率(一季报:90天,中报:180天,三季报:270天,年报:360天)
CATurnRatio 流动资产周转率(次) 营业总收入/[(期初流动资产+期末流动资产)/2]
AssetTurnRatio 总资产周转率 营业总收入/[(期初资产总额+期末资产总额)/2]


季频成长能力:query_growth_data()

方法说明:通过API接口获取季频成长能力信息,可以通过参数设置获取对应年份、季度数据,提供2007年至今数据。 返回类型: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)

# 成长能力
growth_list = []
rs_growth = bs.query_growth_data(code="sh.600000", year=2017, quarter=2)
while (rs_growth.error_code == '0') & rs_growth.next():
    growth_list.append(rs_growth.get_row_data())
result_growth = pd.DataFrame(growth_list, columns=rs_growth.fields)
# 打印输出
print(result_growth)
# 结果集输出到csv文件
result_growth.to_csv("D:\\growth_data.csv", encoding="gbk", index=False)

# 登出系统
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:统计年份,为空时默认当前年;
  • quarter:统计季度,为空时默认当前季度。不为空时只有4个取值:1,2,3,4。
返回示例数据
code pubDate statDate YOYEquity YOYAsset YOYNI YOYEPSBasic YOYPNI
sh.600000 2017-08-30 2017-06-30 0.120243 0.101298 0.054808 0.021053 0.052111
返回数据说明
参数名称 参数描述 算法说明
code 证券代码
pubDate 公司发布财报的日期
statDate 财报统计的季度的最后一天, 比如2017-03-31, 2017-06-30
YOYEquity 净资产同比增长率 (本期净资产-上年同期净资产)/上年同期净资产的绝对值*100%
YOYAsset 总资产同比增长率 (本期总资产-上年同期总资产)/上年同期总资产的绝对值*100%
YOYNI 净利润同比增长率 (本期净利润-上年同期净利润)/上年同期净利润的绝对值*100%
YOYEPSBasic 基本每股收益同比增长率 (本期基本每股收益-上年同期基本每股收益)/上年同期基本每股收益的绝对值*100%
YOYPNI 归属母公司股东净利润同比增长率 (本期归属母公司股东净利润-上年同期归属母公司股东净利润)/上年同期归属母公司股东净利润的绝对值*100%


季频偿债能力:query_balance_data()

方法说明:通过API接口获取季频偿债能力信息,可以通过参数设置获取对应年份、季度数据,提供2007年至今数据。 返回类型: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)

# 偿债能力
balance_list = []
rs_balance = bs.query_balance_data(code="sh.600000", year=2017, quarter=2)
while (rs_balance.error_code == '0') & rs_balance.next():
    balance_list.append(rs_balance.get_row_data())
result_balance = pd.DataFrame(balance_list, columns=rs_balance.fields)
# 打印输出
print(result_balance)
# 结果集输出到csv文件
result_balance.to_csv("D:\\balance_data.csv", encoding="gbk", index=False)

# 登出系统
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:统计年份,为空时默认当前年;
  • quarter:统计季度,为空时默认当前季度。不为空时只有4个取值:1,2,3,4。
返回示例数据
code pubDate statDate currentRatio quickRatio cashRatio YOYLiability liabilityToAsset assetToEquity
sh.600000 2017-08-30 2017-06-30 0.100020 0.933703 15.083598
返回数据说明
参数名称 参数描述 算法说明
code 证券代码
pubDate 公司发布财报的日期
statDate 财报统计的季度的最后一天, 比如2017-03-31, 2017-06-30
currentRatio 流动比率 流动资产/流动负债
quickRatio 速动比率 (流动资产-存货净额)/流动负债
cashRatio 现金比率 (货币资金+交易性金融资产)/流动负债
YOYLiability 总负债同比增长率 (本期总负债-上年同期总负债)/上年同期中负债的绝对值*100%
liabilityToAsset 资产负债率 负债总额/资产总额
assetToEquity 权益乘数 资产总额/股东权益总额=1/(1-资产负债率)


季频现金流量:query_cash_flow_data()

方法说明:通过API接口获取季频现金流量信息,可以通过参数设置获取对应年份、季度数据,提供2007年至今数据。 返回类型: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)

# 季频现金流量
cash_flow_list = []
rs_cash_flow = bs.query_cash_flow_data(code="sh.600000", year=2017, quarter=2)
while (rs_cash_flow.error_code == '0') & rs_cash_flow.next():
    cash_flow_list.append(rs_cash_flow.get_row_data())
result_cash_flow = pd.DataFrame(cash_flow_list, columns=rs_cash_flow.fields)
# 打印输出
print(result_cash_flow)
# 结果集输出到csv文件
result_cash_flow.to_csv("D:\\cash_flow_data.csv", encoding="gbk", index=False)

# 登出系统
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:统计年份,为空时默认当前年;
  • quarter:统计季度,为空时默认当前季度。不为空时只有4个取值:1,2,3,4。
返回示例数据
code pubDate statDate CAToAsset NCAToAsset tangibleAssetToAsset ebitToInterest CFOToOR CFOToNP CFOToGr
sh.600000 2017-08-30 2017-06-30 —3.071550 —8.976439 —3.071550
返回数据说明
参数名称 参数描述 算法说明
code 证券代码
pubDate 公司发布财报的日期
statDate 财报统计的季度的最后一天, 比如2017-03-31, 2017-06-30
CAToAsset 流动资产除以总资产
NCAToAsset 非流动资产除以总资产
tangibleAssetToAsset 有形资产除以总资产
ebitToInterest 已获利息倍数 息税前利润/利息费用
CFOToOR 经营活动产生的现金流量净额除以营业收入
CFOToNP 经营性现金净流量除以净利润
CFOToGr 经营性现金净流量除以营业总收入


季频杜邦指数:query_dupont_data()

方法说明:通过API接口获取季频杜邦指数信息,可以通过参数设置获取对应年份、季度数据,提供2007年至今数据。 返回类型: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)

# 查询杜邦指数
dupont_list = []
rs_dupont = bs.query_dupont_data(code="sh.600000", year=2017, quarter=2)
while (rs_dupont.error_code == '0') & rs_dupont.next():
    dupont_list.append(rs_dupont.get_row_data())
result_dupont = pd.DataFrame(dupont_list, columns=rs_dupont.fields)
# 打印输出
print(result_dupont)
# 结果集输出到csv文件
result_dupont.to_csv("D:\\dupont_data.csv", encoding="gbk", index=False)

# 登出系统
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • year:统计年份,为空时默认当前年;
  • quarter:统计季度,为空时默认当前季度。不为空时只有4个取值:1,2,3,4。
返回示例数据
code pubDate statDate dupontROE dupontAssetStoEquity dupontAssetTurn dupontPnitoni
sh.600000 2017-08-30 2017-06-30 0.074617 15.594453 0.014161 0.987483
返回示例数据
dupontNitogr dupontTaxBurden dupontIntburden dupontEbittogr
0.342179 0.776088
返回数据说明
参数名称 参数描述 算法说明
code 证券代码
pubDate 公司发布财报的日期
statDate 财报统计的季度的最后一天, 比如2017-03-31, 2017-06-30
dupontROE 净资产收益率 归属母公司股东净利润/[(期初归属母公司股东的权益+期末归属母公司股东的权益)/2]*100%
dupontAssetStoEquity 权益乘数,反映企业财务杠杆效应强弱和财务风险 平均总资产/平均归属于母公司的股东权益
dupontAssetTurn 总资产周转率,反映企业资产管理效率的指标 营业总收入/[(期初资产总额+期末资产总额)/2]
dupontPnitoni 归属母公司股东的净利润/净利润,反映母公司控股子公司百分比。如果企业追加投资,扩大持股比例,则本指标会增加。
dupontNitogr 净利润/营业总收入,反映企业销售获利率
dupontTaxBurden 净利润/利润总额,反映企业税负水平,该比值高则税负较低。净利润/利润总额=1-所得税/利润总额
dupontIntburden 利润总额/息税前利润,反映企业利息负担,该比值高则税负较低。利润总额/息税前利润=1-利息费用/息税前利润
dupontEbittogr 息税前利润/营业总收入,反映企业经营利润率,是企业经营获得的可供全体投资人(股东和债权人)分配的盈利占企业全部营收收入的百分比

查询季频公司报告信息

季频公司业绩快报:query_performance_express_report()

方法说明:通过API接口获取季频公司业绩快报信息,可以通过参数设置获取起止年份数据,提供2006年至今数据。除几种特殊情况外,交易所未要求必须发布。

返回类型: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 = bs.query_performance_express_report("sh.600000", start_date="2015-01-01", end_date="2017-12-31")
print('query_performance_express_report respond error_code:'+rs.error_code)
print('query_performance_express_report respond  error_msg:'+rs.error_msg)

result_list = []
while (rs.error_code == '0') & rs.next():
    result_list.append(rs.get_row_data())
    # 获取一条记录,将记录合并在一起
result = pd.DataFrame(result_list, columns=rs.fields)
#### 结果集输出到csv文件 ####
result.to_csv("D:\\performance_express_report.csv", encoding="gbk", index=False)
print(result)

#### 登出系统 ####
bs.logout()

参数含义:

  • code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;
  • start_date:开始日期,发布日期或更新日期在这个范围内;
  • end_date:结束日期,发布日期或更新日期在这个范围内。
返回示例数据
code performanceExpPubDate performanceExpStatDate performanceExpUpdateDate performanceExpressTotalAsset performanceExpressNetAsset
sh.600000 2015-01-06 2014-12-31 2015-01-06 4195602000000.000000 260011000000.000000
sh.600000 2016-01-05 2015-12-31 2016-01-05 5043060000000.000000 285245000000.000000
sh.600000 2017-01-04 2016-12-31 2017-01-04 5857263000000.000000 338027000000.000000
返回示例数据
performanceExpressEPSChgPct performanceExpressROEWa performanceExpressEPSDiluted performanceExpressGRYOY performanceExpressOPYOY
0.326910 21.020000 2.520000 0.228390 0.153803
0.191493 18.820000 2.660000 0.192395 0.069764
0.115412 16.350000 2.400000 0.097234 0.054384
返回数据说明
参数名称 参数描述
code 证券代码
performanceExpPubDate 业绩快报披露日
performanceExpStatDate 业绩快报统计日期
performanceExpUpdateDate 业绩快报披露日(最新)
performanceExpressTotalAsset 业绩快报总资产
performanceExpressNetAsset 业绩快报净资产
performanceExpressEPSChgPct 业绩每股收益增长率
performanceExpressROEWa 业绩快报净资产收益率ROE-加权
performanceExpressEPSDiluted 业绩快报每股收益EPS-摊薄
performanceExpressGRYOY 业绩快报营业总收入同比
performanceExpressOPYOY 业绩快报营业利润同比

季频公司业绩预告:query_forecast_report()

方法说明:通过API接口获取季频公司业绩预告信息,可以通过参数设置获取起止年份数据,提供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
sh.600000 2010-01-05 2009-12-31 略增 预计2009年归属于上市公司股东净利润1319500万元,同比增长5.43%。
sh.600000 2011-01-05 2010-12-31 略增 预计公司2010年年度归属于上市公司股东净利润为190.76亿元,较上年同期增长44.33%。
sh.600000 2012-01-05 2011-12-31 略增 预计2011年1月1日至2011年12月31日,归属于上市公司股东的净利润:盈利272.36亿元,与上年同期相比增加了42.02%。
返回示例数据
profitForcastChgPctUp profitForcastChgPctDwn
5.430000 0.000000
44.330000 44.330000
42.020000 42.020000
返回数据说明
参数名称 参数描述
code 证券代码
profitForcastExpPubDate 业绩预告发布日期
profitForcastExpStatDate 业绩预告统计日期
profitForcastType 业绩预告类型
profitForcastAbstract 业绩预告摘要
profitForcastChgPctUp 预告归属于母公司的净利润增长上限(%)
profitForcastChgPctDwn 预告归属于母公司的净利润增长下限(%)

获取证券元信息

交易日查询:query_trade_dates()

方法说明:通过API接口获取股票交易日信息,可以通过参数设置获取起止年份数据,提供上交所1990-今年数据。 返回类型: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 = bs.query_trade_dates(start_date="2017-01-01", end_date="2017-06-30")
print('query_trade_dates respond error_code:'+rs.error_code)
print('query_trade_dates respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)

#### 结果集输出到csv文件 ####   
result.to_csv("D:\\trade_datas.csv", encoding="gbk", index=False)
print(result)

#### 登出系统 ####
bs.logout()

参数含义:

  • start_date:开始日期,为空时默认为2015-01-01。
  • end_date:结束日期,为空时默认为当前日期。
返回示例数据
calendar_date is_trading_day
2017-01-01 0
2017-01-02 0
2017-01-03 1
返回数据说明
参数名称 参数描述
calendar_date 日期
is_trading_day 是否交易日(0:非交易日;1:交易日)

证券代码查询:query_all_stock()

方法说明:获取指定交易日期所有股票列表。通过API接口获取证券代码及股票交易状态信息,与日K线数据同时更新。可以通过参数‘某交易日’获取数据(包括:A股、指数),数据范围同接口query_history_k_data_plus()。

返回类型:pandas的DataFrame类型。

更新时间:与日K线同时更新。

使用示例

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 = bs.query_all_stock(day="2017-06-30")
print('query_all_stock respond error_code:'+rs.error_code)
print('query_all_stock respond  error_msg:'+rs.error_msg)

#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)

#### 结果集输出到csv文件 ####   
result.to_csv("D:\\all_stock.csv", encoding="gbk", index=False)
print(result)

#### 登出系统 ####
bs.logout()

参数含义:

  • day:需要查询的交易日期,为空时默认当前日期。
返回示例数据
code tradeStatus code_name
sh.000001 1 上证综合指数
sh.000002 1 上证A股指数
sh.000003 1 上证B股指数
返回数据说明
参数名称 参数描述
code 证券代码
tradeStatus 交易状态(1:正常交易 0:停牌)
code_name 证券名称