From acec96539bbb8354ad5631b06c6cc6b8fd123039 Mon Sep 17 00:00:00 2001 From: aszerW Date: Sat, 16 May 2026 11:42:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(strategy):=20=E6=B7=BB=E5=8A=A0=E8=B4=9F?= =?UTF-8?q?=E5=8A=A8=E9=87=8F=E7=A9=BA=E4=BB=93=E6=9C=BA=E5=88=B6=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E6=8C=81=E4=BB=93=E6=83=AF=E6=80=A7=E4=BA=8F=E6=8D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当所有候选标的动量得分低于min_score时,策略自动清仓而非继续持有之前的负动量组合。 修复问题: - 旧逻辑:target为空时继续持有current_held(负动量标的) - 新逻辑:target为空时清仓(current_held='') 回测效果: - 累计收益从11872%提升至14580%(+2708%) - 最大回撤从-71.9%改善至-61.1%(+10.9%) - 2000年互联网泡沫期间空仓77天(24.8%) - 2001年空仓31天,收益从-48.7%改善至-41.1% --- strategies/shared/signals/selectors.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/strategies/shared/signals/selectors.py b/strategies/shared/signals/selectors.py index 2e81484..3b5dd9c 100644 --- a/strategies/shared/signals/selectors.py +++ b/strategies/shared/signals/selectors.py @@ -151,6 +151,11 @@ class TopNSelector(SignalGenerator): if should: current_held = target last_rebalance_idx = i + else: + # 目标信号为空(所有标的动量得分低于min_score),清仓 + # 不继续持有负动量标的,转为空仓 + current_held = '' + last_rebalance_idx = i signals.append(current_held)