Если вы хотите рассмотреть проблему с точки зрения приведенной стоимости будущего дохода (это то, что для меня означает «временная стоимость денег»), то у вас есть следующие параметры: ставка дисконтирования D (для удобства ежемесячно) , время T, которое потребует клиент, чтобы исчерпать свои предоплаченные часы, вероятность L, которую они обновят, когда их предоплаченные часы закончатся, суммы в долларах за первую продажу F и обновление R. Конечно, у этого есть несколько предположений (возможно, клиенты, которые потребляют поддержку быстрее например, с большей вероятностью возобновят - эта модель не учитывает это), но все же может оказаться полезным в первом приближении.
Итак, продажа сегодня стоит: F сразу же наверняка; плюс, через T месяцев, R больше с вероятностью L; плюс, через 2T месяцев, R больше с вероятностью L L; и так далее. Таким образом, цена этой продажи составляет F + R L / (D T) + R L L / (D 2T) + ... = F + (R * L / D T) * (1 + L / D T + L 2 / (D T) ** 2 + ...).
Ряд сходится к 1 / (1 - L / (D ** T)), поэтому общая формула в замкнутом виде (с переходом на Python; -):
def salesworth(D, T, L, F, R):
return F + (R * L) / (D**T * (1 - L / (D**T)))
Ожидаемые оплачиваемые часы можно рассчитать по той же формуле, просто используя для F и R количество часов в первой продаже и обновлении, и (если концепция ставки дисконта не применяется к оплачиваемым часам) D = 1 ( поэтому T на самом деле не имеет значения, так как 1 ** T == 1 для любого T; -).