""" ML-3m-trader Configuration =========================== Central configuration for all tunable parameters. """ import os # --------------------------------------------------------------------------- # Symbol & Timeframe # --------------------------------------------------------------------------- SYMBOL = "XAUUSDc" TIMEFRAME_MINUTES = 3 # 3-minute bars # --------------------------------------------------------------------------- # Data # --------------------------------------------------------------------------- DATA_DIR = os.path.join(os.path.dirname(__file__), "data") MODEL_DIR = os.path.join(os.path.dirname(__file__), "models") RESULTS_DIR = os.path.join(os.path.dirname(__file__), "results") LOOKBACK_DAYS = 365 # 1 year of data # --------------------------------------------------------------------------- # Feature Parameters # --------------------------------------------------------------------------- SMA_FAST_PERIOD = 14 SMA_SLOW_PERIOD = 50 VROC_PERIOD = 14 ADX_PERIOD = 14 MOMENTUM_SI_PERIOD = 10 VIX_PROXY_PERIOD = 20 # rolling std of log-returns # --------------------------------------------------------------------------- # Labeling # --------------------------------------------------------------------------- ATR_PERIOD = 14 ATR_SL_MULTIPLIER = 1.5 # SL = ATR * multiplier LABEL_LOOKAHEAD_BARS = 60 # max bars to wait for TP/SL hit (3h at 3m) RR_RATIO = 1.0 # risk-reward ratio (1:1) # Labels (integer encoding) LABEL_DO_NOTHING = 0 LABEL_BUY = 1 LABEL_SELL = 2 LABEL_HOLD = 3 LABEL_NAMES = { LABEL_DO_NOTHING: "DO_NOTHING", LABEL_BUY: "BUY", LABEL_SELL: "SELL", LABEL_HOLD: "HOLD", } # --------------------------------------------------------------------------- # Execution / Risk # --------------------------------------------------------------------------- SPREAD_FILTER_MULTIPLIER = 10 # skip if sl_distance < spread * 10 SLIPPAGE_MIN = 0.0 # min random slippage (XAUUSDc units) SLIPPAGE_MAX = 2.0 # max random slippage (XAUUSDc units) DEFAULT_BET_PCT = 0.02 # 2% of balance per trade STARTING_BALANCE = 10_000.0 # USD # --------------------------------------------------------------------------- # Model Hyperparameters (LightGBM) # --------------------------------------------------------------------------- LGBM_PARAMS = { "boosting_type": "gbdt", "objective": "multiclass", "num_class": 4, "metric": "multi_logloss", "num_leaves": 63, "max_depth": 8, "learning_rate": 0.05, "n_estimators": 500, "subsample": 0.8, "colsample_bytree": 0.8, "min_child_samples": 20, "class_weight": "balanced", "random_state": 42, "verbose": -1, "n_jobs": -1, } EARLY_STOPPING_ROUNDS = 30 TRAIN_SPLIT_RATIO = 0.80 # chronological 80/20 # --------------------------------------------------------------------------- # Random Seed # --------------------------------------------------------------------------- RANDOM_SEED = 42