SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2033|回复: 1

[推荐] 计算软件和系统的投资回报

[复制链接]
发表于 2012-9-13 19:18:55 | 显示全部楼层 |阅读模式
本帖最后由 技术狂人 于 2012-9-13 19:25 编辑 & S: Z: s: G, L9 y- V
! f! U: n! |! j' N* u5 }- q( R
简介
我们常常将软件、系统或 IT 项目的投资回报(Return of Investment,ROI)视为决定继续发展的主要理由。这个词的采用有时只是抽象的,我们可以说某些软件的 ROI 将是更高的效率,而没有计算效率的度量结果。这要求准确的 ROI 定义。事实证明 ROI 定义不只一个,我们可以将每个定义用于不同类型的决策。本文将介绍计算背后的理念。详细的公式可在 附录 3 中找到。
0 Q$ t, C' D& t4 M- o5 ?5 B
$ l( e& m! [: |: \# Z1 [: f
计算未来
有人曾经说过,“预测未来是不可能的,但这是我们的职责”。负责推断未来投资的价值的人需要使用不完整的信息。例如,不可能准确了解一个新产品的未来收入是多少。但是,您需要该收入才能计算将该产品投入市场的预期 ROI。幸运的是,有一条前进的道路。
以下各节将给出一些 ROI 类型和关联的计算结果。当使用下面的各种等式时,您可以使用随机变量(参见附录 1 和 2)代替固定值。现代业务分析中常常使用具有三角分布的随机变量,如 附录 1 中所示。
备注:
  • 如果已熟悉随机变量的概念,请继续阅读。如果不熟悉,您将发现先阅读附录会很有帮助。
  • 您可能还会发现,阅读简介对了解我的上一篇文章“计算和改进软件和系统程序的投资回报”(Calculating and Improving ROI in Software and System ProgramsCommunications of the Association for Computing Machinery,数字版,2011 年 9 月)中提供的持续开发工作的价值很有用。本文提供了针对该文章中想法的明确公式。. t; T8 H; ?( @, ~1 q+ D0 {

; {- ~, N2 j1 e6 r. [/ {9 q- W
, p6 ?+ m5 e% C+ I* v
To-dateROI 和 To-goROI
4 G% b" ~2 z0 h6 D& b9 C
首先,所有类型的 ROI 都基于同一个核心概念:一般而言,投资回报是价值的变化与投资成本的比率。在下面的公式中,V0 是某种初始价值,V1 是以后某个日期的价值,而 I 是在此期间花费的资金:
资产种类不同,此等式的应用也不同。
# P& H- y4 ]+ C2 R% J% }
ROI 的最简单示例是推断某笔资本资产,比如您以一个价格购买并以另一个价格出售的一份股份。计算中使用了两种易于理解的价值:购买价格(pp)和销售价格(sp),二者都是由市场决定的价值。在本例中,ROI 是价格的变化与购买股票的成本之间的比率。在本例中:

5 P( o' p. e+ W) x. A; w$ P/ M5 m$ U6 b
甚至在此情况下,也可能存在变形。我们假设一位投资者(假设是一位教授)有两个关键问题:
To-date我是否进行了正确的投资(如果我今天售出,ROI 将是多少?)
" ?# A5 H" @: L% ^6 {" e To-go我是否应该对该资产投资?(如果我今天购买部分资产,ROI 将是多少?)6 V9 p8 W9 Q! f
: L, c1 s6 g9 o8 }( t
第一个问题是追溯性的,因为它解决了投资者做出的决策正确与否的问题。答案可能导致投资战略更改。第二个问题是实施投资战略的过程的一部分。当然,回答这两个问题需要不同的 ROI 计算:
To-date这里,V1 是目前的价值(以当前价格销售持有的所有股份将获得的收益),加上投资者目前获得的收益(比如红利),V0I 是对该资产的所有投资的成本总和。
$ i3 ^  o7 d/ b9 [  [; g- y2 _) W To-go在这里,V1 是在未来某个日期销售该资产的估算收益,Vo 是初始资产成本,而 I 是您预计的投资开支、初始成本与未来支付的总和。
) F* ]* a# H) r" W; x4 H7 Z5 f# Y 2 T# J- S) s2 B0 k0 B
重要事项:
, e3 F! J$ F2 @* H, R8 s6 R: q0 O0 A这些情况几乎是完全独立的。以前用于 to-date 情况的成本(已花费)与 to-go 情况毫无关联。
/ Z3 D  n5 s8 e2 w' y
回到第一个等式,在投资分析(Investment Analysis,IA)中,To-date ROI 是使用该等式的随机变量,其中
  • V1 = NPV目前 + 目前为止的实际收益总和
  • V0 = NPVprogram_onset
  • I = 目前为止的成本总和
    " S3 [5 b1 ^8 w' t$ R* y

$ q  x3 A, V1 `5 u
请注意,I 是基于实际开支。在大部分情况下,将 NPVprogram_onset 设置为 0 是合理的。
  J- w7 V# n' }- I- l% p7 g
对于 IA 程序,当所有成本和收益结束时,程序就“寿终正寝”了。在这时,价值为 0。更一般来讲,IA 投资会在交付后贬值。
[size=0.76em]在 To-go ROI 中,所有过去的成本和收益都会被忽略。重要的只是贴现的未来成本和收益。我们可以应用基础等式来得到此公式:
% h5 v& Y2 U  r8 O5 O! c
0 U! i. h2 Z4 T( _8 Q
NPV 和未来成本计算涉及在 IA 中以随机变量形式采集未来价值,所以此公式使用 IA Monte Carlo 引擎(参见附录 2)。

' a4 R) q$ p: [9 e& W) f+ i& ]- m" B! o

6 G% a* N) H* c4 A! @/ B
总 ROI
% a/ l! D8 S/ d! X/ f/ R+ D
考虑到 IA 同时包含实际和预测的成本和收益,也可以执行其他有用的 ROI 计算。例如,如果在投资的总生命周期中有足够的预期回报,您可能决定投资一个程序。在此情况下,您将计算程序终止时的预测 To-date ROI。因为它在程序终止时没有价值,通过将NPVprogram_onset 设置为 0 ,我们发现:
[size=0.76em]在程序真正终止时,这些词都是实际的值。在这之前,您可能希望预测总体 ROI,其中的词汇是贴现后的未来价值和实际收益的组合。在此情况下,总体 ROI 是一个随机变量,可使用 IA 中的蒙特卡洛引擎(Monte Carlo engine)找到。

) M& a) i% F4 d; V: C9 y; |% A# c  h" C- _; d. _
参考日期
, E( |4 Y- _& ?' F5 h: f
ROI 预测一般从今天开始计算。但是,因为 IA 包含投资成本与收益的完整生命周期(过去的价值是实际值,未来的价值是随机变量),为计算设置任何参考日期是可能实现的。也就是说,您可以预测 NPV 的分布,以及未来任何日期的 To-go ROI 和 To-date ROI。交付日期就是一个例子。您将预测开始产生产品收益时的价值。这可能是对比具有不同交付日期的两笔投资的一种不错的计算方式。
9 s, ]& |: e1 s. l. N$ c5 ~
备注:$ h+ S1 ^0 G. q! w. Q
总体 ROI 是预测的以交付日期为程序终止日期的 To-date ROI
/ H# \2 z1 H% U
1 _0 }( e* S/ ?. L9 b
8 A, Y6 [; B. n* F; A2 c7 q2 ]
结束语
显然,投资回报(ROI)在理论上是收益与开支的比率。任何资金有限的人都希望使用这些资金来最大化这一比率。甚至对于简单的投资,也有多种 ROI,每种 ROI 用于回答一个不同的问题。本文介绍了最有用的 3 个 ROI:
. O' b) k# j( t' s: M4 x
  • To-date:我已从所做的投资中获得了多少回报?
  • To-go:我预计可从未来的投资获得多少回报?
  • Total:在程序终止时,我预计可从所有投资获得多少 ROI?
    6 X$ d7 U% m4 Z' R

% U$ ]1 m* f4 P8 e- }- f
详细公式可在 附录 3 中找到。

; R: y& ~9 @& l/ s) `+ Q6 z- y
4 E9 u4 |: \9 V1 ?  a
致谢
本文花费了大量准备工作。衷心感谢来自 IBM 的 Jim Densmore 的编辑、建议和质询。没有他的帮助,本文不会顺利完成。

% m- t: \. g3 A$ z- ]. j% Y6 k( d7 s- O' P$ v$ l5 s
附录 1. 随机变量
假设您不确定要使用的值。例如,一个未交付的产品在未来一段时间的销售量可能很重要,但没有人可确定实际值。在现代业务分析中,常见的做法是将这样的不确定量指定为随机变量。接下来是对它们的用途的简短解释。Douglas Hubbard 的书 How to Measure Anything: Finding the Value of Intangibles in Business(第二版)(Wiley,2010 年)提供了一种更复杂的处理方法。由于我们不是 100% 确定一个未来的值,所以接下来最好指定 v 值可以是一个范围内的任何值。例如:
a ≤ v ≤ b

9 W3 |& {! U" L3 i+ h
这样,我们即表明 v 小于 a 或大于 b(在某些情况下,我们可以让 a 等于 -∞ 或 b 等于 ∞)的概率为 0。我们还表明 v 介于 ab 之间的概率为 0。我们可更进一步,假设 v 为一些值的可能性比其他值更大。在该情况下,我们可以指定 v 的每个可能值的概率。因此,我们将有一条曲线,对于 v 的每个可能值,该曲线提供了 v 采用该值的概率。因此,随机变量 是由一条曲线描述的一个量,对于一个范围内的每个值,该曲线提供了采用该值的概率。该曲线称为随机变量的概率分布

) f3 |6 ^7 U  T; c8 d. ]
这些分布的一个重要属性是,因为一个随机变量必须采用某个值,所以这些值的概率总和必须等于 1。
  r( p( S1 f" \: ~* g
例如,当我们以数学方式采集未来的销售量的最佳情形(H)、最糟情形(L)或最可能的值(E)时,我们可通过一个类似图 1 的分布来指定它的随机变量。

0 o7 u8 ?) @  @$ l, X5 f& h! |图 1. 一个随机变量的三角分布. b8 j) N) S( Q% z5 w

) u8 [- D$ a. E- E4 W/ E: g0 |7 ~' e. ]0 p, X
曲线在刻度任何一点的高度表示随机变量采用该值的概率。因此,我们已选择了这样一种分布,其中的值出现在 L 以下或 H 以上的概率为 0,峰值在 E 处。选择高度,使三角形的面积(所有概率的总和)为 1。在此情况下,v 采用接近 L 或 H 值的概率较小,采用接近 E 值的概率相对较高。' \/ N- E9 x) t1 f! L- v# g7 ~- Y

% E. @/ m' P7 \
当然,分布的形状可能是任何曲线,只要该曲线下的面积为 1。
总结而言,随机变量是一个可采用任何值的量。但是,一些值比其他值更可能出现。所以,随机变量由为每个值分配概率的函数指定。这个函数称为随机变量的概率分布。
* B; O( {) V1 L# Q! t: I( ]. v( O
6 {: L% n2 h6 H, _
附录 2. 使用随机变量进行计算:蒙特卡罗模拟
# j, A4 n6 |5 h7 W
假设您希望添加两个随机变量 v1v2。您将如何进行?首先请注意,总和将是另一个随机变量。因此,您所需的是总和的概率分布。该分布没有公式,但有一种有效且常用的数值方法,称为 蒙特卡罗模拟(Monte Carlo simulation)。
[size=0.76em]Monte Carlo 模拟背后的理念是使用一个随机数生成器来获取 v1v2 的抽样值,然后添加它们。这些值依据每个变量的概率分布而选择。概率越大,值会更频繁地被采用。现在保存该总和,并多次执行相同操作(假设为 100,000 次),存储每个总和。可计算每个总和的概率,其方法可通过可查看所保存的总和在集合中的频率(一些总和比其他总和更频繁),并将之除以抽样次数(在实际中,您必须对总和四舍五入来得到计数)。您得到的是总和分布的近似值。
+ M9 N. @; T0 R& N7 Q7 ?- U! t7 f
让我们看看一个示例,v1 有一个三角分布,其中 L = 3、E = 4 以及 H = 7,如图 2 所示,而 v2 的三角分布中 L = 1、E = 6 以及 H = 7,如图 3 所示。

4 G* e1 q* l  S5 L) H3 @图 2. 三角分布图
+ k1 X0 a  G. I1 Z7 T
& q, I4 Q$ U. n  b/ M: V- |% m4 `+ W8 Q$ H& N) H6 s
/ x5 S: s: @- K. H
图 3. 三角分布图
% `( k# i. R9 c  M- L' `( c/ j  ]
, L/ s8 w4 N9 s' c- z9 L: n) c0 Z8 P: n& D% e+ y& T* r+ G

: H0 G6 C9 k# W% A; s* C' A# r0 x& A
图 4 给出了图 2 和 3 中所示的两个随机变量的总和的分布,您可使用 Monte Carlo 模拟器发现该分布。这是使用 100,000 个抽样发现并在 IBM Rational Focal Point 中计算得到的。
3 Q: X2 C% d, M* C% E3 S
图 4.(100,000 个抽样的)总和的模拟分布
# X: W! U; Y+ U" A9 k# u2 Y+ L  o. ? 7 g0 ~) R4 b& W  G
% |# L8 Y0 d! V2 Z2 @( A! k
首先,请注意,该总和不是另一个三角分布,而更类似于正态分布(贝尔曲线)。该分布的峰值(众数)为 9.80。这可以从概率数学(具体来讲,中央极限定理)中得出。总和的分布很有用。例如,我们可以预测总和最可能的值为 10(两个最可能的值的总和),但模拟发现为 9.8。这一差异是偶然性的,将随着抽样的增多而逐渐减少。另外请注意,低于 4(低端的总和)时,概率将接近 0(图 4 中未明确给出,但很明显),高于 14(高端的总和)时,也接近 0。
& J& z( t0 u$ X
最后,固定与随机变量可轻松组合在一起。可以将固定变量视为这样一种随机变量,其中的一个值的概率为 1,所有其他值的概率为 0。

! L6 I3 }1 R5 g1 Z
1 ]0 B8 k4 X, H! _& E
附录 3. ROI 公式
0 T0 W$ \7 ~8 l. [8 a- H
假设在我们的程序中,有 T 个时间间隔、NB 个已识别的收益和 NC 个已识别的成本。请注意每个成本和收益都是一个时间序列。那么:
  • 对于 0 ≤ t ≤ T1 ≤ n ≤ NB,假设  = 第 n 个收益在间隔 t 处的值。
  • 对于 0 ≤ t ≤ T1 ≤ m ≤ Nc,假设  = 第 m 个成本在间隔 t 处的值。
    ! D$ g7 R/ w2 ~/ C  D
* N- j- H  I7 r2 c
继续之前,有一个重要的地方需要注意:所有时间序列都在整个生命周期中经过了修订,所以它们依赖于时间。每个时间序列都采集作为一个快照序列。因此,随着更多信息传入,随机变量应该在整个生命周期中更新。当时间过去后,估算值会转换为实际值,未来的值会被更新。实际上,每个成本和收益时间序列的期限也依赖于时间。这已在针对公式的 To-date 和 To-go ROI总体 ROI 小节中更详细地介绍。

+ w5 o9 L7 i) X+ p# N* \/ R
Bk(s)Cl(s) 是收益和成本流的快照。为了避免混乱,除非有必要,我们将丢弃快照变量。我们需要更多符号:
  • 假设 r = 计算的参考周期、当前时间段或某个指定的未来的时间段
  • 对于 1 ≤ n ≤ NB,假设 rbn = 收益 Bn 的贴现率
  • 对于 1 ≤ m ≤ NB,假设 rcm = 成本 Cm 的贴现率
  • 对于一个给定的时间段 t 和参考时间段 r,假设在 t 处与 r 相关的所有贴现收益的总和为:8 R) }- G/ o& b0 n- g
  • 类似地,对于给定的时间段 t 和参考时间段 r,假设 t 处与 r 相关的所有贴现收益的总和为:
    ! H/ p' ~) t+ ^
( A9 @7 t% |) A% S! P* e2 M" s- j

% Y7 L+ l3 X( @8 [9 W1 E# f1 Q8 ^
请注意,时间序列的期限可能是随机变量、固定变量或同时为二者。无论如何,只要需要,它们都可使用蒙特卡洛(Monte Carlo)模拟来求和。

* i' R+ `3 B# s8 Z9 `
在此概念中,我们可将时间段 r 中的净现值 NPV 定义为:
8 B; w! j6 m3 L* D4 ^' Q8 R
% g$ j/ [, c+ r5 v
然后:
1 ?# B1 r6 q1 X6 Q8 d, b0 ^. B
0 T  G- W" e7 j: H( r% i
请注意,对于任何两个时间段 s t
, u7 H. [! W: T( \% F+ J/ ?

" f* K1 D5 E/ R9 _( a
6 A0 s7 m& b/ a) H4 Q
在此计算中,TodateROIs 是特殊情形 ROIs,0。在此情形中,Bj,sCj,s 一般而言是实际的值。

) v1 Q; @. \/ Z
最后,TodateROI ROIT,0
( G' h3 a  F& P; {: K7 S9 A+ k
根据程序终止的定义,NPVT = 0,因为没有剩下任何成本或收益。此外,在大部分情形中,NPV0 接近 0,因为所有成本都发生在未来。因此,通过将 NPV0 设置为 0,我们会得到:
: a% D! ~+ y5 w. d+ T8 t7 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 2012-9-13 19:25:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-7-20 08:58 , Processed in 0.078246 second(s), 8 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表