如题,想找个统计学的家教讲一下关于金融时间序列建模和数据分析的知识,主要是涉及ARMA,GARCH族等模型
软件我用的是R
我之前都是自学的,请教着论坛里的高手,自己编写了一部分,不确定自己做的对不对,而且具体分析也很迷糊。想找个明白人给我讲解一下,我之前已经自己过了一遍“金融时间序列分析”(清华大学那版本),会根据需要有针对性的求教一下。
下面是我自己编写的一部分,希望有做过相关方面的明白人给讲授一下
薪酬水平200元一次吧,一次2~3个小时,我不太了解行情价格可以商量。
时间:周末
地点:奥林匹克公园附近,研究生的话我可以去学校
联系方式:
axiu79@hotmail.com或者直接留言
我会尽快电话联系
############sGARCH #############
#--------------------------------- EVT-GARCH --------------------------------
InSample=read.table("YenISLogReturn.txt",header=T)
YenInSample=InSample[,3]
YenInSample=InSample[,3]
plot(YenInSample,type="l",main="Evolution Yen In-Sample")
#-------------Tester l'effet GARCH / Draw -------------
X11()
par(mfrow=c(2,1))
acf(YenInSample,lag=75,lwd=2)
acf(YenInSample^2,lag=75,lwd=2)
#---------------------- Modéliser un Univariate GARCH ----------------------
spec = ugarchspec(mean.model = list(armaOrder = c(0,0)))
fit = ugarchfit(data = YenInSample, spec = spec)
fit
Pred = ugarchforecast(fit, n.ahead = 1)
Pred
#?不明白这个Pred,为什么只做t=n+1时刻的测算 (n为sample中数据个数)
不是应该是VaR=mu+Zaσ,mu为样本平均数 σ标准差,而这个VaR的计算里用的是n+1时刻的sGARCH预测值
我看另外一个文献上也是这样算的 不是很理解
# sigma series
23400 0.07011 -3.863e-05
#VaR
#Case 1: Gaussian
VaR.095 = as.array(Pred)[2] - qnorm(0.95)* as.array(Pred)[1]
VaR.095 #-0.1153632
VaR.099 = as.array(Pred)[2] - qnorm(0.99)* as.array(Pred)[1]
VaR.099 # -0.1631444
#get standardized residuals
stdres = residuals(fit)/sigma(fit)
library(evir)
meplot(stdres)
gpd.fit = gpd(-stdres, threshold=1.65)
gpd.fit
riskmeasures(gpd.fit,c(0.95,0.975,0.99))
# p quantile sfall
#[1,] 0.950 1.501263 2.376237
#[2,] 0.975 2.027727 3.023779
#[3,] 0.990 2.837103 4.019298
#Case 2: EVT GPD
EVT.VaR.095=as.array(Pred)[2] - 1.501263*as.array(Pred)[1]
EVT.VaR.095 # -0.1052957
EVT.VaR.099=as.array(Pred)[2] - 2.837103*as.array(Pred)[1]
EVT.VaR.099 # -0.1989546
############GARCH#############
#---------------------- Modéliser un GARCH ----------------------
YenGarchIS = garch(YenInSample)#---------run GARCH
summary(YenGarchIS)
#Residuals:
# Min 1Q Median 3Q Max
#-9.2574 -0.4686 0.0000 0.4476 11.4645
#Coefficient(s):
Estimate Std. Error t value Pr(>|t|)
#a0 2.369e-04 4.691e-06 50.51 <2e-16 ***
#a1 1.191e-01 2.068e-03 57.60 <2e-16 ***
#b1 8.196e-01 2.589e-03 316.59 <2e-16 ***
---
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#Diagnostic Tests:
Jarque Bera Test
#data: Residuals
#X-squared = 84396.02, df = 2, p-value < 2.2e-16
# Box-Ljung test
#data: Squared.Residuals
#X-squared = 14.8206, df = 1, p-value = 0.0001182
#---------------------- Prediction par GARCH ----------------------
YenISVolatility=predict(YenGarchIS)
PredictYenIS=ts(data = YenISVolatility, start = 1991, frequency = 6048)
#----define the Garch result in the form of a time series
YenIS=ts(data = YenInSample, start = 1991, frequency = 6048)
par(mfrow=c(1,1))
plot(YenIS,col="grey",main="Evolustion of YenISVolatility")
lines(PredictYenIS[,1],col="red")
lines(PredictYenIS[,2],col="red")
#---------------------- Out-of-Sample Part ----------------------
OFSample=read.table("YenOutOfSampleLogReturn.txt",header=T)
YenOutOfSample=OFSample[,3]
plot(YenOutOfSample,type="l",main="Evolution Yen Out-Of-Sample")
r3 <- predict(YenGarchIS,YenOutOfSample)
PredictYenOFS <- ts(data = r3, start = 1995, frequency = 6048)
YenOFS=ts(data = YenOutOfSample, start = 1995, frequency = 6048)
plot(YenOFS,col="grey",main="Evolustion of YenOFSVolatility")
lines(PredictYenOFS[,1],col="red")
lines(PredictYenOFS[,2],col="red")