When you build formulas, it's advisable to break up multiple time series functions within a formula, across different line items.

If any time series functions (CUMULATEDECUMULATEPOSTOFFSETLAGLEADSPREAD, or MOVINGSUM) are used as an argument to another time series function it's advisable to assign the inner argument to a separate line item.

For example, suppose you want to delay by a certain number of months then apply a payment profile:

Use one line item to work out the profile. X = PROFILE(Sales Units, Profile.Build Unit Profile)

Then refer to X in the main formula. Result = OFFSET(X, Module Y.Lag Months, 0)"

There are already optimizations for certain cases like POST or OFFSET with a constant offset that behaves like a ‘normal' argument, so for example CUMULATE(POST(x, 12)) doesn't suffer from the same performance issue.