R語言VaR市場風(fēng)險計算方法與回測、用Logit邏輯回歸、Probit模型信用風(fēng)險與分類模型
全文鏈接:http://tecdat.cn/?p=27530?
原文出處:拓端數(shù)據(jù)部落公眾號
市場風(fēng)險指的是由金融市場中資產(chǎn)的價格下跌或價格波動增加所導(dǎo)致的可能損失。
市場風(fēng)險包含兩種類型:相對風(fēng)險和絕對風(fēng)險。絕對風(fēng)險關(guān)注的是整個資產(chǎn)收益的波動率,而相對風(fēng)險關(guān)注的是資產(chǎn)收益與某一基準(zhǔn)(比如某個市場指數(shù)或投資組合)相比較的跟蹤誤差。
市場風(fēng)險也可以按照與經(jīng)濟和金融變量(比如,利率、股票指數(shù))的關(guān)聯(lián)性分為直接風(fēng)險和間接風(fēng)險:直接風(fēng)險指的是與這些基準(zhǔn)經(jīng)濟金融變量線性相關(guān)的風(fēng)險(比如債券、股票、期貨),而間接風(fēng)險則是與這些變量有非線性關(guān)聯(lián)成分的風(fēng)險(比如,期權(quán)、復(fù)雜衍生品)。
度量市場風(fēng)險目前最常用的工具是在險價值(Value at Risk, VaR)。
VaR的定義與計算方法
VaR度量的是在一段時間內(nèi)某種置信水平下某風(fēng)險資產(chǎn)的可能損失。比如,某個投資組合在95%置信水平下的日度VaR是10萬元,表示在任何交易日,該資產(chǎn)的損失只有5%的可能會超過10萬元。
VaR在金融機構(gòu)中使用非常普遍,很多機構(gòu)設(shè)置內(nèi)部VaR進行止損,如果某天損失超過內(nèi)部VaR,就需要馬上清空倉位進行止損。
正態(tài)分布法
正態(tài)分布法假設(shè)收益率服從正態(tài)分布,運用矩估計可以簡單求得:

此時所求的在置信水平
下的VaR就是:?

例 假設(shè)某銀行的風(fēng)險管理部門希望以正態(tài)分布法計算日度的VaR,其資產(chǎn)的標(biāo)準(zhǔn)差為1.4%,且資產(chǎn)當(dāng)前市值為5300萬元,請計算其95%置信水平下的VaR。
答: 標(biāo)準(zhǔn)正態(tài)的下5%分位點為-1.65,則其收益率的VaR是-1.65×1.4%=-2.31%,其總資產(chǎn)的VaR就等于2.31%×5300萬元=122430元,即單日損失超過122430元的可能性僅有5%。
因為日度的標(biāo)準(zhǔn)差可以簡單的通過變換來得到月度、季度或是年度的標(biāo)準(zhǔn)差,在正態(tài)分布法的框架下,VaR也可以由此進行變換,得到其他期限狀況下的VaR:

日度損失換算成年度則是

例:以R編程實現(xiàn)正態(tài)分布法非常簡便,以HS300指數(shù)2014年的日數(shù)據(jù)為例,其99%置信水平下的單日VaR可以通過以下一段R代碼來計算。
首先畫出HS300指數(shù)在2014年的時序圖和日收益率圖,其R代碼和圖表如下:
HS300date<as.Date(HS30$e)將導(dǎo)入數(shù)據(jù)中的日期識別為日期格式的序列
n<-now(HS0) ?#計算樣本的觀測數(shù)
re<log(HS300$close[2:n]/HS300$close[1:(n-1)]) #計算日收益率
par(fro=c(1,2)) 將圖表工作區(qū)分為2列畫圖區(qū)
plt(HS300dte,HS00$close,typ='l',col'b,xlab='日期', ylab='收益率') ?#畫出日收盤價和日收益率的時序圖
?

然后針對收益率序列估計其均值和方差,并計算VaR:
???#正態(tài)分布法
alha<-0.99 ?#設(shè)定置信水平
s0<-HS30$cse[n] ?#設(shè)定初始資產(chǎn)價值
m-mean(e) ?#計算均值
sgma-sd(e) ?#計算標(biāo)準(zhǔn)差
daR<-(musiga*qorm(alpa,0,1)) ?#計算每日VaR
VaR<-*sigma*qnormalph,0,1)*qrt(52) ?#計算全年VaR,假設(shè)日收益率為0.
最終的計算結(jié)果為,在99%置信水平下,持有HS300股指的每日最大可能損失2.64%,在2014年年末預(yù)計明年最大可能損失為1542.94點。
針對某些衍生品或投資組合,如果其資產(chǎn)價值與某個風(fēng)險因子呈線性關(guān)系,也可以通過正態(tài)分布法來計算VaR,此時該方法稱為Delta-Normal法:
?

