trading-platform-ml-engine/config/models.yaml

144 lines
2.9 KiB
YAML

# Model Configuration
# XGBoost Settings
xgboost:
base:
n_estimators: 200
max_depth: 5
learning_rate: 0.05
subsample: 0.8
colsample_bytree: 0.8
gamma: 0.1
reg_alpha: 0.1
reg_lambda: 1.0
min_child_weight: 3
tree_method: "hist"
device: "cuda"
random_state: 42
hyperparameter_search:
n_estimators: [100, 200, 300, 500]
max_depth: [3, 5, 7]
learning_rate: [0.01, 0.05, 0.1]
subsample: [0.7, 0.8, 0.9]
colsample_bytree: [0.7, 0.8, 0.9]
gpu:
max_bin: 512
predictor: "gpu_predictor"
# GRU Settings
gru:
architecture:
hidden_size: 128
num_layers: 2
dropout: 0.2
recurrent_dropout: 0.1
use_attention: true
attention_heads: 8
attention_units: 128
training:
epochs: 100
batch_size: 256
learning_rate: 0.001
optimizer: "adamw"
loss: "mse"
early_stopping_patience: 15
reduce_lr_patience: 5
reduce_lr_factor: 0.5
min_lr: 1.0e-7
gradient_clip: 1.0
sequence:
length: 32
step: 1
mixed_precision:
enabled: true
dtype: "bfloat16"
# Transformer Settings
transformer:
architecture:
d_model: 512
nhead: 8
num_encoder_layers: 4
num_decoder_layers: 2
dim_feedforward: 2048
dropout: 0.1
use_flash_attention: true
training:
epochs: 100
batch_size: 512
learning_rate: 0.0001
warmup_steps: 4000
gradient_accumulation_steps: 2
sequence:
max_length: 128
# Meta-Model Settings
meta_model:
type: "xgboost" # Options: xgboost, linear, ridge, neural
xgboost:
n_estimators: 100
max_depth: 3
learning_rate: 0.1
subsample: 0.8
colsample_bytree: 0.8
neural:
hidden_layers: [64, 32]
activation: "relu"
dropout: 0.2
features:
use_original: true
use_statistics: true
max_original_features: 10
levels:
use_level_2: true
use_level_3: true # Meta-metamodel
# AMD Strategy Models
amd:
accumulation:
focus_features: ["volume", "obv", "support_levels", "rsi"]
model_type: "lstm"
hidden_size: 64
manipulation:
focus_features: ["volatility", "volume_spikes", "false_breakouts"]
model_type: "gru"
hidden_size: 128
distribution:
focus_features: ["momentum", "divergences", "resistance_levels"]
model_type: "transformer"
d_model: 256
# Output Configuration
output:
horizons:
- name: "scalping"
id: 0
range: [1, 6] # 5-30 minutes
- name: "intraday"
id: 1
range: [7, 18] # 35-90 minutes
- name: "swing"
id: 2
range: [19, 36] # 95-180 minutes
- name: "position"
id: 3
range: [37, 72] # 3-6 hours
targets:
- "high"
- "low"
- "close"
- "direction"