[摘 要] 本文在投資組合風(fēng)險(xiǎn)價(jià)值公式的基礎(chǔ)上,給出了其投資組合風(fēng)險(xiǎn)價(jià)值的蒙特卡羅模擬步驟,設(shè)計(jì)了求解投資組合風(fēng)險(xiǎn)價(jià)值的計(jì)算程序,提高了其計(jì)算效率#65377;
[關(guān)鍵詞] 投資組合風(fēng)險(xiǎn)價(jià)值;蒙特卡羅模擬;程序設(shè)計(jì)
[中圖分類號(hào)]F232;F275[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2008)23-0033-03
1 投資組合風(fēng)險(xiǎn)價(jià)值的一般公式[1]
風(fēng)險(xiǎn)價(jià)值的計(jì)算公式為:
3 投資組合風(fēng)險(xiǎn)價(jià)值的蒙特卡羅模擬的程序設(shè)計(jì)
上述計(jì)算是一個(gè)相當(dāng)煩瑣的過程,我們編制了一個(gè)VBA程序,對(duì)其進(jìn)行了簡(jiǎn)化#65377;VBA程序如下:
Sub zbsj()
Dim n As Integer, m As Integer, i As Integer
n = Cells(4, 2)
m = Cells(5, 2)
Cells(10, 1) = \"輸入各個(gè)證券的投資比重,股票價(jià)格,對(duì)數(shù)均值和對(duì)數(shù)標(biāo)準(zhǔn)差\"
Cells(11, 1) = \"證券\"
For i = 1 To n
Cells(11, i + 1) = \"證券\" i
Next i
Cells(12, 1) = \"投資比重\"
Cells(13, 1) = \"股票價(jià)格對(duì)數(shù)均值\"
Cells(14, 1) = \"股票價(jià)格對(duì)數(shù)標(biāo)準(zhǔn)差\"
Cells(15, 1) = \"目前股票價(jià)格\"
End Sub
Sub js()
Dim i As Integer, j As Integer, n As Integer, m As Integer, nt As Integer
Dim dt As Single, rd As Single, z As Single, sumt As Single, sum1 As Single, sum2 As Single
Dim myrange1 As String, myrange2 As String, myrange3 As String
n = Cells(4, 2)
m = Cells(5, 2)
nt = Cells(8, 2)
dt = Cells(6, 2) / 250
ReDim w(n), p0(n), p1n(n), pcn(n), p(n, m), pp(m),
rp(m) As Single
For i = 1 To n
w(i) = Cells(12, i + 1)'各股票的投資比例
p1n(i) = Cells(13, i + 1)'各股票價(jià)格對(duì)數(shù)均值
pcn(i) = Cells(14, i + 1)'各股票價(jià)格對(duì)數(shù)標(biāo)準(zhǔn)差
p(i, 0) = Cells(15, i + 1)'各股票的目前價(jià)格
Next i
sumt = 0
For i = 1 To n
sumt = sumt + w(i) * p(i, 0)
Next i
pp(0) = sumt '目前的投資組合價(jià)格
For j = 1 To m
sum1 = 0
sum2 = 0
For t = 1 To nt
sumt = 0
rd = Rnd()
z = Worksheets.Application.WorksheetFunction.NormSInv(rd)
For i = 1 To n
p(i, j) = p(i, j - 1) * Exp(p1n(i) * dt + pcn(i) * z * Sqr(dt)) '各股票價(jià)格模擬
sumt = sumt + w(i) * p(i, j)
Next i
sum1 = sum1 + sumt
Next t
pp(j) = sum1 / nt'各投資組合價(jià)格的模擬
Next j
For j = 1 To m
rp(j) = pp(j) - pp(j - 1)'各期投資組合收益的模擬
Next j
Cells(17, 1) = \"計(jì)算過程——(模擬計(jì)算)\" nt \"次的平均值\"
For j = 1 To m
Cells(17 + j, 1) = j
Cells(17 + j, 2) = pp(j)
Cells(17 + j, 3) = rp(j)
Range(Cells(17 + j, 2), Cells(17 + j, 3)).NumberFormat = \"0.00\"
Next j
myrange1 = \"b18\" \":\" \"b\" 17 + m'投資組合價(jià)格數(shù)據(jù)區(qū)域
myrange2 = \"c18\" \":\" \"c\" 17 + m'投資組合各期收益數(shù)據(jù)區(qū)域
myrange3 = \"b18\"'期初投資組合價(jià)格數(shù)據(jù)區(qū)域
Range(\"F3\") = \"=average(\" myrange1 \" ) \"
Range(\"F4\") = \"=average(\" myrange2 \" ) \"
Range(\"F5\") = \"b3\" myrange3
Range(\"F6\") = \"f4*f5\"
Range(\"F5:F6\").Select
Selection.NumberFormat = \"0.00\"
nm = Int(Cells(5, 2) * (1 - Cells(7, 2)))
Range(\"G3\") = \"第\" nm \"個(gè)最壞收益\"
Range(\"H3\") = \"Small(\" myrange2 \",\" nm \")\"
Range(\"H4\") = \"=F5*ABS(H3)\"
Range(\"H3:H4\").Select
Selection.NumberFormat = \"0.00\"
MsgBox (\"模擬計(jì)算結(jié)束\")
End Sub
主要參考文獻(xiàn)
[1] 韓良智. 使用VBA進(jìn)行有效投資決策[M]. 北京:中國(guó)鐵道出版社,2006:165.
[2] 朱順泉. 理財(cái)信息化[M]. 北京:清華大學(xué)出版社,2006:297-304.