要是能把金融建模内容发上来就好了。还有VBA的代码。附BS模型VBA一份:
Function BSOptionPrice(S, K, T, R, Div, Vol, Call_Put)
d1 = (Application.Ln(S / K) + (R - Div + Vol ^ 2 / 2) * T) / (Vol * T ^ 0.5)
d2 = d1 - Vol * T ^ 0.5
If Call_Put = "CALL" Then
x = 1
ElseIf Call_Put = "PUT" Then
x = -1
Else
BSOptionPrice = "ERROR"
Exit Function
End If
Nd1 = Application.NormSDist(x * d1)
Nd2 = Application.NormSDist(x * d2)
BSOptionPrice = (S * Exp(-Div * T) * Nd1 - K * Exp(-R * T) * Nd2) * x
End Function
Function OptionDelta(S, K, T, R, Div, Vol, Call_Put)
temp = S * 1E-05
OptionDelta = (BSOptionPrice(S + temp / 2, K, T, R, Div, Vol, Call_Put) - BSOptionPrice(S - temp / 2, K, T, R, Div, Vol, Call_Put)) / temp
End Function
Function OptionGamma(S, K, T, R, Div, Vol, Call_Put)
temp = S * 1E-05
OptionGamma = (OptionDelta(S + temp / 2, K, T, R, Div, Vol, Call_Put) - OptionDelta(S - temp / 2, K, T, R, Div, Vol, Call_Put)) / temp
End Function
Function OptionTheta(S, K, T, R, Div, Vol, Call_Put)
temp = T * 1E-05
OptionTheta = (BSOptionPrice(S, K, T + temp / 2, R, Div, Vol, Call_Put) - BSOptionPrice(S, K, T - temp / 2, R, Div, Vol, Call_Put)) / temp
End Function
Function OptionVega(S, K, T, R, Div, Vol, Call_Put)
temp = Vol * 1E-05
OptionVega = (BSOptionPrice(S, K, T, R, Div, Vol + temp / 2, Call_Put) - BSOptionPrice(S, K, T, R, Div, Vol - temp / 2, Call_Put)) / temp
End Function
Function OptionRho(S, K, T, R, Div, Vol, Call_Put)
temp = R * 1E-05
OptionRho = (BSOptionPrice(S, K, T, R + temp / 2, Div, Vol, Call_Put) - BSOptionPrice(S, K, T, R - temp / 2, Div, Vol, Call_Put)) / temp
End Function