{
  "model_type": "LSTMPredictor",
  "params": {
    "input_size": 61,
    "hidden_size": 128,
    "num_layers": 2,
    "dropout": 0.3,
    "bidirectional": false
  },
  "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.382316768169403,
    "val_accuracy": 0.65625,
    "val_confusion_matrix": [
      [
        16,
        4,
        0
      ],
      [
        1,
        4,
        1
      ],
      [
        5,
        0,
        1
      ]
    ],
    "best_epoch": 12,
    "total_epochs": 27,
    "training_time_sec": 25.227519750595093,
    "test_loss": 1.4874845851551404,
    "test_accuracy": 0.36363636363636365,
    "test_confusion_matrix": [
      [
        8,
        6,
        5
      ],
      [
        2,
        1,
        1
      ],
      [
        6,
        1,
        3
      ]
    ]
  },
  "ticker": "X5",
  "timeframe": "D1"
}