Commit Graph

10 Commits

Author SHA1 Message Date
claude_dev a1048690c1 test: 前后端对齐—容器复跑验证+清理僵尸测试
- test_main: FastAPI 0.139 _IncludedRouter 不再 flatten,改用 TestClient 探测路由
- datareader: 文件名(sh600000_daily)/patch target(vnpy.trader.database) 对齐 lazy import 实现
- alpha_lab/analyzer/data_adapter: vnpy.alpha/alphalens 容器专用本地 skip
- 删 4 个测废弃 sanguo_web 的僵尸测试(-1267 行死代码)
- pytest.ini: asyncio_mode=auto
- frontend: package.json 加 test script(npm test 可跑)
- NAS 容器 309 passed 全绿验证(Python 3.10,本机 303+6skip)
2026-07-11 11:45:26 +08:00
claude_dev 24ead05b3f fix(factor): 因子管线真数据跑通(注册因子 + close 时区 + 多 symbol + smoke 真断言)
端到端修复因子分析在真实 A 股数据上的多层问题:
- __init__ 引入 library 触发 _register_all(ma5 等内置因子注册)
- read_db_daily 用裸 symbol(600000 非 600000.SSE),匹配 DB 存储
- analyzer 单独读 close 价格 + tz_localize Asia/Shanghai 对齐 factor_df aware 日期
- smoke 用 >=2 symbol(alphalens IC 是横截面分析,单 symbol 分位为空 -> concat 报错)
- smoke 真断言 IC 非空(杀掉之前的假阳性 PASS)
- 修 status 引用未定义的 use_cumsum_fallback

验证:容器 smoke 6/6 PASS,real tears 出真 IC
(ma5: 1D mean=-0.122/icir=-0.22, 5D mean=-0.276, 10D mean=-0.265, count=49)
容器 68 tests passed。
2026-07-06 23:00:48 +08:00
claude_dev db2cc8c531 fix(factor): compute_factors 时区对齐(边界 Asia/Shanghai aware,真数据跑通因子管线)
- Root cause: vnpy.alpha's to_datetime() creates naive datetimes from strings,
  causing SchemaError when comparing with timezone-aware DataFrame columns
- Fix: Convert period boundaries to Asia/Shanghai-aware datetimes + localize
  DataFrame datetime column before passing to AlphaDataset
- Restore data_adapter.py to fa7237b (removed ineffective tz stripping)
- Add test_compute_factors_passes_aware_periods_to_alpha_dataset
- Real data verification: 600000.SSE ma5 factor analysis successful
- Container tests: 67 passed

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 22:18:51 +08:00
claude_dev fa7237b996 feat(polish): 因子报告 IC 提取 + periods 提参 + 缓存上限 + 代码整洁
- analyzer.py: 提取 IC 值到 ic_summary (mean/std/icir/t_stat),periods 提参 (默认 1,5,10)
- alpha_lab.py: _loaded_bars 缓存 LRU 上限 (_MAX_CACHED_SYMBOLS=50)
- runner.py: 统一阶段文案 (参数优化中/因子分析中),worker 类型标注,_wait_future 文档
- pool.py: submit_work 添加 task_id debug 日志

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 21:32:27 +08:00
claude_dev ff0d535fe8 feat(factor): analyzer tears pipeline 完整化 2026-07-06 19:32:36 +08:00
claude_dev 8972d1058f feat(factor): alpha_lab compute_factors 完整化
添加 compute_factors 方法到 AlphaLabSession:
- 在 __init__ 添加 _loaded_symbols 和 _loaded_bars 缓存
- load_symbols 现在缓存 bar 数据供 compute_factors 使用
- compute_factors 使用缓存的 bars 调用 AlphaDataset
- 使用懒导入避免本地 Python 3.14 缺少 polars/vnpy.alpha 的 ImportError

测试 (container only):
- test_compute_factors_calls_prepare_and_fetch 验证 AlphaDataset 调用

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 19:14:12 +08:00
claude_dev 2379159818 feat(factor): AlphaLab 封装 + Alphalens 分析器
- 新增 alpha_lab.py: AlphaLabSession 类(lazy import vnpy.alpha)
- 新增 analyzer.py: run_factor_analysis + FactorReport(lazy import alphalens)
- 测试: test_alpha_lab.py (2 passed) + test_analyzer.py (3 passed)
- 策略: 本地无 alphalens/polars,函数内 lazy import 避免 ImportError
- 骨架: run_factor_analysis 返回 FactorReport,alphalens 集成待完整实现
2026-07-06 10:36:46 +08:00
claude_dev f93621e3fc feat(factor): 因子表达式注册 + Alpha158 子集内置库
- 实现因子表达式注册表(registry.py)
- 实现 Alpha158 子集内置因子库(library.py)
- 使用 vnpy.alpha ts_ 算子语法(ts_mean, ts_delta, ts_max, ts_min)
- 修正列名:close/open/high/low/volume(非 _price 后缀)
- TDD 实现:8 测试全部通过
- 支持因子分类过滤(custom/builtin)
- 防止重复注册

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 08:06:10 +08:00
claude_dev 9b14e34068 fix(test): data_adapter 测试值修正(range 偏移,4 passed 容器 Python3.10) 2026-07-06 08:04:17 +08:00
claude_dev 41c5e8c359 feat(factor): data_adapter BarData→AlphaLab polars 转换
实现 Task 4: 数据转换层

 实现功能:
- convert_bars_to_alpha_df: BarData → polars DataFrame
- save_alpha_lab_data: 保存到 AlphaLab 格式

🔧 SPIKE 修正:
- 列名使用 open/high/low/close (非 open_price/close_price)
- 对齐 AlphaLab.save_bar_data 的 parquet 格式

📝 文件:
- sanguo_factor/data_adapter.py (核心实现)
- sanguo_factor/__init__.py (模块初始化)
- tests/factor/test_data_adapter.py (TDD 测试)
- tests/factor/conftest.py (测试配置)
- tests/factor/__init__.py (测试包)

⚠️  Environment Note:
- polars 依赖在 Python 3.14 环境安装困难
- 代码逻辑正确,待环境配置后验证测试
2026-07-06 07:59:32 +08:00