DSA210 / Models

A score needs a reference.

Every number below comes from held-out calendar years, 2019–2024. Higher R² is better; lower RMSE and MAE are better. Negative R² means the model underperforms a test-set-mean reference.

RMSE of seven models across consumer confidence and retail targets
Pooled out-of-fold RMSE on the same observed target rows. Country-mean and persistence baselines are included. Models use fixed settings, not a search selected on these scores. Download SVG ↗

Consumer confidence

Four countries · 288 held-out observations

ModelNRMSEMAER²
Country mean2882.9442.273-0.886
Persistence2880.4920.3510.947
RF combined2882.9152.300-0.849
RF combined + lag2881.0200.6950.773
RF macro2882.9312.317-0.869
RF weather2882.9422.249-0.884
Ridge + weather PCA2882.9992.285-0.957

Retail spending

Three countries · 216 held-out observations · no UK retail

ModelNRMSEMAER²
Country mean21622.18813.293-0.516
Persistence2163.5922.2130.960
RF combined21613.7249.1390.420
RF combined + lag21610.3765.6930.668
RF macro21613.7249.0680.420
RF weather21622.18013.201-0.515
Ridge + weather PCA21616.04210.2970.207

Ablation is the attribution test

RF weather uses weather + calendar + country. RF macro uses macro + calendar + country. RF combined uses both. The same RF settings and test rows are used. RF combined + lag also receives the previous observed target. A high combined score alone is not evidence that sunshine explains that performance.

Can the model predict next-month direction?

0.571logistic ROC AUC
52.1%classification accuracy
46.1%training-prior baseline accuracy
284held-out labelled months

AUC alone does not establish useful trading or spending forecasts. Four terminal labels are excluded. Fixed logistic model, two training-only weather PCs, macro/calendar controls and country encoding. This is a descriptive validation result without a claimed significance test.

Country-level checks

TargetCountryModelRMSER²
CCIGermanyPersistence0.2840.954
CCISpainPersistence0.5470.939
CCITurkeyPersistence0.4890.871
CCIUKPersistence0.5920.948
CCIGermanyRF combined1.928-1.135
CCISpainRF combined3.077-0.923
CCITurkeyRF combined2.437-2.194
CCIUKRF combined3.855-1.224
CCIGermanyRF combined + lag0.3850.915
CCISpainRF combined + lag0.9370.822
CCITurkeyRF combined + lag1.1630.272
CCIUKRF combined + lag1.3360.733
retail_indexGermanyPersistence2.7330.269
retail_indexSpainPersistence3.7540.486
retail_indexTurkeyPersistence4.1400.979
retail_indexGermanyRF combined6.904-3.663
retail_indexSpainRF combined5.947-0.289
retail_indexTurkeyRF combined21.9550.400
retail_indexGermanyRF combined + lag3.290-0.059
retail_indexSpainRF combined + lag3.5450.542
retail_indexTurkeyRF combined + lag17.3080.627

Fold-level results

Every annual result is shown, including weak periods.
TargetTest yearModelRMSER²
CCI2019Country mean1.752-0.076
CCI2020Country mean3.357-4.677
CCI2021Country mean1.7670.046
CCI2022Country mean5.173-5.442
CCI2023Country mean2.604-2.894
CCI2024Country mean1.0050.009
CCI2019Persistence0.1920.987
CCI2020Persistence0.5650.839
CCI2021Persistence0.5150.919
CCI2022Persistence0.6540.897
CCI2023Persistence0.5860.803
CCI2024Persistence0.2490.939
CCI2019RF combined1.698-0.011
CCI2020RF combined3.276-4.407
CCI2021RF combined2.534-0.963
CCI2022RF combined4.767-4.471
CCI2023RF combined2.028-1.362
CCI2024RF combined2.023-3.015
CCI2019RF combined + lag0.9240.701
CCI2020RF combined + lag0.9320.563
CCI2021RF combined + lag0.8360.787
CCI2022RF combined + lag1.8000.220
CCI2023RF combined + lag0.6780.736
CCI2024RF combined + lag0.3600.873
CCI2019RF macro1.6670.026
CCI2020RF macro3.262-4.360
CCI2021RF macro2.521-0.943
CCI2022RF macro4.749-4.431
CCI2023RF macro2.063-1.442
CCI2024RF macro2.225-3.857
CCI2019RF weather1.751-0.075
CCI2020RF weather3.319-4.549
CCI2021RF weather1.844-0.039
CCI2022RF weather5.117-5.304
CCI2023RF weather2.680-3.125
CCI2024RF weather1.041-0.064
CCI2019Ridge + weather PCA1.5630.144
CCI2020Ridge + weather PCA3.433-4.939
CCI2021Ridge + weather PCA2.702-1.230
CCI2022Ridge + weather PCA5.022-5.071
CCI2023Ridge + weather PCA2.349-2.167
CCI2024Ridge + weather PCA1.297-0.652
retail_index2019Country mean4.7420.663
retail_index2020Country mean9.808-0.174
retail_index2021Country mean11.973-8.451
retail_index2022Country mean17.718-4.162
retail_index2023Country mean30.429-1.502
retail_index2024Country mean38.106-0.935
retail_index2019Persistence1.0940.982
retail_index2020Persistence6.6350.463
retail_index2021Persistence3.977-0.043
retail_index2022Persistence2.3100.912
retail_index2023Persistence2.8530.978
retail_index2024Persistence1.6980.996
retail_index2019RF combined4.6320.678
retail_index2020RF combined10.349-0.307
retail_index2021RF combined10.825-6.726
retail_index2022RF combined17.559-4.070
retail_index2023RF combined19.861-0.066
retail_index2024RF combined13.4740.758
retail_index2019RF combined + lag2.3750.915
retail_index2020RF combined + lag5.9680.565
retail_index2021RF combined + lag3.987-0.048
retail_index2022RF combined + lag7.7740.006
retail_index2023RF combined + lag19.1900.005
retail_index2024RF combined + lag12.6530.787
retail_index2019RF macro4.2090.734
retail_index2020RF macro10.329-0.302
retail_index2021RF macro10.652-6.481
retail_index2022RF macro17.645-4.119
retail_index2023RF macro20.018-0.083
retail_index2024RF macro13.4210.760
retail_index2019RF weather4.8140.653
retail_index2020RF weather9.796-0.171
retail_index2021RF weather11.834-8.233
retail_index2022RF weather17.573-4.078
retail_index2023RF weather30.305-1.482
retail_index2024RF weather38.281-0.953
retail_index2019Ridge + weather PCA5.3290.574
retail_index2020Ridge + weather PCA9.223-0.038
retail_index2021Ridge + weather PCA10.820-6.719
retail_index2022Ridge + weather PCA10.928-0.964
retail_index2023Ridge + weather PCA23.659-0.513
retail_index2024Ridge + weather PCA25.1860.154