Files
sanguo_vnpy_v2/docs/archive/data/static_data_cache_plan.md
claude_dev c3e53fbef3 docs(data): 归档数据层验证产物 + 数据层总览README
- scripts/data_platform/_archive/legacy/: 归档20个独立探针/诊断/旧降级脚本(零引用验证)
- docs/archive/data/: 归档17个数据相关旧设计/plan/report(保留fusion spec作深读)
- docs/data-platform/README.md: 数据层单一权威记录(8节:架构/布局/源/管线/铁律/API/缺口/待办)
- 删除 _mootdx_depth_result.txt
- Phase2待办: 15m灌库链+旧回填import链(有测试/wrapper依赖,VPS schtask确认后归档)
2026-07-29 10:11:38 +08:00

7.3 KiB
Raw Permalink Blame History

A股静态数据全量缓存到 VPS — 设计与采集计划

2026-07-19 立。目标:全市场 A股静态/基本面/参考数据全量缓存到 VPS 本地(parquet),作选股(基本面)与回测数据源。

原则(用户钦定)

  1. 尽量多缓存——能下的全下,避免限流/网络依赖。
  2. 串行可,等待长可接受——不追求并发速度,稳定性优先。
  3. 准确性第一——下错不如不下,每类数据必须验证。
  4. 建立每日自动更新——历史一次灌满 + 每日增量。
  5. 用途:基本面选股 + 回测。盘中实时当日数据(实盘)未来再做。

为什么缓存优于实时取(背景)

历史静态数据(含"日频"的历史部分)永不改变。本地缓存:秒级读盘/零网络依赖/可复现快照/不触发限流。实时取历史:慢/不稳/不可复现/反复触发封 IP。唯一非静态是"今天未收盘/未公布"的部分,日终收盘后即变静态。

范围(全量 ~2GB)

类别 频率 估算
A 基础元数据 基础信息(代码/名称/交易所/板块/上市退市/状态) 静态 baostock 1MB
行业分类(申万/中信/概念) 静态 akshare 30MB
指数成分+权重(300/500/1000/国证2000) akshare 50MB
B 财务 三大报表(资产/利润/现金流) baostock 150MB
季频衍生指标(ROE/EPS/毛利率/净利增速/负债率/杜邦) baostock 200MB
业绩预告/快报 季事件 akshare 30MB
C 股本/公司行为 股本结构变动 事件 akshare 50MB
十大股东+十大流通股东 akshare 250MB
分红送转配股 事件 baostock 40MB
限售解禁 事件 akshare 20MB
D 估值/复权(日频) 估值快照(PE/PB/PS/PF/股息率/市值/流通市值) akshare 300MB
复权因子(qfq/hfq) baostock 150MB
E 市场参考(日频,可选) 龙虎榜/大宗交易/融资融券/北向/ST停复牌 akshare ~360MB

存储格式与目录

parquet(每类一个目录),VPS C:\sanguo_vnpy_v2\data\static\<type>\。匹配现有 15min/daily parquet 模式,回测 pandas 直读,增量 append/overwrite 幂等。

data/static/
  basic/            基础信息(全量刷新,1文件 or per-stock)
  industry/         行业分类
  index_const/      指数成分
  balance/          资产负债表(per-stock parquet)
  income/           利润表
  cashflow/         现金流量表
  indicator/        季频财务指标(ROE/EPS/...)
  forecast/         业绩预告/快报
  share_capital/    股本结构
  top_holders/      十大股东
  dividend/         分红送转
  lockup_release/   限售解禁
  valuation/        估值日频(PE/PB/市值)
  adjust_factor/    复权因子
  dragon_tiger/     龙虎榜
  block_trade/      大宗交易
  margin/           融资融券
  northbound/       北向资金

数据源映射 + 串行约束(关键)

数据 并发约束
baostock 基础信息/复权因子/分红/季频指标/三表 单登录串行,跟15min共用登录→必须等15min跑完才能开(并发=IP封6-24h)
akshare 估值/龙虎榜/大宗/融资融券/北向/指数成分/行业/股本/十大股东/解禁/业绩预告 不同源,可与baostock错峰;东财源要限速防反爬

