> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tetherdata.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Forecast Admin

> Configure forecast generation, models, versioning, uploads, and availability in Tether

# Forecast Admin

The Forecast Admin surface provides tools for configuring how demand forecasts are generated, managing forecast models, submitting versions, and importing bulk data. These settings significantly impact forecast quality.

## Accessing Forecast Admin

The same surface is available from two entry points:

| Entry point                                                      | Page title            | Access                                            |
| ---------------------------------------------------------------- | --------------------- | ------------------------------------------------- |
| **Demand** → **Admin** in the sidebar (`/demand-forecast/admin`) | Forecast Admin        | Non-admin users see only the **Availability** tab |
| **Settings** → **Forecast Admin**                                | Demand Forecast Admin | Admin users only                                  |

Both entry points show the same five tabs:

| Tab              | Purpose                                                                                  |
| ---------------- | ---------------------------------------------------------------------------------------- |
| **Admin**        | Forecast date range configuration, forecast generation, and historical sales calculation |
| **Models**       | Create and manage forecast models                                                        |
| **Versioning**   | Submit and download forecast versions                                                    |
| **Upload**       | Bulk forecast and sales data imports                                                     |
| **Availability** | SKU-channel availability matrix                                                          |

<Note>
  The **Admin**, **Models**, **Versioning**, and **Upload** tabs are restricted to Admin users. **Availability** is visible to all users with demand access.
</Note>

## Admin tab

### Forecast date range configuration

The **Forecast Date Range Configuration** card controls how far forward forecasts extend:

* **Forecast end date mode** — choose one year out, end of the current year, end of the next year, or a custom end date. When custom periods are configured, a quick-select lets you pick a period's end date directly.
* **New period initialization** — choose whether newly added periods start at zero or copy values forward.

Click **Save Configuration** to apply. A confirmation appears: "Configuration updated. Regenerate forecasts to apply changes." — configuration changes do not take effect in forecast values until the next generation run.

### Forecast generation status

The **Forecast Generation Status** card shows the current state of demand forecast generation and lets you trigger a run:

* A status indicator shows **Generating...**, **Last generation successful**, or **Last generation failed**.
* Click **Generate Forecasts** to start a run. While a run is in progress the button label switches to **Generating...** and a progress bar appears.
* After a run completes, the card shows the **Last Generated** timestamp and the **Total Forecasts** count.
* If the last run failed, a Generation Error alert shows the error message.

<Note>
  **Generate Forecasts** regenerates the *demand forecast* (model outputs for SKU-channel combinations). It is a separate system from the supply-planning solve, which is triggered with **Run now** on the Connected Planning page. Generating forecasts does not create a new supply plan — see the [Supply Planning overview](/supply-planning/overview) for how planning consumes forecasts.
</Note>

### Calculation coverage summary

This card summarizes the calculated historical sales data that feeds the forecast algorithms: total records, active channels, active SKUs, coverage percentage, the covered date range, and the calculation status.

### Calculate historical sales

Use the **Calculate Historical Sales** card to aggregate sales orders into daily historical sales records for a date range:

<Steps>
  <Step title="Pick a date range">
    Set the **Start Date** and **End Date**. The default range is roughly the last year, ending yesterday.
  </Step>

  <Step title="Click Calculate Historical Sales">
    The calculation aggregates sales by date, channel, and SKU. It may take several minutes for large datasets.
  </Step>

  <Step title="Review the result">
    A confirmation reports how many records were calculated, and the coverage summary updates.
  </Step>
</Steps>

## Models tab

The Models tab (**Model Management**) is where you create and manage forecast models. A **model** is a method for generating a possible forecast. Each model uses an **algorithm** that defines how forecast values are calculated. Your organization can define multiple models with different algorithms and compare their outputs.

<Tip>
  For a deep dive into how each algorithm works, including mathematical formulas and parameter details, see the [Forecast Algorithms](/demand-forecasting/algorithms) page.
</Tip>

### Available algorithms

Tether provides 11 forecast algorithms you can assign to models:

