Re: 投資學B-S的程式
我把我抄的打出來 大家對看看有沒有錯
如果有錯在跟我說 我測試是可以跑 也有結果
不過不知道對不對就是了(我只有寫程式,作業還沒有寫,BS我沒測,假設他對)
另外istockp這個function的引數其實s是不需要的
因為在函數裡並沒有運用到這個變數(是多餘的)
所以算出來的理論價格跟實際價格s是不一樣的喔(還是s是我多抄的,眼睛小請原諒)
有問題大家再討論一下,不要以為我計量都唸完,
我只是在等我家的熱水器水滾 > <"
另外有的太長便2行,貼上要再合在一起喔(B-S的56和89)
補充一點 剛剛發現老師給的資料的k是指數值,所以下面的vHigh=500會當掉
所以要請大家把vHigh=500改大一點,我是改10000
不然一開始try的數值是500,一定不會收斂,一開始就當掉。
補充第二點,很多同學在打開VBA以後,把程式打在sheet1裡面,這樣函數是不會作用的
請在VBA的靠近左上角,找一個叫做VBAProject...的東西
按右鍵插入一個模組,就會出現一個叫做模組的東西,
然後把程式打在模組下面的Module,這樣函數才可以run
---------------------------------------------------------------------------
Function putcall(cpflag As String, s, k, v, r, t, d)
d1 = (Log(s / k) + (r - d + v ^ 2 / 2) * t) / (v * t ^ 0.5)
d2 = d1 - v * t ^ 0.5
If cpflag = "c" Then
putcall = s * Exp(-d * t) * WorksheetFunction.NormSDist(d1) - k * Exp(-r * t)
* WorksheetFunction.NormSDist(d2)
ElseIf cpflag = "p" Then
putcall = k * Exp(-r * t) * WorksheetFunction.NormSDist(-d2) - s * Exp(-d * t
) * WorksheetFunction.NormSDist(-d1)
End If
End Function
Function istockp(cpflag As String, s, k, v, r, t, d, cm)
vLow = 0.00001
vHigh = 500
epslion = 0.000001
vi = (vLow + vHigh) / 2
If cpflag = "c" Then
While Abs(cm - putcall(cpflag, vi, k, v, r, t, d)) > epslion
If putcall(cpflag, vi, k, v, r, t, d) < cm Then
vLow = vi
Else
vHigh = vi
End If
vi = (vLow + vHigh) / 2
Wend
istockp = vi
ElseIf cpflag = "p" Then
While Abs(putcall(cpflag, vi, k, v, r, t, d) - cm) > epslion
If putcall(cpflag, vi, k, v, r, t, d) > cm Then
vLow = vi
Else
vHigh = vi
End If
vi = (vLow + vHigh) / 2
Wend
istockp = vi
End If
End Function
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.113.220.253
※ 編輯: benja 來自: 59.113.220.253 (11/03 02:13)
※ 編輯: benja 來自: 59.113.220.253 (11/03 02:20)
※ 編輯: benja 來自: 59.113.220.253 (11/03 02:37)
推
11/03 08:29, , 1F
11/03 08:29, 1F
推
11/03 10:17, , 2F
11/03 10:17, 2F
※ 編輯: benja 來自: 218.165.127.179 (11/03 23:35)
※ 編輯: benja 來自: 218.165.127.179 (11/03 23:37)
※ 編輯: benja 來自: 218.165.127.179 (11/03 23:53)
※ 編輯: benja 來自: 218.165.127.179 (11/04 18:34)
推
11/04 20:45, , 3F
11/04 20:45, 3F
→
11/04 20:48, , 4F
11/04 20:48, 4F
推
11/04 21:38, , 5F
11/04 21:38, 5F
推
11/04 23:39, , 6F
11/04 23:39, 6F
→
11/04 23:41, , 7F
11/04 23:41, 7F
推
11/06 00:48, , 8F
11/06 00:48, 8F
推
12/05 00:41, , 9F
12/05 00:41, 9F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
7
10