Re: 投資學B-S的程式

看板CCUfinGrad94作者 (^^)時間20年前 (2005/11/03 02:04), 編輯推噓7(702)
留言9則, 4人參與, 最新討論串2/2 (看更多)
我把我抄的打出來 大家對看看有沒有錯 如果有錯在跟我說 我測試是可以跑 也有結果 不過不知道對不對就是了(我只有寫程式,作業還沒有寫,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
VHIGH設為1就OK吧,因為波動率最大為100%吧
11/04 20:45, 3F

11/04 20:48, , 4F
不過我不知道你們的單位....
11/04 20:48, 4F

11/04 21:38, , 5F
V是價格..
11/04 21:38, 5F

11/04 23:39, , 6F
是我會錯意了...但如果VI是價格的話,建議換成SI SHIGH SLOW
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
epslion打錯了
12/05 00:41, 9F
文章代碼(AID): #13QF-sd6 (CCUfinGrad94)
文章代碼(AID): #13QF-sd6 (CCUfinGrad94)