mirror of
https://ghfast.top/https://github.com/aeroxw/easy_tdx_max.git
synced 2026-09-12 22:44:22 +08:00
#31: RebalanceEngine 缺失价格导致净值假崩塌 已持仓标的当日缺 K 线(停牌/日历错位)时 prices.get(code,0)=0, 持仓市值记 0 → 净值单日暴跌(159915 在 20210208 缺一天,持仓 ~93%, 净值 1.1M→91,845,全期最大回撤 -92%)。 修复:last_known_price forward-fill,缺失日沿用最近已知收盘价。 附带:_compute_performance 最大回撤改正值口径(与 BacktestEngine 一致)。 验证:真实 ETF 数据 max_drawdown 24.01%(backtrader 基准 27%), total_return 220.56% 不变。 #30: PortfolioTracker 交易静默漏单 apply_trades 用 trade.datetime 作 dict key、df["datetime"].to_numpy()[i] 查找;两端类型不一致(int vs datetime64)时永不命中,交易被静默丢弃, 净值恒定(total_return=0 但 trades 表有 PnL)。 修复:改为按"位置索引"匹配(归一化 datetime 后查位置),类型无关。 验证:int-trade+datetime64-df 修复前净值=100000(恒定),修复后=100289。 测试:新增 4 回归测试(未修复代码上均失败,修复后通过); 全套 936 passed;mypy 改动文件零错误;ruff 全绿。