{
  "model_type": "GRUPredictor",
  "params": {
    "input_size": 61,
    "hidden_size": 128,
    "num_layers": 2,
    "dropout": 0.4,
    "bidirectional": false,
    "focal_gamma": 3.0,
    "weight_decay": 0.001,
    "pretrain_lr": 0.001,
    "finetune_lr": 5e-05,
    "pretrain_epochs": 100,
    "finetune_epochs": 50,
    "batch_size": 32,
    "seed": 123,
    "sell_multiplier": 2.5,
    "loss_function": "WeightedFocalLoss"
  },
  "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": 0.2755211889743805,
    "val_accuracy": 0.5625,
    "val_macro_f1": 0.4166666666666667,
    "val_confusion_matrix": [
      [
        15,
        1,
        4
      ],
      [
        3,
        1,
        2
      ],
      [
        4,
        0,
        2
      ]
    ],
    "best_epoch": 32,
    "total_epochs": 50,
    "pretrain_epochs_done": 18,
    "training_time_sec": 197.43961310386658,
    "test_loss": 0.26017875653324707,
    "test_accuracy": 0.5757575757575758,
    "test_macro_f1": 0.5377333333333333,
    "test_confusion_matrix": [
      [
        11,
        2,
        6
      ],
      [
        1,
        2,
        1
      ],
      [
        3,
        1,
        6
      ]
    ],
    "calibrated_test_accuracy": 0.5454545454545454,
    "calibrated_test_macro_f1": 0.5091666666666667,
    "calibrated_test_confusion_matrix": [
      [
        11,
        2,
        6
      ],
      [
        1,
        2,
        1
      ],
      [
        4,
        1,
        5
      ]
    ]
  },
  "ticker": "X5",
  "timeframe": "D1",
  "training_type": "pretrain_then_finetune_v4",
  "pretrain_data": "src/ml/models/saved/multi_ticker_d1_pretrain.h5",
  "finetune_data": "src/ml/models/saved/x5_d1_augmented.h5",
  "calibrated_thresholds": {
    "0": 0.0,
    "1": 0.3500000000000001,
    "2": 0.3500000000000001
  },
  "loss_function": "WeightedFocalLoss",
  "focal_gamma": 3.0
}