e7465c342f
sanguo-index 增强: index_monthly_wrapper 加 STEP0 parse_csindex_announce (治偏差全集, 月度16号自动刷新 constituent_unified) register_akshare_schtasks 修 PowerShell schtasks /tr 反斜杠路径丢前缀坑: $ws 变量在双引号被原生命令解析吃掉 -> Arguments 存成 \xxx.ps1 -> schtasks /run 返回成功但 wrapper 静默不跑从不写日志。改全路径硬编码 + --%。 ak-* 5 schtask 路径全坏已批量修(register_akshare 旧版"已部署Ready"是假成功)。 诊断: Get-ScheduledTask 中文Win报 0x80070057 无用, 改 schtasks /query /xml 看 Arguments 才发现丢前缀。 schtask 全链路验证 STEP0-3 exit=0, constituent_unified 000852=1672(was_removed=672) / 932000=2684(684) 治偏差保持。
52 lines
4.3 KiB
Markdown
52 lines
4.3 KiB
Markdown
# 静态数据 3 个真缺口 — 补充设计(2026-07-19 记录)
|
||
|
||
> **✅ 方案A 2026-07-22 落地后状态**(见 [[data-fusion-design-finalized]] memory §14):
|
||
> - **缺口1 日线换手/涨跌**:已实现——baostock `turn`/`pctChg` 拆 `valuation_baostock/<year>.parquet` 按年宽表(2003-2026),非派生(原设计的"派生方案"已被 baostock 现成字段替代)。
|
||
> - **缺口2 ETF 入 universe**:已完成——xtata `sanguo-xt-eod` 18:40 跑,universe 沪深A股∪ETF∪基金=7414,dividend_type='front',ETF 入 dbbardata 与个股共表。
|
||
> - **缺口3 指数成分历史**:✅ **2026-07-23 全闭环**——`constituent_unified` 8466行/9指数(300/500/50 baostock 时点聚合全集 + 深证 4 指 akshare cni union 含被踢 + **中证1000/2000 csindex 公告回溯全集**)。**原"永久 gap"已推翻**:csindex 公告 JSON 接口(queryAnnouncementByVo + PDF/xlsx 附件)回溯调整公告治偏差,000852 1000→1672(was_removed=672)/ 932000 2000→2684(684)。详见 memory [[csindex-announce-backfill]]。残留 gap:932000 中间调整 csindex 无公告(launch∪current 近似)/ 000852 2007-2016 部分公告无附件(2016-12 起完整)。
|
||
>
|
||
> 下文为 2026-07-19 原始设计,保留作历史参考。
|
||
|
||
## 数据现状实测(VPS quant_trading.db + data/ 目录,非推理)
|
||
- **DB dbbardata**: 15m(2025-07~2026-07,1年,xt_tacitdata源)/5m(1年)/**d日线(2010~2026,16年,5205 symbols,OHLCV+amount)**。dbbardata schema 有 turnover(=成交额amount),**无换手率/涨跌幅列**。
|
||
- **parquet data/raw + data/qfq**: 各 59816,O H L C V 6列,16年(xtdata建,build_daily_from_xtdata)。
|
||
- **data/static/**: akshare balance 跑着(4300+ parquet)。
|
||
- **实测缺口**:
|
||
1. 日线**缺换手率+涨跌幅**(amount已在DB 16年)
|
||
2. **ETF不在daily universe**(5205 symbols大概率纯股票,518880等海外ETF缺)
|
||
3. **指数成分历史(含被踢)完全无**(全项目无脚本,akshare只当前快照)
|
||
|
||
## 3 缺口设计(派生方案,避开数据混乱+接口限流)
|
||
|
||
### 缺口1:日线换手/涨跌 → 派生,不新下载
|
||
- **pct_chg** = (close今 - close昨)/close昨,**从 qfq close 算**(16年,避免除权跳空)。
|
||
- **换手率** = volume / 流通股本。volume在DB;**流通股本在 akshare valuation(stock_value_em,排队P1,8.5年)**。
|
||
- amount:DB已有(16年)。
|
||
- **不开 daily_extra 新目录**,读取层派生 或 DB加列 → 不加剧"四套口径分裂" + **零新东财负载**。
|
||
|
||
### 缺口2:ETF日线 → 加进现有 xtdata universe
|
||
- ETF清单:海外 518880(黄金)/513100(纳指)/513030(德国)/164824(石油)/159866(有色) + 主 510300/510500/159915等,maintain成config。
|
||
- 加进 `build_daily_from_xtdata` 的 universe → 走现有 xtdata 本地管线(miniQMT),**不碰东财,无限流**。
|
||
|
||
### 缺口3:指数成分历史(含被踢) → csindex 抓取,先 spike
|
||
- 范围:hs300(000300)/zz500(000905)/zz50(000016)/中小综指(399101)/创业板指(399006)。
|
||
- **先派 agent spike 调研源**:akshare 有无历史成分API(index_stock_cons_weight_csindex带日期?fund_portfolio_hold_em?)、csindex.cn 历史成分xlsx URL规律+反爬、深证399101/399006 巨潮/szse 源。
|
||
- **B档(务实,先行)**:抓全部历史调仓成分→并集(曾经入选集),消灭幸存者偏差。output `data/index_const_hist/<indexcode>.parquet`。
|
||
- A档(精确,后做):时间序列(指数,生效日,成分,加/剔)。
|
||
- csindex 独立源,串行单线程抓,**限流风险低**。
|
||
|
||
## 风险结论(为何用派生方案)
|
||
- **原设计(akshare daily_extra)** 有双风险:① 数据混乱——日线口径第四处(DB/parquet raw/parquet qfq/daily_extra),回测不知读哪;② 接口限流——daily_fields_akshare 并发 akshare_static = 第二股东财流量→东财封(同 baostock 黑名单原理)。
|
||
- **派生方案**:缺口1 两风险全消(不下载/不开新目录);ETF走xtdata无限流;csindex独立源串行低风险。
|
||
- 唯一仍调外部API:缺口3(csindex)+ 已排队的 akshare static 本身——保持串行+限速,不新增并发。
|
||
|
||
## 决策与顺序(下载完后)
|
||
1. **派生换手/涨跌**(读取层工具 或 DB加列)——缺口1
|
||
2. **ETF 入 xtdata daily universe**——缺口2
|
||
3. **csindex spike 调研** → 定 B档抓取脚本——缺口3
|
||
4. (远期)A档精确成分时间序列
|
||
|
||
## 关联
|
||
- 主计划:`docs/static_data_cache_plan.md`
|
||
- 现状memory:`baostock-15min-vps-deploy-plan` / `db-primary-parquet-fallback` / `data-download-architecture`
|