Files
foxhunt/services/ml_training_service/tuning_config.yaml
jgrusewski 650b3894c6 🚀 Wave 160 Phase 5: Complete ML Ensemble + Production Deployment (27 Agents)
## Executive Summary
Deployed 27 parallel agents: all 6 models operational, ensemble working, adaptive
strategy integrated, hyperparameter tuning automated, TFT fixed, critical blocker
resolved (DbnSequenceLoader 99.85% memory reduction 40.6GB→61MB).

## Critical Fixes
- Agent 85: DbnSequenceLoader memory fix (UNBLOCKED all ML training)
- Agent 79: TFT 5 critical bugs fixed
- Agent 86: Adaptive strategy integration (regime-aware ensemble)
- Agent 88: Liquid NN API fix (14 compilation errors)
- Agent 89: Paper trading deployment (LIVE, 3-model ensemble)

## Infrastructure
- Database: 2,127 writes/sec (212% of target)
- Memory: DQN 192MB, PPO 288MB, TFT 384MB (all within targets)
- Ensemble: Sharpe 10.68, latency 35μs, throughput >20K/sec
- Monitoring: 22 alerts, PagerDuty integration

## Files: 193 changed, +70,250 insertions, -414 deletions

🤖 Generated with Claude Code - Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 18:41:48 +02:00

340 lines
7.8 KiB
YAML

