3

For a non-linearity test of the CAPM (Captial asset pricing model), I want to test the parameter stability under the assumption that betas (bi) and expected returns(x) are linear functions of the conditioning variables (z).

Following Ghysels (1998) I want to use the GMM to calculate the parameters under the following moment conditions: GMM moment conditions

This is my code:

gl <- function(theta, x) { 

  g_PF <- function(a) {

      aa1 <- (x[,a] * z[,1]) - ((z[,1:3] %*% matrix(theta[(a*3-2):(a*3)],3,1)) * z[,1])
      aa2 <- (x[,a] * z[,2]) - ((z[,1:3] %*% matrix(theta[(a*3-2):(a*3)],3,1)) * z[,2])
      aa3 <- (x[,a] * z[,3]) - ((z[,1:3] %*% matrix(theta[(a*3-2):(a*3)],3,1)) * z[,3])

      ab1 <- (((z[,1:3] %*% matrix(theta[(a*3-2):(a*3)],3,1)) * z[,1]) - ((z[,1:3] %*% matrix(bi[((a+2)/3), 1:3], 3, 1) * z[,1:3] %*% matrix(theta[19:21],3,1)) * z[,1]))
      ab2 <- (((z[,1:3] %*% matrix(theta[(a*3-2):(a*3)],3,1)) * z[,2]) - ((z[,1:3] %*% matrix(bi[((a+2)/3), 1:3], 3, 1) * z[,1:3] %*% matrix(theta[19:21],3,1)) * z[,2]))
      ab3 <- (((z[,1:3] %*% matrix(theta[(a*3-2):(a*3)],3,1)) * z[,3]) - ((z[,1:3] %*% matrix(bi[((a+2)/3), 1:3], 3, 1) * z[,1:3] %*% matrix(theta[19:21],3,1)) * z[,3]))

      mocon <- cbind(aa1, aa2, aa3, ab1, ab2, ab3)
      return(mocon)
    }

  g_M <- function(b) {

        bb1 <- (x[,b] * z[,1]) - ((z[,1:3] %*% matrix(theta[(b*3-2):(b*3)],3,1)) * z[,1])
        bb2 <- (x[,b] * z[,2]) - ((z[,1:3] %*% matrix(theta[(b*3-2):(b*3)],3,1)) * z[,2])
        bb3 <- (x[,b] * z[,3]) - ((z[,1:3] %*% matrix(theta[(b*3-2):(b*3)],3,1)) * z[,3])

        mocon1 <- cbind(bb1, bb2, bb3)
        return(mocon1)

        }

  #Moment conditions:

  MSL <- g_PF(a = 1)
  MSM <- g_PF(a = 2)
  MSB <- g_PF(a = 3)
  MHL <- g_PF(a = 4)
  MHM <- g_PF(a = 5)
  MHB <- g_PF(a = 6)
  MM <- g_M(b = 7)

  gmat <- cbind(MSL, MSM, MSB, MHL, MHM, MHB, MM)
  return(gmat)
}

ress <- gmm(g = gl,x = x,  rep(0,21))
summary(ress)

The function gl serves to generate the moment conditions while the desired output would be a vector of 21 parameters (3 parameters - two conditioning variables + constant - for the six test portfolios + the market portfolio).

When I run my code I get the following error message:

Error in AA %*% t(X) : requires numeric/complex matrix/vector arguments
In addition: Warning message:
In ar.ols(x, aic = aic, order.max = order.max, na.action = na.action,  :
  model order:  1 singularities in the computation of the projection matrix results are only valid up to model order 0

This is my data for the returns, the betas and the conditoning variables:

https://1drv.ms/f/s!AuPlGq9-jRlpgzVR12selaXgL8s8

kangaroo_cliff
  • 6,067
  • 3
  • 29
  • 42
Rsse
  • 31
  • 4
  • It would be easier to help you if you provide a [reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) with sample input data so we could run the code and test it. – MrFlick Nov 10 '17 at 16:33
  • Thanks for the feedback, I added the data for the returns, betas and conditoning variables – Rsse Nov 10 '17 at 17:46
  • @Rsse what package are you using for the function `gmm`? – kangaroo_cliff Feb 27 '18 at 23:22
  • I have the same issue. Did you solve it? – Andrew Apr 03 '18 at 18:42

0 Answers0