厚尾分布法
實際中雖然正態(tài)分布法使用最多,但有時也需要考慮到收益率分布不是正態(tài)的情形。事實上,資產(chǎn)收益率在實證中已經(jīng)被發(fā)現(xiàn)大多數(shù)時候有尖峰厚尾的現(xiàn)象,即尾部的分布密度較正態(tài)分布要大,從而導(dǎo)致實際收益分布的下分位點大于正態(tài)分布的分位點。此時就需要考慮采用一些對于厚尾分布有所度量的分布。
Weibull分布可以對于厚尾性質(zhì)有所度量。當(dāng)然其他類型的如Beta分布,對數(shù)正態(tài)、Gumbel分布等也可以度量厚尾,具體的思路和計算方法與此相同,這里主要以Weibull分布為例進行介紹。Weibull分布密度函數(shù)形式如下:

Weibull分布函數(shù)要求隨機變量大于0,實際中可以通過指數(shù)變換得到。使用這些厚尾分布估計收益率的分布時,大多數(shù)采用極大似然估計法,用R中的mle函數(shù)或者optim函數(shù)可以很方便地實現(xiàn)。同樣考慮例6.2中的HS300指數(shù)日度數(shù)據(jù),其采用Weibull分布法計算VaR的R代碼如下:
#weibull分布法
rdata<-ex(re) ?#將收益率數(shù)據(jù)指數(shù)化,使其保持大于0
lgbull<untion(params){ ? #寫出對數(shù)似然函數(shù)
labda-pram[1] ?#規(guī)模參數(shù)(scale parameter)
k<-aram[2] ?#形狀參數(shù) (shpe araete)
for(i in 1:n){ ? ?#用循環(huán)計算對數(shù)似然函數(shù)之和lgw<lg+log(k/lmba)((reata[/labda(k-1)*exp-(reata[i]labd)^k))
xle<-otimc(1,),lgwbul,ethod ?BFS,contlist(nscal=-1)) ?#用優(yōu)化函數(shù)求解最大值,初始參數(shù)設(shè)都是1
ambda<-xme$par[1] ?#求得規(guī)模參數(shù)
k<-ml$par[2] ? #求得形狀參數(shù)
dVaR<-lg(qeibul(1-alpa,k,ambda)) ?#求解得到分布的上1%分位點
Weibull分布法得到的99%置信水平下每日最大可能損失是5.59%,比正太分布得出的VaR高得多,體現(xiàn)了Weibull分布對于尾部和極端風(fēng)險給予了更大的重視,顯得更加保守。
歷史數(shù)據(jù)排序法
歷史數(shù)據(jù)排序法非常簡單,只需要將歷史的收益率序列按照升序排列,假設(shè)序列長度為n,設(shè)與n*5%往上最接近的整數(shù)為K,則95%置信水平的VaR就是第K個收益率序列值。
例 假設(shè)你資產(chǎn)的初始價值為1億元,你將最近100天的每日收益率從低到高排序,最低的6個收益率如下:
-0.0101,-0.0096,-0.0034,-0.0025,-0.0019,-0.0011
則此資產(chǎn)在95%置信水平下的VaR為0.0019×1億=19萬元。
有時并不會往上取與n*5%最近的整數(shù),而是將最接近此數(shù)值的兩個收益率求平均來得到更準(zhǔn)確的VaR。排序在R中也可以簡單實現(xiàn),同樣以HS300指數(shù)為例,其代碼如下:
#歷史數(shù)據(jù)排序法
re<sor(redecresin=T) ?#按降序排列
orer<trunc(*alha) ?#求取99%分位點所指示的序號的整數(shù)部分
if(nrde==n){aR<-sr[n]}else{
da<-(sre[rder]+sener])/2 ?#對該序號周圍的2個值求平均
}
??最后計算得到在99%置信水平下,每日最大可能損失為2.58%,略小于正態(tài)分布法得到的VaR。
核密度估計法
核密度估計法是統(tǒng)計中常用的估計分布函數(shù)序列值的非參數(shù)方法,其基本的算法形式是:
R中有專門進行核密度估計的包Kernsmooth.同樣以HS300指數(shù)日度數(shù)據(jù)為例,以核密度方法計算VaR的R代碼如下:
常見的核函數(shù)有高斯核、均勻核、三角函數(shù)核等等,我們以高斯核為例講述這類方法,高斯核函數(shù)就是標(biāo)準(zhǔn)正態(tài)分布密度函數(shù):

