ROLLFORWARD
Category: Rollforward & time series
Overview
The ROLLFORWARD function rolls the values of the Original Node forward with the influence of optional driver nodes.
Use this function when you want to project a base series forward starting after the last available value with one or more driver nodes.
Function alternative
The difference between this function and ROLLFORWARD_MUL is how they treat multiple influence nodes.
ROLLFORWARDsums the effects and then applies them to the original node.ROLLFORWARD_MULmultiplies the effects and then applies them to the original node.
Syntax
ROLLFORWARD('OriginalNode' [, 'DriverNode', ...])
Example usage: ROLLFORWARD('Revenue', 'Inflation')
Parameters
| Parameter | Description | Type | Required |
|---|---|---|---|
| Original Node | Input node whose values are rolled forward, specified in single quotes (e.g.'Revenue') | Node reference | Yes |
| Driver Node | One or more driver nodes that influence the rollforward, specified in single quotes (e.g.'Inflation'). Multiple drivers can be provided as additional arguments. | Node reference | No |
Output Shape
| Aspect | Behavior |
|---|---|
| Dimensionality | Same as the Original Node |
| Values | Original values are preserved for existing time periods. Future periods are projected from the last value, adjusted by cumulative driver effects (or flat if no drivers). |
| Row count | Expands to fill time periods within the horizon where driver data exists |
Watch Out
- All input nodes (original and drivers) must have a time level.
- The driver’s time level cannot be coarser than the original node’s time level (e.g. yearly driver with monthly original data is not allowed).
- If a driver node is not a percent node, it is automatically converted to relative year-over-year changes before being applied.
- Original data values are preserved as-is. The rollforward only applies to time periods after the last existing data point.
- With multiple drivers, effects are summed per period, then applied. Use
ROLLFORWARD_MULif you need multiplicative combination instead. - Driver nodes are automatically rolled up to match the dimensionality of the Original Node if they have finer granularity.
- If no driver nodes are specified, the last value is projected forward as a flat line (0% growth).
Examples
Rollforward with a percentage driver
This example uses a percentage driver. Each future period applies the driver value to the latest rolled result.
Input node: Revenue
| Year | Value |
|---|---|
| 2025 | 95 |
| 2026 | 100 |
Input node: Inflation
| Year | Value in % |
|---|---|
| 2026 | 0.02 |
| 2027 | 0.1 |
| 2028 | 0.2 |
Formula: ROLLFORWARD('Revenue', 'Inflation')
| Year | → ROLLFORWARD Result |
|---|---|
| 2025 | 95 |
| 2026 | 100 |
| 2027 | 110 |
| 2028 | 132 |
Rollforward with an absolute driver
If the driver node is not a percent node, ROLLFORWARD converts it into a yoy-growth effect before applying it to the latest rolled value.
Input node: Revenue
| Year | Value |
|---|---|
| 2025 | 95 |
| 2026 | 100 |
Input node: Market Size
| Year | Value |
|---|---|
| 2026 | 10000 |
| 2027 | 10100 |
| 2028 | 10500 |
Formula: ROLLFORWARD('Revenue', 'Market Size')
| Year | → ROLLFORWARD Result |
|---|---|
| 2025 | 95 |
| 2026 | 100 |
| 2027 | 100 + (10100/10000) = 101 |
| 2028 | 101 + (10500/10100) = 102.03 |
Rollforward with multiple driver nodes
With multiple drivers, ROLLFORWARD sums the individual effects per period before applying them to the latest rolled value.
Input node: Inflation
| Year | Inflation |
|---|---|
| 2026 | 10% |
| 2027 | 10% |
| 2028 | 10% |
Input node: Growth
| Year | Growth |
|---|---|
| 2026 | 20% |
| 2027 | 20% |
| 2028 | 20% |
Input node: Revenue
| Year | Revenue |
|---|---|
| 2026 | 1000 |
Formula: ROLLFORWARD('Revenue', 'Inflation', 'Growth')
| Year | → ROLLFORWARD Result |
|---|---|
| 2027 | 1000 + (1000 * 0.1) + (1000 * 0.2) = 1300 |
| 2028 | 1300 + (1300 * 0.1) + (1300 * 0.2) = 1690 |
Related Functions
| Function | When to use instead |
| ROLLFORWARD_ADVANCED | When you need a more configurable rollforward setup with explicit control over timing, base behavior, or advanced driver handling beyond the standard ROLLFORWARD logic. |
| ROLLFORWARD_MUL | When multiple drivers should influence each other within the same period instead of being summed first. |
| PREVIOUS | When you need older loop-style logic with a defined base case instead of a direct rollforward from the latest available value. |