gpt4 book ai didi

vba - 二项式欧式期权定价模型

转载 作者:行者123 更新时间:2023-12-02 11:40:45 27 4
gpt4 key购买 nike

我使用 VBA 创建了一个程序来计算欧式看涨期权价格,如下所示:

Private Sub CallPrice_Click()
Dim K As Single
Dim So As Single
Dim r As Single
Dim T As Single
Dim sigma As Single
Dim u As Single
Dim d As Single
Dim p As Single
Dim CP As Single
Dim M As Single
Dim S As Single
Dim CB As Double
Dim n As Integer
Dim i As Integer

K = Cells(2, 2)
So = Cells(3, 2)
r = Cells(4, 2)
T = Cells(5, 2)
sigma = Cells(6, 2)
n = Cells(7, 2)
u = Exp(sigma * Sqr(T / n))
d = 1 / u
p = (Exp(r * T / n) - d) / (u - d)
CP = 0
For i = 0 To n Step 1
M = WorksheetFunction.Max(So * (u ^ i) * d ^ (n - i) - K, 0)
CB = WorksheetFunction.Combin(n, i)
S = M * CB * (p ^ n) * (1 - p) ^ (n - i)
CP = CP + S
Next i
Cells(9, 2) = CP / (1 + r) ^ n
End Sub

这是电子表格的布局:

enter image description here

当我运行程序时,发生了错误。

enter image description here

enter image description here

这里有人可以解释一下我的程序出了什么问题以及如何修复它吗?

最佳答案

你的 S 方程正确吗?看起来应该是:

S = M * CB * (p ^ i) ...

而不是

S = M * CB * (p ^ n) ...

如果你的方程确实是错误的,那么你可以使用 BINOMDIST 而不是 COMBIN,因为根据定义:

Binom_Dist(i, n, p, False) = (p ^ i) * (1 - p) ^ (n - i) * Combin(n, i)

所以你的代码是:

S = M * WorksheetFunction.Binom_Dist(i, n, p, False)

而不是

CB = WorksheetFunction.Combin(n, i)
S = M * CB * (p ^ n) * (1 - p) ^ (n - i)

BINOMDIST 对大的 n、i 不太敏感。

关于vba - 二项式欧式期权定价模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30620589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com