RUNNINGPROD
RUNNINGPROD('Node')
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.
Use this function when you need to accumulate multiplicative effects over time, such as chained growth factors: RUNNINGPROD('GrowthFactor').
Parameters
- NodeNode referenceRequired
- Input node, specified using the node name in single quotes (e.g.
'GrowthFactor')
Output shape
- 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
- Expands. Periods before the first value are dropped, then every period of the project horizon from the first value onwards gets a row.
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.
- A missing period after the first value is not a zero. It is skipped, which is the same as multiplying by 1, and the cumulative product is carried forward unchanged.
- 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.
- The result runs to the end of the project horizon, not to the input’s last period. Once the accumulation has started, gaps are filled and the running product is carried forward across every remaining period.
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 | Calculation | Result |
|---|---|---|
| 2025 | N/A | 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 | Calculation | Result |
|---|---|---|
| 2025 | N/A | 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
- 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.