Commit Graph

272 Commits

Author SHA1 Message Date
jgrusewski
31aba36b13 fix(xsfunding): guard live snapshot against decoupled-basis tickers (LIT-type artifacts)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 08:12:51 +02:00
jgrusewski
dc5b9b5111 fix(xsfunding): route xsfunding_nav through transient-error wrapper + retry price fetches (don't break nightly run)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:58:00 +02:00
jgrusewski
94da2c6a6b feat(xsfunding): register xsfunding paper track + Dagster asset in daily book
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:50:19 +02:00
jgrusewski
9e9fe2a13c feat(xsfunding): live-booking forward strategy (delta-neutral funding+basis, executable)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:45:45 +02:00
jgrusewski
0cf0e77ab4 feat(xsfunding): live per-coin snapshot (funding + perp + spot + qvol)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:41:59 +02:00
jgrusewski
e7c9946aac docs(xsfunding): paper-forward track implementation plan
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 07:38:51 +02:00
jgrusewski
a54a59c57e fix(xsfunding): guard sp[nxt]>0 in basis runner + test basis_modeled report metadata
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:34:39 +02:00
jgrusewski
5fe24df253 feat(xsfunding): model spot-perp basis P&L in runner (true delta-neutral return; funding-only fallback)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:27:53 +02:00
jgrusewski
fce563a65d feat(xsfunding): basis-panel builder + build-basis-panel CLI + spot-panel npz persistence
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:22:46 +02:00
jgrusewski
7f0e91a45b feat(xsfunding): spot-history adapter + ticker-reuse guard clean_spot_leg (basis prep)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:18:14 +02:00
jgrusewski
178ac665c4 docs(xsfunding): spot-perp basis-modeling implementation plan
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:12:47 +02:00
jgrusewski
2347714cae docs(xsfunding): self-document funding-only + annualization caveats in report/CLI; book_return_xs note
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:54:17 +02:00
jgrusewski
75006af0ef fix(xsfunding): runner robust to panel gaps — use last-known qvol for cost (KeyError on real data)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:41:38 +02:00
jgrusewski
b5f065b887 feat(xsfunding): backtest-funding CLI — verdict matrix over crypto_pit panel
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:37:31 +02:00
jgrusewski
d231971cb8 feat(xsfunding): gauntlet verdict matrix (modes x floors, crypto 365d, cross-cell DSR n_trials)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:33:13 +02:00
jgrusewski
17da65c6bd fix(xsfunding): charge exit cost for dropped-out holdings; expose n_rebalances vs panel_days
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:29:11 +02:00
jgrusewski
0f115abbf1 feat(xsfunding): walk-forward runner — PIT universe + per-mode daily carry series + liquidity-scaled cost
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:19:56 +02:00
jgrusewski
a0c35eae71 fix(xsfunding): clamp quantile-cut to disjoint top/bottom; cache panel; gross-scale doc; isolating PIT test
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:16:14 +02:00
jgrusewski
250f425374 feat(xsfunding): construction weights (long_tilt/market_neutral/executable) + signed carry book-return
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:08:52 +02:00
jgrusewski
b0862836aa feat(xsfunding): PIT eligibility + cross-sectional funding score (robust_z of trailing funding)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:05:20 +02:00
jgrusewski
050f45d667 feat(xsfunding): crypto_pit npz panel adapter (survivorship-free, read-only)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:02:00 +02:00
jgrusewski
549a21f660 docs(xsfunding): cross-sectional funding-dispersion implementation plan (6 tasks → verdict matrix)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:58:52 +02:00
jgrusewski
31aa746369 docs(xsfunding): cross-sectional crypto funding-dispersion strategy design (spike PASSED — survivorship-free panel on disk)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:53:40 +02:00
jgrusewski
28934a214c feat: retire crossvenue forward track (falsified 3x — max-min artifact, no edge)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 20:56:50 +02:00
jgrusewski
7766071d06 fix(b3b-deploy): verdict Job pg egress via postgres podSelector (pod CIDR, not service CIDR)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:13:15 +02:00
jgrusewski
988743302d deploy(b3b): one-off Job to run the backtest + publish verdict to cockpit (pg egress netpol)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 19:04:39 +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
2c94c65953 feat(b3b): retire eqfactor_ls forward track (no edge per backtest); keep long/tilt + shared scores
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:48:41 +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
b42177e853 feat(b3b): persist backtest verdict to cockpit (backtest_summary table + --persist-cockpit)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 18:39:24 +02:00
jgrusewski
b01da6865e fix(b3b): PIT path uses full trading calendar for hold days; CLI omits candidate_top_k under --pit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 10:16:27 +02:00
jgrusewski
feac27f98f feat(b3b): PIT-trailing universe selection — remove peak-liquidity lookahead (two-pass, memory-bounded)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 10:01:36 +02:00
jgrusewski
5029c4058b feat(b3b): delisting-return handling — book terminal return when held name's series terminates (fixes long-only inflation)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 09:42:49 +02:00
jgrusewski
684467bd9c fix(b3b): data hygiene — exclude test/penny tickers + per-day return sanity guard (hold-flat on garbage prices)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 09:29:44 +02:00
jgrusewski
9068f73b51 feat(b3b): expose candidate-top-k/min-history on backtest-equity CLI (use bounded path by default)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 09:09:01 +02:00
jgrusewski
76e07ec3be fix(b3b): move candidate-universe SQL into store adapter; stable tiebreaker; tidy candidate panel load
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 09:03:46 +02:00
jgrusewski
103572a6eb feat(b3b): bounded survivorship-safe candidate pre-filter + adjclose-only low-memory run path
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 08:56:08 +02:00
jgrusewski
c7602dbf66 fix(b3b): cross-construction sr_variance for DSR; guard short series (no NaN JSON); epoch_day public
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:53:38 +02:00
jgrusewski
33ade4356c feat(b3b): fxhnt backtest-equity CLI — run walk-forward verdict + write report JSON
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:45:26 +02:00
jgrusewski
714a4963a7 feat(b3b): gauntlet verdict + JSON report per construction (DSR/OOS, n_trials=3)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:42:50 +02:00
jgrusewski
8447245603 fix(b3b): report only traded rebalances in n_names_avg/rebalance_dates; document hold-flat + two-way turnover
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:40:23 +02:00
jgrusewski
3e36db0d74 fix(b3b): honor momentum_min_history in runner (wire the inert knob)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:35:11 +02:00
jgrusewski
ccd610677e feat(b3b): walk-forward runner — PIT universe + monthly rebalance + per-construction daily returns
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:33:19 +02:00
jgrusewski
855887b20a feat(b3b): daily_returns_for_weights (fixed-weight holding-period book returns)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:27:53 +02:00
jgrusewski
dc9bfeb687 feat(b3b): PIT universe_asof + month-end rebalance-date domain (survivorship-free)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:25:41 +02:00
jgrusewski
a93cf05fab fix(equity-factor): guard non-positive recent price in momentum_12_1 (delisted-name safety)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:24:29 +02:00
jgrusewski
d7c055c927 refactor(equity-factor): extract pure momentum_12_1/realized_vol window helpers (DRY live + backtest)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:20:49 +02:00
jgrusewski
e254ca02ef docs(b3b): walk-forward equity-factor backtest implementation plan
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 12:17:39 +02:00
jgrusewski
107b7e53f7 fix(b3a-deploy): memory request/limit + PYTHONUNBUFFERED on ingest Job
Bounded-window ingest peaks small; request 768Mi/limit 1536Mi makes the scheduler
place it with headroom and stops it evicting neighbours (a prior unbounded run hit
~2.3Gi on a shared 6.4Gi node). PYTHONUNBUFFERED streams progress logs live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 01:38:18 +02:00
jgrusewski
8ee4057ec2 fix(b3a): bound ingest in-flight window (~2x workers) — prevent unbounded result accumulation / OOM eviction
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 01:37:29 +02:00