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]]

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to