I have historical data on customer contracts. I know the date a customer terminated their contract and the date they notified of this termination. For example, a customer could end their contract in March-2024 and notify about it in January 2024. I have applied some transformations to the data and created a time series that looks something like:
| Date | N_contract_ends | notification_1 | notification_2 | ... | notification_12 | Move_outs |
|---|---|---|---|---|---|---|
| 2018-01 | 100 | 20 | 10 | 30 | 90 | |
| 2018-02 | 300 | 60 | 40 | 10 | 270 | |
| ... | ... | ... | ... | ... | ... | ... |
| 2024-05 | 843 | 0 | 0 | 230 | 790 |
N_contract_ends: is the number of possible contract-ends in that month (this is the upper limit on the number of terminations for that month).
notification_i: the months of advance notice given. So in the first row, we had a total of 100 possible terminations, 90 of those ended up terminating. And out of those 90, 20 people gave 1 months notice, 10 gave 2 months notice etc.
I want to forecast Move_outs. I have made a somewhat successful model with Prophet where I include N_contract_ends and some of the notification_i columns as additional regressors. Note that I do not use all of the columns because they always add up to the outcome variable, Move_outs. The data is quite cyclical. I see large spikes towards the end of the year.
The interesting part of this problem is that in the last row (May of this year), we can see that 230 customers notified us a year ago. So I already know some of the notification_i columns. But I do not know notification_3, notification_2 and notification_1 because those are still in the future (notification_1 for example would be customers that notify of termination in April 2024).
And it is this information I want to make use of when forecasting. The fact that I already know of some terminations. When using Prophet I experimented with only including notification_i, where i >= 4. The model seems to work ok but I was wondering if there are any other, more suitable methods I should consider.