将上证综指进行自回归的GARCH建模,再检验其与宏观变量之间的关系,进行向量VAR模型建模,以下是stata实现全部代码:
上证综指的日数据建模
use index_daily
gen date2=date(date,"DMY")
format %td date2
sort date2
gen t=_n
tsset t
tsline ln_index
corrgram ln_index
ac ln_index
pac ln_index
*选择滞后阶数,做ADF检验单位根
arima ln_index,arima(4 0 0)
estat ic //结果显示应该选择4阶
dfuller ln_index, lags(4)
dfuller ln_index,regress lags(4) //均不显著,存在单位根
*差分
gen d_index=D.ln_index
tsline d_index
corrgram d_index
*对差分数据进行ADF检验
arima d_index,arima(5 0 0)
estat ic
dfuller d_index, lags(5)
dfuller d_index,regress lags(5) //差分平稳
*对d_index进行AR(5)回归
arima d_index,arima(5 0 0)
predict e,res
wntestq e //白噪声检验,非白噪声
gen e2=e^2
corrgram e //一定阶数后相关
corrgram e2 //相关
*ARCH效应
regress d_index
estat archlm, lags(1 2 3 4) //存在ARCH 效应
arch d_index,arima(3 0 0)arch(1) garch(1)nolog
estat ic //选择AR(3)-GARCH(1,1)
predict et,res
predict ht,var
*标准化残差
gen zt=et/sqrt(ht)
gen zt2=zt^2
wntestq zt //残差成为白噪声
corrgram zt //残差不再相关
corrgram zt2 //方差也不相关
*预测
tsappend,add(1)
predict d
tsline d d_index
上证综指与价格指数、货币供给的向量自回归分析:
use index_micro.dta
summarize
gen date2=mofd(date(date,"DMY"))
format %tm date2
tsset date2
**观察基本时序图
line ln_index date2
line lncpi date2
line lnm1 date2
line lnnl date2
summarize ln_index lncpi lnm1 lnnl //看起来不平稳,做AC\PAC图
corrgram ln_index
ac ln_index
pac ln_index
corrgram lncpi
ac lncpi
pac lncpi
corrgram lnm1
ac lnm1
pac lnm1 //观察自相关偏自相关系数,确定是否有时间趋势、季节趋势,确定ADF检验形式
**AIC、BIC原则确定滞后阶数
arima ln_index,arima(2 0 3)
estat ic // la_index选择2阶
arima lncpi,arima(2 0 1)
estat ic //lncpi 选择2阶
**单位根检验,平稳性检验
dfuller ln_index, lags(2)
dfuller ln_index,regress lags(2)
dfuller lncpi,lags(2)
dfuller lncpi,regress lags(2)
dfuller lnm1, lags(7) trend
dfuller lnm1,regress lags(7) trend //均平稳
*对ln_index进行AR(2)回归
arima ln_index,arima(2 0 0)
tsappend,add(2)
predict ln_index2
tsline ln_index2 ln_index //拟合效果较好
*残差检验,是否自相关
predict e2,res
gen e3=e^2
corrgram e2 //残差不存在自相关
corrgram e3 //残差平方也不相关
wntestq e2 //为白噪声
*predict
**与宏观经济因素的相互影响,进行格兰杰因果检验
clear
use index_micro.dta //重新引入数据,因为之前做过预测
gen date2=mofd(date(date,"DMY"))
format %tm date2
tsset date2
varsoc ln_index lncpi lnm1, maxlag(12)
var ln_index lncpi lnm1,lags(1/2)
matlist e(Sigma)
varlmar //5%置信水平不相关
varstable,graph //平稳
predict ln_indexhat
tsline ln_indexhat ln_index
xcorr ln_index lnm1 //互相关系数
vargranger //存在一定的因果关系
append using 2019new.dta
fcast compute F_, step(6)
fcast graph F_ln_index F_lnm1 F_lncpi, observed lpattern(dash) //动态预测
irf create oder1,step(12) set(myirf1) replace //脉冲响应分析
irf graph oirf,impulse(ln_index lncpi lnm1) response(ln_index lncpi lnm1)