2013-04-15 2 views
1

을 통해 나는 CIR 모델 매개 변수를 추정 할 수 있습니다.CIR 모델 추정 MLE

이 방법은 Iacus "옵션 가격 결정 및 R로 재무 모델 추정"과 함께 제공되는 sde packege에서 구현됩니다.

예제 (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)) 

나는 어떤 도움을 주시면 감사하겠습니다!

답변

1

CIR 모델에서 속도는 거의 확실하게 0이 아닙니다. 음수 값을 제거하는 것만으로는 충분하지 않습니다.

# Also remove zeroes (if there are many of them, it is probably not a good idea) 
X[ X <= 0 ] <- .1 

# Then, you code works 
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)) 
+0

답장을 보내 주셔서 감사합니다! 그러나 CIR 추정 (X2)에 사용하려는 데이터로 추정치의 동작이 이상합니다. 상한선이 다를 경우 견적도 다를 수 있습니다. 그러나 X1은 안정적입니다. 실제로 CIR 또는 CKLS 추정에 사용되는 방법은 무엇입니까? 감사합니다. –

+0

데이터를 살펴보면 매우 다른 두 가지 정권이 나타납니다. 예상 기간을 변경하면 불안정한 예상치와 불안정한 상태가 예상됩니다. 위기 전후의 기간을 구분해야합니다. 또한 솔루션은 제약 조건에 의해 정의 된 도메인의 경계에 있으며 완화하면 '(무한대, 무한대, 0)'로 수렴하는 것처럼 보입니다. 추정 기간을 단축 한 후에도 문제가 지속되면 데이터를 모델링 할 수 없습니다 CIR 모델에 의해 다른 모델을 시도해야합니다. –

+0

실제로,이 위기 시간은 많은 방해를줍니다. 나는 데이터를 두 가지 (위기 이전 및 이후)로 나누었고 큰 움직임의 일부를 아래쪽으로 배제하고 400-600-1000 obs-ns의 다른 창을 사용할 경우 유사한 추정치를 사용합니다. 감사! –