# Anomaly Detection

{% hint style="info" %}
**Quick Answer:** Use Moselle's Forecast Performance Report to compare projections against actuals, identify SKUs with high variance (MAPE > 30%), and establish a weekly monitoring rhythm so you can catch and correct anomalies before they cause stockouts or overstock.
{% endhint %}

## Why Anomaly Detection Matters

Even a well-built forecast will drift from reality. Customer behavior shifts, promotions land differently than expected, and external events disrupt demand patterns. The goal isn't to prevent every variance — it's to **catch significant deviations early** so you can adjust before they become costly.

**Common consequences of undetected anomalies:**

* **Stockouts** from under-forecasted items losing you sales
* **Excess inventory** from over-forecasted items tying up cash
* **Missed reorder windows** when lead times don't leave room for late corrections
* **Eroded trust** in the forecast when the team discovers large variances after the fact

***

## Setting Up Variance Reporting

### Access the Forecast Performance Report

1. Click **Reports** in the left sidebar
2. Select **Forecast Performance**
3. Choose your **Forecast Plan** from the dropdown
4. Set your **Date Filter** to the current month or rolling 30-day window

The report displays a bar graph comparing projections to actuals, with a detailed pivot table below.

### Key Metrics to Monitor

| Metric                                    | What It Tells You                              | Action Threshold                      |
| ----------------------------------------- | ---------------------------------------------- | ------------------------------------- |
| **APE (Absolute Percentage Error)**       | Accuracy for a single SKU in a single month    | Investigate if > 30%                  |
| **MAPE (Mean Absolute Percentage Error)** | Average accuracy across multiple months        | Review guidelines if > 30%            |
| **Units Sold vs. Projected**              | Direction of the miss (over or under)          | Flag if consistently in one direction |
| **% of Total**                            | Revenue contribution of the misforecasted item | Prioritize high-contribution items    |

{% hint style="warning" %}
Focus your attention on items with **both** high variance **and** high revenue contribution. A 50% miss on a low-volume SKU matters less than a 25% miss on your top seller.
{% endhint %}

### Customizing Your Variance View

Click **Columns** on the far right of the performance table to configure your view:

1. Enable **APE** to see per-item accuracy
2. Enable **Channel** to spot channel-specific issues
3. Enable **Category** or **Product Line** to identify category-level patterns
4. Use **Filters** to narrow results to specific categories, channels, or SKUs

**Recommended grouping:** Group by **Category** first, then **SKU**, to quickly identify whether a variance is category-wide or item-specific.

***

## Building a Weekly Monitoring Rhythm

Catching anomalies requires consistent check-ins. A weekly review takes 15–20 minutes and prevents small variances from compounding into major problems.

### Weekly Review Checklist

{% stepper %}
{% step %}

### Check Overall Accuracy

Open the Forecast Performance Report and review the current month's performance:

* Is total demand tracking above or below forecast?
* Are there categories significantly over- or under-performing?
* Has accuracy improved or declined versus last week?
  {% endstep %}

{% step %}

### Identify Top Variances

Sort the performance table by **APE (highest first)** and review the top 10–15 items:

* Are these items consistently missing, or is this a one-week blip?
* Is the miss driven by a known event (promotion, stockout, competitor action)?
* Does the variance pattern suggest a systemic issue (e.g., an entire category is off)?
  {% endstep %}

{% step %}

### Classify Each Anomaly

For each significant variance, determine the root cause:

| Anomaly Type           | Description                                | Example                                           |
| ---------------------- | ------------------------------------------ | ------------------------------------------------- |
| **Data issue**         | Incorrect or missing sales data            | Integration sync delay, duplicate transactions    |
| **Known event**        | Expected deviation from a planned activity | Promotion hit harder than expected                |
| **Trend shift**        | Sustained change in demand pattern         | Competitor launched a similar product             |
| **One-time spike/dip** | Isolated event unlikely to repeat          | Viral social media post, weather event            |
| **Forecast gap**       | Guidelines didn't capture a real pattern   | Seasonal transition started earlier than expected |
| {% endstep %}          |                                            |                                                   |

{% step %}

### Take Corrective Action

Based on the anomaly type, decide your response:

* **Data issue** → Fix the data source, verify integration sync
* **Known event** → No action needed if the event is over; update guidelines if recurring
* **Trend shift** → Update forecast guidelines to reflect the new pattern
* **One-time event** → Make a surgical edit for the affected period; no guideline change needed
* **Forecast gap** → Refine your guidelines to capture the missed pattern
  {% endstep %}

