ROLLFORWARD_MUL
Category: Rollforward & time series
Overview
The ROLLFORWARD_MUL function rolls the values of the Original Node forward, optionally influenced by one or more driver nodes whose effects are compounded multiplicatively.
Use this when multiple driver effects should compound with each other before being applied to the base node. Without drivers, the last value is carried forward as a flat projection.
Function alternative
The difference between this function and ROLLFORWARD is how they treat multiple influence nodes.
ROLLFORWARDsums up the effects and then applies them to the original node.ROLLFORWARD_MULmultiplies up the effects and then applies them to the original node.
Syntax
ROLLFORWARD_MUL('OriginalNode' [, 'DriverNode', ...])
Example usage: ROLLFORWARD_MUL('Revenue', 'Price Change', 'Volume Change')
Parameters
Parameter | Description | Type | Required |
|---|---|---|---|
Original Node | Input node whose values are rolled forward, specified in single quotes (e.g. | Node reference | Yes |
Driver Node | One or more driver nodes that influence the rollforward, specified in single quotes (e.g. | 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 compounded 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 multiplied per period (compounded), not summed. Use
ROLLFORWARDif you need additive combination instead.Driver nodes are automatically rolled up to match the dimensionality of the Original Node if they have finer granularity.
Driver partitions that do not match the Original Node are ignored. For example, a driver value for country FR is ignored if the Original Node has no FR data.
If no driver nodes are specified, the last value is projected forward as a flat line (0% growth).
Examples
Compounding multiple drivers
This example shows how a level-less percentage driver and a country-specific percentage driver are combined. The driver effects are multiplied first and then applied to the base value.
Input node: Revenue
Year | Country | Value |
|---|---|---|
2025 | DE | 100 |
2025 | US | 100 |
Input node: Price Change
Year | Value in % |
|---|---|
2026 | 10% |
Input node: Volume Change
Year | Country | Value in % |
|---|---|---|
2026 | DE | 10% |
2026 | FR | 20% |
Formula: ROLLFORWARD_MUL('Revenue', 'Price Change', 'Volume Change')
Year | Country | → ROLLFORWARD_MUL Result |
|---|---|---|
2025 | DE | 100 |
2025 | US | 100 |
2026 | DE | 100 * ((0.1 + 1) * (0.1 + 1)) = 121 |
2026 | US | 100 * (0.1 + 1) = 110 |
Both countries receive a 10% growth from the level-less Price Change node. In addition, the DE row receives another 10% growth from Volume Change, compounding to 21% total. The FR row from Volume Change is ignored because FR is not present in the base node. US only receives the price change because no volume change is defined for US.
Comparing SUM vs MUL with the same inputs
This example highlights the difference between ROLLFORWARD (additive) and ROLLFORWARD_MUL (multiplicative).
Input node: Revenue
Year | Revenue |
|---|---|
2026 | 1000 |
Input node: Inflation
Year | Value in % |
|---|---|
2027 | 10% |
Input node: Growth
Year | Value in % |
|---|---|
2027 | 20% |
Formula: ROLLFORWARD_MUL('Revenue', 'Inflation', 'Growth')
Year | -> ROLLFORWARD_MUL Result |
|---|---|
2026 | 1000 |
2027 | 1000 * (0.1 + 1) * (0.2 + 1) =1320 |
With ROLLFORWARD (additive), the same inputs would produce: 1000 + (1000 * 0.1) + (1000 * 0.2) = 1300. The multiplicative version yields a higher result because the effects compound.
Related Functions
Function | When to use instead |
When you need a more configurable rollforward setup with explicit control over timing, base behavior, or advanced driver handling beyond the standard | |
When you want to combine multiple driver effects additively before applying them to the base node instead of compounding them with each other. |