求得核密度函數(shù)序列之后,就可以通過對收益率升序排列之后的核密度函數(shù)累加,當(dāng)累加值達(dá)到5%時,選取其附近的兩個收益率平均值作為95%置信水平的VaR估計值。
?R中有專門進行核密度估計的包Kernsmooth.同樣以HS300指數(shù)日度數(shù)據(jù)為例,以核密度方法計算VaR的R代碼如下:
#核密度估計法
ds<-density(re,w = "nrd0", djust= 1,
keel = c("gaussn",n=1000) ?#計算出核密度函數(shù),核密度函數(shù)的觀測數(shù)設(shè)定為1000,使用的是Gaussian核。
cumy<-c(0,1000)
for(i in 1:1000){umy[]<-sum(dsy[1i])*ds$} #計算出累積密度函數(shù)函數(shù)值,其中ds$bw是核密度估計時所使用的窗寬
for(i in 1:1000){ifcmy[i<(-alpha){node<-i}} #找出最后一個累積密度函數(shù)低于1%的序號
dVR-(ds$x[noder](cum[norder+]-1+alp)+dsxnordr+1(1-ala-cumy[e]))(umy[rer+-cuyorde]) #用插值法找出核密度估計出的觀測序列的上1%分位點。
?最后計算出的99%置信水平下,每日最大可能損失值為4.96%,遠(yuǎn)大于正態(tài)分布法所得到的數(shù)值,與Weibull分布法得出的數(shù)值較為接近。
混合時間序列加權(quán)法
混合時間序列加權(quán)法也稱為Hybrid方法,是一種半?yún)?shù)的方法。其基本思想是對于近期發(fā)生的價格變化賦予更大的權(quán)重,但需要注意的是,并不是在收益率上直接賦權(quán)(這可能改變收益率的原始數(shù)值),而是對收益率在歷史數(shù)據(jù)排序法中的排序賦權(quán)。其基本算法步驟如下
步驟1:對于收益率序列給出其權(quán)重序列:
其中l(wèi)amda是退化參數(shù),取值在0和1之間,常見的取值有0.96,0.97,0.99等。如此最近一期的權(quán)重最大。
??步驟2:對收益率升序排列
??步驟3:將從低到高的收益率序列對應(yīng)的權(quán)重累加,若累加值達(dá)到所需的顯著性水平,比如5%,則可以通過線性插值法計算出對應(yīng)的VaR。
?

