Я хочу оценить параметры CIR модели, хотя ML в R. Это выглядит следующим:оценка модели CIR через ОМП
др = (theta1-theta2 * г) + theta3 * SQRT (г) * дШ.
Этот метод реализуется в sde packege, который сопровождает книгу Iacus «Цена опциона и оценка финансовых моделей с R».
Там, в примере (ch 5), выполняется оценка ставок и вычисляются коэффициенты theta1-3. Теперь я хочу сделать то же самое, но с моим набором данных (X2).
library(quantmod)
library(sde)
library(Ecdat)
data(Irates)
X1=Irates[,"r1"]
getSymbols(Symbols="DTB4WK",src="FRED")
X2=interpNA(coredata(DTB4WK))
X2[X2<0]=0
X=X2
CIR.logistic = function(theta1, theta2,theta3) {
n=length(X)
dt=deltat(X)
cat(theta1," ",theta2, " ",theta3," \n")
return(-sum(dcCIR(x=X[2:n],Dt=dt,x0=X[1:(n-1)], theta=c(theta1,theta2,theta3),log=TRUE)))
}
mle(CIR.logistic,start=list(theta1=0.1, theta2=0.1,theta3=0.1),method='L-BFGS-B',
lower=c(0.01,0.01,0.01),upper=c(1,1,1))
Я был бы очень признателен за любую помощь!
Спасибо за ответ! но с данными, которые я хочу использовать для оценки CIR (X2), поведение оценок является более странным. если один изменяет верхние границы, оценки также меняются. Но с X1 они остаются стабильными. Каков способ, который используется на практике для оценок CIR или CKLS? Спасибо –
Если вы посмотрите на данные, вы увидите два очень разных режима: вы должны ожидать (ненадежные оценки и) нестабильность, если вы измените период оценки. Вы должны отделить до- и посткризисные периоды. Кроме того, решение находится на границе области, определенной вашими ограничениями, и, похоже, сходится к '(бесконечность, бесконечность, 0)', если вы их расслабляете: если это сохраняется после сокращения периода оценки, данные нельзя смоделировать по модели CIR, и вы должны попробовать другую модель. –
действительно, это кризисное время дает столько нарушений. Я разделил данные на две (до- и послекризисные), а также исключил часть большого движения вниз, а затем оценка аналогична, когда вы занимаете разные окна 400-600-1000 obs-ns. Благодаря! –