# 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\\`。匹配现有 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:30** 跑 `daily_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_em`ConnectionError 弃用) **有问题/替代**:`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)。