表中0.05位于排序1和2之間的收益率,即-4.7%和-4.1%之間,則可以使用線性插值法計算VaR=(0.05-0.0391)/(0.0736-0.0391)×(-4.1%)+(0.0736-0.05)/(0.0736-0.0391)×(-4.7%)=-4.51%,即利用混合時間加權(quán)法得出的95%置信水平下的VaR是4.51%。
混合時間加權(quán)法也可以通過R簡單實現(xiàn),以HS300指數(shù)日度數(shù)據(jù)為例,其R代碼如下:
#混合時間加權(quán)法
weight-ep(0,n) ?#計算出每個收益率的權(quán)重,距離當(dāng)前越近的觀測權(quán)重愈大。
data<-sa[oere,dreing=F),] ?#通過對數(shù)據(jù)框的排序得到升序的收益率及其對應(yīng)的權(quán)重
cumweght<-rep(0,n) #用循環(huán)計算累積權(quán)重,并求出第一個超過1-alpha的序號
if(cumweight[1]>1-alpha){norder<-1} #當(dāng)?shù)谝粋€就超過了1-alpha,就需要直接令序號等于1.
if(cmweght[i]<1-lha){noder-i}}
ifnorer>1){ ? #用插值法計算每日VaR
dVaR<-(kata$r[nordr]*(cmeigorr+1-+aha)+da$enorer+]*1-pa-cuweit[order])/(cuwig[nrde1]-cumweght[norder])
}else{VaR-kdtae[1]}
計算得到最小的日收益對應(yīng)的權(quán)重已經(jīng)大于1%,故而選擇最小的日收益作為混合時間加權(quán)法的VaR,即99%置信水平下每日最大可能損失為4.59%?;旌蠒r間加權(quán)的優(yōu)點在于不改變原始數(shù)據(jù),所求得的VaR必然是原始數(shù)據(jù)或其線性組合。如果置信度設(shè)為95%,重新運行程序得到每日的最大可能損失為2.19%。
蒙特卡羅模擬法
之前介紹的這些方法都是在歷史數(shù)據(jù)充分,且資產(chǎn)結(jié)構(gòu)本身比較簡單的情況下才比較有效的VaR計算方法。當(dāng)資產(chǎn)結(jié)構(gòu)變得復(fù)雜,比如有復(fù)雜的衍生產(chǎn)品,或資產(chǎn)價格變動的歷史數(shù)據(jù)不足,或者需要考慮更復(fù)雜更嚴(yán)格的價格變化過程時,就需要使用隨機模擬的方法來確定價格變化的過程和VaR。
???????最簡單的MonteCarlo模擬方程就是以正態(tài)分布來模擬收益率的序列。在假設(shè)均值和波動率已知的情形下,考察收益率的可能變化水平:

