Repository navigation
DeltaLab v2.0.0 — 2026-08-16
把 DeltaLab 从「跑一次回测看结果」变成「把多次回测横向比出结论」:新增 🆚 结果对比 与 🎯 策略优选 两个页面,并把 gui_app.py 拆成分层的 deltalab_ui/ 包。相对 v1.1.0 共 42 个提交、约 +39,500 行。
新增
- 🆚 结果对比:回测后按需保留快照,勾选任意组合即时对照曲线与绝对指标(期末净损益、总成本、最大回撤、触发 / 成交次数、换手额)。切换勾选只读缓存,不重跑回测。快照自动存本机、重开仍在,最多 20 条。页面不替你下判断,只负责说清这次的变量差在哪一项。
- 🎯 策略优选:用 CSV / Wind 真实历史严格连续回放近周 / 近月 / 近季 / 近半年 / 近年五档,固定以每日收盘 C2C 为基准,按增量收益 / 增量信噪比排名,可把胜出参数一键写回左侧。支持品种入口(
P.DCE按 Wind 逐日主力映射)。 - 智能行情粒度:每日 bar 数由时间索引与交易 session 自动推导,Wind 请求粒度按策略自动选择。
- 分段 bar 级明细的内容寻址缓存;
.env.example本地凭据模板。
变更
gui_app.py拆成deltalab_ui/包(15 个模块)。gui_app.py收缩到 1,691 行、保留为兼容入口,外部与测试继续写gui_app.XXX即可。- 策略优选周期口径重写:从「挑若干终点、各自向前回看」改为「从同一截止日向前严格连续回放最近
L日」。 - 移除行情粒度的手工调粗 —— 调粗只会静默漏掉 bar 内触发,让结论偏乐观。
- 指标
增量性价比改名增量信噪比;Wind 回测改为「分析截至日」驱动;历史候选上限 5 → 8;候选带宽的 σ 统一取左侧输入值。 - 表单改用统一布局系统;主题 / 字体 / 布局初始化抽到
deltalab_ui/theme.py;按钮与标签视觉层次调整。
修复
- 免安装版在装有 Wind 终端的机器上仍报
No module named 'WindPy':CI 构建机没有 Wind,包里不含 WindPy。现在会扫描本机 Wind 安装并接进进程重试,扫不到时报错列出扫过的位置;也可用DELTALAB_WIND_DIR手工指定 Wind 目录(见使用文档 §1.3)。 - 内容寻址缓存的键计算缺陷:不同输入可能命中同一份缓存,会串用别的段的 bar 明细。
- 品种池模式未显式降级排名口径:跨合约金额被直接相加。
- 策略优选校验的
UnboundLocalError,以及排序键混用不同量纲导致的排名错误。 - 回放策略未按分段成功过滤、预热参数未持久化;状态栏打包顺序;历史页分割线定位;headless import 失败。
测试与 CI
测试从 23 条(2 个文件)扩到 969 条(13 个文件:440 纯逻辑 + 529 GUI)。CI 在 ubuntu × Python 3.10 / 3.13 上跑全量,GUI 批用 xvfb-run。
升级说明
- 无需迁移:结果池与策略优选结果包都是本版新增,v1.x 不存在这两类文件。
- 两类结果包各带
schema_version,版本不符时拒绝载入而不是硬渲染 —— 字段口径改过不止一次,用新代码渲染旧包会静默给出错误结论。 - 三个运行时目录(
data/cache/、data/backtest_pool/、data/history_results/)已写进.gitignore:结果池包内含csv_path全路径与wind_code。 - CI 产出的发布包不内置 WindPy(GitHub runners 上没有 Wind 终端),改为运行时扫描本机 Wind 安装:装了 Wind 终端并设置过 Python 接口的机器可直连,装在非常规位置时用
DELTALAB_WIND_DIR指定。见使用文档 §1.3。
各页面的完整口径、参数含义与常见报错见 使用文档。
完整更新日志见 CHANGELOG.md。