Skip to content

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 GroupFeatures BeforeFeatures AfterKey Drops
DA1 (D+1, 0–12h)10067Redundant lags, vol_regime_high
DA2 (D+1, 12–24h)10061Long-range lags, origin temporal
S1–S5 (D+2–D+7)10050–54All 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

ParameterValue
Loss functionQuantile 0.55
Ensemble3 models (HistGBT, LightGBM, XGBoost)
Features46–67 per horizon (from 100 input)
Feature selectionYes — correlation filter + permutation importance
Peak-splitNo

Results

149-day backtest (Oct 2025 – Feb 2026), ensemble models:

Productv4.1 MAEv4.2 MAEv4.3 MAEv4.3 vs v4.2
Dayahead13.4214.9514.47-3.2%
Strategic20.7820.3619.79-2.8%

February 2026 (high-volatility period):

Productv4.1 MAEv4.3 MAEChange
Dayahead9.727.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

  • FeatureSelector class implements correlation filter + permutation pruning
  • Training supports configurable correlation and permutation thresholds
  • Model artifacts include feature selection metadata for reproducibility