VaR的回測
在學(xué)習(xí)VaR的回測方法之前,有必要復(fù)習(xí)一下假設(shè)檢驗的基本原理。假設(shè)檢驗的基本邏輯是:小概率事件不可能發(fā)生。若在原假設(shè)下,小概率事件發(fā)生了,則可以懷疑原假設(shè)不成立,由此拒絕原假設(shè)。
例題: VaR的滾動計算與回測:從中證800中任選一只股票,選定2013年至今的日度收盤價序列為研究樣本,以90天為窗寬,以正態(tài)分布法滾動計算日度95%VaR,并畫出收盤價時序圖和VaR預(yù)測的最壞變化圖進行對比。并以樣本外一天是否超過VaR的次數(shù)來回測VaR。
編程的要點如下:
輸入項:中證800的股票成分向量;取數(shù)據(jù)的方法:隨機選擇一只股票后,用quantmod包的getSymbols函數(shù)取數(shù)據(jù)。
主要算法:產(chǎn)生隨機數(shù)并判別上市時間是否早于2013年;根據(jù)取出來的時序數(shù)據(jù)計算收益率,并以每90天計算一個VaR,共n-90個VaR,可以回測n-91次。
輸出項:收益率和VaR的時序圖;VaR回測中損失超額的次數(shù)和判定結(jié)果。
R代碼如下:
coe1-sust(zz800$ID[sn],1,2)
code2<-sbst(zz80$ID[sn],3,8)
close<-zdata[,4]
### VaR
a
re<-log(close)-log(lag(close))
# tdate<-NULL
len<-90
for(i in 1:(n-len-1)){
mu-mea(re[(i+1:(i+len)])
sigma<-sd(re[(i+1):(i+len)])
dva[i]<-(m-sigma*qnorm(-alpha0,1))
if(re[i+1+le]<dvar[i]bcktest<-backtet+1}#次日收益低于昨天的VaR就記錄一次損失超出事件
backalpha<-0.05
cvale<-qnom(bakapha-2-len,lp
if(backtes>cvalue)bkreult<-'reject'}else{bkresult'acept'} #判定是否接受VaR的計算結(jié)果
##將VaR的計算結(jié)果所顯示的最低可接受價格與當(dāng)天的實際價格畫在一張圖表上
plo.ts(aiypice)
lines(Vaprdic,cl='red')

?結(jié)果示例:

自測題:
從中證800中任選一只股票,選定2012年至今的日度收盤價序列為研究樣本,以60天為窗寬,以核密度估計法滾動計算日度95%VaR,并畫出收盤價時序圖和VaR預(yù)測的最壞變化圖進行對比。并以樣本外一天是否超過VaR的次數(shù)來回測VaR,判定VaR的計算是否合理。
?信用風(fēng)險與分類模型
信用風(fēng)險指的是在金融交易中,由對手方可能的違約帶來的風(fēng)險。信用事件可以狹義地定義為債券的違約(Default on a bond),即債券發(fā)行機構(gòu)無法支付承諾的利息支付或本金償還, 但廣義的來說,信用風(fēng)險的變化就可以被稱作信用事件。
信用風(fēng)險其實包含了很多維度的風(fēng)險,其變化經(jīng)常是難以預(yù)計的,但在商業(yè)社會中,信用風(fēng)險往往具備雙向性,其變化的方式通常服從下圖所示的模式:

信用風(fēng)險計量有如下關(guān)鍵指標(biāo):
違約概率(probability of default, PD):客戶在一定時間內(nèi)違約的可能性,對應(yīng)于客戶信用評級,一般將違約概率轉(zhuǎn)換為客戶的信用評級。
違約損失率(loss given default, LGD):違約發(fā)生時風(fēng)險暴露的損失程度,對應(yīng)于債項評級。
風(fēng)險暴露(exposure at default, EAD):違約發(fā)生時可能發(fā)生損失的貸款額。
違約概率是指債務(wù)人未來發(fā)生違約的可能性大小,獲得違約概率最普遍的方法是根據(jù)一組具有相同風(fēng)險特征的債務(wù)人的違約歷史紀(jì)錄,計算發(fā)生違約的比率,作為類似債務(wù)人未來違約概率的估計。PD由債務(wù)人主體的信用水平?jīng)Q定,所以,PD常用于對公司或其他主體進行信用評級。以下是某評級機構(gòu)的對公貸款的評級情況:

違約損失率(LGD)反映一旦債務(wù)人違約將給債權(quán)人造成損失的嚴(yán)重程度,計算方法是違約后損失的金額與違約前總的風(fēng)險頭寸暴露之比。LGD決定了貸款回收的程度,LGD=1-回收率。對于同一債務(wù)人,不同的交易可能具有不同的LGD。對于同一債務(wù)人的兩筆貸款,如果一筆提供了抵押品,而另一筆沒有,那么前者的LGD將可能小于后者的LGD不僅受到債務(wù)人信用能力的影響,更受到交易的特定設(shè)計和合同的具體條款,如抵押、擔(dān)保等的影響。根據(jù)貸款的不同,其LGD的分布情況的例子如下:

風(fēng)險暴露(EAD)在不同的信用事件中有不同的定義:
1) 固定本金貸款 :EAD = 債項帳面價值+ 應(yīng)收利息
2) 未來不確定款項(貸款承諾、循環(huán)額度等) : EAD = 已使用的額度+ 應(yīng)收利息+ 未使用額度中預(yù)期提取金額
3) 衍生工具: EAD=市價+風(fēng)險溢量
本課主要介紹的是用分類模型來識別違約可能或預(yù)測PD的方法。分類模型的基本做法是,對于給定的一系列企業(yè)的指標(biāo)(數(shù)據(jù)來源可能是許多同質(zhì)企業(yè),或者各類型的企業(yè)都有),然后以一段時間的考察期,觀察企業(yè)是否發(fā)生違約,并以此考察期內(nèi)的所有觀測作為訓(xùn)練樣本,就可以估計分類模型,之后再通過估計出的分類模型來判別一家新的企業(yè)是否會違約?;镜姆诸惸P桶ǎ壕€性判別分析、Logit模型、Probit模型、支持向量機、決策樹、神經(jīng)網(wǎng)絡(luò)、Lasso回歸等方法。
下面以Logit回歸模型為例介紹使用分類模型法進行PD預(yù)測的主要步驟。
步驟1: 數(shù)據(jù)準(zhǔn)備
首先需要確定模型用于訓(xùn)練和驗證的樣本,例如,可以按70%和30%的比例隨機抽取總體樣本中的觀測分別作為訓(xùn)練樣本和驗證樣本;然后奇異值和缺失值進行處理,常見的方法包括直接刪除、中位數(shù)填充、插值法等等。直接刪除是刪除某個日期內(nèi)出現(xiàn)了指標(biāo)缺失情況的企業(yè)觀測,該方法雖簡單,但有可能導(dǎo)致樣本不足;中位數(shù)填充指的是用其他未缺失的指標(biāo)值的中位數(shù)代替缺失值進行填充;插值法可以是通過指標(biāo)的時間序列變化來進行插值。
步驟2:變量構(gòu)建
盡量收集全所有跟違約率有關(guān)的財務(wù)指標(biāo)、宏觀經(jīng)濟指標(biāo)、行業(yè)景氣指標(biāo)和市場指標(biāo),比如針對財務(wù)報表,如下的一些財務(wù)比率數(shù)據(jù)就可以計算出來:
經(jīng)營活動–例如存貨周轉(zhuǎn)率、預(yù)售賬款與銷售成本的比率、等等
資本結(jié)構(gòu)–例如固定資產(chǎn)占總資產(chǎn)比率、流動債務(wù)(current debt)占總債務(wù)的比率、等等
債務(wù)償還能力–利息比率(利息支出/總收入)、總債務(wù)/總資產(chǎn)、等等
杠桿–資產(chǎn)負(fù)債率(總負(fù)債/總資產(chǎn))、總負(fù)債/股東權(quán)益、等等
流動性–快速比率((現(xiàn)金+應(yīng)收款)/流動負(fù)債)、現(xiàn)金比率(現(xiàn)金及現(xiàn)金等價物/流動負(fù)債)、等等
盈利性–利潤率、資本回報率、等等
而宏觀經(jīng)濟指標(biāo)如工業(yè)增加值增速、CPI、PPI、PMI等也可以收集起來。
步驟3:模型建立
經(jīng)典的Logit回歸模型的形式是:

