Files
Jeroen Grusewski 30ff8bddab feat(cockpit): portfolio page redesign + name/type SSOT across all pages
Design (frontend-design skill, following the existing /paper/sim + fleet-table pattern
instead of the ad-hoc fieldset markup):
- selection TABLE with an explicit TYPE column (semantic chips: Crypto / Equities & macro)
  in the fleet skin, so it reflows to stacked cards on mobile
- verdict banner (the cockpit trust-anchor), .card/.stat metric tiles, token-themed Plotly
  curve + heatmap, marginal table with pos/neg colouring
- live htmx update on change (no Run button), matching Backtest

SSOT consolidation (was 3 name sources + no type resolver):
- display_names.py is now THE resolver: absorbs SLEEVE_DISPLAY_NAMES so display_name()
  covers sleeves AND strategies, and adds asset_class() (the Type column) derived from the
  registry  field via a prefix rule — no hand-kept per-edge map
- both registered as Jinja globals -> every page reads names/types consistently
- bybit_book_eval._SLEEVE_DISPLAY_NAMES re-exports from the SSOT (no duplicate data)
- registry display_names made concise; the rename propagates to Overview/Paper/detail
  (crypto_tstrend had no name at all and rendered as a raw id)

Removed Manual weights: the Book allocator COMPUTES the weights (inverse-vol -> cap ->
vol-target + Kelly). Empty inputs the user must fill implied they set the sizing, which is
backwards — a control that misleads is worse than no control. Drops the explicit/
combine_returns branch, w_<edge> parsing, and the method param.

62 tests green (portfolio, SSOT guard, dashboard-service, web, crypto book eval).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 07:37:05 +00:00
..