CDS Long range forecast - how to derive the "normal" conditions

Hi all, I am using the ECMWF SEAS5 long range forecast from the CDS to get a precipitation forecast. I am calculating the monthly rainfall in mm/month by multiplying the value by the number of seconds in each months, then by 1000. 

I want to calculate the monthly historic average that is used in the forecast. So for example, if in a month I get a figure of -20mm for the Total precipitation anomalous rate of accumulation forecast, that means 20mm less than normal in the month. I want to know the normal value.

Here is how I calculated it: If for the same location, I get a value of 150mm from the Total precipitation forecast, is it valid to just calculate the "normal" conditions by doing -20 + 150mm = 130mm?  I just wanted to check this is a valid way of doing it because I don't see any product that gives me that value directly.

Assuming the above is correct, I have a further question - how is this normal value calculated? I assume it'a a monthly average from the past x years based upon a hindcast or something like that? Any further info you can provide would be great.


Hi Matt,

the step of converting the monthly data from m/s, as it is available from the CDS, to mm/month is completely right. But your later step of adding together the anomalies with the forecasts is hardly a useful thing to do. And you'll soon see why...

Anomalies in the C3S seasonal forecast datasets are calculated independently for each forecasting system, so they take into account the biases each forecasting system is introducing. In other words, anomalies are calculated in the model world simply as:

anomaly = forecast - hindcast_climate_mean

where the hindcast_climate_mean is the average over the climate period used in C3S (1993-2016), so as you anticipated it's a value obtained averaging from the hindcasts.

From that point of view, that hindcast climate mean would be the "normal" conditions you are asking about, and as such, it is indeed available in the CDS dataset (see "Product type" in the Download form). The question is... do you really want to use that "normal"?

As I said above, the models are affected by systematic errors that are different for each model, and they also differ for different variables, times of the year, length within the forecast or region in the world. By having the anomalies calculated with respect to each model climatology you are, by design, removing the mean bias. That means you can directly combine that anomaly with a "normal" condition of your preference (coming from an observational dataset relevant to you, for instance).

I hope that sounds useful to you.


Eduardo Penabad
C3S Seasonal Forecasts

PS: As I said above, adding up the anomalies with the forecasts is not a good thing to do as you would be essentially doing the following (according to the explanation above):

forecast + anomaly = forecast + (forecast - hindcast_climate_mean) = 2*forecast - hindcast_climate_mean

which is probably a calculation you won't be interested in.

Thanks for the clarification Eduardo, that makes sense. I'm by no means an expert in this... and yes I did implement that final equation before I knew better (smile) 

What I'm actually trying to do is calculate the percentage difference from the historic "normal" for a given month. I just was not sure about combining a completely independent rainfall observation dataset (e.g. this one) with the forecast data, but if you say that's a valid thing to do then great. I then have another question as it seems like there are 2 different ways that I could calculate the percentage difference from the "normal" conditions for a given month:

pct_difference_from_norm = anomaly / historic_average * 100 

But presumably it could also be worked out by calculating the difference between the forecasted value and the historic value. 

Do you have any suggestion as to the correct approach? 

I guess I'd also have to calculate the historic mean over the same timerange as the anomaly forecast uses (1993-2016)?