利用R语言编写量化投资策略
利用R语言编写量化投资策略 选取一股票,利用R语言进行分析,同时构建通道突破,双均线交叉和MACD策略,进行回测。 libraryxts libraryxtsExtra libraryquantmod libraryFinTS libraryforecast libraryTSA libraryTTR libraryfGarch libraryrugarch librarytseries setSymbolLookupMHXXlistname0696.hk,srcyahoo getSymbolsMHXX,from2013-01-01,to2015-09-30 显示K线图,如图明显发觉股价呈现递增趋势,价格序列是非平稳的。 chartSeriesMHXX 考虑对数收益率 获得收盘价 cp MHXX[,4] lgcplogMHXX[,4] tdx c1456/3652014 计算日收益率 retdailyReturnMHXX chartSeriesret,themewhite,TANULL plottdx,cp,xlabyear,ylabclose price,typel 计算对数收益率,如图课件,股价在15年左右有一个跳动,15年其次季度的股价增长导致 之后股价有较大的下降,这些特征给后续的分析带来一些较大的异样值 lgret logret1 chartSerieslgret,themewhite,TANULL 由ACF和PACF图可以看出,该股1股价的日收益率序列即使存在某种相关性,该自相关性也 很小 parmfcolc2,1 acflgret,lag30 pacflgret,lag30 为了验证该收益率序列有没有序列相关性,运用Ljung-Box检验,结果对应的P值0.024, 在1的显著水平下,拒绝该股票日收益率没有显著前后相关性的这一原假设。 但在5的显著水平下,无法拒绝该股票日收益率没有显著前后相关性的这一原假设。 Box.testlgret,lag20,typeLjung m1 - auto.arimalgret,stationaryTRUE,seasonalFALSE,icaic 鉴于该股票对数收益率序列的自相关性并不强,所以建立的ARIMA模型可能适用性不高。 对于对数收益率序列,单样本的t检验结果的t比为1.0625,p值为0.2884,表明该序列不是 显著异于零的,同时此处依据ACF图所示,在4阶有稍微的超越标准差线, 因此取用AR5模型拟合,aic-2987.43 m2 - arimaxlgret,orderc4,0,0,include.meanF tratiom2coef/sqrtdiagm2var.coef tratio meacfeacflgret,6,12 printmeacfeacf,digits2 残差检验并表示改模型可能不是充分的 tsdiagm2,gof20 m3 -auto.arimaret,stationary TRUE,seasonal FALSE,icaic m3 由上述可知,对于价格改变的分析,纯ARMA模型是不充分的,一方面ARMA模型不能处理 波动率聚集,另一方面,ARMA-GARCH模型能充分处理这些数据的困难性, 并能提高样本外预料 pricetscp dptsdiffcp parmfcolc2,1 plotprice,xlabyear,ylabprice plotdp,xlabyear,ylabchanges cpricediffprice parmfcolc2,1 acfcprice pacfcprice aic-0.37 m.garch1-garchFit1garch1,1,datacprice,traceF summarym.garch1 aic-0.62 m.garch2-garchFitarma6,0garch1,1,datacprice,traceF,ininclude.mean F, cond.dist std summarym.garch2 aic-0.60 m.garch3-garchFitarma2,0garch1,1,datacprice,traceF,ininclude.mean F, cond.dist std summarym.garch3 aic-0.596 m.garch4-garchFitarma1,0garch1,1,datacprice,traceF,ininclude.mean F, cond.dist std summarym.garch4 回测检验 sourcebacktestGarch.R M2FbacktestGarchcprice,714,2,inc.meanF,cdistsstd sourcebacktest.R M2AFbacktestm2,cprice,714,2,inc.meanF ArchTestcoredataret 计算VaR mgarch1-ugarchspecvariance.modellistgarchOrderc1,1, mean.modellistarmaOrderc0,0 mgarch1_fit-ugarchfitspecmgarch1,datacprice mgarch1_fit m