Problem using mle function

I tried to obtain MLEs of the Vasicek function using the following function. It was working before. However, I run into the following error today and I am not sure how to resolve it. Please help!

  1. Likelihood function
likehood.Vasicek<-function (theta, kappa, sigma, rt){
  n <- NROW(rt)
  y <- rt[2:n,] # Take rates other than r0
  dt <- 1/12 # Simulated data is monthly
  mu <- rt[1:(n-1),]* exp(-kappa*dt) + theta* (1- exp(-kappa*dt)) #Take prior rates for mu calculation
  sd <- sqrt((sigma^2)*(1-exp(-2*kappa*dt))/(2*kappa))
  pdf_yt <- dnorm(y, mu, sd, log = FALSE)
  - sum(log(pdf_yt))
}
  1. Simulating scenarios
IRModeling.Vasicek = function(r0, theta, kappa, sigma, T, N){
  M <- T*12 # monthly time step
  t <- 1/12 # time interval is monthly
  rt = matrix(0, M+1, N) # N sets of scenarios with M months of time steps
  rt[1,] <- r0 # set the initial value for each of the N scenarios
  
  # Generate interest rate scenarios
  for (i in 1:N){
    for (j in 1:M){
      rt[j+1,i] = rt[j,i] + kappa*(theta - rt[j,i])*t + sigma*rnorm(1,mean=0,sd=1)*sqrt(t) 
    }
  }
  rt # Return the values
}
  1. Run MLE
r0 = 0.03
theta = 0.03
kappa = 0.3
sigma = 0.03
T = 5 # years
N = 500
rt = IRModeling.Vasicek (r0, theta, kappa, sigma, T, N)

theta.est <- 0.04
kappa.est <- 0.5
sigma.est <- 0.02
parameters.est <- c(theta.est, kappa.est, sigma.est)

library(stats4)
bound.lower <- parameters.est*0.1 
bound.upper <- parameters.est*2 
est.mle<-mle(likelihood.Vasicek, start= list(theta = theta.est, kappa = kappa.est, sigma = sigma.est), 
                             method="L-BFGS-B", lower=bound.lower, upper= bound.upper, fixed = list(rt = rt))

summary(est.mle)

If you set the seed for random number generation we can redo your analysis.
What is the error message that you get?

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.