Train GradientBoostedClassifier on 2,601 days of historical data (2018-2025) to find optimal metric weights for identifying the best long-term buying opportunities. Uses time-series cross-validation to prevent look-ahead bias. Key results: - pct_above_200w_sma: 50.7% weight (was 11.1% equal) - drawdown: 14.6%, lth_rp: 10.9%, rhodl: 8.9% - fear_greed demoted from 11.1% to 5.1% - nupl/mvrv nearly eliminated (0.7-1.8%) ML Strong Accumulation bracket: avg +210% 1yr (vs +176% classic) New files: ml/optimizer.py, config/ml_weights.json Modified: scoring/engine.py (score_all_ml), backtesting/engine.py (ml_mode), dashboard/server.py (Classic/ML toggle) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
159 lines
3.8 KiB
JSON
159 lines
3.8 KiB
JSON
{
|
|
"weights": {
|
|
"pct_above_200w_sma": 0.5075,
|
|
"drawdown": 0.1459,
|
|
"pct_above_lth_rp": 0.1095,
|
|
"rhodl_ratio": 0.089,
|
|
"fear_greed": 0.0515,
|
|
"reserve_risk": 0.046,
|
|
"puell_multiple": 0.0255,
|
|
"mvrv_zscore": 0.0182,
|
|
"nupl": 0.0068
|
|
},
|
|
"feature_importances": {
|
|
"raw_pct_above_200w_sma": 0.436377,
|
|
"days_since_ath": 0.119405,
|
|
"raw_pct_above_lth_rp": 0.109451,
|
|
"raw_rhodl_ratio": 0.088999,
|
|
"score_pct_above_200w_sma": 0.071148,
|
|
"raw_fear_greed": 0.051475,
|
|
"puell_x_reserve": 0.032886,
|
|
"raw_drawdown": 0.026474,
|
|
"raw_reserve_risk": 0.021707,
|
|
"raw_mvrv_zscore": 0.012429,
|
|
"raw_puell_multiple": 0.008599,
|
|
"delta_30d_reserve_risk": 0.007865,
|
|
"delta_30d_mvrv_zscore": 0.004263,
|
|
"raw_nupl": 0.003271,
|
|
"mvrv_x_nupl": 0.002979,
|
|
"delta_30d_nupl": 0.002056,
|
|
"delta_30d_puell_multiple": 0.000473,
|
|
"score_fear_greed": 6.8e-05,
|
|
"score_mvrv_zscore": 5.4e-05,
|
|
"score_puell_multiple": 1e-05,
|
|
"score_pct_above_lth_rp": 6e-06,
|
|
"score_rhodl_ratio": 2e-06,
|
|
"score_reserve_risk": 0.0,
|
|
"score_nupl": 0.0,
|
|
"score_drawdown": 0.0
|
|
},
|
|
"cv_results": {
|
|
"mean_auc": 0.6164,
|
|
"std_auc": 0.3317,
|
|
"mean_f1": 0.6736,
|
|
"mean_precision": 0.8015,
|
|
"mean_recall": 0.7047
|
|
},
|
|
"training_info": {
|
|
"n_samples": 2601,
|
|
"n_positive": 1553,
|
|
"positive_rate": 0.5971,
|
|
"n_features": 25,
|
|
"target_threshold": 30.0,
|
|
"date_range": "2018-02-01 to 2025-03-21",
|
|
"model": "GradientBoostingClassifier"
|
|
},
|
|
"comparison": {
|
|
"equal_weight": [
|
|
{
|
|
"range": "0-20",
|
|
"label": "Extreme Caution",
|
|
"days": 295,
|
|
"avg_365d": -5.94,
|
|
"median_365d": -11.99,
|
|
"win_rate_365d": 35.6
|
|
},
|
|
{
|
|
"range": "21-40",
|
|
"label": "Caution",
|
|
"days": 587,
|
|
"avg_365d": 23.84,
|
|
"median_365d": -7.2,
|
|
"win_rate_365d": 45.3
|
|
},
|
|
{
|
|
"range": "41-55",
|
|
"label": "Neutral",
|
|
"days": 697,
|
|
"avg_365d": 108.96,
|
|
"median_365d": 75.92,
|
|
"win_rate_365d": 70.4
|
|
},
|
|
{
|
|
"range": "56-70",
|
|
"label": "Moderate Opportunity",
|
|
"days": 450,
|
|
"avg_365d": 128.81,
|
|
"median_365d": 109.03,
|
|
"win_rate_365d": 96.4
|
|
},
|
|
{
|
|
"range": "71-85",
|
|
"label": "Strong Accumulation",
|
|
"days": 275,
|
|
"avg_365d": 175.76,
|
|
"median_365d": 117.95,
|
|
"win_rate_365d": 86.9
|
|
},
|
|
{
|
|
"range": "86-100",
|
|
"label": "Extreme Accumulation",
|
|
"days": 247,
|
|
"avg_365d": 115.5,
|
|
"median_365d": 90.08,
|
|
"win_rate_365d": 100.0
|
|
}
|
|
],
|
|
"ml_weighted": [
|
|
{
|
|
"range": "0-20",
|
|
"label": "Extreme Caution",
|
|
"days": 577,
|
|
"avg_365d": -6.17,
|
|
"median_365d": -26.21,
|
|
"win_rate_365d": 27.0
|
|
},
|
|
{
|
|
"range": "21-40",
|
|
"label": "Caution",
|
|
"days": 855,
|
|
"avg_365d": 77.5,
|
|
"median_365d": 39.28,
|
|
"win_rate_365d": 72.7
|
|
},
|
|
{
|
|
"range": "41-55",
|
|
"label": "Neutral",
|
|
"days": 241,
|
|
"avg_365d": 165.77,
|
|
"median_365d": 124.05,
|
|
"win_rate_365d": 92.5
|
|
},
|
|
{
|
|
"range": "56-70",
|
|
"label": "Moderate Opportunity",
|
|
"days": 328,
|
|
"avg_365d": 144.47,
|
|
"median_365d": 124.27,
|
|
"win_rate_365d": 89.6
|
|
},
|
|
{
|
|
"range": "71-85",
|
|
"label": "Strong Accumulation",
|
|
"days": 201,
|
|
"avg_365d": 210.2,
|
|
"median_365d": 122.22,
|
|
"win_rate_365d": 99.0
|
|
},
|
|
{
|
|
"range": "86-100",
|
|
"label": "Extreme Accumulation",
|
|
"days": 287,
|
|
"avg_365d": 113.92,
|
|
"median_365d": 99.53,
|
|
"win_rate_365d": 100.0
|
|
}
|
|
]
|
|
},
|
|
"trained_at": "2026-03-21T23:15:38.277703+00:00"
|
|
} |