Skip to main content
Skip table of contents

Rollforward & time series

Overview

Use this category when you need time-based logic such as projections, running totals, moving windows, and timing effects. These functions operate along the time axis to help you forecast values into the future, build cumulative KPIs, smooth values over time, or model delayed impacts.

Start here if…

  • You want to project values forward using drivers → start with ROLLFORWARD_ADVANCED.

  • You want cumulative KPIs like YTD.

  • You want rolling windows such as moving average or moving sum.

  • You want to model timing effects (delays, adoption curves, stretched profiles).

  • You need a previous-period building block for loop-logic.

Not here if…


Mental model

  • Projection: calculate future periods based on a base and driver logic.

  • Cumulative: sum (or product) from a start point to “now” within a period or across all time.

  • Rolling window: aggregate across a sliding window of prior periods.

  • Timing effects: shift or spread the impact of a change across time.

  • Loop logic: reference previous period values with an explicit base case.


Projection (driver-based)

ROLLFORWARD_ADVANCED

Use when: you want the most flexible driver-based projection, including optional behaviors such as seasonal/average projection or aging-style logic.
Example: ROLLFORWARD_ADVANCED('Base', 'Driver1', 'Driver2', …)

ROLLFORWARD

Use when: future values depend on additive driver impacts.
Example: ROLLFORWARD('Base', 'Driver1', …)

ROLLFORWARD_MUL

Use when: drivers represent multiplicative effects.
Example: ROLLFORWARD_MUL('Base', 'Driver1', …)


Cumulative totals (to-date and running)

RUNNINGSUM / RUNNINGPROD

Use when: you want cumulative values across the full time axis (no periodic reset).
Example: RUNNINGSUM('Node'), RUNNINGPROD('Node')

MTD / QTD / YTD / WTD

Use when: you want cumulative totals that reset within each month/quarter/year/week.
Example: MTD('Node'), QTD('Node'), YTD('Node'), WTD('Node')


Rolling windows (smoothing)

MOVINGAVG

Use when: you want a moving average over a defined time window.
Example: MOVINGAVG('Node', "TimeLevel", WindowSize)

MOVINGSUM

Use when: you want a moving sum over a defined time window.
Example: MOVINGSUM('Node', "TimeLevel", WindowSize)


Timing effects (delays and profiles)

TIMELAG

Use when: an effect should show up after a delay at a chosen time granularity.
Example: TIMELAG('Node', 'TimeLagNode', "TimeLevel")

STRETCH_CURVE

Use when: you want to stretch or compress a time profile along the time axis.
Example: STRETCH_CURVE('Node', 'StretchNode')

SCHEDULEPROJECTS

Use when: you want to distribute a KPI over time based on project timing.
Example: SCHEDULEPROJECTS('ProjectKPI', 'TimingNode')


Loop logic

PREVIOUS

Use when: you need previous-period logic with an explicit base-case value.
Example: PREVIOUS('Node', "Level", 'Basenode', "Basevalue")


Statistical forecasting

ARIMA

Use when: you want a time-series forecast based on historical patterns.
Example: ARIMA('Node', …)


Functions in this category

Function

Description

ROLLFORWARD_ADVANCED

Projects a node into the future using driver nodes with additional optional parameters.

ROLLFORWARD

Projects a node into the future including the additive effects of defined driver nodes.

ROLLFORWARD_MUL

Projects a node into the future including the multiplicative effects of defined driver nodes.

PREVIOUS

Returns the previous period’s value and uses a specified base value at the base period to enable loop calculations.

RUNNINGSUM

Calculates the cumulative sum along the time axis.

RUNNINGPROD

Calculates the cumulative product along the time axis.

MOVINGAVG

Returns the moving average over a defined time window.

MOVINGSUM

Returns the moving sum over a defined time window.

MTD (see YTD)

Returns month-to-date values as a running sum per month over the lowest time level.

QTD (see YTD)

Returns quarter-to-date values as a running sum per quarter over the lowest time level.

YTD

Returns year-to-date values as a running sum per year over the lowest time level.

WTD (see YTD)

Returns week-to-date values as a running sum per week over the lowest time level.

TIMELAG

Applies time-lagged effects at a given time granularity to model delays or growth curves.

STRETCH_CURVE

Stretches curves along the X-axis by a factor, starting at 0 by default or at a specified X position.

SCHEDULEPROJECTS

Calculates a project KPI over time based on each project’s timing.

PREVIOUS

Returns the previous period’s value, except at a base period where it takes a specified base node value, enabling loop calculations.

ARIMA

Forecasts values using an autoregressive integrated moving average model.


Choosing between similar functions

  • ROLLFORWARD_ADVANCED vs ROLLFORWARD / ROLLFORWARD_MUL

    • Use ROLLFORWARD_ADVANCED for richer projection options and more control.

    • Use ROLLFORWARD for additive drivers; ROLLFORWARD_MUL for multiplicative drivers.

  • MTD/QTD/YTD/WTD vs RUNNINGSUM

    • Use to-date functions for totals that reset within periods.

    • Use RUNNINGSUM for a running total across the entire time axis.

  • MOVINGAVG/MOVINGSUM vs to-date functions

    • Use moving functions for rolling windows.

    • Use to-date functions for cumulative totals within the current period.

  • PREVIOUS vs Compare periods shortcuts

    • Use PREVIOUS when you need a base case and loop-style logic.

    • Use PM/PY/PQ/PW for simple previous-period references.

  • TIMELAG vs STRETCH_CURVE

    • Use TIMELAG for delayed effects.

    • Use STRETCH_CURVE for stretching/compressing a profile.


Pitfalls & troubleshooting

  • Future periods are missing in projections: confirm the base series has values in the last actual period and drivers are defined for the projection range.

  • Projection results look wrong: validate the base node and each driver node separately, then add drivers back one by one.

  • Cumulative totals are too large: confirm whether you used RUNNINGSUM (no reset) versus MTD/QTD/YTD/WTD (resets).

  • Moving windows look shifted: verify the time level and window definition and confirm with spot checks in Data preview.

  • PREVIOUS behaves unexpectedly at the first period: verify the base case and handle missing values explicitly if needed.

  • Timing effects feel off: confirm the time granularity and whether you need a lag (TIMELAG) versus a profile stretch (STRETCH_CURVE) or project scheduling (SCHEDULEPROJECTS).


Related sections

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.