release: v1.24.0 — QFQ 对拍验证体系 + 回测任务持久化 + 品种感知费率

升级计划 P0(docs/upgrade-plan-2026H2.md)。源自 backtest-system / indicator-lab 两个下游项目的逆向调研。

- QFQ 对拍验证:公式法(NONE+XDXR)与跳空检测法(板块感知涨跌停阈值)双证据链互检,
  检出负价/残留跳空/方向反演/XDXR 缺记录四类问题,接入 MAC 同步/异步客户端(mac/qfq_check.py);
  含茅台式多重分红、浦发式送转方向合成案例回归(13 用例)
- 回测任务 SQLite 持久化:~/.easy_tdx/tasks.db 双写内存 LRU + 磁盘(保留 500 条),serve 重启不丢;
  重启恢复中断任务标记;GET /backtest/tasks/{id}/export?format=json|csv 导出端点
- 品种感知费率:ETF/可转债免印花税等法定差异(backtest/fees.py),CLI --auto-fees、
  REST auto_fees 字段、组合引擎逐标的解析(34 用例)
- 修正 avg_holding_days 过时注释(实现早已是 FIFO 真实口径)
- tests/conftest.py 默认 EASY_TDX_NO_TASK_DB=1 防止单测污染用户任务库
- 注:engine/cli/routers/schemas 为跨版本累积态,后续版本提交继续演进
This commit is contained in:
GitHub
2026-09-01 22:16:44 +08:00
parent 6412880dbe
commit 1fc1d00c90
17 changed files with 2251 additions and 15 deletions
+16
View File
@@ -0,0 +1,16 @@
"""全局测试夹具。
- 默认关闭回测任务的 SQLite 持久化(``EASY_TDX_NO_TASK_DB=1``):
大量单测直接实例化 ``BacktestTaskRunner``,若不关闭会写真实的
``~/.easy_tdx/tasks.db`` 污染用户数据。task_store 专属测试通过
``monkeypatch.delenv`` + ``EASY_TDX_CONFIG_DIR`` 指向 ``tmp_path``
显式重新开启(见 ``test_task_store.py``)。
"""
from __future__ import annotations
import os
def pytest_configure() -> None:
os.environ.setdefault("EASY_TDX_NO_TASK_DB", "1")