Chemist_MZ 发表于 2019-2-21 10:42 
能把代码的文本贴出来嘛?这样别人也好直接跑,容易debug
好的,谢谢您提醒!
Public Function MCoption(S, X, T, r, sigma, n, a)
'S:现价
'X:执行价
'T:到期日期间的时长
'r:连续复利的无风险利率
'sigma:股票价格的波动率
'epsilon:正态分布中的随机抽样
'n:模拟n次
'a:看涨看跌(看涨为1,看跌为0)
Dim i As Integer
Dim Se, P, sum As Variant
sum(0) = 0
For i = 1 To n Step 1
Se(i) = S * Exp((r - sigma * sigma / 2) * T + sigma * RndNorm(0, 1) * Sqr(T))
P(i) = Exp(-r * T) * Application.Max((X - Se(i)) * (-1) ^ a, 0)
sum(i) = sum(i - 1) + P(i)
Next i
MCoption = sum(n) / n
End Function
Public Function RndNorm(Mean As Double, Std As Double)
Dim V1 As Double, V2 As Double, r As Double
Do
V1 = 2 * Rnd - 1
V2 = 2 * Rnd - 1
r = V1 ^ 2 + V2 ^ 2
Loop Until r < 1
RndNorm = Mean + V2 * Sqr(-2 * Log(r) / r) * Std
End Function