准确性协议(每类数据强制)

  1. 断点续传 marker + 失败/空数据区分(复用 15min 的 empty-vs-failed 修复)
  2. 下载后抽样验证(≥10只):字段完整 / 日期覆盖(回溯到2020) / 值合理性(PE>0、ROE合理区间、volume≥0、OHLC 自洽)
  3. 行数 + 覆盖率统计写入日志
  4. 幂等写入(per-stock parquet overwrite;INSERT OR REPLACE 若入 DB),staging 隔离→验证→合并(用户铁律:绝不直写主库/主目录未验)
  5. (可选)跨源抽检:baostock 季频财务 vs miniQMT PershareIndex 抽几只对一对

每日自动更新机制

Windows schtask sanguo-static-daily,每日盘后 16:30daily_update_static.py:

  • 日频类(估值/龙虎榜/大宗/融资融券/北向):追加当日(或近N日补漏)
  • 小表全量刷新:基础信息/行业/指数成分/分红(事件少,全量省得算增量)
  • 财报季(4/8/10月底后):追加新季报(三表/季频/十大股东)
  • 复权因子:每日刷新(除权事件会改累计因子)
  • 失败告警 + 断点续传 + 绝不破坏既有数据(只 append/replace 单日单股)
  • 串行 baostock 部分 + 限速 akshare 部分,单进程跑完

执行阶段

  • Phase 0(进行中):15min baostock,ETA 07-19 ~22:30
  • Phase 1:baostock 静态下载脚本(基础/复权/分红/季频/三表)— 构建 now,运行须等15min完
  • Phase 2:akshare 静态下载脚本(估值/龙虎榜/大宗/融资融券/北向/指数成分/行业/股本/十大股东/解禁/业绩预告)— 构建+可now起(不同源)
  • Phase 3:每类抽样验证 → 修问题
  • Phase 4:每日更新 schtask + 验证增量

akshare 调查结果(2026-07-19 确认,15类端点实证)

15类中 11 类端点直接可用,4 类有替代。财务类全部"单股一次拉全历史"(完美绕开 baostock per-quarter 百万调用)。全量 ~2.5-3GB,单线程 17-22h(可挂机,不同源可与 baostock 并行)。

确认端点(4种模式):

  • per-stock(5500股×1调用):估值stock_value_em / 北向stock_hsgt_individual_em / 股本stock_share_change_cninfo / 十大流通stock_gdfx_free_top_10_em(×20报告期) / 三大报表stock_balance/profit/cash_flow_sheet_by_report_em(319/203/254列全历史) / 财务摘要stock_financial_abstract
  • per-date(交易日×1调用):龙虎榜stock_lhb_detail_em / 大宗stock_dzjy_mrmx(symbol="A股") / 融资融券沪stock_margin_detail_sse / 解禁stock_restricted_release_detail_em
  • per-period(报告期×1调用):业绩预告stock_yjyg_em / 业绩快报stock_yjkb_em
  • one-shot:指数成分index_stock_cons_csindex(300/500/1000) / 行业sw_index_first_info(申万,东财stock_board_industry_name_emConnectionError 弃用)

有问题/替代:stock_margin_detail_szse(深融资融券)超时频繁→先跳过;stock_gdfx_holding_detail_em(date)按日全市场超时→改个股循环;stock_a_indicator_lg新版删→用stock_value_em

大小明细:估值150MB / 三大报表1.2GB / 财务摘要300MB / 北向120MB / 融资融券500MB / 十大流通60MB / 其余<100MB各。总~2.5-3GB

优先级:P0 三大报表+财务摘要(~1.5GB,~10h,核心财务)→ P1 估值+北向+融资融券(~770MB,~3h)→ P2 龙虎榜/大宗/解禁/业绩预告/股本/指数/行业(~300MB,~1h)。

部署架构(自愈链,2026-07-19)

  • 15min baostock:schtask sanguo-bs15min + 自愈.bat(ping-sleep 30min重试)。2026-07-19 12:00 baostock全球故障(Mac+VPS同挂10002007),自愈中,恢复即续 from marker 2847。
  • baostock静态:schtask sanguo-bs-static + 自愈.bat(wait15等15min "ALL DONE" → 自动接力 → ping-sleep自愈)。脚本baostock_static_download.py已部署(basic/adjust_factor/dividend,rs.fields动态取字段)。
  • akshare静态:schtask sanguo-bs-akshare(待建)+ 自愈.bat。脚本构建中。不同源,可与baostock并行
  • 监控:cron 779cbb71 每30min probe_all + 异常自修 + 完成报告。caffeinate防睡眠。
  • .bat sleep 用 ping -n N 127.0.0.1(timeout.exe在SYSTEM schtask下失效,见 memory schtasks-system-bat-gotchas)。