> For the complete documentation index, see [llms.txt](https://help.modelreef.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.modelreef.io/how-tos/core-modelling/build-a-driver-based-forecast.md).

# Build a Driver Based Forecast

This guide explains how to construct a forecast driven by explicit drivers rather than hard coded values. Drivers live in the Data Library and feed variables across the model.

## Before you start

Have a view on:

* The operational levers that drive the business (units, headcount, conversion, utilisation).
* The economic levers (prices, inflation, FX, wage growth, tax rates).
* How you want to structure scenarios (for example Base, Downside, Upside).

## What you will build

* A set of drivers in the Data Library for key assumptions.
* Variables that reference those drivers via formulas.
* A forecast that responds instantly to driver changes.
* Scenario variants that use different driver values.

## Steps

{% stepper %}
{% step %}

### Identify your core drivers

Categorise drivers into:

* **Operational**\
  Units sold, customers, active users, capacity, utilisation, headcount.
* **Economic**\
  Prices, wage inflation, CPI, FX, commodity prices, tax rates.
* **Modifier drivers**\
  Growth rates, discount factors, seasonality factors, allocation percentages.

List them explicitly to avoid missing anything important.
{% endstep %}

{% step %}

### Create drivers in the Data Library

1. Open the **Data Library**.
2. For each driver:
   * Create a new entry with a clear name, for example:
     * `Driver - Units - Online`
     * `Driver - Price - Online`
     * `Driver - Wage Inflation`
   * Set:
     * **Type** as Driver or Modifier.
     * **Frequency** (usually aligned with model frequency).
     * **Values** for each period, either:
       * Manual entries.
       * Growth based.
       * Based on imported series.
3. Save the entry.

These drivers now act as reusable time series across the model.
{% endstep %}

{% step %}

### Link drivers to variables via formulas

For each variable you want to make driver based:

1. Open the variable modal.
2. Switch to formula or driver mode if available.
3. Build formulas using driver references, for example:
   * `Revenue = Units × Price`
   * `COGS = Units × Cost_per_unit`
   * `Staff Cost = Headcount × Salary_per_head`
4. Validate:
   * Check the preview chart or table in the modal.
   * Confirm the shape and magnitude are correct.
     {% endstep %}

{% step %}

### Use modifiers for growth and seasonality

Modifiers help avoid rewriting complex formulas.

1. Create **growth rate drivers**:
   * `Driver - Revenue Growth`
   * `Driver - Cost Growth`
2. Use these drivers as multipliers:
   * Revenue in period t = Revenue in period t minus 1 × (1 + growth\_rate\_t).
3. For seasonality:
   * Create a `Seasonality` driver that sums to 1 across a year.
   * Multiply base levels by the seasonal factor.

This keeps logic consistent and easy to tune.
{% endstep %}

{% step %}

### Centralise key assumptions

For global assumptions:

1. Put them in a dedicated Data Library section, for example:
   * `Macro - Wage Inflation`
   * `Macro - Tax Rate`
   * `Macro - FX Rate USD to Local`
2. Reference these in multiple variables across branches.
3. When you update them, all dependent variables update instantly.
   {% endstep %}

{% step %}

### Build scenario ready drivers

To make driver based forecasts scenario friendly:

1. Use one model per scenario (Base, Downside, Upside).
2. In each scenario model:
   * Start with a copy of the Base model’s Data Library.
   * Adjust driver values to represent that scenario:
     * Higher growth in Upside.
     * Lower growth, higher costs in Downside.
3. Compare scenario outputs:
   * Use dashboards to compare revenue, EBITDA, cash and valuation across models.
     {% endstep %}
     {% endstepper %}

## Check your work

* Drivers live in the Data Library with clear names and documented intent.
* Variables reference drivers rather than embedding hard coded assumptions.
* Updating a driver changes all related variables and outputs.
* Different models with different drivers produce logically different scenarios.

## Troubleshooting

<details>

<summary>Changing a driver does not seem to do anything</summary>

Confirm that variables are actually referencing the driver, not a static value.

</details>

<details>

<summary>Forecast explodes or collapses</summary>

Inspect growth and seasonality drivers for extreme or incorrect values.

</details>

<details>

<summary>Too many overlapping drivers</summary>

Simplify by combining related assumptions into fewer, clearer drivers.

</details>

## Related guides

* [Medicare/Private Billing Forecast](/use-cases/healthcare-clinics-and-allied-health/medicare-private-billing-forecast.md)
* [Updating API Based Data](/help/importing-from-google-finance-and-yahoo-apis/updating-api-based-data.md)
* [FCFF Calculation](/help/financial-outputs-and-valuation/fcff-calculation.md)
* [Modifier Driver Fields](/syntax/drivers-syntax/modifier-driver-fields.md)