| Algorithm                                        | Description                                                                               | Best for                                               | Supports auto-tune |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------- | ------------------------------------------------------ | :----------------: |
| **90-Day Rolling Average**                       | Simple arithmetic mean of the last 90 days of sales                                       | Stable, predictable demand                             |         No         |
| **120-Day Rolling Average (Recursive)**          | Sliding window average that incorporates prior forecast values as it projects forward     | Volatile products, strategic planning                  |         No         |
| **Exponentially Weighted Moving Average (EWMA)** | Applies exponential decay weighting to emphasize recent sales                             | Trending products, fashion items                       |         Yes        |
| **Linear Trend**                                 | Least-squares linear regression projected forward                                         | Products with consistent growth or decline             |         No         |
| **Simplified Seasonal**                          | Weighted combination of weekly (80%) and monthly (20%) seasonal patterns                  | Seasonal and holiday-driven products                   |         Yes        |
| **Simple Seasonal with Trend Adjustment**        | Seasonal patterns blended with a year-over-year growth factor                             | Seasonal products with growth trends                   |         Yes        |
| **Seasonal Year-over-Year Growth**               | Seasonal baseline multiplied by observed year-over-year growth rate                       | Seasonal products with strong annual growth            |         Yes        |
| **Rolling Momentum**                             | Detects acceleration or deceleration by comparing short-term vs long-term moving averages | Viral, accelerating, or declining products             |         Yes        |
| **Holt-Winters (Triple Exponential Smoothing)**  | Captures level, trend, and seasonality with separate smoothing factors                    | Complex seasonal patterns with trends                  |         Yes        |
| **SARIMA**                                       | Seasonal AutoRegressive Integrated Moving Average for complex time series                 | Complex time series with seasonal and trend components |         Yes        |
| **Static Baseline**                              | Directly uses uploaded baseline forecast values with no algorithmic processing            | External forecasts, manual imports, hybrid workflows   |         No         |

### Creating a model

<Steps>
  <Step title="Open the Models tab">
    Navigate to **Demand** → **Admin** and open the **Models** tab.
  </Step>

  <Step title="Click Create Model">
    Click **Create Model** to open the model creation form.
  </Step>

  <Step title="Configure the model">
    Provide a name and description, then select an algorithm from the list above.
  </Step>

  <Step title="Save">
    Save the model. The system calculates the model's output for all SKU-channel combinations.
  </Step>
</Steps>

### Quick actions

The **Quick Actions** card on the Models tab includes:

* **Generate Forecasts** — a second entry point for regenerating model outputs, equivalent to the button on the Admin tab.
* **Optimize All** — runs parameter optimization for every model whose algorithm supports auto-tune.
* **New Model** — opens the model creation form.

The **Current Selection** card shows which model currently drives the official sales forecast, and the **Model Overview** table lists every model with edit, delete, and optimize actions.

### Consensus Model

If your organization has no Consensus Model yet, the Models tab offers **Create Consensus Forecast Model**. The Consensus Model enables direct editing of forecast values for specific SKU-channel combinations, so you can override algorithmic forecasts with business knowledge. See [Editing Forecasts](/demand-forecasting/editing).

### Parameter optimization (auto-tune)

Seven of the 11 algorithms support **automatic parameter optimization**. When enabled, the system finds the best parameter values by minimizing forecast error on historical data.

**Optimization methods:**

* **Nelder-Mead Simplex** — used for algorithms with continuous parameters (e.g., smoothing factors, weights). Iteratively adjusts parameters to minimize error.
* **Grid Search** — used for SARIMA, which has discrete integer parameters (AR/MA orders). Tests all combinations within specified ranges.

**Error metrics available for optimization:**

| Metric                                    | Description                              |
| ----------------------------------------- | ---------------------------------------- |
| **MSE** (Mean Squared Error)              | Penalizes large errors heavily (default) |
| **MAE** (Mean Absolute Error)             | More robust to outliers                  |
| **MAPE** (Mean Absolute Percentage Error) | Scale-independent comparison across SKUs |

**Per-SKU/channel optimization:** Optimized parameters are stored per SKU-channel combination, so each product-channel pair can have its own tuned settings within a model.