# Hyperparameter Tuning Configuration for Foxhunt ML Models
# Defines search spaces for Optuna optimization
# Global tuning settings
global:
optimization_direction: maximize # maximize sharpe_ratio
pruning_enabled: true
median_pruner:
n_startup_trials: 5 # No pruning for first 5 trials (establish baseline)
n_warmup_steps: 10 # Wait 10 epochs before starting to prune
interval_steps: 5 # Check for pruning every 5 epochs
sampler: TPE # Tree-structured Parzen Estimator
# Model-specific search spaces
models:
TLOB:
epochs:
type: int
low: 10
high: 100
step: 10
learning_rate:
type: float
low: 0.00001
high: 0.01
log: true
batch_size:
type: categorical
choices: [32, 64, 128, 256]
sequence_length:
type: categorical
choices: [50, 100, 200]
hidden_dim:
type: categorical
choices: [64, 128, 256, 512]
num_heads:
type: categorical
choices: [4, 8, 16]
num_layers:
type: int
low: 2
high: 8
step: 1
dropout_rate:
type: float
low: 0.0
high: 0.5
step: 0.05
use_positional_encoding:
type: categorical
choices: [true, false]
MAMBA_2:
epochs:
type: int
low: 30
high: 100
step: 10
learning_rate:
type: categorical
choices: [0.00001, 0.0001, 0.001] # Conservative range for state-space models
batch_size:
type: categorical
choices: [16, 32, 64] # Memory-intensive due to state propagation (4GB VRAM constraint)
hidden_dim:
type: categorical
choices: [128, 256, 512] # d_model in MAMBA-2 architecture
state_size:
type: categorical
choices: [8, 16, 32] # d_state: Critical for state-space dynamics
num_layers:
type: categorical
choices: [2, 4, 8] # Layer depth affects memory and expressiveness
expansion_factor:
type: categorical
choices: [2, 4] # expand: Controls inner dimension (d_inner = expand * d_model)
dropout:
type: float
low: 0.0
high: 0.3
step: 0.05
# State-space specific parameters
dt_min:
type: float
low: 0.0001
high: 0.01
log: true # Time-step minimum for discrete-time dynamics
dt_max:
type: float
low: 0.01
high: 1.0
log: true # Time-step maximum
# Architecture toggles
use_ssd:
type: categorical
choices: [true, false] # Structured State Duality
use_selective_state:
type: categorical
choices: [true, false] # Selective state mechanism
hardware_aware:
type: categorical
choices: [true, false] # Hardware-aware optimizations (RTX 3050 Ti)
# Training parameters
grad_clip:
type: float
low: 0.5
high: 2.0
step: 0.25 # Gradient clipping for state-space stability
weight_decay:
type: float
low: 0.0001
high: 0.01
log: true
warmup_steps:
type: int
low: 100
high: 2000
step: 100
DQN:
epochs:
type: int
low: 50
high: 500
step: 50
learning_rate:
type: float
low: 0.00001
high: 0.01
log: true
batch_size:
type: categorical
choices: [32, 64, 128, 256]
replay_buffer_size:
type: categorical
choices: [10000, 50000, 100000, 500000]
epsilon_start:
type: float
low: 0.9
high: 1.0
step: 0.05
epsilon_end:
type: float
low: 0.01
high: 0.1
step: 0.01
epsilon_decay_steps:
type: int
low: 1000
high: 10000
step: 1000
gamma:
type: float
low: 0.9
high: 0.999
step: 0.01
target_update_frequency:
type: int
low: 100
high: 1000
step: 100
use_double_dqn:
type: categorical
choices: [true, false]
use_dueling:
type: categorical
choices: [true, false]
use_prioritized_replay:
type: categorical
choices: [true, false]
PPO:
epochs:
type: int
low: 50
high: 500
step: 50
learning_rate:
type: float
low: 0.00001
high: 0.01
log: true
batch_size:
type: categorical
choices: [64, 128, 256, 512]
clip_ratio:
type: float
low: 0.1
high: 0.3
step: 0.05
value_loss_coef:
type: float
low: 0.1
high: 1.0
step: 0.1
entropy_coef:
type: float
low: 0.0
high: 0.1
step: 0.01
rollout_steps:
type: int
low: 128
high: 2048
step: 128
minibatch_size:
type: categorical
choices: [32, 64, 128, 256]
gae_lambda:
type: float
low: 0.9
high: 0.99
step: 0.01
LIQUID:
epochs:
type: int
low: 20
high: 100
step: 10
learning_rate:
type: categorical
choices: [0.0001, 0.001, 0.01] # 3 learning rate options for fast convergence
batch_size:
type: categorical
choices: [32, 64, 128] # 3 batch size options
hidden_dim:
type: categorical
choices: [64, 128, 256] # 3 hidden dimension options for LTC/CfC cells
# ODE Integration Parameters (Critical for continuous-time dynamics)
ode_steps:
type: categorical
choices: [3, 5, 10, 20] # Number of integration steps per forward pass
solver_type:
type: categorical
choices: ["Euler", "RK4", "Adaptive"] # ODE solver selection
# Sparsity and Network Structure
sparsity_level:
type: categorical
choices: [0.5, 0.7, 0.9] # Connection sparsity (0.9 = 90% connections pruned)
num_layers:
type: categorical
choices: [1, 2, 3] # Depth of liquid network
# Time Constant Parameters (tau)
time_constant_tau:
type: categorical
choices: [0.01, 0.1, 1.0] # Base time constant for ODE dynamics
tau_min:
type: float
low: 0.001
high: 0.05
log: true
tau_max:
type: float
low: 0.5
high: 5.0
log: true
use_adaptive_tau:
type: categorical
choices: [true, false] # Enable/disable volatility-aware tau adaptation
# Activation Functions
activation:
type: categorical
choices: ["Tanh", "Sigmoid", "ReLU"] # Cell activation function
output_activation:
type: categorical
choices: ["Linear", "Tanh", "Sigmoid"] # Output layer activation
# Regularization
dropout_rate:
type: float
low: 0.0
high: 0.3
step: 0.05
l2_regularization:
type: float
low: 0.00001
high: 0.001
log: true
# Network Type
network_type:
type: categorical
choices: ["LTC", "CfC", "Mixed"] # Liquid Time-constant, Closed-form Continuous-time, or Mixed
# Market Regime Adaptation
market_regime_adaptation:
type: categorical
choices: [true, false] # Enable regime-aware time step adaptation
# Early Stopping
early_stopping_patience:
type: int
low: 5
high: 20
step: 5
# Default time step (dt) for ODE integration
default_dt:
type: float
low: 0.001
high: 0.1
log: true
TFT:
epochs:
type: int
low: 10
high: 100
step: 10
learning_rate:
type: float
low: 0.00001
high: 0.01
log: true
batch_size:
type: categorical
choices: [32, 64, 128, 256]
hidden_dim:
type: categorical
choices: [64, 128, 256, 512]
num_heads:
type: categorical
choices: [4, 8, 16]
num_layers:
type: int
low: 2
high: 8
step: 1
lookback_window:
type: int
low: 10
high: 100
step: 10
forecast_horizon:
type: int
low: 1
high: 20
step: 1
dropout_rate:
type: float
low: 0.0
high: 0.5
step: 0.05