Files
foxhunt/config/training/dqn-smoketest.toml
2026-04-04 09:01:39 +02:00

122 lines
3.8 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DQN Smoke Test Profile — f32 master weights + bf16 tensor core shadows
# gpu_n_episodes=auto × gpu_timesteps=100 (auto-scaled from VRAM)
# batch_size=64 fits in 4GB RTX 3050
#
# Mixed-precision (NVIDIA AMP pattern):
# - f32 master weights, Adam moments, gradients, loss accumulators
# - bf16 shadow copies for cuBLAS GemmEx tensor core GEMM
# - gradient_clip_norm=1.0 (prevents large grads from overflow in bf16 backward)
# - huber_delta=1.0 (keeps TD errors bounded for stable C51 transition)
# - q_clip ±50 (prevents logit explosion through bf16 forward)
[training]
epochs = 10
batch_size = 64
learning_rate = 0.0001
gamma = 0.95
weight_decay = 0.0001
adam_epsilon = 1e-8
warmup_steps = 0
hidden_dim_base = 64
reward_scale = 1.0
huber_delta = 1.0
symbol = "ES.FUT"
imbalance_bar_threshold = 1.0
imbalance_bar_ewma_alpha = 0.1
[distributional]
num_atoms = 51
[exploration]
epsilon_start = 1.0
epsilon_end = 0.05
epsilon_decay = 0.85
noisy_sigma_init = 0.3
entropy_coefficient = 0.001
count_bonus_coefficient = 0.1
q_gap_threshold = 0.05
[replay_buffer]
buffer_size = 10000
min_replay_size = 100
regime_replay_decay = 0.3
[early_stopping]
enabled = true
patience = 5
min_epochs_before_stopping = 5
[experience]
gpu_timesteps_per_episode = 100
gpu_n_episodes = 32
min_hold_bars = 3
[experience.fill_simulation]
ioc_fill_prob = 0.85
limit_fill_min = 0.30
limit_fill_max = 0.80
spread_cost_frac = 0.50
spread_capture_frac = 0.50
[risk]
max_position = 2.0
loss_aversion = 1.5
q_clip_min = -50.0
q_clip_max = 50.0
[advanced]
n_steps = 3
tau = 0.005
c51_warmup_epochs = 5
her_ratio = 0.2
cql_alpha = 0.1
curiosity_weight = 0.1
iqn_lambda = 0.25
spectral_norm_sigma_max = 1.5
spectral_decoupling_lambda = 0.01
gradient_clip_norm = 1.0
[generalization]
# Toned-down generalization for tiny smoketest network [64,64]
# Full production uses aggressive defaults; smoketest needs gentler settings
# to avoid gradient collapse on small capacity networks.
anti_lr_good_mult = 1.1 # 1.1x — minimal destabilization for tiny network
anti_lr_bad_mult = 0.9 # 0.9x — minimal stabilization for tiny network
anti_lr_sharpe_threshold = 5.0 # Very high threshold — rarely triggers on smoketest
stochastic_depth_prob = 0.1 # 10% vs production 20% (less capacity loss)
feature_mask_fraction = 0.15 # 15% vs production 30% (more features visible)
feature_noise_scale = 0.05 # 0.05 vs production 0.1 (less noise)
asymmetric_dd_weight = 0.2 # 0.2 vs production 0.5 (less aggressive DD penalty)
trade_clustering_penalty = 0.02 # 0.02 vs production 0.05
ensemble_disagreement_penalty = 0.1 # 0.1 vs production 0.3
regret_blend = 0.15 # 0.15 vs production 0.3
time_reversal_mod = 10 # 10% reversed vs production 20%
position_entropy_weight = 0.005 # Half of production
causal_weight = 0.05 # Half of production
causal_intervention_interval = 50 # Less frequent than production (10)
bottleneck_dim = 0 # Disabled for smoketest (tiny network can't afford bottleneck)
adversarial_warmup_epochs = 100 # Beyond smoketest duration (don't activate saboteur)
adversarial_checkpoint_interval = 100
pruning_epoch = 100 # Beyond 50-epoch test (don't prune tiny network)
pruning_fraction = 0.5 # Less aggressive (50% vs production 70%)
mixup_alpha = 0.2
# Core family intensity scalars for hyperopt (1.0 = neutral, range [0.0, 2.0])
learning_intensity = 1.0
exploration_intensity = 1.0
replay_intensity = 1.0
architecture_intensity = 1.0
risk_intensity = 1.0
# Generalization family intensity scalars for hyperopt (1.0 = neutral, range [0.0, 2.0])
adversarial_intensity = 1.0
regularization_intensity = 1.0
augmentation_intensity = 1.0
loss_shaping_intensity = 1.0
ensemble_intensity = 1.0
causal_intensity = 1.0
[reward]
loss_aversion = 1.5
q_gap_threshold = 0.1
w_dd = 1.0
dd_threshold = 0.02