142 lines
4.3 KiB
Markdown
142 lines
4.3 KiB
Markdown
# 数据源体系建设 - 项目汇总报告
|
||
|
||
**任务ID**: data-platform-20260502
|
||
**汇总人**: 庞统(副军师)
|
||
**日期**: 2026-05-02
|
||
**状态**: P1完成,P2-P4待后续任务
|
||
|
||
---
|
||
|
||
## 一、项目目标
|
||
|
||
打通从数据获取到vnpy回测的完整数据通路:**NAS Parquet → vnpy SQLite DB → 回测引擎**
|
||
|
||
核心问题:vnpy回测服务的 quant_trading.db 是空的(8KB),所有回测任务必然失败。
|
||
|
||
---
|
||
|
||
## 二、各节点产出汇总
|
||
|
||
| 节点 | 负责人 | 核心产出 | 结论 |
|
||
|------|--------|---------|------|
|
||
| pangtong_requirements | 庞统 | 需求规格文档(7个维度、4个阶段、9项不确定项) | ✅ 通过 |
|
||
| zhaoyun_acquire | 赵云 | vnpy DB Schema确认 + 全量日线导入(1281万行)+ P0限频验证 | ✅ 通过 |
|
||
| jiangwei_storage | 姜维 | Docker数据通路打通 + executor bug修复 + 端到端回测验证 | ✅ 通过 |
|
||
| simayi_verify | 司马懿 | 数据完整性/正确性/回测可用性逐项验证 | ✅ 通过 |
|
||
|
||
---
|
||
|
||
## 三、P1 完成成果
|
||
|
||
### 3.1 数据导入
|
||
|
||
| 指标 | 数值 |
|
||
|------|------|
|
||
| 总行数 | **12,811,513** |
|
||
| 股票数 | **5,191** |
|
||
| 日期范围 | 2010-01-04 ~ 2026-03-27 |
|
||
| DB文件大小 | 1.4 GB(NAS)/ 1.51 GB(Docker内) |
|
||
| 导入耗时 | ~45 分钟 |
|
||
|
||
### 3.2 回测验证
|
||
|
||
| 验证项 | 结果 |
|
||
|--------|------|
|
||
| vnpy load_data() | ✅ 加载237根日K线(000001.SZSE 2025年) |
|
||
| 回测服务API | ✅ 提交→执行→返回统计 |
|
||
| 回测统计 | total_days=237, return=1.30%, sharpe=0.857 |
|
||
| 数据质量 | 6条异常(占比0.00005%),源自原始Parquet |
|
||
|
||
### 3.3 解决的关键问题
|
||
|
||
1. **vnpy DB Schema确认**:DbBarData表11个字段,唯一索引(symbol,exchange,interval,datetime)
|
||
2. **SMB写入SQLite锁库**:先写本地/tmp,完成后复制到NAS
|
||
3. **Docker未挂载数据目录**:通过Mac HTTP服务从Docker内wget DB文件到~/.vntrader/
|
||
4. **executor date→datetime bug**:修补版executor.py,字符串转datetime后再传给vnpy
|
||
|
||
---
|
||
|
||
## 四、产出的文件清单
|
||
|
||
### 代码文件(sanguo_vnpy/data_platform/)
|
||
|
||
| 文件 | 说明 | 行数 |
|
||
|------|------|------|
|
||
| import_vnpy_daily_fast.py | 全量日线导入脚本(pandas向量化) | 126 |
|
||
|
||
### 数据文件
|
||
|
||
| 文件 | 大小 | 路径 |
|
||
|------|------|------|
|
||
| quant_trading.db | 1.4 GB | /Volumes/stock/sanguo_vnpy/data/ |
|
||
| quant_trading.db.bak | 8 KB | /Volumes/stock/sanguo_vnpy/data/(原始空库备份) |
|
||
| database.db(Docker内) | 1.51 GB | /home/vnpy/.vntrader/ |
|
||
|
||
### 修复文件
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| executor_patched.py | executor.py date→datetime 修复版 |
|
||
| restore_backtest_service.sh | 容器重启后恢复脚本 |
|
||
| start_backtest.sh | Docker内回测服务启动脚本 |
|
||
|
||
### 文档文件
|
||
|
||
| 文件 | 路径 |
|
||
|------|------|
|
||
| 01-requirements.md | ~/.openclaw/sanguo_projects/sanguo_vnpy/docs/data-platform/ |
|
||
|
||
---
|
||
|
||
## 五、P0 腾讯API限频验证结果
|
||
|
||
| 指标 | 数值 |
|
||
|------|------|
|
||
| 测试规模 | 100只股票15分钟线 |
|
||
| 成功率 | **100%** |
|
||
| 平均响应时间 | 0.19秒/请求 |
|
||
| 封禁 | **无** |
|
||
| 预估全市场下载 | ~17分钟(5500只) |
|
||
|
||
**结论**:腾讯API限频不构成阻塞,P3分钟线可执行。
|
||
|
||
---
|
||
|
||
## 六、遗留问题(不阻塞P1)
|
||
|
||
| # | 问题 | 影响 | 建议处理 |
|
||
|---|------|------|---------|
|
||
| 1 | **容器重启需手动恢复回测服务** | 回测不自动启动 | 修改Docker entrypoint或Synology配置 |
|
||
| 2 | NAS数据停在2026-03-27 | 缺34天日线 | P2增量更新 |
|
||
| 3 | 6条异常数据(原始Parquet) | 影响极小 | P4全量校验 |
|
||
| 4 | DB导入非全自动(/tmp手动复制) | 运维不便 | 优化导入脚本 |
|
||
|
||
---
|
||
|
||
## 七、P2-P4 待后续任务推进
|
||
|
||
| 阶段 | 内容 | 状态 |
|
||
|------|------|------|
|
||
| P2: 数据基础设施 | 降级管理器+校验层+实时行情+增量更新+cron | 待创建任务 |
|
||
| P3: 分钟线数据 | 限频已验证通过,下载+导入 | 待创建任务 |
|
||
| P4: 配套skill | skill更新+全量校验+周维护 | 待创建任务 |
|
||
|
||
---
|
||
|
||
## 八、数据流架构(当前状态)
|
||
|
||
```
|
||
NAS Parquet (5191只×17年)
|
||
↓ import_vnpy_daily_fast.py
|
||
SQLite DB (1281万行, 1.4GB)
|
||
↓ Mac HTTP → Docker wget
|
||
Docker ~/.vntrader/database.db (1.51GB)
|
||
↓ engine.load_data()
|
||
vnpy BacktestingEngine → 回测结果 ✅
|
||
```
|
||
|
||
---
|
||
|
||
*汇总完成:2026-05-02*
|
||
*庞统(副军师)🐦*
|