mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 14:24:15 +08:00
_json_safe 先命中 `isinstance(v, (int, float, str, bool))` 分支, 原生 float 的 inf/NaN 被原样放行; numpy 分支也只挡 NaN 不挡 inf。pf.stats() 经 pandas Series.to_dict() 出来时 numpy 标量已装箱成原生 float, 所以清洗实际全部落空。 Starlette 的 JSONResponse 用 json.dumps(allow_nan=False) 渲染, 响应体里出现 一个 inf/NaN 就是整个 POST /api/backtest/run 500 (ValueError: Out of range float values are not JSON compliant)。全部交易都盈利时 Profit Factor = inf、零波动时 Sharpe = NaN 都会触发。 把非有限判定提到原生标量分支之前, 与 app/api/backtest._json_safe 同口径。