0

(我今天早些时候问过这个问题,但我解释得不好。让我再试一次)

我有一个客户是一家工业维修公司。他们出售的服务协议是技术人员 20 小时的预付时间。他们的一些大客户可能会在两周内完成该协议,而问题较少的客户可能会在同一份合同上持续八个月。我想使用 Python 来帮助对预计的销售收入进行建模,并确定他们每月需要支付多少计费小时。

如果每个客户只购买了一份服务合同(从未续签),那么很容易将销售额计算为monthly_revenue = contract_value * qty_contracts_sold. 计费时间也很容易:billable_hrs = hrs_per_contract * qty_contracts_sold. 但是,我如何计算续订?假设 90%(或其他任意数量)的客户续订,那么他们的月收入应该以几何级数增长。另一个重要的变量是平均客户通过合同燃烧多长时间。我如何根据各种续订和消耗率确定从现在起 3、6 或 12 个月后的收入和计费小时数?

我假设我会使用某种类型的递归函数,但数学从来都不是我的强项之一。请问有什么建议吗?

编辑:我认为解决此问题的最佳方法是将其视为“货币时间价值”问题。我已经将问题重新命名为这样。如果您将“月销售额”视为类似于年金支付的东西,那么这个问题可能会更常见。

4

2 回答 2

1

如果您想以未来收入的现值(这就是“货币时间价值”对我的含义)来考虑问题,那么您有以下参数:贴现率 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;-)。

于 2010-03-04T03:41:02.487 回答
0

尽管我的要求有点模糊,但感谢您的帮助。在咨询了一位精通金融数学的人后,我确定一个简单的公式不是一个合适的解决方案。

我最终做的是使用 xrange() 将月份“爆炸”成组件天并每天迭代。在评估每一天时,我确定当天是否签订了新合同,如果是,则在未来哪些日期需要续签合同。我将这些更新日期推送到列表中,然后将这些值相加。

于 2010-03-11T18:46:36.493 回答