<Info>
  For the full list of parameters, defaults, and optimization ranges, see [Forecast Algorithms](/demand-forecasting/algorithms). To assign different models to different SKU-channel pairings, see [Model assignment](/demand-forecasting/model-assignment).
</Info>

## Versioning tab

The Versioning tab manages forecast version submissions:

* **Versioning Status** — shows whether versioning is enabled and the current period. Admin users can enable versioning and open **Versioning Settings**.
* **Submit Version** — snapshots the current forecast as a named version for the current period.
* **Submission History** — lists past submissions with name, submitted timestamp and user, and version label. Each submission can be downloaded.

<Note>
  Sales representatives cannot submit forecast versions — contact an admin user if the **Submit Version** button is disabled.
</Note>

## Upload tab

The Upload tab imports forecast or sales data in bulk from CSV.

### Data types

Choose what the upload targets:

| Data type              | Effect                                                                                                                     |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Consensus Forecast** | Uploads directly to the Consensus Model (overwrites current values)                                                        |
| **Baseline Dataset**   | Creates or updates a labeled baseline dataset that forecast models can reference (e.g., for the Static Baseline algorithm) |
| **Historical Sales**   | Updates actual historical sales data (affects all models that use sales history)                                           |

For baseline uploads, pick an existing label or enter a new one (e.g., "Q4 2024 Optimistic"). Existing baselines are listed on the tab and can be managed there.

### Templates

Click **Download Template** to get a starter CSV. The template format follows your organization's period configuration automatically:

**Standard date template** (default):

| Column         | Required | Description                                 |
| -------------- | -------- | ------------------------------------------- |
| `sku_code`     | Yes      | SKU identifier                              |
| `channel_name` | Yes      | Sales channel name                          |
| `date`         | Yes      | Date in `MM/DD/YYYY` or `YYYY-MM-DD` format |
| `quantity`     | Yes      | Forecast quantity (integer)                 |

**Custom period template** (when custom time aggregations are enabled):

| Column         | Required | Description                          |
| -------------- | -------- | ------------------------------------ |
| `sku_code`     | Yes      | SKU identifier                       |
| `channel_name` | Yes      | Sales channel name                   |
| `period_label` | Yes      | Period name (e.g., `P1`, `P10`)      |
| `fiscal_year`  | Yes      | Fiscal year (e.g., `FY2025`, `2024`) |
| `quantity`     | Yes      | Forecast quantity (integer)          |

<Warning>
  Do not mix date and period columns in the same file. The system rejects files that contain both a `date` column and `period_label`/`fiscal_year` columns.
</Warning>

### Upload process

<Steps>
  <Step title="Download the template">
    Click **Download Template** and fill it in with your values.
  </Step>

  <Step title="Choose the data type">
    Select **Consensus Forecast**, **Baseline Dataset**, or **Historical Sales**.
  </Step>

  <Step title="Upload the file">
    Select your CSV file to validate it.
  </Step>

  <Step title="Preview changes">
    Review the preview: new records, updated records, and rows with errors.
  </Step>

  <Step title="Apply">
    Confirm to import the valid rows.
  </Step>
</Steps>

### Upload validation

The system validates all uploads:

* SKU codes must exist in the system
* Channel names must match existing channels
* Quantities must be numeric and non-negative
* Dates must be in a valid format; period labels and fiscal years must match configured periods
* Duplicate SKU + channel + date/period combinations are flagged

<Warning>
  Invalid rows are rejected. You can fix errors and re-upload, or proceed with valid rows only.
</Warning>

## Availability tab

The Availability tab shows the SKU availability matrix — which SKUs are available on which channels. Unlike the other tabs, it is visible to all users with demand access, and it is the only tab non-admin users see at **Demand** → **Admin**.

## Data quality

### Data requirements by algorithm

Different algorithms have different minimum data requirements:

