feat(data): raw真实价数据源(task#79)—raw_dir+dir_key路由+新浪源重下

根因: daily_dir mixed-adjust(hfq bulk+akshare raw tail)致3-30 -94%假跌。
方案(Linus三问简化单raw, 除权留分期项#3):
- datareader read_parquet_daily/15min 加 dir_key 参数
- data_source iter_bars/fetch_day: adjust=raw→raw_dir(缺配置报错防混源), qfq→daily_dir
- engine PaperEngine 默认 adjust=raw
- config 加 raw_dir; scripts/raw_redownload.py 新浪源adjust='' 直连+单线程限速
- 验证: 浦发606行close 6.5/14.6 mean10.08 0跳变, 撮合成交价9.71-10.25真实
- 测试9/9+trader全量108/108通过
This commit is contained in:
2026-07-07 22:19:11 +08:00
parent fc39b549cf
commit 1ed7b72aca
10 changed files with 366 additions and 43 deletions
+22 -5
View File
@@ -86,10 +86,27 @@ cd v2/scripts/data_platform
./run_daily_update.sh --skip-15min # 只日线
```
## raw 数据源(task #79后续
## raw 真实价数据源(task #79已实现
当前 parquet 是前复权/后复权(成交价显示失真,如浦发 110 元 vs 现价 ~10)。raw 不复权:
- BaoStock `adjustflag="3"`v1 `backfill_15min_baostock.py:131` 已用 raw 下 15min
- akshare `adjust=""`
### 根因:daily_dir mixed-adjust 污染
`daily_dir``/volume1/stock/A股数据/日线数据/daily`)历史数据是 **mixed-adjust**
- 历史 bulk = 早期遗留 **hfq**(浦发 ~196 元)
- 近期增量 = akshare **raw** tail(浦发 ~10 元),因 Mac 无 baostock、`adjustflag="2"` 是死代码
- 同一 parquet 半截 hfq 半截 raw → 3-30 单日 **-94% 假跌** → 撮合出垃圾结果(假跌停/假低价)
task #79 接入 raw 双源(撮合/涨跌停/均价用 raw,策略信号用 qfq)。
### raw_dir 通路(干净单一 raw
新建 `raw_dir``/volume1/stock/A股数据/日线数据/raw`),akshare 新浪源 `adjust=""` 从头重下:
- `scripts/data_platform/raw_redownload.py`**直连**unset proxy+ **单线程 SLEEP 限速**(防封 IP+ 新浪源 `stock_zh_a_daily`
- 文件名与 daily_dir 同构(`{prefix}{symbol}_daily.parquet`,按 year 分目录),datareader 直读
- 验证(2026-07-07):浦发 606 行 close 6.5/14.6/mean 10.08**0 跳变 CLEAN**,撮合成交价 9.7110.25 真实
### 接口(双目录路由)
- `datareader.read_parquet_daily(dir_key="...")`dir_key 切换 `daily_dir`/`raw_dir`
- `data_source.iter_bars(adjust="raw")``raw_dir``adjust="qfq"``daily_dir`raw 缺 raw_dir **报错**(不 fallback,防混源)
- `engine.PaperEngine(adjust="raw")` 默认 raw(撮合+信号共用真实价)
### 简化决策(单 raw,除权留分期项)
原 spec 双源(撮合 raw + 策略 qfq)。Linus 三问简化为**单 raw**:除权缺口对 MA 信号影响低频(年 1-2 次),「分红除权」已列分期项 #3。双源/除权合并进分期项。
### daily_dir 后续
`daily_dir`mixed)暂保留给 backtestPhase 2),后续迁 `raw_dir``daily_all_update.py``adjustflag="2"` 在 Mac 无 baostock 时是死代码,实走 akshare raw fallback。