{% step %}

### Document and Share

Note what you found and any adjustments made. Sharing weekly variance summaries with your team builds confidence in the planning process and surfaces insights that inform future guidelines.
{% endstep %}
{% endstepper %}

***

## Setting Up Proactive Alerts

Beyond weekly reviews, you can stay ahead of variances by monitoring key indicators:

### Early Warning Signs

| Signal                                                  | What It Means                          | How to Respond                                              |
| ------------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------- |
| Actuals running 20%+ below forecast mid-month           | Demand is weaker than expected         | Investigate cause; consider adjusting future months         |
| Actuals running 20%+ above forecast mid-month           | Demand is stronger than expected       | Check inventory coverage; consider increasing future months |
| Multiple SKUs in a category trending the same direction | Category-level issue, not SKU-specific | Review and update category-level guidelines                 |
| Single SKU with extreme variance (50%+)                 | Item-specific issue                    | Check for stockouts, data errors, or one-time events        |
| New products significantly under-performing comparables | Launch assumptions may be off          | Review comparable selection; adjust ramp timeline           |

### Mid-Month Proration

Moselle automatically prorates the current month's forecast based on actual sales progress. If you see the prorated projection diverging significantly from your forecast, it's an early signal that adjustments may be needed.

**Example:** If your February forecast is 1,000 units but actuals are only 100 units by mid-month, the prorated calculation will flag this gap—giving you time to investigate before month-end.

***

## Analyzing Patterns Across Cycles

Over time, your variance data reveals patterns that make your forecasting process smarter.

### What to Look for Quarterly

* **Consistent over-forecasting** in a category → Your growth assumptions may be too aggressive
* **Consistent under-forecasting** in a category → You may be underestimating demand or seasonality
* **Seasonal timing misses** → Your seasonality rules may need shifted dates (e.g., summer starts in April, not May)
* **Channel-specific patterns** → One channel may need different guidelines than others
* **Promotional accuracy** → Are your promotional lift assumptions matching reality?

### Using Insights to Improve Guidelines

After each quarterly review, update your forecast guidelines:

1. Adjust seasonal timing if patterns consistently start earlier or later than assumed
2. Recalibrate growth rates based on actual performance
3. Refine promotional lift assumptions using post-event data
4. Add new rules for patterns you identified but hadn't previously captured

***

## Frequently Asked Questions

### How much variance is normal?

For most consumer products, a MAPE of 20% or lower is considered good. Highly seasonal or promotional items may show higher variance, which is expected. Focus on trending toward better accuracy over time rather than hitting a specific number.

### Should I adjust the forecast every time I see a variance?

Not necessarily. One-time events and short-term fluctuations don't always warrant forecast changes. Adjust when you see a **sustained trend shift** or when the variance is driven by a **systematic gap** in your guidelines. Reacting to every blip can introduce more noise than it removes.

### How do I tell the difference between a real trend and noise?

Look at the duration and consistency. A single week of above-average sales could be noise. Three consecutive weeks of above-average sales in the same category likely signals a real trend shift that warrants a guideline update.

### What if my anomaly is caused by a data issue?

Fix the data issue first, then reassess. Common culprits include integration sync delays, duplicate transactions, and missing channel data. After resolving the data issue, the apparent anomaly may disappear.

### Can Mo help identify anomalies?

Yes. You can ask Mo to review your forecast performance and highlight significant variances. Mo can also help you investigate potential causes by analyzing patterns across your data.

***

## Related Guides

{% content-ref url="/pages/xw73NKz5xgFvPbpY6Q2n" %}
[Demand Forecast Performance](/analytics/reporting/moselle-reports/performance-reports/demand-forecast-performance.md)
{% endcontent-ref %}

{% content-ref url="/pages/0j4ySH8ZiAtDK6eRiQ77" %}
[Refine Your Forecast](/planning-and-execution/forecasting/refine-your-forecast.md)
{% endcontent-ref %}

{% content-ref url="/pages/a4VaHeybGOn75f976xpb" %}
[Setting Up Forecast Guidelines](/planning-and-execution/forecasting/setting-up-forecast-guidelines.md)
{% endcontent-ref %}

{% content-ref url="/pages/D2BTtZoIEwFaGlVVWPXZ" %}
[Forecast Best Practices](/planning-and-execution/forecasting/forecast-best-practices.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.moselle.io/planning-and-execution/forecasting/anomaly-detection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
