蒙特卡罗模拟在决策中的应用

2009-09-21 07:15陈国栋李娟娟王晓燕
中国管理信息化 2009年13期

陈国栋 李娟娟 王晓燕

[收稿日期]2008-12-10

[基金项目]华北水利水电学院青年科学研究基金资助。

[摘 要]本文以Excel和Crystal Ball为工具分析了蒙特卡罗模拟在决策中的应用,指出蒙特卡罗模拟在决策中的应用前景。

[关键词]蒙特卡罗模拟;Excel VBA; Crystal Ball

doi:10.3969/j.issn.1673-0194.2009.13.017

[中图分类号]F232;F275[文献标识码]A[文章编号]1673-0194(2009)13-0043-02

随着计算机技术的飞速发展,模拟技术在各个领域的应用越来越普遍和深入。Crystal Ball是一款基于Excel开发的模拟软件,在投资决策领域有着广泛的应用。因为Crystal Ball是在Excel电子表格上建立实际问题的模型,利用蒙特卡罗技术产生随机数,然后分析数据,所以当实际问题比较复杂时,可以结合Excel VBA来建立模型,然后利用Crystal Ball来模拟。Excel VBA和Crystal Ball的结合使用具有广阔的应用前景。下面结合一个投资决策问题来说明这种应用。

某项目的初始投资为100万元,并可实现当年投产获利。考虑到设备老化和技术进步等因素的影响,估计该项目的寿命为10年到15年,呈均匀分布。年净收益符合正态分布,其期望值为15万元,标准差为3万元。假定期末残值为零,试模拟该项目内部收益率的随机分布情况。

首先在Excel电子表格中建立模型,如表1所示。

当假定这个项目的寿命是15年时,利用Excel的IRR函数可以很容易计算出该项目的内部收益率,但是这个问题的难点在于项目寿命是个随机变量,我们无法直接利用IRR函数。这时需要用Excel VBA自定义一个函数,代码如下:

Function myirr(year As Integer)

Dim income() As Double

ReDim income(year)

income(0) = -100

For i = 1 To year

income(i) = Cells(3 + i, 2)

Next i

myirr = Application.WorksheetFunction.IRR(income)

End Function

自定义的MYIRR函数可以动态地根据项目寿命计算内部收益率。然后利用Crystal Ball来定义B2单元格为假设单元格,如图1所示。

同样定义B4~B18为假设单元格。然后定义B19为预测单元格,如图2所示。

然后在Crystal Ball中将运行次数设为2 000次,速度选为normal。运行Crystal Ball就可以得到该项目的内部收益率的频数图(见图3)。可以看到该项目的内

部收益率的平均值为0.11,收益率大于0.1的概率为67.35%。当然,利用Crystal Ball还可以得到其他信息和数据,帮助管理者进行决策。