Baostock

4个月前发布 354 0 0

免费股票数据接口库

收录时间:
2025-02-11
BaostockBaostock

Baostock:免费股票数据接口库

Baostock 是一个 免费、开源的股票数据接口库,专注于提供 中国 A 股的历史数据、财务数据、指数数据等。它适用于 量化投资、股票分析、回测研究,并且数据较为稳定,适合长周期分析。


Baostock 的主要特点

完全免费:无需订阅或付费,所有用户均可使用
数据源稳定:数据来自 证券交易所,适用于长期回测
支持多种数据:包括 A 股历史数据、财务数据、指数数据、交易日历等
数据精度高:支持 日线、周线、月线级别,并提供 前复权、后复权 处理
轻量级 & 易使用:API 设计简单,适合 Python 量化交易


Baostock 主要功能

数据类型 数据内容
股票数据 A 股日线、周线、月线数据、前复权、后复权、成交量、换手率
指数数据 上证指数、深证成指、沪深 300、创业板指数等
财务数据 每股收益、市盈率、净利润、资产负债率等
交易日历 查询股票市场开市、休市日期
股票基本信息 公司代码、行业、上市日期、股票状态

Baostock 安装与使用

1. 安装 Baostock

pip install baostock

2. 导入 Baostock 并登录

import baostock as bs
import pandas as pd

# 登录 Baostock 服务器
lg = bs.login()

# 检查登录状态
print(f"登录状态:{lg.error_msg}")

Baostock 使用示例

1. 获取 A 股历史 K 线数据

# 查询股票日 K 线数据 (前复权)
rs = bs.query_history_k_data_plus(
    "sh.600000",  # 证券代码(sh:上海, sz:深圳)
    "date,open,high,low,close,volume,amount",  # 选择字段
    start_date="2024-01-01", 
    end_date="2024-02-10", 
    frequency="d",  # 日线
    adjustflag="2"  # 复权类型(1:不复权,2:前复权,3:后复权)
)

# 解析数据
data_list = []
while (rs.error_code == '0') & rs.next():
    data_list.append(rs.get_row_data())

df = pd.DataFrame(data_list, columns=rs.fields)
print(df.head())

# 退出 Baostock
bs.logout()

返回示例:

date open high low close volume amount
2024-01-02 10.1 10.5 10.0 10.3 1000000 1030000
2024-01-03 10.3 10.7 10.2 10.5 1200000 1260000

2. 获取 A 股公司财务数据

# 查询 2023 年度财务数据
rs = bs.query_balance_data(code="sh.600000", year=2023, quarter=4)

# 解析数据
data_list = []
while (rs.error_code == '0') & rs.next():
    data_list.append(rs.get_row_data())

df = pd.DataFrame(data_list, columns=rs.fields)
print(df.head())
bs.logout()

返回示例(部分):

code totalAssets netProfit
sh.600000 5000000000 300000000

3. 获取沪深 300 指数历史数据

rs = bs.query_history_k_data_plus(
    "sh.000300",  # 沪深 300 指数代码
    "date,open,high,low,close,volume",
    start_date="2024-01-01",
    end_date="2024-02-10",
    frequency="d",
    adjustflag="2"
)

data_list = []
while (rs.error_code == '0') & rs.next():
    data_list.append(rs.get_row_data())

df = pd.DataFrame(data_list, columns=rs.fields)
print(df.head())
bs.logout()

4. 获取交易日历

rs = bs.query_trade_dates(start_date="2024-01-01", end_date="2024-12-31")
data_list = []
while (rs.error_code == '0') & rs.next():
    data_list.append(rs.get_row_data())

df = pd.DataFrame(data_list, columns=rs.fields)
print(df[df['is_trading_day'] == '1'].head())  # 筛选交易日
bs.logout()

Baostock 与 Tushare、AkShare 对比

对比项 Baostock Tushare AkShare
收费情况 免费 部分免费,部分需付费 免费
数据源 证券交易所 官方交易所、券商 新浪、东方财富
股票数据 ✅ A 股 ✅ A 股、港股、美股 ✅ A 股、港股、美股
指数数据
财务数据 ✅(付费)
复权处理 ✅(前复权、后复权) ✅(部分需要 Pro 版)
实时数据 ✅(付费)
注册 API 不需要 需要 不需要
适合用途 长期回测、财务分析 实时行情、专业量化 快速数据抓取、分析

Baostock 适用场景

长期回测:适用于 日线级别、周线级别的回测分析
财务数据分析:适合财务指标、基本面分析
指数分析:获取沪深 300、上证指数等历史数据
股票研究:提供前复权、后复权数据,适合长期投资研究


总结

  • Baostock 是一个稳定、免费的股票数据接口库,特别适用于 A 股市场的量化研究、财务分析、回测研究
  • 相比 Tushare,Baostock 不需要注册 API,数据获取方便,但不提供实时数据。
  • 相比 AkShare,Baostock 数据稳定性更好,特别适用于长期回测
  • 如果你做 A 股的量化投资、策略研究,Baostock 是一个非常好的选择!🚀

数据统计

相关导航

暂无评论

none
暂无评论...