← All posts

· XingAI Invest AI

Two Regimes, One Dashboard: Technical vs Macro (ADR-027)

After ADR-026, Invest AI can show two different regime signals on the same dashboard:

  1. Technical regime — imported from Decision Engine daily_scores.v1.json (QQQ trend, VIX, portfolio hints).
  2. Macro regime gate — computed in Invest AI macro_radar.py (risk_on | neutral | caution | defensive).

Without explicit semantics, UI copy and MCP trade gates could treat them as one number — wrong caps, contradictory messaging, or stale technical data driving macro combo modifiers.

ADR-027 draws the line.

Two layers — never merge into one field

ConceptSourceAuthoritative for
Technical regimeDecision Engine importSymbol action, composite, setup labels
Macro regime gatemacro_radar.regime_gateCombo modifiers, long_signal_discount, risk_budget_cap, event downgrades

Rule: Macro gate never overwrites Decision Engine composite or action. It may cap size and discount signals only — Decision Engine ADR-011 Layer 2.

When they disagree

If technical regime reads DEFENSIVE but macro gate is neutral, macro gate wins for combo modifiers. UI shows both with distinct labels — not a blended badge.

Mapping tables in the ADR are informational for comparison; they do not replace regime_gate.

Degraded import

decision_engine.import_statusUI behavior
okShow imported technical regime; prefer symbol_scores ranking
degraded / missingHide or badge "Technical scores unavailable"; macro gate unchanged
Stale as_of_dateStale badge on technical block only

Do not refresh macro from technical when import is stale.

Why this matters for MCP gates

ADR-028 gate G5 cites cached v2:dashboard:today — that snapshot must keep technical and macro fields separate so trade tickets do not cite the wrong regime for sizing context.

What we said no to

  • Single regime field in cache JSON — hides layer boundaries.
  • Macro rewriting technical action — breaks export contract.
  • Wiki-only guidance — insufficient for UI + worker reviewers.

Further reading: ADR-026 two-repo score contract · V2 macro radar ADR-019