Soft Launch 🚀 Get notified when we officially launch.

Docs
Runoff Function

Runoff Function

Run off an existing baseline or historical balance over time.

How does the Runoff Function Work

If you are forecasting active users or revenue, you usually need to handle two separate groups: new incoming users and your existing historical base. The cohort() function handles new additions, the runoff() function handles the decay from a single baseline. This is useful when you don't really care how the historical balance was accumulated, and you have some sense on how they might decay in the future.

Use runoff() to decay your existing, mature portfolio from the moment your actuals end. You define a starting point (an anchor), and apply your retention curve to project how that existing population will decay over future periods.

Underlying Math

Period 0
Period 1
Period 2
Period 3
Period 4
Period 5
BalancesExisting portfolio
1000
1200
1500
-
-
-
AnchorRunoff trigger
0
0
1
0
0
0
RetentionMature curve
80%
70%
60%
60%
60%
60%
Active Balance
1000
1200
1500

Arguments

The function requires three primary series to run.

Balances (Required): The series containing your existing balances (e.g., your historical active users).

Retention (Required): Your retention curve over time.

Anchor (Required): Tells the engine exactly where the runoff should start. For example, passing a condition like is_last('Historical') ensures the runoff anchors to the final historical period and begins decaying from that specific balance.