RUNNINGPROD
Category: Rollforward & time series
Overview
The RUNNINGPROD function calculates the cumulative product of a node along the time axis. Each value is multiplied by all preceding values in the time series. The accumulation is computed independently for each combination of non-time dimensions.
Use this function when you need to accumulate multiplicative effects over time, such as chained growth factors.
Syntax
RUNNINGPROD('Node')
Example usage: RUNNINGPROD('GrowthFactor')
Parameters
| Parameter | Description | Type | Required |
|---|---|---|---|
| Node | Input node, specified using the node name in single quotes (e.g.'GrowthFactor') | Node reference | Yes |
Output Shape
| Aspect | Behavior |
|---|---|
| Dimensionality | Same as input. |
| Values | Each value is the product of all values from the first time period up to and including the current one. |
| Row count | Same as input. |
Watch Out
- The input must have a time level. If the input has no time dimension, the function fails.
- A zero value at any point makes all subsequent values zero, since every following product includes that zero.
- The accumulation starts from the first time period in the series. There is no window parameter.
- The accumulation is computed independently for each combination of non-time dimensions.
Examples
Cumulative product over time
This example shows how RUNNINGPROD multiplies each value by all previous values along the time axis.
Input node: GrowthFactor
| Year | Value |
|---|---|
| 2025 | 1.1 |
| 2026 | 1.2 |
| 2027 | 1.2 |
Formula: RUNNINGPROD('GrowthFactor')
| Year | → RUNNINGPROD Result |
|---|---|
| 2025 | 1.1 |
| 2026 | 1.1 * 1.2 = 1.32 |
| 2027 | 1.1 * 1.2 * 1.2 =1.584 |
Compounding a base value with growth rates
Multiplying a base value by the running product of (1 + growth rate).
Input node: GrowthRate (as decimal, e.g. 0.05 = 5%)
| Year | Value |
|---|---|
| 2025 | 0.05 |
| 2026 | 0.10 |
| 2027 | 0.03 |
| 2028 | 0.00 |
Formula: RUNNINGPROD(ADDEACH(‘GrowthRate’, 1))
| Year | -> RUNNINGPROD Result |
|---|---|
| 2025 | 1.05 |
| 2026 | 1.05 * 1.10 =1.155 |
| 2027 | 1.05 * 1.10 * 1.03 =1.18965 |
| 2028 | 1.05 * 1.10 * 1.03 * 1.00 =1.18965 |
Multiplying a base value (e.g. 1000) by this result gives the compounded projection: 1000 * 1.18965 = 1189.65 in 2028.
Related Functions
| Function | When to use instead |
|---|---|
| RUNNINGSUM | When you need additive accumulation over time instead of a cumulative product. |
| FACT | When you need multiplication across discrete integer steps rather than a running product over a time series. |