run: name: baseline_feature_target_model_registry seed: 42 output_dir: artifacts/runs # ------------------------------------------------------------ # DATA # ------------------------------------------------------------ data: path: bars_bybit_1min_2026-03-01_2026-05-11.parquet time_col: time symbol_col: symbol symbol_candle: INDEX candle_rule: 1min min_coverage: 0.98 max_symbols: 120 required_cols: - open - high - low - close - buy_volume - sell_volume # ------------------------------------------------------------ # SPLIT # ------------------------------------------------------------ split: train_size: 0.70 test_size: 0.15 valid_size: 0.15 # ------------------------------------------------------------ # BACKTEST # ------------------------------------------------------------ backtest: fee_rate: 0.0005 initial_state: 1 # ------------------------------------------------------------ # FEATURE SETS # ------------------------------------------------------------ feature_sets: A_market_basic: description: "returns, range, ATR, volatility, volume imbalance" builders: - name: market_basic params: return_lags: [1, 3, 5, 15, 30, 60, 120] range_windows: [14, 30, 60, 120] atr_windows: [14, 60, 120] vol_windows: [30, 60, 120, 360] volume_windows: [30, 60, 120] B_primitive_pressure: description: "primitive continuous pressure parameters from OHLCV" builders: - name: primitive_pressure params: price_lags: [13, 34, 55, 144, 233] force_lag: 34 volume_norm_win: 1440 C_mode_values: description: "continuous mode values: level, speed, accel, cycle, persistence" builders: - name: mode_values params: speed_ema: 45 speed_lag: 5 cycle_win: 360 persist_win: 120 D_state_features: description: "discrete state features derived from mode values" builders: - name: state_features params: deadband: 0.05 cycle_deadband: 0.15 persist_deadband: 0.20 E_agreement_features: description: "agreement features derived from state features" builders: - name: agreement_features params: state: deadband: 0.05 cycle_deadband: 0.15 persist_deadband: 0.20 F_long_context_features: description: "long-context features derived from primitive pressures" builders: - name: long_context params: ema_spans: [120, 240, 360, 720, 1440] trend_lags: [120, 240, 360, 720] cycle_wins: [360, 720, 1440] persist_wins: [240, 480, 720, 1440] fast_span: 45 # ------------------------------------------------------------ # TARGET SETS # ------------------------------------------------------------ target_sets: zz_long: builders: - name: zigzag params: pct_list: [0.018, 0.022, 0.026, 0.030, 0.035, 0.040] atr_mult_list: [1.5, 2.0, 2.5] min_bars_list: [180, 240, 360, 480, 720] atr_window: 60 initial_state: 1 future_mean: builders: - name: future_mean params: horizon_list: [360, 720, 1080, 1440] min_move_pct_list: [0.004, 0.0065, 0.010] atr_mult_list: [0.75, 1.25, 1.75] fee_rate: 0.0005 fee_safety_rate: 0.00075 atr_window: 60 initial_state: 1 future_return: builders: - name: future_return params: horizon_list: [240, 360, 720, 1080, 1440] min_move_pct_list: [0.005, 0.008, 0.012] atr_mult_list: [1.0, 1.5, 2.0] fee_rate: 0.0005 fee_safety_rate: 0.00075 atr_window: 60 initial_state: 1 # ------------------------------------------------------------ # MODELS # ------------------------------------------------------------ models: logreg: name: sklearn_logreg params: C: 0.5 max_iter: 2000 class_weight: balanced extra_trees: name: sklearn_extra_trees params: n_estimators: 400 max_depth: 12 min_samples_leaf: 60 max_features: sqrt n_jobs: -1 random_state: 42 hist_gb: name: sklearn_hist_gradient_boosting params: max_iter: 250 learning_rate: 0.05 max_leaf_nodes: 31 l2_regularization: 0.01 random_state: 42 # ------------------------------------------------------------ # EXPERIMENT MATRIX # ------------------------------------------------------------ experiment_matrix: feature_sets: [A_market_basic, B_primitive_pressure, C_mode_values, D_state_features, E_agreement_features, F_long_context_features] target_sets: [zz_long, future_mean, future_return] models: [logreg, extra_trees, hist_gb] training: max_targets_per_set: null save_predictions: true save_models: true ensemble: enabled: true methods: - majority_vote - score_average