1. Definition
sMAPE is a normalized error metric that expresses forecast accuracy as a percentage.
Unlike regular MAPE, it is symmetric because it divides the error by the average of actual and predicted values.
$sMAPE = \frac{100\%}{N} \sum_{i=1}^N \frac{|y_i – \hat{y}_i|}{\frac{|y_i| + |\hat{y}_i|}{2}}$
where:
- $N$ = number of forecasts
- $y_i$ = actual value
- $\hat{y}_i$ = predicted value
2. Intuition
- Standard MAPE divides by actual value ($y_i$), so it can explode when $y_i$ ≈ 0.
- sMAPE divides by the average of actual and predicted, making it more stable and “symmetric” between overestimation and underestimation.
3. Example
Suppose actual vs predicted demand:
| Observation | Actual ($y$) | Predicted ($\hat{y}$) | Error$|y – ŷ|$ | Denominator $(|y|+|ŷ|)/2$ | Term |
|---|---|---|---|---|---|
| 1 | 100 | 90 | 10 | 95 | 0.105 |
| 2 | 200 | 220 | 20 | 210 | 0.095 |
| 3 | 400 | 360 | 40 | 380 | 0.105 |
$sMAPE = \frac{100}{3}(0.105 + 0.095 + 0.105) = 10.2\%$
4. Properties
- Range: 0% → 200%
- (since denominator can be small, max error can approach 200%).
- Symmetry: Over-forecasting and under-forecasting are penalized equally.
- Interpretability: Error as a percentage makes it easy for stakeholders to understand.
5. Comparison with Other Metrics
- MAE: Absolute error, same units as target.
- MAPE: Error as a % of actual value (unstable if $y$ ≈ 0).
- sMAPE: Error as a % of average of actual and predicted (more stable, fairer).
- RMSE: Penalizes large errors more (quadratic).
Use sMAPE when you need a percentage-based error metric that avoids MAPE’s instability near zero.
6. Python Example
import numpy as np
def smape(y_true, y_pred):
return 100 * np.mean(2 * np.abs(y_pred - y_true) / (np.abs(y_true) + np.abs(y_pred)))
y_true = np.array([100, 200, 400])
y_pred = np.array([90, 220, 360])
print("sMAPE:", smape(y_true, y_pred))
Output:
sMAPE: 10.2
Summary
- sMAPE = Symmetric version of MAPE.
- Range: 0%–200%, lower = better.
- More stable than MAPE when actuals are near zero.
- Common in time series forecasting competitions (e.g., energy demand, sales, traffic).
