阶段4数据获取●●●●●

baostock:安静可靠的"备用发电机"

我的掌握程度:
q-325精讲

先掌握这个答案

定位:免费的A股历史K线+财务数据库——注册即用(login机制)、接口签名稳定(多年不大改)、数据更新延迟(T+1或更晚——不适合实时、适合历史)。数据特点:复权三档参数(前/后/不复权)清晰、财务字段规整——但公告日字段弱于tushare(防前视仍以tushare为主)。多源体系角色:①对账第三方:akshare与tushare打架时,baostock当裁判(三方两票制);②灾备:主源接口集体失效时(源网站改版潮)顶上——历史K线这类慢变量它的稳定性优势最大。使用模板:bs.login()→bs.query_history_k_data_plus(...)→bs.logout()(记得登出)。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

本阶段实战方法 · 一条能复现的数据流水线

把接口返回的数据变成可用于因子研究的面板时,先处理时点、主键与单位。

  1. 建立数据字典:字段、单位、时区、交易日历、数据源、抓取时间、原始价与复权因子。
  2. 用(date, code)查重,区分停牌、未上市、窗口不足和真实缺失;不要用向后填充把未来值带回过去。
  3. 保存原始快照与清洗日志,固定随机种子和环境版本;接口字段变化时先核对官方文档。

使用边界

  • 报告期不等于公告可用日,盘后公告通常不能用于当天收盘前决策。
  • API输出名为“动态市盈率”时不能直接改名TTM;浏览器练习不支持任意原生库或行情抓取接口。
背景 · 从一个困惑说起
数据源组合里需要一个「安静的角色」:akshare活跃但接口常变、tushare要积分——baostock免费注册、接口稳定、更新稍慢——像一台备用发电机:平时不用,停电时救命。
由此产生的问题
baostock的定位与数据特点(复权口径/更新频率)?在多源体系里扮演什么角色(对账第三方/灾备)?它的登录机制与使用模板?
核心概念
定位:免费的A股历史K线+财务数据库——注册即用(login机制)、接口签名稳定(多年不大改)、数据更新延迟(T+1或更晚——不适合实时、适合历史)。数据特点:复权三档参数(前/后/不复权)清晰、财务字段规整——但公告日字段弱于tushare(防前视仍以tushare为主)。多源体系角色:①对账第三方:akshare与tushare打架时,baostock当裁判(三方两票制);②灾备:主源接口集体失效时(源网站改版潮)顶上——历史K线这类慢变量它的稳定性优势最大。使用模板:bs.login()→bs.query_history_k_data_plus(...)→bs.logout()(记得登出)。
为什么需要它
①对冲「单点故障」:研究流水线依赖单一数据源=把项目命运押在别人的网站改版上——第三方备份是最便宜的保险;②两票制对账的统计学:两个源可能同错(同源抓取),三个独立源两两对照才接近真相——数据可信度的冗余设计;③「更新慢」的重新理解:历史研究的原料不需要实时——慢而稳的数据在回测场景里反而是优点。
实际应用场景
建议架构:日常=akshare(快)+tushare(关键);每周对账=baostock抽样;灾备预案=一键切换脚本(主源失败自动降级到baostock的历史档)。
与之前知识的联系
q-321/322(主源组合)的备份件;q-327(机构终端)之前的免费生态收官;数据可信度问题呼应q-071(体检)的多源交叉。
⚠ 常见误解
  • 更新慢=没用:历史研究用不到今天的行情——它的稳定性恰是回测可复现的好朋友
  • 三个源数据打架听多数:若两源同源(抓同一页面),「多数」是假象——查各源的底层来源再投票
  • baostock登录失败很常见:账号密码用注册邮箱;login失败先查网络代理(它对代理敏感)

🤖 AI导师

导师会先检查你的前置知识(多源策略),再用案例、公式和代码帮助理解。此功能需要先启用服务。