20101207金融工学

Function calloption(S, u, d, r, K, t, n)
'
' Macro1 Macro
'
u = (u - 1) / (n * t) + 1
d = (d - 1) / (n * t) + 1
r = (r - 1) / (n * t) + 1


p = (r - d) / (u - d)
num = t * n
C = 0
For i = 0 To num
C = C + Kumiawase(num, i) * p ^ (num - i) * (1 - p) ^ i * Application.WorksheetFunction.Max(S * u ^ (num - i) * d ^ i - K, 0)
Next i


calloption = C / r ^ num
'
End Function
Function putoption(S, u, d, r, K, t, n)
'
' Macro1 Macro
'
u = (u - 1) / (n * t) + 1
d = (d - 1) / (n * t) + 1
r = (r - 1) / (n * t) + 1


p = (r - d) / (u - d)
num = Application.WorksheetFunction.Round(t * n, 0)
Pop = 0
For i = 0 To num
Pop = Pop + Kumiawase(num, i) * p ^ (num - i) * (1 - p) ^ i * Application.WorksheetFunction.Max(K - S * u ^ (num - i) * d ^ i, 0)
Next i

'putoption = p ^ (num - i) * (1 - p) ^ i * Application.WorksheetFunction.Max(K - S * u ^ (num - i) * d ^ i, 0)

putoption = d
'
End Function
Function Kumiawase(n, i)
Kumiawase = 1
    If i > 0 Then
    Kumiawase = (n - i + 1) / i * Kumiawase(n, i - 1)
    End If
End Function

Function PCP(S, C, K, r, t)
PCP = C - S + K * Exp(-r * t)
End Function

 

 

 

最終更新:2010年12月14日 17:14