Calculate symmetric mean absolute percentage error for forecast accuracy.
Symmetric Mean Absolute Percentage Error (sMAPE) improves on MAPE by dividing by the average of the absolute actual and predicted values rather than the actual value alone: sMAPE = (100/n) × Σ|y_i − ŷ_i| / ((|y_i|+|ŷ_i|)/2). This bounds each term's contribution between 0% and 200% and treats over- and under-predictions more symmetrically, making it more stable than MAPE when actual values are small or the model sometimes over- and sometimes under-predicts significantly.
sMAPE = (100 / n) * sum(|y_i - y_hat_i| / ((|y_i| + |y_hat_i|) / 2))
By dividing by the average magnitude of the actual and predicted values instead of the actual value alone, sMAPE gives comparable penalties whether the model over-predicts or under-predicts by the same proportion, unlike MAPE which is skewed toward penalizing over-prediction more.
Each individual term is bounded at 200% (occurring when actual and predicted have opposite signs or one is zero and the other is nonzero), so overall sMAPE is bounded between 0% and 200%, unlike MAPE which is theoretically unbounded.
Not universally — sMAPE handles near-zero actual values more gracefully and is more symmetric, but it can behave counterintuitively when actual and predicted values have opposite signs; the best choice depends on your data's characteristics.