Skip to content

v3.1 — MAE Loss + Asymmetric Conformal

Date: February 26, 2026

What Changed

MAE Loss Function

Switched all three models from MSE (squared error) to MAE (absolute error):

ModelOld LossNew Loss
HistGBTloss="squared_error"loss="absolute_error"
LightGBMobjective="regression"objective="mae"
XGBoostobjective="reg:squarederror"objective="reg:absoluteerror"

Why: MSE targets the conditional mean; MAE targets the conditional median. Electricity prices are right-skewed (occasional spikes, bounded floor near 0), so the mean sits below the median, causing MSE-trained models to systematically underpredict.

Result: Strategic ensemble bias improved 96% — from -6.94 to -0.30 EUR/MWh.

Asymmetric Conformal Intervals

Switched from absolute residuals to signed residuals for conformal calibration:

  • Old: |actual - predicted| → symmetric intervals
  • New: (actual - predicted) → asymmetric intervals

This captures the directional nature of forecast errors. When the model underpredicts more than it overpredicts, the upper bound extends further than the lower bound.

Rolling Bias Correction

Added per-hour rolling bias correction using the last 30 days of predictions:

  • Computes mean bias per hour-of-day
  • Subtracts from new predictions
  • Peak hours (17-19h) showed the worst bias: -22 to -25 EUR/MWh

Negative Price Floor Clipping

Reduced false-negative predictions:

  • Analyzed 180 days of historical data for per-hour negative price frequency
  • For hours with fewer than 5% negative prices, clip predictions at 0
  • Allow negatives at midday hours where solar saturation causes frequent negative pricing

D+1 Feature Bug Fix

Fixed a critical bug where strategic backtests excluded published D+1 prices despite them being available at the 15:00 UTC origin. After fix, XGBoost strategic MAE improved 49% (40.25 → 20.40 EUR/MWh).

Configuration

ParameterValue
Loss functionMAE (absolute error)
Ensemble3 models (HistGBT, LightGBM, XGBoost)
Features~57
Feature selectionNo
Peak-splitNo

Impact

MetricBefore (v3.0)After (v3.1)Change
Strategic ensemble bias-6.94-0.3096% improvement
Strategic XGBoost MAE40.2520.4049% improvement
D+1 day-ahead MAE~1614.85~7% improvement