Currently we have a system with predictable movement attrition, and that sucks because it induces micromanagement that is tedious, uninteresting, and radically ahistoric.
But computing attrition daily would take 30x the CPU horsepower.
Solution: compute movement attrition, on average, once per month, but don't make it predictable when. So, after movement attrition is computed, set the next "movement attrition day" to be a random number of days later, from 1 to 59 days. (Or maybe from 10 to 50; this would make taking movement attrition twice in many typical moves impossible.)
Now, perhaps we do have more compute power to devote to attrition, but just not the full 30x needed to do it daily.
General solution: if we are willing to do N times as many attrition checks, drop movement attrition from 1% to (1/N)%, and set the next attrition day to be from 1 to (60/N-1) days later. I.e., if we can spend 3x as many checks affordably, each one does 0.33% attrition and the next day is from 1 to 19 days later.