[R] optimx

Glenn Schultz glennmschultz at me.com
Sat Nov 29 16:48:22 CET 2014


Hello All,

I need some help with optimx, mostly due to my apparent lack of imagination than optimx itself.  Below is the pertinent code for which I have a question.  I am fitting to the term structure of swap rates per Cox, Ingersoll, and Ross.  As you can see the objective function is CIRTune.  I have set up the lower and upper bounds of the model for each kappa, lambda, and theta.  Everything works as expected.  

However, there is an additional constraint.
2 * kappa * lamba >= sigma^2

My question is as follows:  should the constraint be worked into the function or should I add an additional parameter in the function that is controlled by lower and upper?

 #Objective function
  CIRTune <- function(param = numeric(), shortrate = numeric(), sigma = .015, cfmatrix = matrix(), matmatrix = matrix()){
    kappa =   param[1]
    lambda = param[2]
    theta =     param[3]

    Disc <- CIRBondPrice(kappa = kappa, lambda = lambda, theta = theta, shortrate = shortrate, T= matmatrix,  step = 0, sigma = sigma)    
    
   CIRTune <- sqrt((sum(colSums((cfmatrix * Disc))^2))/ncol(matmatrix))
    return(CIRTune)
  }
  
  # Fit the model to the market   
  fit <- optimx(par = c(.1, .003, .03), 
                fn = CIRTune, 
                method = "L-BFGS-B",
                lower = c(rep(.001,3),
                upper = rep(1, 3), 
                shortrate = shortrate,
                sigma = .015,
                cfmatrix = CIR.CF.Matrix, 
                matmatrix = CIR.Mat.Matrix)  
  close(CalCIR1)
  return(fit)


Thank-you in advance,
Glenn
	[[alternative HTML version deleted]]



More information about the R-help mailing list