20101221b金融工学

 

(1)

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 = pop / r ^ num
'
End Function

 ・if文

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

 

・PCPのプログラム

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

(2)IVを求める

・コールオプション

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

 ・最小化よりIVを求める

Function calloption(S, u, d, r, K, t, n)

のうちuをセルより導出する。

例:Function calloption(S, B14, d, r, K, t, n)

→A14に「=(Function calloption(S, B14, d, r, K, t, n)-市場価格の値)^2」を入力

→B14には適当な値を入れる

→solverでA14を最小化するB14を求める。 

→IV

 ・プットの場合も同様に、

Function  putoption(S, u, d, r, K, t, n)

のうちuをセルより導出する。

例:Function putoption(S, B14, d, r, K, t, n)

→A14に「=(putoption(S, B14, d, r, K, t, n)-市場価格の値)^2」を入力

→B14には適当な値を入れる

→solverでA14を最小化するB14を求める。 

→IV

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最終更新:2010年12月21日 18:03