| Algorithm                                                      | Minimum history                                  |
| -------------------------------------------------------------- | ------------------------------------------------ |
| Rolling Average, EWMA, Linear Trend, Rolling Momentum          | 30–120 days (depending on window size)           |
| Simplified Seasonal, Seasonal YoY Growth, Holt-Winters, SARIMA | 365+ days (at least 1 full seasonal cycle)       |
| Static Baseline                                                | No historical data needed (uses uploaded values) |

<Warning>
  Seasonal algorithms (Simplified Seasonal, Holt-Winters, SARIMA, Seasonal YoY Growth) automatically fall back to a 90-day rolling average if fewer than 365 days of history are available.
</Warning>

## Best practices

<AccordionGroup>
  <Accordion title="Model selection">
    * Start with simpler algorithms (e.g., 90-Day Rolling Average) and compare against more complex ones (e.g., Holt-Winters, SARIMA).
    * Use the [Forecast Comparison](/demand-forecasting/comparison) view to evaluate accuracy before switching.
    * Consider different models for different product segments — stable products may perform best with Rolling Average, while seasonal products benefit from Simplified Seasonal or Holt-Winters. See [Model assignment](/demand-forecasting/model-assignment) for per-pairing assignment.
    * Enable parameter optimization (auto-tune) for algorithms that support it.
  </Accordion>

  <Accordion title="Regenerate after configuration changes">
    * After saving date range configuration, click **Generate Forecasts** so the change takes effect in forecast values.
    * Monitor data freshness — stale sales history leads to outdated forecasts. Recalculate historical sales after large data corrections.
    * User edits made through the [Consensus Model editing workflow](/demand-forecasting/editing) are preserved — forecast generation does not overwrite them.
  </Accordion>

  <Accordion title="Version discipline">
    * Submit a version before making major changes to models or configuration.
    * Name versions descriptively (e.g., "Before SARIMA switch Q1 2026").
    * Download past submissions to compare forecast evolution across planning cycles.
  </Accordion>

  <Accordion title="Upload carefully">
    * Validate data before upload — ensure SKU codes and channel names match existing records.
    * Always review the preview before applying.
    * Pick the right data type: Consensus Forecast uploads overwrite current consensus values.
  </Accordion>
</AccordionGroup>

## Troubleshooting

### Forecasts not updating

**Possible causes:**

* No generation run has happened since the change — configuration changes wait for the next run.
* The modified model is not the currently selected model — only the selected model drives the official forecast.
* Data sync has not completed, so the latest sales history is not yet available.

**Solutions:**

1. Click **Generate Forecasts** on the Admin or Models tab.
2. Check the **Current Selection** card on the Models tab to confirm which model is active.
3. Check that data integrations have synced, then recalculate historical sales if needed.

### Generation fails

**Possible causes:**

* Insufficient historical sales data for the selected algorithm.
* A generation run is already in progress.

**Solutions:**

1. Check the Generation Error alert on the **Forecast Generation Status** card for the specific message.
2. Review the **Calculation Coverage Summary** — if coverage is low, run **Calculate Historical Sales** first.
3. Wait for the in-progress run to finish before starting another.

### Upload errors

**Common issues:**

* Wrong template type (date template vs. period template).
* SKU codes or channel names that don't match existing records.
* Invalid date format (use `MM/DD/YYYY` or `YYYY-MM-DD`).
* Mixing date and period columns in the same file.

**Solutions:**

1. Download the template again — it matches your organization's period configuration.
2. Verify all SKU codes and channel names exist in the system before uploading.
3. Check for non-numeric or negative quantity values.

## Next Steps

<CardGroup cols={2}>
  <Card title="Forecast Algorithms" icon="function" href="/demand-forecasting/algorithms">
    Learn how each algorithm works, its parameters, and when to use it
  </Card>

  <Card title="Model assignment" icon="wand-magic-sparkles" href="/demand-forecasting/model-assignment">
    Assign forecast models per SKU-channel pairing
  </Card>

  <Card title="Forecast Comparison" icon="code-compare" href="/demand-forecasting/comparison">
    Compare model outputs and accuracy side by side
  </Card>

  <Card title="Forecast Dashboard" icon="chart-line" href="/demand-forecasting/dashboard">
    View and edit forecasts
  </Card>
</CardGroup>
