from __future__ import annotations from web_core.constants import TREND_BEAR, TREND_BULL def build_live_decision_guide( trend_now: str, previous_trend: str, latest_classification: str, ) -> dict[str, str]: if trend_now == TREND_BULL: bias = "Long Bias" action = "Prefer pullback longs and avoid fresh shorts while the bullish trend remains active." invalidation = "Bullish bias is invalidated only after 2 consecutive real bearish bars confirm a reversal." elif trend_now == TREND_BEAR: bias = "Short Bias" action = "Prefer short setups on pops and avoid fresh longs while the bearish trend remains active." invalidation = "Bearish bias is invalidated only after 2 consecutive real bullish bars confirm a reversal." else: bias = "Stand Aside / Neutral" action = "Wait for 2 consecutive real bars in one direction before taking directional exposure." invalidation = "No active trend yet; avoid forcing trades in noisy ranges." if trend_now in {TREND_BULL, TREND_BEAR} and trend_now != previous_trend: confirmation = "Fresh Confirmation" confirmation_detail = "Latest closed bar confirmed a new active trend." else: confirmation = "No New Confirmation" confirmation_detail = "Latest closed bar did not confirm a new trend reversal." classification_hint = { "real_bull": "Latest bar closed above the previous range.", "real_bear": "Latest bar closed below the previous range.", "fake": "Latest bar stayed inside the previous range (noise).", "unclassified": "Latest bar is unclassified.", }.get(latest_classification, "Latest bar classification unavailable.") return { "bias": bias, "action": action, "invalidation": invalidation, "confirmation": confirmation, "confirmation_detail": confirmation_detail, "classification_hint": classification_hint, }