feat(esof): rename NEUTRAL→UNKNOWN + backward-compat alias
The mid-band advisory label (constituent signals in conflict) was called NEUTRAL, implying "benign middle" — but retrospective data (637 trades) shows it is empirically the worst-ROI regime. Renaming to UNKNOWN makes the semantics explicit for regime-gate consumers. - esof_advisor.py: emits UNKNOWN; LABEL_COLOR keeps NEUTRAL alias for historical CH rows / stale HZ snapshots - esof_gate.py: S6_MULT, IRP_PARAMS, Strategy A mult_map all keyed on UNKNOWN with NEUTRAL alias (values identical → replays unaffected) - prod/docs/ESOF_LABEL_MIGRATION.md: migration note, CH/HZ impact, rollback procedure Plan ref: Task 4 — NEUTRAL→UNKNOWN is load-bearing for the EsoF gate in the orchestrator (0.25× sizing vs 1.0× under old label semantics). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -291,7 +291,10 @@ def compute_esof(now: datetime = None) -> dict:
|
||||
|
||||
if advisory_score > 0.25: advisory_label = "FAVORABLE"
|
||||
elif advisory_score > 0.05: advisory_label = "MILD_POSITIVE"
|
||||
elif advisory_score > -0.05: advisory_label = "NEUTRAL"
|
||||
# UNKNOWN (was NEUTRAL): constituent signals in conflict. Empirically the worst
|
||||
# ROI bucket, not a benign mid-state — naming is load-bearing for consumers
|
||||
# making "stand aside vs size-down" decisions.
|
||||
elif advisory_score > -0.05: advisory_label = "UNKNOWN"
|
||||
elif advisory_score > -0.25: advisory_label = "MILD_NEGATIVE"
|
||||
else: advisory_label = "UNFAVORABLE"
|
||||
|
||||
@@ -394,7 +397,8 @@ CYAN = "\033[36m"; BOLD = "\033[1m"; DIM = "\033[2m"; RST = "\033[0m"
|
||||
LABEL_COLOR = {
|
||||
"FAVORABLE": GREEN,
|
||||
"MILD_POSITIVE":"\033[92m",
|
||||
"NEUTRAL": YELLOW,
|
||||
"UNKNOWN": YELLOW, # renamed from NEUTRAL — signals-in-conflict
|
||||
"NEUTRAL": YELLOW, # backward-compat for historical CH rows / stale HZ snapshots
|
||||
"MILD_NEGATIVE":"\033[91m",
|
||||
"UNFAVORABLE": RED,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user