mathias and Claude Sonnet 4.6
de19bfeada
fix(features): revert to 2-channel default; OHLCV features redundant
...
CD / Lint / Test / Vet (push) Successful in 4s
CD / Build & Import (push) Failing after 7s
CD / Deploy via GitOps (push) Has been skipped
HPO finding: hl_range≈realized_vol, ret_intrabar≈ret — correlation kills signal.
4ch D=128: 0.3503, 4ch D=256: 0.3807, 2ch D=128 baseline: 0.3908 (winner).
Parquet keeps hl_range+ret_intrabar; comment in build() documents the attempt.
test_build_uses_4_channels → test_build_uses_2_channels (tracks current default).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 13:14:01 +02:00
mathias and Claude Sonnet 4.6
caccd1aa7b
feat(features): add hl_range + ret_intrabar OHLCV features (4-channel input)
...
- prepare_hourly.py: keep O/H/L columns from M1 zips; compute per-hour
hl_range=log(H/L) and ret_intrabar=log(close/open); backward-compat
(falls back to 4-col output only when O/H/L present in input)
- train.py build(): auto-detect extra features from parquet columns
(FEAT_COLS = [ret, realized_vol] + [hl_range, ret_intrabar] if present)
- 5 new tests (9 total in test_prepare_hourly); 24/24 pass
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 13:11:59 +02:00
mathias and Claude Sonnet 4.6
e739f84afd
feat(hpo): env-var knob overrides + sweep script (18 configs)
...
CD / Lint / Test / Vet (push) Successful in 4s
CD / Build & Import (push) Failing after 8s
CD / Deploy via GitOps (push) Has been skipped
- train.py knobs all readable from JEPA_* env vars (JEPA_WINDOW, JEPA_D_MODEL,
JEPA_DEPTH, etc.) so hpo_sweep.py can override without touching source
- scripts/hpo_sweep.py: 3×2×3 grid over D_MODEL × DEPTH × WINDOW,
logs to results/hpo/hpo_results.jsonl with leaderboard at end
- 3 new tests: env override correctness, configs() schema validation
- 19/19 tests pass
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 12:37:27 +02:00
mathias and Claude Sonnet 4.6
d282571c96
feat(phase1): MLP supervised head on frozen HEPA embeddings
...
CD / Lint / Test / Vet (push) Successful in 4s
CD / Build & Import (push) Failing after 7s
CD / Deploy via GitOps (push) Has been skipped
SupervisedHead: Linear(D→D/2)→GELU→Linear(D/2→1), trained on standardised
targets with proper epoch iteration (not random 200 batches) + weight_decay=1e-4.
Root cause of earlier -803 R²: unstandardised targets + ~1.2 effective passes.
Results on 2008-2023 hourly OOS (n=11,641):
val_vol_r2 (linear probe): 0.3585
phase1_r2 (MLP head): 0.3737 (+0.015 over probe)
New knobs: PHASE1_EPOCHS=200, PHASE1_LR=1e-3. 16/16 tests pass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-26 12:33:28 +02:00
mathias and Claude Sonnet 4.6
e31905dc43
feat(data): EUR/USD hourly pipeline + 2008-2023 M1 dataset ( #2 )
...
CD / Lint / Test / Vet (push) Successful in 4s
CD / Build & Import (push) Failing after 8s
CD / Deploy via GitOps (push) Has been skipped
- scripts/prepare_hourly.py: M1→hourly aggregation (realized_vol = sqrt(Σr²),
MIN_BARS=30 threshold, no weekend rows, year-based split preserved)
- tests/test_prepare_hourly.py: 5 TDD tests, all green
- train.py: USE_HOURLY=True, WINDOW=240 (10-day), PATCH_LEN=24 (1-day patches);
build() prefers eurusd_hourly.parquet, falls back to daily; EXPORT BLOCK updated
- Taskfile.yml: data:fetch:historical, data:prepare:hourly, data:prepare:all, data:test
- 98,591 hourly rows (2008-2023) covering GFC, Euro crisis, Brexit, COVID, Fed cycle
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 13:12:48 +02:00
mathias and Claude Sonnet 4.6
bde651b0df
feat(backbone): replace TS-JEPA+SIGReg with HEPA causal JEPA
...
CD / Lint / Test / Vet (push) Successful in 4s
CD / Build & Import (push) Failing after 8s
CD / Deploy via GitOps (push) Has been skipped
HEPA (Petersen et al., arXiv:2605.11130, ICML 2026 Spotlight):
- CausalEncoder: non-overlapping patches + per-patch LayerNorm +
causal Transformer (generate_square_subsequent_mask) → all tokens (B, N, D)
- HorizonPredictor: MLP(cat(h_t, Δt)) → predicted future embedding;
Δt sampled uniformly from [1, min(DELTA_T_MAX, N-1-c)] per epoch
- vicreg_loss: (1-α)·L1(norm(ĥ), norm(h*)) + α·(L_var + L_cov);
joint training — no stop-gradient on target encoder
- Probe: last-token embedding [:, -1, :], fit on 2019-2021, eval on OOS
Results (true OOS 2022-2023):
val_vol_r2: -0.45 (TS-JEPA+SIGReg) → +0.243/+0.276 (HEPA)
effective_rank: 58.9/64 → 122.3/128 (near-full-rank, no collapse)
Phase-0 gate on val_vol_r2: PASS ✓
Tests: 6/6 green (causal masking verified with non-uniform perturbation;
per-patch LayerNorm is mean-invariant so constant shifts are absorbed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-25 08:05:33 +02:00