RTE, the French transmission system operator, publishes forecasts of the daily national electricity consumption: for day D a first forecast is generated at D-2, then updated at D-1 at midnight, and at D-1, 16 hours. This forecast is given in average instantaneous power, whose unit is Gigawatt (GW), that is one thousand megawatt (MW). The daily French national consumption is around 40 GW in summer, and can almost reach 100 GW in winter.
Although this forecast is produced by the major grid operator, a trader client asked us to build a forecast model that can refine, if possible, the last RTE forecast. For this our client gave us a daily database containing several years of RTE forecasts and real consumption, with several other explanatory fields: day duration in minutes, average min and max temperatures, holiday events for zone A/B/C, and withdrawal events by geographic zones (for cold days where some classes of clients are asked to reduce consumption as much as possible, with a tariff trigger).
Writing Forecast_C(X@Y) for the RTE forecast for day X but produced during day Y, we got 4 forecasts:
We will write Forecast_C(J) for our NEHOOV final forecast, and
For the real national consumption during day J. The graph below provides a comparison between RTE forecasts and the actual consumption:
Remark for instance that January 9 & 10 forecasts are not as good as the others days.
To summarize, our learning database has size 1500 times 25, showing a tiny framework, but that needs to be carefully tackled. As requested by our client the performance evaluation function is simply
With this metric, the average RTE error of Forecast_C(J,J-1, 16h) is around 1150 MW. At NEHOOV, we wanted to do better.
We launched « the one click analytic », letting our meta-algorithm define the best parameters suitable for creating good neural networks (we built just 500 models). Because of the tiny size of this problem we simply decided to halve the database in trading/validation set. Input fields were also selected and transformed by our algorithm before the construction of the neural network.
The best model is very simple: it has architecture 31->2->1, namely 31 input fields and an unique hidden layer composed of 2 neurons!! Its performance, assessed on the whole database is around 850 MW, thus more than 25% better than the last RTE forecast! In particular 2012 January 9 & 10 forecasts are now almost perfect!
This neural network was then exported to VB code and directly embedded in the client trading platform. The simplicity of this model allowed also to explicitly link (in a non-linear way) some of the input fields and the French national consumption). This link used quadratic forms and hyperbolic tangent, and also some fuzzy functions.
A fast and simple process that allowed NEHOOV to significantly increase the accuracy of French national consumption forecasting, what can be better?