程式
R 中的 SABR 校準。如何估計 rho 和 nu 以使平方誤差和最小化
我從預定義的 beta 和 alpha 開始。然後我想找到 rho 和 nu 以使S平方誤差****的總和最小化。SSE 是指我的模型估計的波動率和觀察到的市場波動率之間的差異。我怎樣才能在 R 中做到這一點?我做了以下工作:
## difvol is a function of rho and nu, which is the sum of squared errors. nlm(difvol,0.01,0.01)
diffvol 是這樣設計的:
(第一次觀察到的波動率 - 黑色隱含波動率)^2 + (第二次觀察到的波動率 - 黑色隱含波動率)^2 …
黑色隱含波動率在我的設置中沒有值,因為我沒有對 rho 和 nu 的估計。
但是,nlm 程式碼只返回一個估計值,我需要估計 nu 和 rho。從這裡做什麼?如何正確使用 nlm。
我知道我的 diffvol 功能本來可以更好,但我不想改變它。
嘗試重新設計你的對象函式,你的
difvol
,所以它是一個二維向量的函式dilvol<-function(X){ rho<-X[1] nu<-X[2] ##type in your function here and use rho and nu normally.. } nlm(difvol,c(0.1,0.1)
這可能有效