哈哈zhangtao兄也有兴趣.
GMM Libraries for Matlab:
主网站目前已不提供下载
http://www.feweb.vu.nl/econometriclinks/mcliffprogs.html
但可由底下帖子免费下载
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=114904&highlight=gmm
执行文件:ckls_d.m
但由于matlab版本更新
ckls_d.m请修改底下两行
% --- Estimate Nine Nested Models -------------
gmmopt.prt = 0; -->gmmopt.prt = 1;
gmmopt.infoz.prt = 0;-->gmmopt.infoz.prt = 1;
否则fprintf会产生错误信息.
%%%%%%%%%%%%%%%%%%
相同数据ckls.dat,也有S-plus code.
Modelling Financial Time Series with S-PLUS
chap21. Generalized Method of Moments
21.7.5 Interest Rate Diffusion Model
#ckls
ckls.moments <- function(parm, data = NULL,dt = 1/12) {
# parm = (alpha,beta,sigma,gamma)’
# data = [r(t+dt)-r(t),r(t)]
# dt = discretization step
e.hat = as.vector(data[,1] -(parm[1] + parm[2]*data[,2])*dt)
m2 = e.hat*as.vector(data[,2])
m3 = e.hat^2 - dt*parm[3]*parm[3]*(as.vector(data[,2])^(2*parm[4]))
m4 = m3*data[,2]
cbind(e.hat,m2,m3,m4)
}
data.ckls.ts = seriesMerge(diff(ckls.ts), tslag(ckls.ts))
colIds(data.ckls.ts)[1] = "RF.diff"
data.ckls = as.matrix(seriesData(data.ckls.ts))
summaryStats(data.ckls)
start.vals = c(0.06,-0.5,1,1)
names(start.vals) = c("alpha","beta","sigma","gamma")
gmm.ckls = GMM(start.vals,ckls.moments,ts = T,data = data.ckls,dt = 1/12)
summary(gmm.ckls)
####
#GMM estimates for the restricted models cir
cir.moments <- function(parm, data = NULL, dt = 1/12) {
# parm = (alpha,beta,sigma)’
# data = [r(t+dt)-r(t),r(t)]
# dt = discretization step
e.hat = as.vector(data[,1] -(parm[1] + parm[2]*data[,2])*dt)
m2 = e.hat*as.vector(data[,2])
m3 = e.hat^2 - dt*parm[3]*parm[3]*(as.vector(data[,2]))
m4 = m3*data[,2]
cbind(e.hat,m2,m3,m4)
}
start.vals = c(0.06,-0.5,1)
names(start.vals) = c("alpha","beta","sigma")
gmm.cir = GMM(start.vals, cir.moments, ts = T,data = data.ckls, dt = 1/12)
summary(gmm.cir,print.moments = F)