feat(cockpit): "ref" badge — mark reference-only (non-active-venue) tracks

Binance is no longer an active execution venue (deploy = Bybit, equities = Alpaca).
FleetRow.reference_only = venue not in the active set {bybit-perp, alpaca-paper},
computed in DashboardService. The All-forward-tracks table shows a subtle bordered
"ref" tag next to the venue for reference-only tracks — the Binance discovery tracks
(crypto_tstrend/unlock/xsfunding/stablecoin/combined) + the glbx 60/40 benchmark —
so it is clear at a glance which tracks are observed-only vs traded live.

Verified in a real browser against the prod DB: ref on the 6 Binance/glbx tracks,
none on the 4 Bybit/Alpaca tracks. Full suite green (1833).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jgrusewski
2026-07-08 20:49:32 +02:00
parent c9d4bdda1d
commit ec9f660f97
3 changed files with 9 additions and 0 deletions

View File

@@ -44,6 +44,7 @@
<tr>
<td data-label="track"><a href="/strategy/{{ f.strategy_id }}">{{ f.display_name }}</a>
<span class="muted" style="font-size:11px"> · {{ f.venue }}</span> {{ exec_badge(f.execution) }}
{% if f.reference_only %}<span class="muted" style="font-size:9px;border:1px solid currentColor;border-radius:3px;padding:0 4px;opacity:.55" title="reference-only — not an active execution venue (active: Bybit deploy, Alpaca equities)">ref</span>{% endif %}
{% if f.status %}<span class="badge WAIT" style="font-size:10px" title="{{ f.note }}">{{ f.status }}</span>{% endif %}</td>
<td data-label="tier" class="muted">{{ f.tier }}</td>
<td data-label="backtest">

View File

@@ -13,6 +13,10 @@ from fxhnt.registry import STRATEGY_REGISTRY
# only if nothing else exists (it is not an alpha edge).
_HEADLINE_PREFERENCE = ("bybit_4edge", "combined")
_BENCHMARK_SLEEVES = frozenset({"beta"})
# The venues we ACTUALLY execute on: Bybit (the crypto deploy book) + Alpaca (the US-equity leg). Every
# other venue (Binance discovery/reference tracks, the glbx 60/40 benchmark) is REFERENCE-ONLY — observed
# on the gate, never traded live. Binance is no longer an active execution venue.
_ACTIVE_VENUES = frozenset({"bybit-perp", "alpaca-paper"})
def _gate_min_days(gate_spec: dict | None) -> int:
@@ -57,6 +61,7 @@ class DashboardService:
# registry SSOT metadata — drives the Overview's deploy/research grouping + paper/live badge.
venue=reg.venue, tier=str(meta.get("tier", "research")),
execution=str(meta.get("execution", "paper")),
reference_only=reg.venue not in _ACTIVE_VENUES, # not an active execution venue → reference
))
return out

View File

@@ -44,6 +44,9 @@ class FleetRow:
venue: str = ""
tier: str = "research"
execution: str = "paper"
# True when the track is NOT on an active execution venue (Bybit deploy / Alpaca equities) — e.g. the
# Binance discovery/reference tracks + the 60/40 benchmark. Reference-only: observed, never traded live.
reference_only: bool = False
@dataclass(frozen=True, slots=True)