{
  "model_type": "LSTMPredictor",
  "params": {
    "input_size": 61,
    "hidden_size": 128,
    "num_layers": 2,
    "dropout": 0.3,
    "bidirectional": false,
    "pretrain_epochs": 50,
    "finetune_epochs": 30,
    "pretrain_lr": 0.001,
    "finetune_lr": 0.0001,
    "batch_size": 32,
    "weight_decay": 0.0001
  },
  "feature_cols": [
    "Open",
    "High",
    "Low",
    "Close",
    "Volume",
    "ret_1",
    "ret_5",
    "ret_10",
    "ret_21",
    "log_ret_1",
    "high_low_ratio",
    "close_open_ratio",
    "upper_shadow",
    "lower_shadow",
    "spread_pct",
    "close_position",
    "ema_9",
    "ema_21",
    "ema_50",
    "sma_20",
    "sma_50",
    "sma_200",
    "price_to_ema9",
    "price_to_sma50",
    "price_to_sma200",
    "macd",
    "macd_signal",
    "macd_hist",
    "macd_hist_pct",
    "adx",
    "plus_di",
    "minus_di",
    "rsi_14",
    "rsi_7",
    "stoch_k",
    "stoch_d",
    "cci_20",
    "mfi_14",
    "mfi_7",
    "bb_lower",
    "bb_middle",
    "bb_upper",
    "bb_width",
    "bb_position",
    "atr_14",
    "atr_pct",
    "obv",
    "volume_sma_20",
    "volume_ratio",
    "volume_change",
    "volume_change_5",
    "day_of_week",
    "month",
    "quarter",
    "day_of_month",
    "is_month_end",
    "is_quarter_end",
    "day_sin",
    "day_cos",
    "month_sin",
    "month_cos"
  ],
  "n_classes": 3,
  "class_names": {
    "0": "HOLD",
    "1": "BUY",
    "2": "SELL"
  },
  "metrics": {
    "val_loss": 1.3082294464111328,
    "val_accuracy": 0.59375,
    "val_macro_f1": 0.3189666666666667,
    "val_confusion_matrix": [
      [
        18,
        2,
        0
      ],
      [
        5,
        1,
        0
      ],
      [
        6,
        0,
        0
      ]
    ],
    "best_epoch": 4,
    "total_epochs": 19,
    "pretrain_epochs_done": 12,
    "training_time_sec": 622.5728170871735,
    "test_loss": 1.3930946552392207,
    "test_accuracy": 0.5757575757575758,
    "test_macro_f1": 0.3611,
    "test_confusion_matrix": [
      [
        18,
        0,
        1
      ],
      [
        2,
        1,
        1
      ],
      [
        9,
        1,
        0
      ]
    ]
  },
  "ticker": "X5",
  "timeframe": "D1",
  "training_type": "pretrain_then_finetune",
  "pretrain_data": "src/ml/models/saved/multi_ticker_d1_pretrain.h5",
  "finetune_data": "src/ml/models/saved/x5_d1_augmented.h5"
}