From 92d59ef529ec38be2cdf39540b98583a79b2129d Mon Sep 17 00:00:00 2001 From: jgrusewski Date: Tue, 31 Mar 2026 09:54:25 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20single-pass=2014D=20hyperopt=20in=20Argo?= =?UTF-8?q?=20workflow=20=E2=80=94=20remove=20redundant=20phases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With family-based 14D search space, Phase Fast already searches all dims. Phases 2-4 (Full/Reward/Risk) were designed for the old 30D space where each phase explored different parameter subsets. Now redundant — saves 3× hyperopt compute per training run. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../k8s/argo/compile-and-train-template.yaml | 56 ++----------------- 1 file changed, 4 insertions(+), 52 deletions(-) diff --git a/infra/k8s/argo/compile-and-train-template.yaml b/infra/k8s/argo/compile-and-train-template.yaml index b49b116de..7c5ab3142 100644 --- a/infra/k8s/argo/compile-and-train-template.yaml +++ b/infra/k8s/argo/compile-and-train-template.yaml @@ -406,7 +406,9 @@ spec: echo "=== Running hyperopt: $MODEL (${BINARY}) ===" echo " Trials: {{workflow.parameters.hyperopt-trials}}, Epochs: {{workflow.parameters.hyperopt-epochs}}" - # Phase 1 (fast): fix architecture, search learning dynamics + # Single-pass 14D hyperopt: family-based search covers all dims at once. + # Fast phase searches all 14 dimensions (3 breakouts + 11 family intensities). + # Phased search was needed for the old 30D space; 14D is within PSO's efficient range. ${BINARY} \ --model "$MODEL" \ --phase fast \ @@ -421,59 +423,9 @@ spec: --mbp10-data-dir {{workflow.parameters.mbp10-data-dir}} \ --trades-data-dir {{workflow.parameters.trades-data-dir}} \ --base-dir /workspace/output/hyperopt \ - --output /workspace/output/${MODEL}_phase1_results.json - - echo "=== Phase 1 complete ===" - cat /workspace/output/${MODEL}_phase1_results.json 2>/dev/null || echo "No Phase 1 results" - - # Phase 2 (full): fix dynamics from Phase 1, search architecture - PHASE2_TRIALS=$(({{workflow.parameters.hyperopt-trials}} / 2)) - [ "$PHASE2_TRIALS" -lt 5 ] && PHASE2_TRIALS=5 - PHASE2_EPOCHS=$(({{workflow.parameters.hyperopt-epochs}} * 2)) - - ${BINARY} \ - --model "$MODEL" \ - --phase full \ - --hyperopt-params /workspace/output/${MODEL}_phase1_results.json \ - --trials $PHASE2_TRIALS \ - --epochs $PHASE2_EPOCHS \ - --symbol {{workflow.parameters.symbol}} \ - --tx-cost-bps {{workflow.parameters.tx-cost-bps}} \ - --tick-size {{workflow.parameters.tick-size}} \ - --spread-ticks {{workflow.parameters.spread-ticks}} \ - --initial-capital {{workflow.parameters.initial-capital}} \ - --data-dir {{workflow.parameters.data-dir}} \ - --mbp10-data-dir {{workflow.parameters.mbp10-data-dir}} \ - --trades-data-dir {{workflow.parameters.trades-data-dir}} \ - --base-dir /workspace/output/hyperopt \ - --output /workspace/output/${MODEL}_phase2_results.json - - echo "=== Phase 2 complete ===" - cat /workspace/output/${MODEL}_phase2_results.json 2>/dev/null || echo "No Phase 2 results" - - # Phase 3 (reward): fix dynamics + architecture, search only reward weights (7D) - PHASE3_TRIALS=$(({{workflow.parameters.hyperopt-trials}} / 2)) - [ "$PHASE3_TRIALS" -lt 5 ] && PHASE3_TRIALS=5 - PHASE3_EPOCHS=$(({{workflow.parameters.hyperopt-epochs}} * 2)) - - ${BINARY} \ - --model "$MODEL" \ - --phase reward \ - --hyperopt-params /workspace/output/${MODEL}_phase2_results.json \ - --trials $PHASE3_TRIALS \ - --epochs $PHASE3_EPOCHS \ - --symbol {{workflow.parameters.symbol}} \ - --tx-cost-bps {{workflow.parameters.tx-cost-bps}} \ - --tick-size {{workflow.parameters.tick-size}} \ - --spread-ticks {{workflow.parameters.spread-ticks}} \ - --initial-capital {{workflow.parameters.initial-capital}} \ - --data-dir {{workflow.parameters.data-dir}} \ - --mbp10-data-dir {{workflow.parameters.mbp10-data-dir}} \ - --trades-data-dir {{workflow.parameters.trades-data-dir}} \ - --base-dir /workspace/output/hyperopt \ --output /workspace/output/${MODEL}_hyperopt_results.json - echo "=== Three-phase hyperopt complete ===" + echo "=== Hyperopt complete (14D single-pass) ===" cat /workspace/output/${MODEL}_hyperopt_results.json 2>/dev/null || echo "No results file" resources: requests: