[收稿日期]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還可以得到其他信息和數據,幫助管理者進行決策。