- Symmetric Mean Absolute Percentage Error addresses a fundamental asymmetry in MAPE: the fact that over-predictions and under-predictions of the sam...
- Parameterized by `period`.
- Output range: $\geq 0$.
- Requires 1 bar of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
> "MAPE punishes based on who's right; SMAPE punishes based on how different they are."
Symmetric Mean Absolute Percentage Error addresses a fundamental asymmetry in MAPE: the fact that over-predictions and under-predictions of the same magnitude receive different penalties. SMAPE uses the average of actual and predicted values in the denominator, creating a metric that treats both directions equally.
## Architecture & Physics
SMAPE computes the symmetric percentage error for each observation:
| Interpretation | Familiar | Less intuitive | MAPE |
## Common Pitfalls
### 1. The 200% Scale
SMAPE ranges from 0% to 200%, not 0% to 100%. This can cause confusion when comparing with MAPE:
```csharp
// SMAPE = 50% is roughly equivalent to MAPE ≈ 33-40%
// The relationship is non-linear
```
### 2. Both Values Near Zero
When both actual and predicted approach zero, SMAPE approaches 0% (perfect):
```csharp
// actual = 0.001, predicted = 0.002
// |diff| = 0.001, sum = 0.003
// SMAPE = 200 * 0.001 / 0.003 = 66.7%
// This may not reflect actual model quality
```
### 3. Sign Insensitivity
Like MAPE, SMAPE doesn't indicate bias direction. A model consistently over-predicting by 10% looks identical to one consistently under-predicting by 10%.
**Solution**: Pair SMAPE with MPE for complete analysis.
## Variant: Armstrong's SMAPE
Some implementations use the mean (divide by 2) in the denominator: