Commit Graph

21 Commits

Author SHA1 Message Date
jgrusewski
3e57f2db01 docs(b1): implementation plan — 6 paper-track strategies as Dagster assets
10 tasks: generic ForwardTracker + ForwardStrategy port; 5 market-data ports; sixtyforty (template),
multistrat, gd, funding, crossvenue, poc (numpy, no torch); orchestration wiring; deploy + cron retirement.
TDD per task, fakes (no live network), strict-mypy, days-list round-trip through state_reader.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 00:13:50 +02:00
jgrusewski
544e47b04d docs(b1): fold poc into scope — paper path is numpy-only (no torch/pit_sweep)
All 6 remaining strategies in one increment. poc's paper(cfg) path uses numpy xs_weights (residual momentum
top-30 market-neutral) + a Deribit-DVOL VRP sleeve, VRP sizing calibrated from the live lookback window instead
of pit_sweep — so no torch, no warehouse PIT dep, no new state_reader case (emits days-list). Added two data
ports (CryptoPerpBarClient, VolIndexClient) + a poc detail section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 00:04:44 +02:00
jgrusewski
bff1fe2dee docs(b1): spec — 5 paper-track strategies as clean Dagster assets
Port funding/crossvenue/multistrat/sixtyforty/gd to hexagonal fxhnt services + assets feeding the existing
cockpit_forward ingest; generic ForwardTracker over a ForwardStrategy port (recomputable-series + live-booking
patterns); unify on days-list state shape; retire foxhunt surfer crons. poc deferred to B1b.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 23:59:31 +02:00
jgrusewski
83a6ce57dd plan(lifecycle): bite-sized B0 plan — Dagster foundation + combined-book via warehouse
10 tasks: _panel extract, warehouse read_panel, CombinedBookSource port (Raw/Warehouse,
equivalence test = A->B guarantee), CombinedBook source-injection, config flag+factory,
dagster extra, 4 assets, Definitions+schedule, cluster deploy (webserver+daemon+pg+tailnet)
+ suspend the fxhnt-forward cron. Reversible cutover via FXHNT_COMBINED_BOOK_DATA_SOURCE.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:57:18 +02:00
jgrusewski
9878207ecd docs(lifecycle): design spec — B0 Dagster foundation + combined-book via warehouse
Sub-project B increment 0: stand up Dagster on the cluster + migrate the combined-book
paper-forward track end-to-end as an asset graph reading the warehouse SSOT (proves A->B),
replacing the fxhnt-forward cron. CombinedBookSource port (Warehouse/Raw), 4 assets,
cockpit ingest, reversible cutover. B1-B4 (other tracks, gauntlet, promote/live) deferred.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:40:42 +02:00
jgrusewski
7c5b1bd3e5 plan(data): bite-sized implementation plan — unified data layer / warehouse-SSOT
9 TDD tasks: config warehouse_path, BarRecord, factor dbn_local (shared adjust),
silver_futures/silver_crypto normalizers, WarehouseIngest, WarehousePriceProvider,
catalog, CLI (warehouse-ingest/catalog + warehouse data source). Increment-1 bars {close,high,low}.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:15:32 +02:00
jgrusewski
30c82f2a01 docs(data): design spec — unified data layer / warehouse-SSOT (platform sub-project A)
Increment 1: daily bars (futures+crypto) bronze->silver->gold into the existing
point-in-time FeatureStore, consumed via the DataProvider port (WarehousePriceProvider),
plus a catalog/freshness view. Funding + retiring the other data homes are later increments.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:09:12 +02:00
jgrusewski
97808688d3 plan(strategies): bite-sized implementation plan — single-market kinds + OHLC contract
10 TDD tasks: PriceSeries high/low contract, rolling_max/min, 3 kinds
(breakout/seasonality/vol_managed_momentum), registration, 4 adapter high/low
fills (databento/yahoo/dbn_local/duckdb). Pure helpers for network-free adapter tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 22:55:46 +02:00
jgrusewski
76284d00ce docs(strategies): critical-review fixes to single-market kinds spec
- HIGH: seasonality must not be shifted (signal is calendar+prior-years, pre-known)
- MED: yahoo None-policy defaults missing high/low to close, not row-drop
- LOW-MED: NaN high/low guard in all adapters (rolling_max/min propagation)
- DOC: vol_managed is de-risk-only (target_vol ceiling), not full vol-targeting
- LOW: add registration + end-to-end run_backtest test
- verified: DuckDB ADD COLUMN IF NOT EXISTS, breakout lookahead, dbn_local roll factor

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 22:43:12 +02:00
jgrusewski
0e232d1a1b docs(strategies): design spec — single-market kinds + OHLC contract (sub-project A)
Adds seasonality / breakout (true Donchian) / vol_managed_momentum kinds (3->6),
extends PriceSeries with high/low filled by all 4 adapters (+ DuckDB migration).
Sub-project B (cross-sectional carry/VRP harness) deferred to its own spec.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 22:37:28 +02:00
jgrusewski
652340325d plan(factory): ongoing diversification-aware edge-factory — 13 TDD tasks, 5 milestones
M1 diversification core (left-tail corr, HRP via scipy to_tree, marginal Sharpe, gate; FST DSR verification)
M2 governance + funnel persistence + diversification-gated promotion/HRP-allocation loop + CLI
M3 domain-analyst fleet (dedup + honest global trial count) M4 cockpit funnel view M5 in-cluster CronJob.
Reuses the existing factory skeleton + gauntlet.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 19:40:18 +02:00
jgrusewski
2d07b18525 docs(factory): design spec — ongoing diversification-aware edge-factory
Research-grounded (Bailey/LdP False Strategy Theorem -> SR* scales with honest global N; Harvey-Liu-Zhu
factor-zoo t>3 discipline; T.RowePrice left-tail correlation; LdP HRP + Raffinot HERC; CFA rolling re-allocation).
Closed loop: analyst-fleet -> gauntlet -> diversification-gate (left-tail ρ + marginal contribution) ->
paper-forward -> autonomous promotion (governance: kill-switch/caps) -> HRP allocation -> edge-decay retirement,
in-cluster daily, cockpit funnel view. 5 milestones; reuses the existing factory skeleton.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 19:34:39 +02:00
jgrusewski
d70696e6ad plan(exec): crypto execution layer — 13 TDD tasks, 5 milestones
M1 port+ccxt-adapter (rate-limit governor, idempotency, testnet) · M2 pure smart router (maker->IOC, caps,
slippage abort) · M3 risk gates + capacity + edge-decay×Kelly · M4 TCA + reconciliation + orchestrator +
cockpit fill persistence + CLI · M5 testnet end-to-end. Research-grounded; intraday slicing deferred (measure
TCA first).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:42:00 +02:00
jgrusewski
cd3647f5d9 docs(exec): design spec — live crypto execution layer (Binance USDM perps, ccxt)
Research-grounded (rate limits 2400wt/1200ord per min + 418 ban risk, clientOrderId idempotency, LOT/PRICE/
MIN_NOTIONAL filters, maker-first+POV slicing saves 50-90bps, ccxt testnet). Hexagonal: crypto_exchange port +
binance_ccxt adapter w/ rate-limit governor, pure smart_router (maker->IOC, slicing, slippage abort), full
risk layer (gross/per-symbol/leverage caps + edge-decay×Kelly scaler + kill-switch + drawdown CB), reconcile +
TCA, testnet-first w/ allow_live gate. 5 milestones.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:33:27 +02:00
jgrusewski
bce04d0031 plan(fetch): edge-pipeline containerization spec + plan (combined book only)
Port the two fetchers (Binance crypto / Databento futures) into fxhnt as 'fxhnt fetch' so the combined-book
daily loop runs fully in-cluster: fetch -> forward-track -> ingest -> dashboard. Edge-only scope; funding +
other trackers deferred. 4 TDD tasks (offline-testable fetchers) + CronJob full-loop update.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 12:20:32 +02:00
jgrusewski
a39ddf8a3d plan(cockpit): add period-aware rolling mean (raw daily/weekly/monthly, no normalization)
Per user requirement: dashboard presents per-period data as raw rolling means, no z-scoring/vol-norm.
New Task 9A (periods module) + StrategyDetail.periods + service wiring + strategy.html per-period section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:38:45 +02:00
jgrusewski
d062834511 plan(cockpit): implementation plan — 17 TDD tasks across 3 milestones
M1 data spine (DTOs, state_reader 3 families, ORM+registry, repo, gate, ingest, CLI), M2 cockpit app
(dashboard service, SVG charts, FastAPI+HTMX, serve), M3 in-cluster deploy (Dockerfile, CronJob, Deployment
+ Tailscale proxy, rollout+cutover runbook). htmx vendored (no CDN/SRI risk).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:23:57 +02:00
jgrusewski
2837c894c2 docs(cockpit): design spec — Postgres-backed in-cluster fxhnt cockpit dashboard
Full-cockpit, fully-in-cluster, FastAPI+HTMX, SSOT = in-cluster TimescaleDB. Daily k8s CronJob
(fetch+track+ingest) feeds forward_nav hypertable; dashboard Deployment behind a per-service Tailscale
proxy at dashboard.fxhnt.ai. Three milestones: data spine, cockpit app, in-cluster deploy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:12:47 +02:00
jgrusewski
cb758c448f docs: ADR 0003 — research/trader split over SSOT feature-warehouse (architecture + port roadmap + conservation principle)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 02:02:04 +02:00
jgrusewski
72cdbc9eec feat: regime layer — the foundation of the agentic strategy factory (ADR 0002)
ADR 0002 designs the real vision: a standing fleet of agents continuously breeding regime-specialist
strategies into an adaptively-allocated book, with multiple-testing-at-fleet-scale as the constraint the
whole architecture is built around (structured search + regime-conditioning + forward-validation +
global-N accounting = the moat). domain/regime: VolTrendClassifier (causal trend x volatility state) +
evaluate_by_regime (judge a strategy WITHIN each regime). Demo on real NQ: trend(200) is MARGINAL on the
full sample but a clear OOS-confirmed SPECIALIST in trend_up|low_vol (DSR 0.984, OOS +0.93), correctly
rejected in range/high-vol regimes — the architecture's thesis proven. 16/16 tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 19:20:23 +02:00
jgrusewski
58bbb4520c feat: fxhnt foundation — hexagonal architecture + proven gauntlet + vertical slice
Enterprise clean-rebuild (no foxhunt code). Hexagonal/ports-and-adapters: pure domain (gauntlet
math, strategies, backtest, models) | ports (DataProvider, repositories) | adapters (Yahoo data,
SQLAlchemy operational [Postgres/SQLite], DuckDB analytical) | application (ResearchService, DI) |
CLI composition root. Gauntlet-first: Deflated Sharpe (Bailey-LdP) built + falsification-tested
(kills best-of-N-on-noise, keeps real premium). Full vertical slice runs end-to-end on real data:
data -> strategy(trend) -> backtest(net of costs) -> IS/OOS gauntlet -> persistence. 4/4 tests green.
Postgres+DuckDB split, pydantic contracts, typed, DRY via one-contract-per-port. ADR + README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 12:21:47 +02:00