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 (CUMULATE, DECUMULATE, POST, OFFSET, LAG, LEAD, SPREAD, 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.