v4.3 — Feature Selection Pipeline (Production)
Date: March 5, 2026
What Changed
v4.2 added 24 new features but regressed on dayahead accuracy (+11.4%) because many features added noise during stable periods. v4.3 introduces a two-stage feature selection pipeline that prunes redundant and low-importance features per horizon group, keeping what helps and dropping what hurts.
Feature Selection Pipeline
Stage 1: Correlation Filter
Removes highly correlated feature pairs (|r| > 0.95 threshold). When two features carry essentially the same information, one is dropped based on lower univariate importance.
Stage 2: Permutation Importance Pruning
For each remaining feature, shuffles its values and measures the increase in validation error. Features contributing less than 0.1% to model performance are removed — they add complexity without predictive value.
Per-Horizon Selection
Each horizon group (DA1, DA2, S1–S5) runs its own selection. This reflects the reality that different horizons need different information:
| Horizon Group | Features Before | Features After | Key Drops |
|---|---|---|---|
| DA1 (D+1, 0–12h) | 100 | 67 | Redundant lags, vol_regime_high |
| DA2 (D+1, 12–24h) | 100 | 61 | Long-range lags, origin temporal |
| S1–S5 (D+2–D+7) | 100 | 50–54 | All price lags (24h–504h), demand ramps |
Strategic groups drop all price lag features — at D+2 to D+7 horizons, price lags are stale and add noise rather than signal. This is the pipeline’s most impactful finding.
Consistently dropped across all groups: vol_regime_high, demand_ramp_4h, origin_hour_sin/cos, origin_is_weekend.
Configuration
| Parameter | Value |
|---|---|
| Loss function | Quantile 0.55 |
| Ensemble | 3 models (HistGBT, LightGBM, XGBoost) |
| Features | 46–67 per horizon (from 100 input) |
| Feature selection | Yes — correlation filter + permutation importance |
| Peak-split | No |
Results
149-day backtest (Oct 2025 – Feb 2026), ensemble models:
| Product | v4.1 MAE | v4.2 MAE | v4.3 MAE | v4.3 vs v4.2 |
|---|---|---|---|---|
| Dayahead | 13.42 | 14.95 | 14.47 | -3.2% |
| Strategic | 20.78 | 20.36 | 19.79 | -2.8% |
February 2026 (high-volatility period):
| Product | v4.1 MAE | v4.3 MAE | Change |
|---|---|---|---|
| Dayahead | 9.72 | 7.97 | -18.0% |
v4.3 achieves the best-ever strategic MAE (19.79) and recovers most of the v4.2 dayahead regression. February dayahead MAE of 7.97 is the best single-month result, showing the crisis-responsive features work well once noise features are pruned.
XGBoost dayahead individual MAE: 13.95 — nearly matching v4.1 ensemble (13.42), demonstrating that the feature selection pipeline makes individual models strong enough to approach ensemble-level performance.
Implementation Notes
FeatureSelectorclass implements correlation filter + permutation pruning- Training supports configurable correlation and permutation thresholds
- Model artifacts include feature selection metadata for reproducibility