I'm working on a tops down attrition allocation model. We want to be able to input an annual attrition number and allocate that down to the lowest level (Month, Country, Segment, Attrition Type, and Tenure). Given that attritions have to be whole numbers I've been using MOD() to carry forward the probability of an attrition. This approach works great for the most part but it's causing a circular reference in the last allocation because of the way we need the attrition forecast to interact with our tenure mix module (ie headcount with tenure as a dimension). Here's the planning units by whole curve thread where Jason Blinn outlines the MOD() approach:
We track Rep tenure with a list that increments by one from 0-19+. I used the daily workaround outline by @rob_marshall in this how to avoid circular reference thread to simulate a PREVIOUSITEM function. I'm also using the MOD() approach to allocate attrition to the tenure list, based on historical tenure attrition risk.
This all works flawlessly until I try to get it to interact with our tenure mix module (headcount by country, segment, tenure). Tenure mix forecast periods are calculated as follows:
Remaining Tenure Mix = Tenure Mix - Attrition Forecast
Tenure Mix = PREVIOUS(Remaining Tenure Mix) + Hires
I believe the model is throwing a circular reference error because the time range in the daily workaround module overlaps with the time range in the tenure mix module. I'm wondering if anyone has any clever workaround to avoid this circular reference. I'd also love to hear of other ways people have built tops down attrition models?