Justin Gu
c15bd8232f
release: v1.17.2 — QFQ 深层历史负价修复
通达信服务端 QFQ 模式对长期重度除权股票(如 601088)深层历史页
返回负价格,导致回测总收益 -3087%、回撤 326.85%、年化 nan、
bollinger 崩溃、10 策略 invalid-value-in-scalar-power、MyTT divide-by-zero。
客户端兜底:检测 QFQ 负价时用 NONE+XDXR 本地重算前复权
(因子以除权日前一交易日含权收盘价为基准,保证除权日前后连续)。
同步+异步双路径一致修复,失败降级返回原值。
- 新增 src/easy_tdx/mac/adjust.py(纯函数 compute_forward_factor/
apply_forward_adjust/has_bad_prices)
- MacClient/AsyncMacClient 触发本地重算,XDXR 按 (market,code) 缓存
- tests: +20 例(16 纯函数 + 4 集成),844 全绿,ruff/mypy 通过
2026-07-03 22:42:04 +08:00
..
2026-04-11 19:55:19 +08:00
2026-07-03 01:30:40 +08:00
2026-05-22 22:44:45 +08:00
2026-06-12 21:10:50 +08:00
2026-06-09 18:15:37 +08:00
2026-06-10 15:03:41 +08:00
2026-07-02 03:37:37 +08:00
2026-06-12 20:59:59 +08:00
2026-06-13 21:10:15 +08:00
2026-07-02 03:37:37 +08:00
2026-06-09 17:55:24 +08:00
2026-06-12 20:47:03 +08:00
2026-06-09 18:21:25 +08:00
2026-06-09 16:43:44 +08:00
2026-05-22 04:19:07 +08:00
2026-06-11 22:56:23 +08:00
2026-06-10 15:03:41 +08:00
2026-06-11 02:25:42 +08:00
2026-06-17 18:17:32 +08:00
2026-07-02 03:37:37 +08:00
2026-06-14 23:58:24 +08:00
2026-07-02 03:37:37 +08:00
2026-06-30 15:02:27 +08:00
2026-05-21 23:21:21 +08:00
2026-05-21 23:21:21 +08:00
2026-05-21 23:21:21 +08:00
2026-06-29 22:15:28 +08:00
2026-07-02 03:37:37 +08:00
2026-05-21 23:21:21 +08:00
2026-07-02 03:37:37 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-10 15:03:41 +08:00
2026-06-10 15:03:41 +08:00
2026-06-10 15:03:41 +08:00
2026-06-30 15:02:27 +08:00
2026-07-03 22:42:04 +08:00
2026-07-03 22:42:04 +08:00
2026-07-03 15:42:06 +08:00
2026-06-14 18:46:02 +08:00
2026-07-03 03:55:35 +08:00
2026-07-03 03:34:34 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-13 21:21:33 +08:00
2026-06-10 15:03:41 +08:00
2026-07-02 03:37:37 +08:00
2026-06-11 02:34:00 +08:00
2026-07-02 03:37:37 +08:00
2026-06-25 03:46:57 +08:00
2026-06-15 00:31:13 +08:00
2026-06-13 21:09:55 +08:00
2026-06-15 00:31:13 +08:00
2026-07-03 15:42:24 +08:00
2026-06-07 21:13:49 +08:00
2026-06-07 21:13:49 +08:00
2026-06-07 21:13:49 +08:00