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:
@@ -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">
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user