Commit Graph

34 Commits

Author SHA1 Message Date
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 efaac41c06 feat(api): routes 完整(login + JWT 依赖 + optimize/factor + WS route) 2026-07-06 19:04:26 +08:00
claude_dev f5a69b312a feat(orchestrator): runner async submit + on_stage 回调 2026-07-06 18:24:28 +08:00
claude_dev 66aa27e807 feat(orchestrator): pool 异步化(ProcessPoolExecutor spawn + stage 追踪) 2026-07-06 18:19:24 +08:00
claude_dev 48a9058cb2 feat(api): WS 连接池 ConnectionManager 2026-07-06 18:15:22 +08:00
claude_dev 2227a91a8d feat(api): JWT 单用户认证(auth.py)+ config 扩展 2026-07-06 18:10:04 +08:00
claude_dev 0f894c8415 feat(api): 轻量 FastAPI 5 路由(无 JWT/WS/前端) 2026-07-06 11:38:15 +08:00
claude_dev 330b687e83 feat(orchestrator): runner 任务调度器 2026-07-06 11:25:11 +08:00
claude_dev 1aa7018223 feat(orchestrator): task 状态机 + pool 封装 2026-07-06 11:24:56 +08:00
claude_dev 0b86ac294d feat(backtest): cta_optimizer run_optimization wrapper 2026-07-06 11:11:32 +08:00
claude_dev a4ce3aed85 feat(backtest): cta_engine BacktestingEngine wrapper 2026-07-06 10:57:29 +08:00
claude_dev e95ab91526 feat(backtest): result_store SQLite+parquet 结果存储 2026-07-06 10:43:41 +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
claude_dev ee4bccb06b spike(s2): run_optimization PASS(vnpy_ctastrategy 1.4.1 + spawn pool + max_workers) 2026-07-06 07:45:47 +08:00
claude_dev 9a257994b3 spike(s1): vnpy.alpha A 股支撑度 PASS(AlphaLab 存取 + ts_mean 因子计算) 2026-07-06 07:40:38 +08:00
claude_dev b325109df6 spike(s3): peewee 冲突验证 PASS(alphalens 0.4.6 + vnpy_sqlite peewee 4.1.1 共存) 2026-07-06 07:33:47 +08:00
claude_dev 88295011f9 fix(data): spike 测试隔离(mock load_bar_data 避免 SETTINGS 污染) 2026-07-05 21:59:32 +08:00
claude_dev 339d85a927 fix(data): read_db_daily 配置 vnpy database 路径(修端到端读取 gap)
Fix: read_db_daily 现在在调用 get_database() 前配置 vnpy SETTINGS,
指向 cfg.data_paths["vnpy_db"](NAS quant_trading.db),修复端到端冒烟发现的读取 gap。
2026-07-05 21:03:03 +08:00
claude_dev cdde469120 test(data): vnpy 4.4.0 接口 spike + 端到端冒烟 2026-07-05 16:18:05 +08:00
claude_dev c6eae7eecf feat(data): UpdateScheduler 增量 + 断点续传 + 熔断 2026-07-05 16:14:23 +08:00
claude_dev 60b410b887 feat(data): DataWriter 原子写 parquet + vnpy SQLite 2026-07-05 12:43:18 +08:00
claude_dev 3015d6fa6b feat(data): DataFeed 多源 fallback + BaoStock 超时修复 2026-07-05 12:41:00 +08:00
claude_dev 4e541040f1 feat(data): DataReader SQLite + 交易所判断 + vnpy 4.4.0 spike 点 2026-07-05 12:36:34 +08:00
claude_dev 91d9c36f44 fix(data): Task 3 移除 vnpy mock,用真实 vnpy 源码
- 删除 tests/data/vnpy_mock.py
- conftest.py 加 vnpy_v4.4.0 源码到 sys.path(真实 vnpy import,不拉 Qt)
- 5 passed(config 2 + validator 2 + datareader 1)
2026-07-05 12:28:59 +08:00
claude_dev 10bdc65ac5 feat(data): DataReader parquet 读取 → BarData 2026-07-05 12:04:50 +08:00
claude_dev 56fbde6492 feat(data): 移植 v1 validator + 适配接口 + 测试 2026-07-05 11:53:51 +08:00
claude_dev 3422372948 fix(data): Task 1 review 修复(pycache清理+pytest.ini+错误处理)
- Fix 1: 移除误 commit 的 __pycache__ 文件
- Fix 2: 创建 pytest.ini 解决 PYTHONPATH 问题
- Fix 3: load_config 添加错误处理(FileNotFoundError + ValueError)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-05 11:50:30 +08:00
claude_dev 90f0b68ce2 feat(data): 脚手架 + YAML 配置加载 2026-07-05 11:41:57 +08:00
claude_dev 918bbed0fc fix: 修复登录500错误和移除明文密码提示
- 修复 deps.py 中 get_vn_service 的引用错误 (vn_service.vn_service -> vn_service)
- 移除登录页面上的明文密码提示
- 改进前端错误处理,避免数据加载失败导致登录显示错误
2026-07-02 12:23:55 +08:00
claude_dev 36ec0d38e3 chore: 添加 .gitkeep 保持目录结构
- tests/.gitkeep
- scripts/.gitkeep
- examples/.gitkeep

确保空目录在 Git 中被追踪。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 21:21:57 +08:00