Files
GoldRegime_X/logfiles_cmd.txt
T
Luke Mosoti a0758dfe62 feat: Implement two-stage optimization process with XGB exploration
- Added `--stage` argument to `cmd_optimize` for selecting between Stage-1 (XGB exploration) and Stage-2 (CPCV optimization).
- Introduced `run_optimization_stage1` for fast single hold-out XGB trials, significantly improving optimization speed.
- Updated `run_optimization` to support warm-starting from Stage-1 best parameters.
- Enhanced logging with dedicated score logging for trial monitoring.
- Adjusted hyperparameter ranges for XGBoost to allow deeper trees and finer splits.
- Added synthetic VIX feature computation to the feature application process.
- Persisted best parameters from Stage-1 to JSON for future use in Stage-2.
- Updated documentation for new optimization stages and usage instructions.
2026-05-16 20:25:18 +03:00

88 lines
8.6 KiB
Plaintext

************************************************************
* *
* OPTIMIZATION COMPLETE *
* Study : gold_regime_x_small_headway_cent *
* Trials: 200 *
* Best : +1.7352 *
* *
************************************************************
=== Best Result [H1] ===
Score: 1.735
Broker: headway_cent | Balance: $15 | WFO mode: standard
Best Params:
obs_cov: 0.9321251372950005
trans_cov: 0.004603307301112349
n_states: 4
max_depth: 4
reg_alpha: 0.319900974283491
reg_lambda: 0.17782250902035257
min_child_weight: 25
learning_rate: 0.022607714893612768
n_estimators: 50
subsample: 0.798051539915732
colsample_bytree: 0.5851453122273682
gamma: 0.0103967818333213
scale_pos_weight: 0.9585264413646426
PS C:\GoldRegime_X> python main.py --mode train --tf H1 --broker headway_cent --balance 15
[2026-05-16 20:03:03,813 INFO] main: Using Optuna best params [H1/headway_cent]: {'obs_cov': 0.9321251372950005, 'trans_cov': 0.004603307301112349, 'n_states': 4, 'max_depth': 4, 'reg_alpha': 0.319900974283491, 'reg_lambda': 0.17782250902035257, 'min_child_weight': 25, 'learning_rate': 0.022607714893612768, 'n_estimators': 50, 'subsample': 0.798051539915732, 'colsample_bytree': 0.5851453122273682, 'gamma': 0.0103967818333213, 'scale_pos_weight': 0.9585264413646426}
[2026-05-16 20:03:04,027 INFO] src.processor: Loaded 126451 rows from data\raw\XAU_1h_data.csv
[2026-05-16 20:03:04,037 INFO] src.processor: Filtered to last 10 years: 58427 rows (0 low-volume bars removed)
[2026-05-16 20:03:07,479 INFO] src.processor: GMM saved: gmm_H1_headway_cent.pkl | Scaler: scaler_H1_headway_cent.pkl
[2026-05-16 20:03:07,664 INFO] src.processor: Loaded usdchf_log_return master: 100000 rows from USDCHF_master.csv
[2026-05-16 20:03:07,697 INFO] src.processor: USDCHF [H1] merged: 58427 non-null usdchf_log_return values.
[2026-05-16 20:03:07,821 INFO] src.processor: Loaded xagusd_log_return master: 61108 rows from XAGUSD_master.csv
[2026-05-16 20:03:07,846 INFO] src.processor: XAGUSD [H1] merged: 58427 non-null xagusd_log_return values.
[2026-05-16 20:03:07,979 INFO] src.processor: Loaded xtiusd_log_return master: 54527 rows from XTIUSD_master.csv
[2026-05-16 20:03:08,002 INFO] src.processor: XTIUSD [H1] merged: 53448 non-null xtiusd_log_return values.
[2026-05-16 20:03:08,026 INFO] src.processor: Pipeline [H1] complete: 58407 rows, columns: ['Open', 'High', 'Low', 'Close', 'Volume', 'log_return', 'kalman_return', 'volatility', 'rsi', 'rsi_slope', 'atr_normalized', 'gmm_vol_cluster', 'usdchf_log_return', 'xagusd_log_return', 'xtiusd_log_return', 'synth_vix_zscore']
[2026-05-16 20:03:08,330 INFO] src.processor: Saved processed data to data\processed\gold_h1_processed.parquet
[2026-05-16 20:03:15,415 INFO] src.engine_hmm: Transition Matrix:
[2026-05-16 20:03:15,415 INFO] src.engine_hmm: Bull Bear Chop_Low Chop_High
[2026-05-16 20:03:15,415 INFO] src.engine_hmm: Bull 0.9574 0.0017 0.0251 0.0158
[2026-05-16 20:03:15,416 INFO] src.engine_hmm: Bear 0.0023 0.9724 0.0007 0.0245
[2026-05-16 20:03:15,416 INFO] src.engine_hmm: Chop_Low 0.0222 0.0014 0.9720 0.0044
[2026-05-16 20:03:15,416 INFO] src.engine_hmm: Chop_High 0.0271 0.0056 0.0038 0.9635
[2026-05-16 20:03:15,416 INFO] src.engine_hmm: State means (scaled: kalman_return, volatility, rsi_slope):
[2026-05-16 20:03:15,417 INFO] src.engine_hmm: Bull: return=0.073464, vol=-0.205455, rsi_slope=0.004513
[2026-05-16 20:03:15,417 INFO] src.engine_hmm: Bear: return=-0.184902, vol=2.136550, rsi_slope=-0.010461
[2026-05-16 20:03:15,417 INFO] src.engine_hmm: Chop_Low: return=-0.021650, vol=-0.637116, rsi_slope=-0.002644
[2026-05-16 20:03:15,417 INFO] src.engine_hmm: Chop_High: return=-0.005039, vol=0.393932, rsi_slope=0.001174
[2026-05-16 20:03:15,418 INFO] src.engine_hmm: Total regime transitions: 2332
[2026-05-16 20:03:15,419 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-11 22:00:00: Chop_High -> Bull
[2026-05-16 20:03:15,419 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-12 19:00:00: Bull -> Chop_High
[2026-05-16 20:03:15,419 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-13 11:00:00: Chop_High -> Bull
[2026-05-16 20:03:15,419 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-14 03:00:00: Bull -> Chop_High
[2026-05-16 20:03:15,420 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-15 12:00:00: Chop_High -> Bull
[2026-05-16 20:03:15,420 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-18 16:00:00: Bull -> Chop_High
[2026-05-16 20:03:15,421 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-20 12:00:00: Chop_High -> Bull
[2026-05-16 20:03:15,421 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-21 08:00:00: Bull -> Chop_High
[2026-05-16 20:03:15,421 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-21 16:00:00: Chop_High -> Bear
[2026-05-16 20:03:15,422 INFO] src.engine_hmm: REGIME CHANGE at 2016-04-22 13:00:00: Bear -> Bull
[2026-05-16 20:03:15,470 INFO] src.engine_xgb: Features prepared: 58367 samples, 9 features: ['hmm_state', 'gmm_vol_cluster', 'rsi_slope', 'atr_normalized', 'prev_log_return', 'usdchf_log_return', 'xagusd_log_return', 'xtiusd_log_return', 'synth_vix_zscore']
[2026-05-16 20:03:15,472 INFO] src.processor: Feature scaler saved: feature_scaler_H1_headway_cent.pkl
[2026-05-16 20:03:15,597 INFO] src.engine_xgb: XGB Train Acc: 0.5757 | Test Acc: 0.5757
[2026-05-16 20:03:15,598 INFO] src.engine_xgb: Feature importance: {'hmm_state': np.float32(0.06483526), 'gmm_vol_cluster': np.float32(0.09616215), 'rsi_slope': np.float32(0.06623433), 'atr_normalized': np.float32(0.071258895), 'prev_log_return': np.float32(0.06528759), 'usdchf_log_return': np.float32(0.43032253), 'xagusd_log_return': np.float32(0.06551867), 'xtiusd_log_return': np.float32(0.06990036), 'synth_vix_zscore': np.float32(0.07048019)}
[2026-05-16 20:03:15,598 INFO] src.engine_xgb: Trained vol-bucket 'low': 19261 samples.
[2026-05-16 20:03:15,714 INFO] src.engine_xgb: XGB Train Acc: 0.5760 | Test Acc: 0.5760
[2026-05-16 20:03:15,715 INFO] src.engine_xgb: Feature importance: {'hmm_state': np.float32(0.09538614), 'gmm_vol_cluster': np.float32(0.081925966), 'rsi_slope': np.float32(0.06854473), 'atr_normalized': np.float32(0.08267128), 'prev_log_return': np.float32(0.06812458), 'usdchf_log_return': np.float32(0.37262455), 'xagusd_log_return': np.float32(0.07576584), 'xtiusd_log_return': np.float32(0.074022815), 'synth_vix_zscore': np.float32(0.0809341)}
[2026-05-16 20:03:15,715 INFO] src.engine_xgb: Trained vol-bucket 'med': 19261 samples.
[2026-05-16 20:03:15,834 INFO] src.engine_xgb: XGB Train Acc: 0.5735 | Test Acc: 0.5735
[2026-05-16 20:03:15,834 INFO] src.engine_xgb: Feature importance: {'hmm_state': np.float32(0.09775019), 'gmm_vol_cluster': np.float32(0.05600933), 'rsi_slope': np.float32(0.08452174), 'atr_normalized': np.float32(0.097091965), 'prev_log_return': np.float32(0.07635064), 'usdchf_log_return': np.float32(0.34897852), 'xagusd_log_return': np.float32(0.08847401), 'xtiusd_log_return': np.float32(0.07628185), 'synth_vix_zscore': np.float32(0.07454169)}
[2026-05-16 20:03:15,834 INFO] src.engine_xgb: Trained vol-bucket 'high': 19845 samples.
[2026-05-16 20:03:15,835 INFO] src.engine_xgb: Ensemble trained: buckets={'low': 19261, 'med': 19261, 'high': 19845} thresholds=(-0.42149, 0.21212) features=['hmm_state', 'gmm_vol_cluster', 'rsi_slope', 'atr_normalized', 'prev_log_return', 'usdchf_log_return', 'xagusd_log_return', 'xtiusd_log_return', 'synth_vix_zscore']
[2026-05-16 20:03:16,008 INFO] src.engine_xgb: Regime stats state=0 mean=0.5082 std=0.0311 n=19668
[2026-05-16 20:03:16,009 INFO] src.engine_xgb: Regime stats state=1 mean=0.5018 std=0.0305 n=5032
[2026-05-16 20:03:16,010 INFO] src.engine_xgb: Regime stats state=2 mean=0.5022 std=0.0318 n=19473
[2026-05-16 20:03:16,012 INFO] src.engine_xgb: Regime stats state=3 mean=0.5078 std=0.0293 n=14194
[2026-05-16 20:03:16,140 INFO] src.backtester: Backtest [H1]: Sharpe=0.897 | MaxDD=0.038 | WR=0.655 | Return=27.0% | Trades=142
[2026-05-16 20:03:16,140 INFO] src.backtester: headway_cent: account=$15.00 | costs=0.0004/trade
[2026-05-16 20:03:16,217 INFO] src.engine_hmm: HMM model saved to models\hmm_model_H1_headway_cent.pkl
[2026-05-16 20:03:16,226 INFO] src.engine_xgb: Ensemble saved to models\xgb_ensemble_H1_headway_cent.pkl
=== Training Results [H1] ===
Broker: headway_cent | Balance: $15 | Tier: small
Full-data model trained on 100% of available bars (CPCV validation via optimize step).
Full-period Sharpe: 0.897 | MaxDD: 3.8% | WR: 65.5% | Trades: 142