該模型主要包括3個部分:
隨機性部分:一個二元反應(yīng)變量y,y = 1 or 0 ,即事件可能發(fā)生或不會發(fā)生。對于銀行評級而言,y = 1即指違約事件,y = 0則為非違約事件。我們關(guān)注的是“y = 1”出現(xiàn)的概率,用P(y=1) 表示。
系統(tǒng)性部分:線性預(yù)測值在PD預(yù)測中,財務(wù)因素多為連續(xù)變量,而一些關(guān)于企業(yè)的定性數(shù)據(jù)絕大多數(shù)轉(zhuǎn)化為非連續(xù)變量。
關(guān)聯(lián)函數(shù):關(guān)聯(lián)函數(shù)能夠?qū)⒎磻?yīng)變量Y的隨機性部分和系統(tǒng)性部分聯(lián)系起來。Logit回歸法中使用的關(guān)聯(lián)函數(shù)為經(jīng)典聯(lián)系函數(shù),自變量P的經(jīng)典聯(lián)系函數(shù)(logit(P))是某一事件發(fā)生機率的對數(shù),即logit(P) = log(P/(1 ??P))
最后,各個主模型的PD結(jié)果通過Logit回歸導(dǎo)出:
?

一般來說,在PD預(yù)測公式中會用到4到8個財務(wù)因素,而可能用到的定性因素也在4個左右。
步驟4:模型評價
在將PD預(yù)測出來之后,其實模型的分類工作就基本完成,可以假設(shè)PD超過一個閾值的觀測將會發(fā)生違約,然后與實際數(shù)據(jù)(驗證樣本)對比,來評價模型的預(yù)測效果。常見的評價指標(biāo)包括簡單的基于假設(shè)檢驗的Neyman-Pearson原則,以及ROC曲線。
Neyman-Pearson原則指的是模型的第一類錯誤和第二類錯誤應(yīng)該滿足一定的條件。第一類錯誤(Type I Error)指的是將違約企業(yè)誤判為不違約的企業(yè),第二類錯誤(Tyep II Error)指的是將不違約的企業(yè)誤判為違約企業(yè)。Neyman-Pearson原則要求,第一類錯誤率和第二類錯誤率應(yīng)該滿足如下的關(guān)系式:
?接收操作特征曲線(receriver operating characteristic, ROC): ROC曲線及AUROC系數(shù)主要用來檢驗?zāi)P蛯蛻暨M行正確排序的能力。ROC曲線描述了在一定累計正??蛻舯壤碌睦塾嬤`約客戶的比例,模型的分別能力越強,ROC曲線越往左上角靠近。AUROC系數(shù)表示ROC曲線下方的面積。AUROC系數(shù)越高,模型的風(fēng)險區(qū)分能力越強。在下圖6.8中,AUROC系數(shù)表示ROC曲線下方的面積。
ROC曲線下面積的大小可以作為模型預(yù)測正確性高低的評判標(biāo)準(zhǔn)。即AUROC系數(shù)越大,表示該模型的區(qū)分能力越好。
除了采用Logit模型分類之外,常用的分類方法還有probit模型、最近鄰方法、支持向量機、神經(jīng)網(wǎng)絡(luò)等。
Probit模型
Probit模型與Logit模型非常類似,只是關(guān)聯(lián)函數(shù)變成了正態(tài)分布,即

如下所示的表格是某個需要分類的樣本的訓(xùn)練集和測試集(只顯示前27行)。該樣本是某互聯(lián)網(wǎng)企業(yè)注冊用戶的信用調(diào)查表,調(diào)查了用戶的年齡、性別、收入、住房、居住時間等狀況,同時收集了支付賬戶等級、支付金額等數(shù)據(jù),并且按照其之前的違約情況,將客戶分成了好客戶和壞客戶。總的客戶數(shù)量有3萬個,其中壞客戶(有過明確違約情況的)僅有688個。將前15000個作為訓(xùn)練樣本,后15000個作為需要分類驗證的樣本。
那么針對該樣本,先在Excel中將有序數(shù)據(jù)全部用自然數(shù)代替之后,再使用Logit回歸進行分類的R代碼如下:
#設(shè)定工作空間路徑
#讀取數(shù)據(jù),并清潔數(shù)據(jù)(將缺失簡單記作0)
fdata<-rea.sv('reitdtacsv'headT,strngAsFctrs=F)
m-roud(n/2)tdata-fdat[1:m];vdaa<-fat[(m+1):n,] #分出訓(xùn)練樣本和驗證樣本
#使用訓(xùn)練樣本估計Logit模型
?模型估計出的結(jié)果如下:
k<-predit.glm(,vat,type="resone",se.fit=T) #用估計出的模型擬合驗證樣本
###計算預(yù)測情況表格
maa <- data.frame(pdft = prdited, df = vta$deflt) #預(yù)測值和真實值表格
nr1<-0; nr2<-0 ?#令原假設(shè)是客戶不違約,統(tǒng)計第一類錯誤和第二類錯誤的次數(shù)
Ptble<-rbind(Pefult,Pnefult) ?#預(yù)測表現(xiàn)
##NP值計算
r1<-nr1/sum(ata$df==0) ?#第一類錯誤率
r2<-nr2/sum(mdt$df) ?#第二類錯誤率
NP<-r1/(1-r2) ?#NP值
###畫ROC曲線
#計算命中率和誤警率
HR<-sum(pft==vatadefultpt==1)/sum(vda$deft)
}
plot(TFR, THR, o") #畫出ROC曲線
?
例子: 從中證800中任意抽取一只股票,選取2012年至今的數(shù)據(jù),構(gòu)建如下指標(biāo),每60天的VaR(置信水平75%),每60天的波動率,每60天的累積交易量,每60天的離差(最大減最?。?,然后計次日的收益率低于昨日收盤算出來的VaR為違約事件。試使用如下的Logit模型擬合違約概率:?
以2012年至2014年的數(shù)據(jù)為樣本內(nèi),2015年數(shù)據(jù)為樣本外數(shù)據(jù)。請報告Logit模型的樣本內(nèi)回歸結(jié)果和樣本外分類效果。
編程的代碼如下:
##提取數(shù)據(jù)中的收盤價、交易量、最高價和最低價序列
cose-zdata[,4]
volm-zdata[,5]
high<-zdata[,2]
lo<-zdata[,3]
M15<-length(clos) #計算2015年的日期數(shù)
### VaR
defaut<-rep(0,n-len-1)
pre<-rep(0,n-len-1)
fori in 1:(n-len-1)){
mu<-mean(re[(i+1):(i+len)])
range[i]<-log(high[ (i+len)])-log(low[(i+len)])
}
indata<-tdata[1:(N-M15),]
outdata<-tdata[(N-M15+1):N,]
##logit 模型
km<-predict.glm(pm,outdata,type="response",se.fit=T)
predicted<-km$fit
###計算預(yù)測情況表格
mdata <- data.frame(pdft = m$fit, df = outa$deault) #預(yù)測值和真實值表格
nr1<-0; nr2<-0 ?#令原假設(shè)是客戶不違約,統(tǒng)計第一類錯誤和第二類錯誤的次數(shù)
Ptable<-rbind(Pfalt,Pndefault) ?#預(yù)測表現(xiàn)
##NP值計算
r1<-nr1/sum(mdata$df==0) ?#第一類錯誤率
r2<-nr2/sum(mdata$df) ?#第二類錯誤率
NP<-r1/(1-r2) ?#NP值
##ROC
plot(TFR,THR,type='l',main="ROCcurve",xlab="FalseAlarmRatio",ylab="Hit Ratio")
自測題
從中證800中隨機選擇50只股票(報告這50只股票的代碼),選取其2012年至今的數(shù)據(jù)進行如下的計算。
采用前3支選出來的股票和50支股票的等權(quán)重價格指數(shù)序列,以60天為時間窗口,計算95%置信水平下的單日VaR序列。畫出這些VaR序列的時序圖(4幅圖)。
在5%的顯著性水平下,對上面計算出的VaR序列進行回測,報告回測的結(jié)果(違反次數(shù),是否接受),并分析個股和指數(shù)在VaR取值和回測上的差異性。對于回測不合格的股票或等權(quán)重指數(shù),畫出其回測日的收盤價和對應(yīng)的VaR預(yù)測出的最壞可接受價格曲線,分析哪些交易日容易出現(xiàn)低于VaR預(yù)測的最壞價格的情形。
對于這50支股票,以90天為窗口計算最后選出來的3支股票的75%置信水平的單日VaR,并將收盤價低于VaR預(yù)測的最壞價格水平的交易日記為違約日,其余日期為不違約日。采用Logit模型,以昨日對數(shù)交易量、最近90天波動率、昨日價格振幅為因子,以2012至2013年的數(shù)據(jù)為訓(xùn)練樣本,2014至今的數(shù)據(jù)為預(yù)測樣本,對違約概率進行擬合和預(yù)測。報告擬合結(jié)果(Logit模型估計結(jié)果)和預(yù)測效果(包括NP值和ROC曲線)。
最受歡迎的見解
1.R語言基于ARMA-GARCH-VaR模型擬合和預(yù)測實證研究
2.R語言時變參數(shù)VAR隨機模型
3.R語言估計時變VAR模型時間序列的實證研究
4.R語言基于ARMA-GARCH過程的VAR擬合和預(yù)測
5.GARCH(1,1),MA以及歷史模擬法的VaR比較
6.R語言用向量自回歸(VAR)進行經(jīng)濟數(shù)據(jù)脈沖響應(yīng)
7.R語言實現(xiàn)向量自動回歸VAR模型
8.R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型
9.R語言VAR模型的不同類型的脈沖響應(yīng)分析