Commit Graph

12 Commits

Author SHA1 Message Date
jgrusewski
8bd87e8ab1 fix(cockpit): honest FAIL verdict + plain UCITS holdings on the strategy detail
Two inconsistencies found verifying the IBKR /strategy/multistrat page:

1. A FAILED backtest with a high Sharpe (multistrat: Sharpe 1.7, gate FAIL)
   rendered a GREEN "Validated edge ... backtest passed" banner directly above
   the FAIL badge — the Sharpe>=1.0 fallback overrode the explicit FAIL. The
   verdict now respects the badge: an explicit FAIL is an amber "Backtest
   didn't clear the gate ... treat it as unproven", never a green "passed".
   The backtest Sharpe figure also goes neutral-grey (not alarming red) when
   unvalidated — the number itself (1.7) isn't bad, it just didn't validate.

2. The UCITS lines the EU DU account actually holds (CSPX/CBU0/IDTM/IGLN/ICOM)
   weren't in ASSET_DESCRIPTIONS, so the holdings "what it is" column read
   "other". Mapped each to its plain description (US stocks / US Treasuries /
   Gold / Commodities), same as its US cousin.

Regression tests: a passed=False + Sharpe 1.7 detail renders amber
"didn't clear the gate" and never "backtest passed"/"Validated edge"; UCITS
tickers resolve to plain descriptions, never "other". Verified desktop+mobile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 16:31:27 +02:00
jgrusewski
d5f871af0a fix(cockpit): DB-name fallback for non-registry sids + update strategy-detail tests to the redesign
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 15:42:30 +02:00
jgrusewski
d7a9c32690 feat(0b): retire crypto_tstrend standalone track + stablecoin_rotation (not tradeable on Bybit); book sleeve unchanged
Neither is tradeable on Bybit: crypto_tstrend as a standalone Binance-perp forward
track was a -0.21 marginal-Sharpe drag/crash-amplifier, and stablecoin_rotation's
FDUSD/USDP pairs aren't listed on Bybit. Removes the two *_nav assets, their
registry entries, the orphaned migration_builders builders, and the
Binance-only StableRotationForward wrapper (stablecoin_runner.py's
StableReversionRunner stays -- it's still live via the Bybit stablecoin eval
paths). The crypto_tstrend SLEEVE inside the bybit_4edge deploy book
(_DEFAULT_BYBIT_SLEEVES, Bybit data) is untouched.

Updates dependent tests: deletes 5 whose subject (the retired asset/registry
entry/module) no longer exists, and swaps the retired sid for a still-registered
one (unlock/xsfunding/sixtyforty) in tests that only used crypto_tstrend as a
generic example sid.
2026-07-13 21:56:23 +02:00
jgrusewski
391400f233 chore(strategy): retire vestigial 'combined' crypto-momentum book from nightly + registry
The broad-Binance-universe momentum book (venue binance+glbx) was a survivorship/
microcap mirage superseded by the isolated crypto_tstrend edge + bybit_4edge. Removed
the combined_forward_nav Dagster asset (+ its cockpit_forward/paper_book_snapshot deps),
the registry entry (DB registry row auto-prunes via _seed_registry), the dashboard
headline preference, and the dead migration builder. CombinedBook modules retained
(still used by the forward-track CLI). Test fixtures repointed combined -> crypto_tstrend.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 10:54:07 +02:00
jgrusewski
14ba825454 fix(cockpit): declutter Overview — drop internal sleeve-id column, collapse Research
1) Edge cards rendered the internal sleeve id as a "class <sleeve_name>" row
   (dev info, not user info — on mobile the fleet table reflowed it into a
   "class crypto_tstrend" card row). Removed the `class` column from the deploy
   table, the shared track_row / deploy_constituent_row macros, and the
   research table (and the paper page's individual-edges table). Human title +
   real metrics (Sharpe / return / maxDD) are untouched.

2) The "Research — not the fund" section is literally not the fund, yet stacked
   as a long wall under the fund edges. Wrapped it in a <details> (collapsed by
   default) with a clear summary styled to match the section-header skin;
   content intact, htmx auto-refresh preserved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 21:31:51 +02:00
jgrusewski
f0ded1247f feat(cockpit): redesign Overview — connect the backfill record, provisional pre-gate Sharpes, cut clutter
Connect the bybit deploy book's multi-year BACKFILL (persisted paper_nav, venue="bybit") to the fund
headline so the page leads with the REAL record ($393,955 · +294% · real Sharpe · maxDD · since 2021)
plus a small live-readiness chip (gate days/min · status) — never the not-started forward track's
0.00 / 0 forward days.

- nav_stats.nav_backfill_stats: pure, unit-tested helper computing total return / annualised Sharpe
  (mean daily ret / pstdev × sqrt(365)) / maxDD / final equity from a persisted NAV equity series.
- Short pre-gate forward Sharpes are kept ("fun to watch") but rendered DIMMED with a "· pre-gate"
  marker; cleared tracks render bright. One caption explains it.
- Compact edges table (edge · class · record · forward · nav); not-started 0-day trackers collapsed
  into a "warming" subsection so they don't dominate.
- Cut clutter: removed the two prose paragraphs (folded into title= tooltips), removed the duplicate
  "Go to" footer, and replaced the grouped Live/Backtest nav with one tidy row
  (Overview · Paper · Replay · Backtest).
- Reusable Jinja macros (_macros.html: headline_card, provisional_num, track_row) for the
  cockpit-wide consistency roll-out. FleetRow gains gate_min_days for the forward "days/min" denominator.

Presentation + data-connection only — no edge return or gate logic changed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 08:07:42 +02:00
jgrusewski
060d747c7a chore: remove dormant strategy-factory subsystem (GENERATE→JUDGE→PROMOTE never activated) — keep combined_book_factory + all edges/live
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 11:59:45 +02:00
jgrusewski
33b36f8eb8 chore(surfer): relabel combined as crypto-momentum book + retire equity-factor sleeves
- combined relabeled 'Crypto momentum book (vestigial trend overlay)': the engine is validated
  crypto momentum; the futures-trend leg riding the crypto spine has no edge and never gates.
- Retired eqfactor_long/eqfactor_tilt (US-equity price-factors — weakly-held, edge never
  established) + their orphaned shared eqfactor_scores asset. Strategy classes stay in
  equity_factor_strategy.py. _seed_registry prunes stale rows automatically.

Cockpit fleet now = 4 tracks: 2 validated crypto edges (xsfunding, unlock) + the crypto-momentum
book + the 60/40 benchmark. 7 Dagster assets. Tests updated (labels + retarget to surviving
tracks); full suite 511 passed, mypy clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 22:53:03 +02:00
jgrusewski
e12819acdc feat(cockpit): mobile-friendly dashboard — fleet table reflows to cards, scroll-wrap dense tables, responsive SVG/header
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 18:54:20 +02:00
jgrusewski
72dd1e1e9f fix(b3b): None-safe backtest-verdict rendering in cockpit templates + detail-page verdict test
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:55:30 +02:00
jgrusewski
82fad9c21e feat(b3b): surface backtest verdict (PASS/FAIL + Sharpe/DSR) in cockpit fleet view
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:44:17 +02:00
jgrusewski
c1748ca6d9 feat(cockpit): FastAPI+HTMX web app, templates, branding, factory view
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:49:10 +02:00