Hierarchical ML Pipeline for trading predictions:
- Level 0: Attention Models (volatility/flow classification)
- Level 1: Base Models (XGBoost per symbol/timeframe)
- Level 2: Metamodels (XGBoost Stacking + Neural Gating)
Key components:
- src/pipelines/hierarchical_pipeline.py - Main prediction pipeline
- src/models/ - All ML model classes
- src/training/ - Training utilities
- src/api/ - FastAPI endpoints
- scripts/ - Training and evaluation scripts
- config/ - YAML configurations
Note: Trained models (*.joblib, *.pt) are gitignored.
Regenerate with training scripts.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
214 lines
6.8 KiB
JSON
214 lines
6.8 KiB
JSON
{
|
|
"timestamp": "2026-01-04T19:58:12.901655",
|
|
"models": {
|
|
"range_predictor": {
|
|
"15m": {
|
|
"train_metrics": {
|
|
"15m_scalping_high": {
|
|
"timeframe": "15m",
|
|
"horizon": "scalping",
|
|
"target_type": "high",
|
|
"mae": 0.0004886651440883244,
|
|
"mape": 0.0,
|
|
"rmse": 0.0007872084942626686,
|
|
"r2": -4.2548617518178844e-08,
|
|
"directional_accuracy": 0.9222151196043468,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 118892,
|
|
"date_range": ""
|
|
},
|
|
"15m_scalping_low": {
|
|
"timeframe": "15m",
|
|
"horizon": "scalping",
|
|
"target_type": "low",
|
|
"mae": 0.000477617858210229,
|
|
"mape": 0.0,
|
|
"rmse": 0.0007654664852899963,
|
|
"r2": -1.914598923846711e-09,
|
|
"directional_accuracy": 0.9463967298052014,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 118892,
|
|
"date_range": ""
|
|
},
|
|
"15m_scalping_direction": {
|
|
"timeframe": "15m",
|
|
"horizon": "scalping",
|
|
"target_type": "direction",
|
|
"mae": 0.0,
|
|
"mape": 0.0,
|
|
"rmse": 0.0,
|
|
"r2": 0.0,
|
|
"directional_accuracy": 0.6658648184907311,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 118892,
|
|
"date_range": ""
|
|
},
|
|
"15m_intraday_high": {
|
|
"timeframe": "15m",
|
|
"horizon": "intraday",
|
|
"target_type": "high",
|
|
"mae": 0.0006993423167130341,
|
|
"mape": 0.0,
|
|
"rmse": 0.0011127675078032532,
|
|
"r2": -2.3644777247255888e-08,
|
|
"directional_accuracy": 0.9455051643508394,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 118892,
|
|
"date_range": ""
|
|
},
|
|
"15m_intraday_low": {
|
|
"timeframe": "15m",
|
|
"horizon": "intraday",
|
|
"target_type": "low",
|
|
"mae": 0.0006804403533430972,
|
|
"mape": 0.0,
|
|
"rmse": 0.0010767935935523123,
|
|
"r2": -2.7826232429362108e-09,
|
|
"directional_accuracy": 0.9635803922887999,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 118892,
|
|
"date_range": ""
|
|
},
|
|
"15m_intraday_direction": {
|
|
"timeframe": "15m",
|
|
"horizon": "intraday",
|
|
"target_type": "direction",
|
|
"mae": 0.0,
|
|
"mape": 0.0,
|
|
"rmse": 0.0,
|
|
"r2": 0.0,
|
|
"directional_accuracy": 0.6963462638360866,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 118892,
|
|
"date_range": ""
|
|
}
|
|
},
|
|
"oos_metrics": {
|
|
"15m_scalping_high": {
|
|
"timeframe": "15m",
|
|
"horizon": "scalping",
|
|
"target_type": "high",
|
|
"mae": 0.0004675201139471693,
|
|
"mape": 0.0,
|
|
"rmse": 0.0006543397451561858,
|
|
"r2": -0.002294076158399383,
|
|
"directional_accuracy": 0.9255290287574607,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 14744,
|
|
"date_range": ""
|
|
},
|
|
"15m_scalping_low": {
|
|
"timeframe": "15m",
|
|
"horizon": "scalping",
|
|
"target_type": "low",
|
|
"mae": 0.00048778072215059035,
|
|
"mape": 0.0,
|
|
"rmse": 0.000733354945431411,
|
|
"r2": -6.548287205032643e-05,
|
|
"directional_accuracy": 0.940246880086815,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 14744,
|
|
"date_range": ""
|
|
},
|
|
"15m_scalping_direction": {
|
|
"timeframe": "15m",
|
|
"horizon": "scalping",
|
|
"target_type": "direction",
|
|
"mae": 0.0,
|
|
"mape": 0.0,
|
|
"rmse": 0.0,
|
|
"r2": 0.0,
|
|
"directional_accuracy": 0.48134834508952795,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 14744,
|
|
"date_range": ""
|
|
},
|
|
"15m_intraday_high": {
|
|
"timeframe": "15m",
|
|
"horizon": "intraday",
|
|
"target_type": "high",
|
|
"mae": 0.0006585377108682153,
|
|
"mape": 0.0,
|
|
"rmse": 0.0009067521187457082,
|
|
"r2": -0.002423385694949598,
|
|
"directional_accuracy": 0.9494709712425393,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 14744,
|
|
"date_range": ""
|
|
},
|
|
"15m_intraday_low": {
|
|
"timeframe": "15m",
|
|
"horizon": "intraday",
|
|
"target_type": "low",
|
|
"mae": 0.0006908570190734443,
|
|
"mape": 0.0,
|
|
"rmse": 0.001027100555907235,
|
|
"r2": -7.776256038871665e-06,
|
|
"directional_accuracy": 0.9578133478024959,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 14744,
|
|
"date_range": ""
|
|
},
|
|
"15m_intraday_direction": {
|
|
"timeframe": "15m",
|
|
"horizon": "intraday",
|
|
"target_type": "direction",
|
|
"mae": 0.0,
|
|
"mape": 0.0,
|
|
"rmse": 0.0,
|
|
"r2": 0.0,
|
|
"directional_accuracy": 0.46629137276180144,
|
|
"profitable_predictions": 0.0,
|
|
"avg_edge": 0.0,
|
|
"n_samples": 14744,
|
|
"date_range": ""
|
|
}
|
|
},
|
|
"model_path": "models/ml_first/XAUUSD/range_predictor/15m",
|
|
"train_size": 118892,
|
|
"val_size": 20980,
|
|
"test_size": 14744
|
|
}
|
|
},
|
|
"amd_detector": {
|
|
"train_metrics": {
|
|
"accuracy": 0.7689660201254193,
|
|
"macro_f1": 0.7339108128949361,
|
|
"weighted_f1": 0.770156163085288,
|
|
"per_class_f1": {
|
|
"accumulation": 0.6420216761455092,
|
|
"manipulation": 0.9209081796630125,
|
|
"distribution": 0.6388025828762867
|
|
},
|
|
"confusion_matrix": "[[11966 1098 5292]\n [ 1375 28940 1403]\n [ 5579 1095 11822]]",
|
|
"n_samples": 68570
|
|
},
|
|
"oos_metrics": {
|
|
"accuracy": 0.0671415226529659,
|
|
"weighted_f1": 0.0586022587498925
|
|
},
|
|
"model_path": "models/ml_first/XAUUSD/amd_detector",
|
|
"train_size": 118892,
|
|
"test_size": 14745
|
|
}
|
|
},
|
|
"oos_results": {},
|
|
"summary": {
|
|
"total_models_trained": 7,
|
|
"range_predictor": {},
|
|
"amd_detector": {},
|
|
"validation_passed": "True",
|
|
"best_oos_directional_accuracy": 0.9578133478024959
|
|
}
|
|
} |