채권 수익률과 초기 단기 수익률 간의 선형 관계를 찾으려고합니다. 저는 연 48 회의 기간과 13 년의 보증 기간을 사용하고 있습니다. 2에서 m + 1 I 루프는 다음 내 R 행렬이 같은 첫 번째 제외한 모든 행이있는 경우 for 루프에서Vasicek 채권 가격/수익률 시뮬레이션 in R
:
## generate initial short rate matrix totalcases<-71 r0 <-matrix(nrow=totalcases,ncol=1) for (i in 1:totalcases){ if (-.21+i/100 < -.07){ r0[i,1]<- -.21+i/100 } else if (r0[i-1,1] >= .02){ r0[i,1]<- r0[i-1,1]+1/100 } else { r0[i,1]<- r0[i-1,1]+.25/100 } } ## simulate short rate paths gamma <- 0.05 sigma <- 0.0135 alpha <- 0.05 lambda <- 0.00 n <- 30000 # MC simulation trials Time <- 13 # Maturity of the Bond int <-48 #no of subintervals per year dt <- 1/int # difference in time between each subinterval m <- Time*int # total subintervals set.seed(0) z<-matrix(rnorm(n*m,mean=0,sd=1),nrow=n,ncol=m) r <- matrix(nrow=n,ncol=m+1) Yield <-matrix(nrow=totalcases,ncol=1) for(l in 1:totalcases){ r[,1]<- r0[l,1] for (j in 1:m+1){ r[,j]<-r[,j-1]*exp(-alpha*dt)+(gamma-(lambda*sigma/alpha))*(1-exp(-alpha*dt))+sigma * sqrt((1 - exp(-2 * alpha *dt))/(2 * alpha)) *z[,j-1] } k<-apply(r,1,sum) k<-k*dt Price<-exp(-k) ExptdPrice<-mean(Price) Yield[l,1]<- -log(ExptdPrice)/Time }
나는이 개 질문이 다음과 같이 내 코드는 하지만 1에서 m + 1까지 반복하면 행렬이 잘됩니다. 내 첫 번째 열 고정 (모든 행을 고정 값을 r0을) 감안할 때 왜 1에서 m + 1 및 2 m + 1 루프에서 실행해야합니까?
내 채권 가격은 정확한 솔루션에 가깝지만 충분히 근접하지 않으며 10,000 시뮬레이션에서 20k 또는 30k 시뮬레이션으로 갈 때 정확도가 선형 적으로 증가하지 않습니다. 뭐라 구요?
질문 1과 관련하여 명확하지 않았습니다. 검색어는 행렬 r에 관한 것이고 행렬 r0에 관한 것이 아닙니다. 문제의 for 루프는 코드의 두 번째 절반에있는 루프입니다. – user2566834
도움 주셔서 감사합니다. 정말 감사합니다. – user2566834