# RUNNINGPROD
URL: https://docs.valsight.ai/runningprod/
Description: RUNNINGPROD calculates the cumulative product of a node along the time axis, multiplying each value by all preceding values in the time series.
**Category:** [Rollforward & time series](/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.

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 | 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

| Function                   | When to use instead                                                                                          |
| -------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [RUNNINGSUM](/runningsum/) | When you need additive accumulation over time instead of a cumulative product.                               |
| [FACT](/fact/)             | When you need multiplication across discrete integer steps rather than a running product over a time series. |
