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
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
jgrusewski
b1200eac8e
perf(b3a): parallelize ingest fetch (ThreadPool); DuckDB writes stay main-thread (single-writer safe)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 01:17:24 +02:00
jgrusewski
c847d7b109
feat(b3a-deploy): historical-ingest entrypoint + config + dedicated backtest PVC + resumable Job
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 00:22:38 +02:00
jgrusewski
5e8b02ec8b
fix(b3a): mark empty-bars tickers processed (no recurring refetch on incremental runs)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 00:15:17 +02:00
jgrusewski
371a16f94c
feat(b3a): resumable survivorship-free historical EOD ingest -> warehouse + ticker membership
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 00:09:49 +02:00
jgrusewski
7fc1790780
feat(b2.2): equity-factor price-only (momentum+lowvol); drop fundamentals fetch (Tiingo DOW-30-only)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 22:31:31 +02:00
jgrusewski
d29593e0ed
feat(b2.2): low-vol factor + price-only composite (momentum+lowvol); keep value/quality for future
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 22:27:26 +02:00
jgrusewski
9835d64cbb
perf(b2): eqfactor_scores shared asset; 3 sleeves consume it (fetch once, n=150)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 21:31:16 +02:00
jgrusewski
6d2acf7956
perf(b2): shared batched-concurrent factor scores; services consume precomputed scores
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 21:27:53 +02:00
jgrusewski
547074aebb
fix(b2): _factor_targets resilient per-ticker — skip names lacking Tiingo coverage (one 400 no longer aborts the book)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 18:24:43 +02:00
jgrusewski
95571669e6
feat(b2): wire 3 equity-factor assets into the Dagster graph
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:55:38 +02:00
jgrusewski
273a51e86c
feat(b2): equity-factor target builder + 3 ForwardStrategy services
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:50:16 +02:00
jgrusewski
f89003e3df
fix(b2): rank full filtered universe by dollar-volume (drop alphabetical pre-slice bias)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:45:46 +02:00
jgrusewski
e1deecc702
feat(b2): TiingoUniverseSource (supported-tickers filter + dollar-volume top-N)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:41:27 +02:00
jgrusewski
8d4d389096
feat(b2): TiingoFundamentalsClient (daily metrics + statements)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:35:51 +02:00
jgrusewski
9e4379a3e8
feat(b2): equity-factor domain (z-score, composite, 3 constructions, book return)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 17:30:01 +02:00
jgrusewski
10c0c4a59f
feat(b1): TiingoDailyClient (native adjClose, 33yr); swap equity sleeves Massive->Tiingo
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 08:50:25 +02:00
jgrusewski
17eca26bb3
test(b1): lock multi-dividend back-adjustment compounding in MassiveDailyClient
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 08:38:29 +02:00
jgrusewski
6e547dad80
feat(b1): MassiveDailyClient total-return adapter; swap equity sleeves Yahoo->Massive
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 08:32:51 +02:00
jgrusewski
2e391489bf
feat(b1): wire 6 paper-track assets into the Dagster graph
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 08:18:12 +02:00
jgrusewski
6468b756ba
feat(b1): surfer poc paper-forward strategy — faithful port with torch + real signal_sweep/pit_sweep
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 08:03:10 +02:00
jgrusewski
559795b3fd
refactor(b1): crossvenue single venue snapshot per run (funding+volume one fetch)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 07:22:25 +02:00
jgrusewski
3a0e6cf06e
feat(b1): cross-venue funding paper-forward strategy (faithful port)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 07:16:13 +02:00
jgrusewski
e2168ee0ef
fix(b1): funding port faithful — qualify on tf30 (30d mean), crypto-native+hedgeable universe
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 07:08:39 +02:00
jgrusewski
84bfb2110e
feat(b1): crypto funding-harvest paper-forward strategy (Binance, faithful port)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 07:02:48 +02:00
jgrusewski
6e004f1749
feat(b1): growth-discipline paper-forward blend (composes multistrat, faithful)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 06:54:27 +02:00
jgrusewski
f2aade706a
feat(b1): multistrat adaptive paper-forward book (Yahoo, faithful port)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 06:48:53 +02:00
jgrusewski
2e7ba4764c
feat(b1): sixtyforty paper-forward strategy (Yahoo) — template
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 06:40:41 +02:00
jgrusewski
4f9b6fcc0f
feat(b1): generic ForwardTracker over a ForwardStrategy port
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 06:31:10 +02:00
jgrusewski
07cd72533e
fix(orchestration): schedule default_status=RUNNING (auto-arm on fresh deploy) + Argo archiveLogs=false per-template (build no longer fails on unreachable MinIO log-sink)
...
Both latent bugs: a recreated Dagster instance would silently not arm the nightly schedule; and the
Argo build marked Error on the MinIO log-sink (masking real failures + skipping the auto-deploy step).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-15 21:23:22 +02:00
jgrusewski
5000333aeb
perf(warehouse): bulk ingest in one transaction (~50x faster crypto ingest on PVC)
...
write_features_bulk writes many symbols in a single transaction (one fsync/checkpoint vs one per
symbol); ingest_crypto_pit collects all 155 symbols then one bulk call. Equivalence test proves
identical result. Targets the ~52min nightly crypto ingest in the Dagster combined-book run.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-15 19:20:30 +02:00
jgrusewski
f4cfec0f73
feat(orchestration): Definitions + daily combined-book schedule
...
Wire the 4 B0 assets into combined_book_forward_job and a
ScheduleDefinition (cron 30 23 * * *, UTC) via a Dagster Definitions
object; dagster definitions validate passes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:51:55 +02:00
jgrusewski
c0a4932de9
feat(orchestration): B0 Dagster assets (crypto/futures bars -> nav -> cockpit) + forward_ingest extract
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:40:39 +02:00
jgrusewski
5a75effd8d
feat(combined-book): FXHNT_COMBINED_BOOK_DATA_SOURCE flag + source factory; wire CLI
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 11:27:24 +02:00
jgrusewski
c3c90881e0
refactor(combined-book): read via injected CombinedBookSource (default RawFileSource)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:24:19 +02:00
jgrusewski
c66bffabef
feat(combined-book): WarehouseSource reads SSOT; equivalence test proves A->B faithful
...
- Extend FeatureStore protocol with catalog() and read_panel() so WarehouseSource
can be typed against the port (mypy strict clean)
- Add silver_ingest_helpers.ingest_crypto_pit — shared bronze→silver→warehouse
write path for assets and tests
- Implement WarehouseSource in combined_book_source.py; delegates crypto panel
to read_panel+_panel and futures to WarehousePriceProvider
- Add equivalence test: warehouse-fed panel == raw-file-fed panel (A→B gate)
- 291 tests pass, 0 regressions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:16:25 +02:00
jgrusewski
9ecb24f82c
feat(combined-book): CombinedBookSource port + RawFileSource (existing path)
2026-06-15 11:13:21 +02:00
jgrusewski
7a33082020
feat(warehouse): read_panel — per-symbol epoch-day matrix for one feature
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:11:57 +02:00
jgrusewski
461b89eba6
refactor(crypto): extract _panel builder (shared by raw + warehouse sources)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 11:10:13 +02:00
jgrusewski
c76bae9d05
feat(cli): warehouse-ingest + warehouse-catalog commands; warehouse data source
...
Adds the `warehouse` branch to `_data_provider` (the cutover seam for
hunt/run --data-source warehouse), plus two new commands: `warehouse-ingest`
(bronze→silver→gold for futures and crypto) and `warehouse-catalog`
(per-symbol inventory/freshness view of the SSOT).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 00:38:17 +02:00
jgrusewski
6f9fb9a9f6
feat(warehouse): catalog/freshness inventory (store.catalog + format_catalog)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 00:34:55 +02:00
jgrusewski
c203df8d09
fix(warehouse): ingest_bars rejects symbol mismatch (prevent mislabeled bars)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 00:32:42 +02:00