diff --git a/card.py b/card.py index bcd5c40..c80bb07 100644 --- a/card.py +++ b/card.py @@ -159,9 +159,10 @@ def judge(ev: dict[str, Any], *, start_pct: float = 3.0, if n else f"这只票在「{theme}」环节,今天有上游传导过来") if gates["started"] and require_started: reasons.append(f"当日已启动 {pct0:+.1f}%") - elif not require_started and pct0 is not None: - # 门槛关着时它不再是一条理由,但当日涨跌仍是人要看的信息,照样写出来。 - reasons.append(f"当日涨幅 {pct0:+.1f}%(启动线已关闭,不作门槛)") + # 启动线关着时**理由行不写当日涨幅**(2026-09-07 审查修)。09-04 曾写成 + # "当日涨幅 x%(启动线已关闭,不作门槛)"——理由行在 PMS 送研判的白名单里,择时层的 + # 模型能直接读到这句选股层的政策旁白,它回答"启动线关闭、价格处高位滞涨区"就是被 + # 牵着走的结果。当日涨幅仍在 card 子字典的 pct0 里给人看,只是不再当理由、也不送研判。 if confirm: reasons.append(f"明确吸筹(评分 {accum_score:.0f},{accum_age} 日前)" if accum_score is not None else f"明确吸筹({accum_age} 日前)") diff --git a/test_card.py b/test_card.py index 0bcc01d..96aa6d7 100644 --- a/test_card.py +++ b/test_card.py @@ -169,9 +169,11 @@ def main(): # ---- 启动涨幅线的整条开关(2026-09-04 拍板关闭)---- r = card.judge({**BASE, "pct0": -3.2}, require_started=False) t("门槛关掉后,当日下跌也能判候选", r["verdict"] == "候选" and r["failed_gates"] == []) - t("关掉后理由里写明这条线已关,不再说「当日已启动」", - any("启动线已关闭" in x for x in r["reasons"]) - and not any("当日已启动" in x for x in r["reasons"])) + # 2026-09-07 改:关掉后理由行**不再提当日涨幅**。理由行会随硬数字送给择时决策系统研判, + # 写"启动线已关闭"等于把选股层的政策旁白喂给择时层——它会被牵着走。涨幅只留在 + # card 子字典给人看。 + t("关掉后理由里不再出现当日涨幅与启动线字样(不把政策旁白送去研判)", + not any("启动线" in x or "当日" in x for x in r["reasons"])) r = card.judge({**BASE, "pct0": None}, require_started=False) t("关掉后连没有当日行情也不拦(这是整条关掉,不是把阈值调成负数)", r["verdict"] == "候选")