> For the complete documentation index, see [llms.txt](https://learn.moselle.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.moselle.io/analytics/reporting/mo-reports/mo-standard-reports/forecast-vs-actuals.md).

# Forecast vs Actuals

{% hint style="info" %}
**Quick Answer:** A forecast variance report shows the difference between Mo's forecast and actual sell-in (or sell-through) by SKU — surfacing where the forecast was over or under for the period. In Moselle, Mo can build one in under 5 minutes from your live data.
{% endhint %}

## What is a Forecast Variance Report?

**A forecast variance report** compares forecasted demand against actual sales for a given period, at the SKU level. It tells you not just what sold, but how far off the plan was — and in which direction.

Every forecast will have some variance. The goal is not a perfect forecast; it is a forecast that is consistently close enough to make good inventory decisions. Variance reports are how you find where the plan is drifting and correct it before the gap creates a stockout or an overstock.

### Why Forecast Variance Reports Matter

* **Identify systematic over- or under-forecasting:** If the same SKUs consistently miss in the same direction, it signals a structural issue with how demand is being modelled for that product
* **Prioritize forecast updates:** Not every SKU needs a manual review. Variance reports surface the ones that do, so you're not reviewing everything — just what's actually off
* **Improve future accuracy:** Tracking variance over time creates a feedback loop that makes your planning progressively more reliable
* **Catch demand signals early:** A SKU running significantly above forecast for two or three consecutive weeks is a signal to investigate whether underlying demand has shifted permanently

## What Makes a Great Forecast Variance Report?

The most useful variance reports are:

* **SKU-level:** Aggregate variance numbers at the brand or category level hide the specific products driving inaccuracy
* **Directional:** Knowing whether the forecast was too high or too low matters as much as knowing how far off it was
* **Time-bounded:** Variance over the last 4 weeks tells a different story than variance over the last 12 months. Use a window that matches the decision you're making
* **Percentage and absolute:** A 100-unit miss on a SKU that sells 1,000 units per week is noise. The same miss on a SKU that sells 80 units per week is a major problem. Show both unit variance and percentage variance to give outliers the right weight

### Key Metrics to Include

| Metric            | What It Tells You                                                    |
| ----------------- | -------------------------------------------------------------------- |
| Forecasted units  | What the plan expected to sell in the period                         |
| Actual units sold | What actually sold (sell-in or sell-through)                         |
| Variance (units)  | Absolute difference between forecast and actual                      |
| Variance (%)      | Proportional gap — essential for comparing across SKUs               |
| Direction         | Over-forecast (unsold stock risk) vs. under-forecast (stockout risk) |

## Before You Start: Make Sure Your Data Is Clean

* [ ] **Actual sales data is fully synced.** Gaps or delays in your channel sales data will make variance numbers unreliable for the affected period
* [ ] **The forecast covers the same period as the actuals.** Make sure you're comparing the forecasted demand for the same date range as your actuals — not a shifted window
* [ ] **You know whether you're measuring sell-in or sell-through.** For DTC brands, these are effectively the same. For wholesale brands, sell-through (retail consumer sales) and sell-in (shipments to retail) can diverge significantly and measure different things
* [ ] **Returns are handled consistently.** If actuals are net of returns, the forecast should be modelled the same way for a fair comparison

## How to Build a Forecast Variance Report with Mo

**Time Required:** 5 minutes **Difficulty:** Beginner

{% stepper %}
{% step %}

### Open Mo and Set Your Context

Click **Mo** in the left sidebar to open the chat page. Be specific about the time window and what you want to compare:

> "Show me forecast vs. actuals by SKU for the past 4 weeks"

> "Which SKUs had the largest forecast variance last month?"

> "Give me a forecast accuracy report — forecast vs. actual units — for all channels"

Defining the time period clearly in your opening prompt produces a much cleaner first output.
{% endstep %}

{% step %}

### Review the Output

Mo will return a SKU-level table showing forecasted units, actual units, and the gap between them. Start by scanning for the largest absolute misses and the largest percentage variances — these are your priorities.

Separate the over-forecasted SKUs from the under-forecasted ones:

* **Over-forecasted** (forecast > actual): Stock was ordered on the assumption of higher demand. If this persists, it leads to excess inventory and tied-up cash
* **Under-forecasted** (actual > forecast): Demand was stronger than the plan assumed. If the inventory wasn't there to support it, this may have caused stockouts or missed revenue
  {% endstep %}

{% step %}

### Add Percentage Variance

Absolute unit variance can be misleading without scale. Add the percentage view:

> "Show percentage variance alongside unit variance"

> "Flag anything over 20% variance"

A 20% variance threshold is a common starting point for flagging SKUs that warrant a manual forecast review. Adjust up or down based on your tolerance and SKU volume profiles.
{% endstep %}

{% step %}

### Refine and Filter

Narrow the report to the lens that matters for your current decision:

* Add `"for Sephora sell-through"` to compare against retail actuals instead of sell-in
* Add `"show percentage variance"` to view the gap as % rather than units
* Add `"flag anything over 20% variance"` to isolate significant misses
* Add `"show only under-forecasted SKUs"` to focus on stockout risk

Common follow-up asks:

> "Which SKUs have been consistently under-forecasted for the last 3 months?"

> "Show me the top 10 SKUs by absolute variance last quarter"

> "Break this down by channel"

> "Export this as an Excel file"
> {% endstep %}

{% step %}

### Save as a Favourite

Once the report is producing reliable output, save it for weekly reuse.

Type **"Save this chat as a prompt"** → copy Mo's output into a new chat to verify it runs correctly → then save it as a favourite called **Weekly Forecast Variance**.

{% hint style="success" %}
Running this report weekly alongside your sales summary creates a continuous feedback loop between what you planned and what actually happened — which is the foundation of a progressively improving forecast.
{% endhint %}
{% endstep %}
{% endstepper %}

## How to Read Your Forecast Variance Report

| Variance Signal                 | What It Means                              | Recommended Action                                    |
| ------------------------------- | ------------------------------------------ | ----------------------------------------------------- |
| Over-forecast >20% (recurring)  | Demand consistently weaker than modelled   | Revise forecast down; review future buy quantities    |
| Under-forecast >20% (recurring) | Demand consistently stronger than modelled | Revise forecast up; check coverage and reorder timing |
| Over-forecast >20% (one-off)    | Possible one-time demand dip or data issue | Investigate cause before adjusting forecast           |
| Under-forecast >20% (one-off)   | Possible promotional spike or data gap     | Confirm cause before revising the model               |
| Variance <10%                   | Forecast is performing well for this SKU   | No action needed — maintain current model             |

{% hint style="info" %}
A one-week variance spike is often noise. Two to three consecutive weeks of variance in the same direction is a signal worth acting on.
{% endhint %}

## Best Practices for Forecast Variance Reports

**Look for patterns, not just outliers.** A single week of variance is often explained by timing differences in orders or syncs. The valuable insight comes from SKUs that consistently miss in the same direction over multiple periods.

**Separate sell-in and sell-through variance for wholesale brands.** A large sell-in variance might not mean your forecast was wrong — it might mean a retailer placed a large order ahead of schedule. Sell-through variance is a more reliable signal of true consumer demand accuracy.

**Use variance as a forecast calibration trigger, not a grading system.** The point is not to penalise an off-forecast — it is to use variance data to make the next forecast better. Focus on structural patterns rather than one-period misses.

**Pair variance with coverage.** An under-forecasted SKU that also has low WOS is an urgent problem. An under-forecasted SKU with 16 weeks of coverage has margin to absorb the miss. Always read variance in the context of your supply position.

**Set a consistent variance threshold for your team.** Agree on what percentage variance triggers a manual review (commonly 15–20%) and apply it consistently. This prevents review fatigue from looking at every minor miss while ensuring real problems get flagged.

## Frequently Asked Questions

<details>

<summary>What is a good forecast accuracy target?</summary>

Forecast accuracy varies significantly by industry, product type, and lead time. Most consumer brands target 70–85% accuracy at the SKU-week level. New products, highly seasonal SKUs, and promotional items naturally carry higher variance and should be tracked separately from core catalogue performance.

</details>

<details>

<summary>Should I use sell-in or sell-through for the variance calculation?</summary>

It depends on what decision you're making. Sell-in variance tells you how well your purchasing and shipment plan matched actual orders. Sell-through variance tells you how well your forecast aligned with what consumers actually bought. For most planning purposes, sell-in is the primary signal. For retail partners, sell-through is more relevant.

</details>

<details>

<summary>How far back should I pull forecast variance?</summary>

For a weekly ops review, 4 weeks is a practical window that balances recency with pattern visibility. For a quarterly forecast calibration, pull 12 weeks or longer to identify structural drift in the model.

</details>

<details>

<summary>What causes large forecast variance?</summary>

Common causes include unplanned promotions or markdowns, unexpected channel shifts, new product ramp curves, external demand shocks, or a forecast that was not updated to reflect recent velocity trends. Investigating the cause matters as much as identifying the gap.

</details>

## Related Guides

{% content-ref url="/pages/Dlc8GAJGV7FQH8Q9j9gA" %}
[Mo Custom Reports](/analytics/reporting/mo-reports/mo-custom-reports.md)
{% endcontent-ref %}

{% content-ref url="/pages/BLYuS7JNKRRnLCvAu8sJ" %}
[Weekly Sales Summary](/analytics/reporting/mo-reports/mo-standard-reports/weekly-sales-summary.md)
{% endcontent-ref %}

{% content-ref url="/pages/EC4IJ0oaFJVVOM3cvK3G" %}
[Sales Velocity Report](/analytics/reporting/mo-reports/mo-standard-reports/sales-velocity-report.md)
{% endcontent-ref %}

{% content-ref url="/pages/DAsnRIRTbbjM6bgR0RLM" %}
[Save Your Favourite Prompts](/mo/tips/save-favourite-prompts.md)
{% endcontent-ref %}

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