# 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)


---

# 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://help.modelreef.io/how-tos/core-modelling/build-a-driver-based-forecast.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.
