# DQN Local Dev Profile — extended training on RTX 3050 (4GB VRAM) # Larger buffer + more episodes than smoketest for meaningful convergence. # gpu_n_episodes=64 × gpu_timesteps=200 = 12,800 experiences/epoch # buffer_size=50K → fills over ~4 epochs, reducing memorization [training] epochs = 200 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 max_steps_per_epoch = 200 reward_scale = 1.0 huber_delta = 1.0 lr_decay_type = 2 lr_min = 0.00001 [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 = 50000 min_replay_size = 500 [early_stopping] enabled = true patience = 20 min_epochs_before_stopping = 80 [experience] gpu_n_episodes = 64 gpu_timesteps_per_episode = 200 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 gradient_clip_norm = 1.0 [reward] loss_aversion = 1.5 q_gap_threshold = 0.1