Accuracy metrics: MASE, RMSSE and pinball loss
Today let's learn how to score a forecast honestly, using two months of cone sales from a small boardwalk ice-cream cart.
Pier Nine sells cones from a cart on the boardwalk. Below are all 63 days of its sales, from June 1 to August 2, 2026. Weekdays run close to 15 cones a day, weekends climb to around 34, and every so often a rain washout drops a day down to almost nothing.
The last 14 days are marked apart as the test window. No model gets to see them while it is being built. They only get used afterward, to check how good each forecast really was.
Here is the whole series, with the test window marked apart.
That is the series every metric in this lesson scores against.
Two forecasts to score
Let's build that series for real, and split it the same way: the first 49 days to train two models on, the last 14 held back to test them against.
Two models get fit on those 49 training days. Seasonal_naive is the simplest forecast Pier Nine's owner could make by hand: repeat each day's sales from the same weekday, one week back, since a Monday tends to look like the Monday before it. ETS is fabletools's automatic exponential smoothing model. It looks at the same 49 days and works out its own level and weekly pattern, without being told what either one is.
Fit both, forecast 14 days ahead, and line the first 5 up against what actually happened.
Look at 21 July. Seasonal_naive forecasts 24 cones for a day that sold 9, off by 15. ETS lands much closer, at 11.19. Neither model is perfect on every day. Turning "how far off" into one honest number is the whole point from here.