關于時序分析的補充锭碳,為什么最后要檢查殘差之間是否具有相關性,這是因為我們認為一個合理的模型應該是理論上能夠?qū)⑾嚓P性盡可能地刻畫出來腾夯,對于一堆數(shù)據(jù)校套,如果你扣除掉相關性之后价脾,剩下來的應該是一些沒有相關性的隨機擾動,所以要檢查殘差之間的相關性笛匙,如果沒有相關性了侨把,才說明這個模型能夠比較準確地反映出數(shù)據(jù)的相關性,否則就說明還有一部分的相關性沒有反映出來妹孙,這個模型本身是不準確的秋柄。
一、風險價值VaR和局部均值ES的概念
1.1 風險的概念
風險是與收益相對應的概念蠢正,正是因為市場具有波動性华匾,既有獲得收益的可能,也有可能造成損失的可能机隙,造成損失的可能就是風險蜘拉。在風險管理當中我們看重的是風險,而風險的來源是不確定性有鹿,也即是波動旭旭。雖然是不確定性,但是假如我們給定一定的假設葱跋,建立一套模型持寄,可以在某種程度上理解風險出現(xiàn)的可能性以及對我們造成的影響,不一定能避免風險娱俺,但是能夠增加對它的理性認識稍味。有三個問題是我們要思考的:
- 風險是什么?
- 如何測度風險
- 為風險我們應該做什么準備荠卷?
1.2 如何測度風險
關于第一個問題在上小節(jié)已經(jīng)說過模庐,那么說一下如何測度風險。風險度量工具常用有:
- 債券市場:久期
- 股票市場:貝塔系數(shù)
- 衍生品市場:delta
- 新標準:VaR油宜,ES
新出現(xiàn)的標準VaR和ES相對于其他的風險度量工具來說對于沒有專業(yè)背景的普通大眾來說更加容易理解掂碱。
風險度量VaR
VaR指的是在一定置信區(qū)間內(nèi)和一定時間內(nèi)的最大損失金額。
舉個例子慎冤。某個銀行發(fā)行某一種基金或者資產(chǎn)組合疼燥,它在1天期限內(nèi)的99%的風險度量VaR為6000萬元。
關于這點可以有以下三種理解:
- 在一天后損失掉6000萬元的可能性有1%蚁堤。
- 給定100天醉者,可能會有一天遭受到6000萬元的損失。
- 有99%的可能在這一天的時間內(nèi)不會有大于6000萬元的損失披诗。
繪制概率密度圖
curve(dnorm(x),from=-3,to=-3,las='1',xlab='return',ylab='p(x)',main='Definition of VaR Based on the Probabilty Density Function')
#繪制箭頭撬即,length確定箭頭的大小
arrows(0,0.15, qnorm(0.05), 0.15,length=0.15)
#abline能夠在圖上畫線
abline(v=0,lty=1)
abline(v=qnorm(0.05), lty=2)
text(x=qnorm(0.05), y=0, labels='5%')
text(x=-1,y=0.15,labels='VaR')
上圖畫的是一個標準正態(tài)分布分布,從-3到3.
其中95%的置信區(qū)間對應的分位點即是VaR值藤巢,所以VaR值是相對于沒有損失風險的一個分位數(shù)搞莺。
繪制累積分布函數(shù)
curve(pnorm(x),from=-3,to=3,las='1',xlab='return',ylab='p(x)', main='Definition of VaR based on the cumulative distribution function',cex.main=0.8)
abline(h=0.05,lty=2)
axis(side=2,at=0.05, labels='0.05', las='1', par(cex=0.6))
VaR有自身的缺點,不滿足次可加性原則(關于次可加性我還是不是很理解)掂咒,所以沒有辦法計算資產(chǎn)組合的VaR值才沧。同時對于尾部的刻畫,我們一無所知绍刮,也就是我們關心的是置信區(qū)間里面的事温圆,但是對于萬一我們確實損失值出現(xiàn)在了置信區(qū)間以外的話,這個損失的尾部分布是如何的呢孩革?期望又是如何岁歉?這點VaR沒有辦法告訴我們,但是ES可以彌補以上兩個缺點膝蜈。
尾部均值ES
ES是指損失超過了VaR以后锅移,尾部損失的一個期望值熔掺。計算公式如下:
二、Delta-normal方法計算VaR和ES
引言
照理來說非剃,給定一定的置信區(qū)間和時間T置逻,對照著正態(tài)分布的表格應該可以查找出對應的VaR值。但實際上收益率的分布并不滿足正態(tài)分布备绽,但是模型的作用并不是反映出細枝末節(jié)券坞,而是給定一定的前提假設卫袒,這個模型能夠有多大程度能夠接近現(xiàn)實帮掉?
前提假設
對于一個投資組合,Delta-normal方法的前提假設有兩個:
- 收益率序列滿足正態(tài)分布瞳收。
- 資產(chǎn)的收益率是各個部分收益率的線性組合(不存在風險對沖)倍靡。
公式推導
從以上這個假設我們知道了資產(chǎn)的收益率組合是滿足正態(tài)分布的猴伶,而我們要求VaR,根據(jù)概念就是把這個正態(tài)分布的分位數(shù)找出來菌瘫。我們知道蜗顽,正態(tài)分布最重要的兩個參數(shù)是均值還有標準差(或者方差),分別決定了分布的平移和拉伸壓縮雨让。在這里我們用標準差雇盖,不用方差,原因是標準差與均值具有相同的單位栖忠。在經(jīng)濟學或者風險管理當中崔挖,統(tǒng)計學當中的sigma通常叫做波動率,實際上是一個意思庵寞。
假設我們有價值為1的資產(chǎn)組合狸相,給定置信區(qū)間為c,收益率的均值為0(標準正態(tài)分布的收益率為0)那么計算未來一天的
捐川,這里的alpha就是標準正態(tài)分布q的分位數(shù)脓鹃,其中q=1-t。
我在這里一開始有點不太理解古沥,這里可以這么理解瘸右,對于標準正態(tài)分布來說,均值為0岩齿,標準差為1太颤,那么如果資產(chǎn)的遭受損失大于某個值的可能性是q(比如一般是5%),那么這里標準正態(tài)分布當中相對于不標準的正態(tài)分布是相當于歸一化的存在盹沈,alpha在其中就相當于是指出了偏離均值u有多少個標準差的距離(因為標準正態(tài)分布的標準差是1)龄章,然后偏離的標準差個數(shù)再乘以收益率序列的標準差sigma,也就知道了原本的投資組合VaR值。其實在這里我更愿意把VaR解釋為一定置信水平下做裙,給定時間岗憋,偏離均值的最遠距離是多少。
根據(jù)時間的平方根規(guī)則(我這里也不懂菇用,得進一步研究)澜驮,如果是對于投資資產(chǎn)為W0的資產(chǎn)組合,那么在未來T天內(nèi)惋鸥,VaR值也就是乘以W0倍,也就是:
在這里alpha是可以通過置信水平找出來的悍缠,關鍵在于波動率sigma怎么求卦绣?所以接下來的重點在如何通過歷史估算投資資產(chǎn)收益率的波動率。
三飞蚓、GARCH模型
建模之前滤港,我們需要了解的是,我們是根據(jù)歷史來建模的趴拧,也就是認為過去歷史是包含著一定的趨勢的溅漾,并且這個趨勢是會延續(xù)下去的(但我們知道隨時可能會有新的沖擊),并且我們要理解模型是為了刻畫出數(shù)據(jù)的趨勢的著榴,真實數(shù)據(jù)與預測值之間會有殘差添履,但真實數(shù)據(jù)扣除掉預測值之后留下的殘差應該是隨機波動的,也就是它們不會有相關性脑又,這樣才能說我們這個模型把數(shù)據(jù)的趨勢挖掘得夠徹底了暮胧。
假如收益率序列為rt,rt是由兩部分組成的:本身的均值ut以及隨機擾動項at问麸。表示如下:
往衷,其中ut是滿足ARMA(p, q)模型的,也就是前面一項是p個滯后項的歷史收益率的自回歸項严卖,后面一項是q個滯后項的移動平均項席舍。如下表示:
(均值方程)
在開始介紹兩種模型之前,先說下區(qū)別哮笆,其實ARCH模型只是GARCH的一個特例来颤,GARCH是更一般化的(G代表就是Generalized的意思)。GARCH描繪的是t時刻的方差是歷史的擾動項平方的線性組合加上歷史的方差線性組合疟呐,而ARCH描繪的只有歷史的擾動項平方面回歸脚曾。知道了這一點之后,我們開始進行底下的公式推導部分启具。
ARCH模型
ARCH(p)模型假設:
t時刻的擾動項
,
(波動方程)
GARCH模型
與ARCH模型不同的是,除了有擾動項的線性組合外拷沸,還有q項歷史滯后項sigma的移動平均項色查。
GARCH(p, q)模型假設:
其中擾動項的因子varepsilon t范圍是(0, 1),
撞芍,
秧了,
,
(波動方程)
兩個方程刻畫出來的其實是收益率波動其實與擾動項不是成線性的相關序无,而是與擾動項的二次方成相關性验毡。刻畫的是二階擾動相關性帝嗡,而不是線性自相關性晶通。更多請參考Ruey的Analysis of Financial Time Series這本書。
四哟玷、RiskMetrics方法
RiskMetrics是JP Morgan提出的風險度量技術狮辽,這里只涉及簡單形式。這個方法認為的是巢寡,對于t時刻的擾動項喉脖,給定t-1時刻的信息,那么
是滿足正態(tài)分布的抑月。其中树叽,sigma的表示方法如下:
五菱皆、數(shù)據(jù)處理部分
5.1 實例部分
接下來我們要通過谷歌五年的歷史數(shù)據(jù)預測未來一周內(nèi)可能遭受的最大損失和損失的平均值。
首先獲取數(shù)據(jù):
wget http://labfile.oss.aliyuncs.com/courses/954/GOOGL.csv
然后我們接下來要用到rugarch這個工具包挨稿,可以通過install.packages()這個方法來安裝仇轻。
install.packages('rugarch')
library('rugarch')
#接下來讀取csv文件,并將其存儲到da這個變量當中
da<-read.csv('GOOGL.csv')
head(da)#打印前幾行看一看
dim(da)#查看以下da的形狀
接下來我們將損失變量求出來奶甘,把負對數(shù)收益率百分比化后作為損失變量
loss<-(diff(log(da$Adjust.Close)))*100
head(loss)#打印出前幾行看一下
六篷店、建模部分
6.1 GARCH模型求VaR和ES
6.1.1 建模步驟
建模包括兩部分:均值方程和波動方程。均值方程是滿足ARMA(p, q)模型臭家,因此要進行建立ARMA(p, q)模型一般的步驟:
對于波動方程則首先要檢驗ARCH效應疲陕,也即是檢驗殘差項是否二次相關。
在這里說明一下钉赁,其實我們做了這么多蹄殃,都是在提純相關性,ARMA刻畫的是線性相關你踩,而GARCH刻畫的是非線性相關性诅岩。我們在不斷地剔除掉相關性讳苦,這樣當相關性被完全剔除掉之后,剩下的就是隨機波動的白噪聲吩谦,比如在這里最后的ARCH模型建立完之后最后一個要做的就是扣除掉殘差的殘差后鸳谜,是否剩下來的白噪聲是滿足一定的分布(比如GARCH就要求滿足正態(tài)分布,只有這樣式廷,我們才能相信這樣的白噪聲是天然就存在的噪音咐扭,沒有包含主要信息)。我們在前面建立了ARMA模型之后滑废,剔除的是線性相關性蝗肪,但是剩下來跟均值的差(也就是差異)是一個波動,根據(jù)我們上面提到的GARCH模型策严,它是可能存在著二次序列相關的穗慕,所以我們在GARCH模型建模的時候,相當于對這部分波動進行二次相關性的擬合(跟ARMA建模是一樣的操作)妻导,然后再檢驗上一步ARMA的'殘差'的殘差是否還具有相關性,如果沒有了怀各,就說明相關性刻畫完全了倔韭,否則還得重新選擇參數(shù),建立更好的GARCH模型去擬合這部分殘差瓢对。然后最后扣除所有相關性到最后寿酌,就是白噪聲了,要看這個白噪聲是否真的那么無辜硕蛹,所以就看它是否滿足正態(tài)分布醇疼。
在這里的話,其實收益率的自相關性是十分微弱的(否則人人都可以輕松預測套利)法焰,所以就不必建立ARMA模型秧荆,直接以算術平均值來代替均值方程,接下來會重點建立GARCH模型埃仪。
6.1.2 建模代碼
我們直接運用GARCH(1, 1)模型乙濒,關于模型的選擇一般p,q不超過2卵蛉,關于模型選擇和檢驗這里不做探討颁股。
#定義GARCH模型的參數(shù)
spec1<- ugarchspec(mean.model=list(armaOrder=c(1, 1),include.mean=True), variance.model=list(garchOrder=c(1, 1)))
#用上述模型擬合數(shù)據(jù)
fit1<-ugarchfit(data=loss, spec=spec1)
#向前5步預測
forecast5<-ugarchforecast(fit1, n.ahead=5)
我們可以看到我們的ugarch模型當中的均值方程的參數(shù)mean.model設置的階次p,q為(0, 0),并且包含了均值項傻丝,說明我們這里以簡單的算術平均值作為均值方程甘有。variance.model的波動方程的階次p, q設為(1, 1),然后根據(jù)歷史損失率來建模葡缰,向前5步預測一周的情況亏掀,設置n.ahead=5忱反。
# 接下來我們看一下預測數(shù)據(jù)的標準差或者說是波動率
> sigmahat<- sigma(forecast5)
> sigmahat
輸出結果
我們接下來把5天的方差加和,就可以得出T+1, 1.127330
T+2, 1.235484
T+3, 1.311291
T+4, 1.265775
T+5, 1.405538
幌氮,然后我們就可以計算VaR還有ES缭受。
#5天的方差總和
wvarforce<-sum(sigmahat^2)
#帶入上面的公式,其中在這里把上面提到的sigma^2 T當作一個整體
VaR<-qnorm(0.95)*sqrt(wvarforce)
#計算尾部均值
ES<-dnorm(qnorm(0.95))*sqrt(wvarforce)/0.05
print (cbind(VaR, ES))
輸出結果
VaR, ES
4.755209, 5.963223
這就說明在95%的置信水平下该互,5天里面最大可能損失不超過¥1000000 x 4.755209% =¥4755209米者,發(fā)生損失的均值為¥1000000 x 5.963223% =¥5963223
在這里我多補充一下,原本有點不太理解ES的計算宇智,我們在這里仔細看一下其實qnorm(0.95)就是返回95%置信水平下的分位數(shù)蔓搞,dnorm函數(shù)則是返回這個分位數(shù)下的密度概率,0.05則是尾部的累積概率(可以理解為95%置信水平之后所有可能發(fā)生的損失值随橘,也就是左邊的那塊面積)喂分,所以人如其名,尾部均值就是求在0.95對應的分位點下的概率與對應的損失大小占總的左邊的那塊面積的大谢帷(可以理解為最終發(fā)生的損失既跟發(fā)生的概率有關也跟該概率下發(fā)生損失的大小有關)蒲祈。
作為一個整體萝嘁,其實我們也可以先預測1天的sigma梆掸,然后乘以sqrt(5),結果稍微有些不同牙言。
6.2 RiskMetrics計算VaR和ES
在這里RiskMetrics的建模方式和GARCH的建模方式是相同的酸钦,不同的在于要選擇參數(shù)(p, q)為(1, 1),并且沒有漂移項alpha0咱枉,在模型的參數(shù)model選擇'igarch'即可卑硫。
#定義igarch模型的參數(shù)
spec2<-ugarcrhspec(mean.model=list(armaOrder=c(0, 0), include.mean=False),variance.model=list(model='iGARCH',garchOrder=c(1, 1)))
#擬合數(shù)據(jù)
fit2<-ugarchfit(data=loss, spec=spec2)
#向前一步預測
forecast1<-ugarchforecast(fit2, n.ahead=1)
#提取預測結果的波動率
sigmahat2<-sigma(forecast1)
#計算VaR
VaR<-qnorm(0.95)*sqrt(5)*sigmahat2
#計算ES
ES<-dnorm(qnorm(0.95))*sigmahat2*sqrt(5)/0.05
#打印計算結果
print (abind(VaR, ES))
輸出結果
VaR, ES
3.828855, 4.801539
這就說明在95%的置信水平下,5天里面最大可能損失不超過¥1000000 x 3.828855% =¥ 3828855蚕断,發(fā)生損失的均值為¥1000000 x 4.801539% =¥4801539
在這里的計算結果與GARCH模型預測的結果是有差異的欢伏,說明模型和參數(shù)(p, q)的選擇對計算結果是有影響的。
七基括、總結
在這篇文章當中颜懊,我們介紹了VaR和ES的概念,GARCH模型风皿,ARCH模型以及RiskMetrics方法計算VaR和ES的方法和流程河爹,關鍵點在于對波動率的擬合,除了要知道怎么計算桐款,還要知道什么時候能用這個模型咸这。