ROLLFORWARD
ROLLFORWARD('OriginalNode' [, 'DriverNode', ...])
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: ROLLFORWARD('Revenue', 'Inflation').
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.
Parameters
- Original NodeNode referenceRequired
- Input node whose values are rolled forward, specified in single quotes (e.g.
'Revenue') - Driver NodeNode referenceOptional
- One or more driver nodes that influence the rollforward, specified in single quotes (e.g.
'Inflation'). Multiple drivers can be provided as additional arguments.
Output shape
- 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.
Original node: 'Revenue'
| Year | Value |
|---|---|
| 2025 | 95 |
| 2026 | 100 |
Driver 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.
Original node: 'Revenue'
| Year | Value |
|---|---|
| 2025 | 95 |
| 2026 | 100 |
Driver node: 'Market Size'
| Year | Value |
|---|---|
| 2026 | 10000 |
| 2027 | 10100 |
| 2028 | 10500 |
Formula: ROLLFORWARD('Revenue', 'Market Size')
| Year | Calculation | 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.
Driver node: 'Inflation'
| Year | Inflation |
|---|---|
| 2026 | 10% |
| 2027 | 10% |
| 2028 | 10% |
Driver node: 'Growth'
| Year | Growth |
|---|---|
| 2026 | 20% |
| 2027 | 20% |
| 2028 | 20% |
Original node: 'Revenue'
| Year | Revenue |
|---|---|
| 2026 | 1000 |
Formula: ROLLFORWARD('Revenue', 'Inflation', 'Growth')
| Year | Calculation | Result |
|---|---|---|
| 2027 | 1000 + (1000 × 0.1) + (1000 × 0.2) | 1300 |
| 2028 | 1300 + (1300 × 0.1) + (1300 × 0.2) | 1690 |
See also
- ROLLFORWARD_ADVANCED
- When you need a more configurable rollforward setup with explicit control over timing, base behavior, or advanced driver handling beyond the standard
ROLLFORWARDlogic. - 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.