美文网首页
15金融风险分析与评估

15金融风险分析与评估

作者: Jachin111 | 来源:发表于2020-11-22 16:49 被阅读0次

    金融风险、VaR 和 ES

    金融风险
    金融风险,就是与金融市场活动有关的潜在损失。
    市场风险:所有与价格变动有关的风险,例如股权风险、利率风险和汇率风险。
    信用风险(违约风险):交易对手方不履行合约而导致的风险。
    操作风险:程序、人员和系统不完善导致的风险。
    流动性风险:持有头寸过大导致交易不能以当前价格成交的风险,或融资风险。
    金融风险常用度量工具
    债券市场:久期
    股票市场:贝塔系数
    衍生品市场:delta
    新标准:VaR,ES
    ……
    久期、贝塔系数和 delta 多年来在各自的市场中发挥着重要的作用,但它们有一个致命的缺陷,即没有金融学知识的人很难理解它们的含义。在信息披露中,我们需要一个更直观的风险指标,普通人也能理解,如此才能形成对市场的有效监管, VaR 和 ES 应运而生。
    风险价值 VaR
    风险价值 VaR (Value at Risk), 是指在一定概率水平(置信水平)下,在一定时间内(如一天,十天等),持有某种证券或投资组合可能遭受的最大损失。 从定义中,我们可以得知 VaR 有两个基本要素,一个是置信水平 c,另一个是时间段 T。 VaR 在概率统计意义上是一个特殊的分位数Quantile)。( * q th quantile, q = 1 - c. *) 设 L 为损失变量,L = - return。当收益 return 为负时,L 为正,则

    image.png
    图二:基于概率密度函数的 VaR 定义
    image.png
    图三:基于累积分布函数的 VaR 定义
    image.png
    图 2 和图 3 分别给出了基于概率密度函数和累积分布函数的 VaR 定义,这里的置信水平 c = 95%。
    例:银行 A 在 2017 年 10 月 2 日公布其持有的资产组合期限为 1 天,置信水平为 99% 的 VaR 为 5000 万元。 对于这则新信息,我们可以从以下三个角度进行解读:
    1,左尾分位数的理解:银行 A 在 10 月 3 日内资产组合的损失大于 5000 万元的概率等于 1%。,
    2,右尾分位数的理解:以 99% 的概率确信,银行 A 在 10 月 3 日内资产组合的损失不超过 5000 万元。
    3,回测的理解:平均而言,银行 A 在未来 100 天内有一天的损失会超过 5000 万元。
    VaR 最大的优点在于简单明了。它直接用货币单位来表示市场风险的大小,即使是没有任何专业背景的投资者或管理者,也能通过 VaR 值对当前市场风险的大小进行评价,方便信息披露,有利于市场监管。VaR 最大的的缺陷在于,不满足次可加性,它直接导致了我们在计算投资组合 VaR 时无法将风险分散效应考虑在内。此外,VaR 对损失或收益变量的尾部分布具体是什么样的一无所知。
    image.png
    尾部均值 ES
    又叫 条件 VaR或 预期尾部损失 ETL,是指在损失超过 VaR 的条件下,投资组合遭受的平均损失(期望值)。
    image.png
    假设随机变量 L 连续,则我们可以将 ES 写成如下积分形式:
    image.png
    概率密度函数图
    > curve(dnorm(x), from=-3, to=3, xlab='return', ylab='p(x)',las='1', main='Definition of VaR based on the probability density function', cex.main=0.8)
    > abline(v=qnorm(0.05), lty=2)
    > abline(v=0, lty=1)
    > text(-2, 0.2, '5%')
    > arrows(0, 0.15, qnorm(0.05), 0.15, length=0.15)
    > text(-0.9, 0.17, 'VaR')
    
    image.png
    累计分布函数图
    > curve(pnorm(x), from=-3, to=3, xlab='return', ylab='F(x)', las='1', main='Definition of VaR based on the cumulative distribution function', cex.main=0.8)
    > abline(h=0.05, lty=2)
    > axis(2, at=0.05, labels='0.05', las='1', par(cex=0.6))
    
    image.png

    Delta-normal方法计算 VaR 和 ES

    Delta-normal 方法
    “所有模型都是错误的,但其中一些是有用的。”模型的作用是抽象现实,我们在意的不是模型无法反映细枝末节,而是,我们应当将现实抽象到什么程度,亦即我们应当做出怎样的假设。
    对于一个投资组合来说,Delta-normal 方法作出了如下假设:
    正态性假设:投资组合中每种资产的收益率都服从正态分布。
    线性假设:投资组合的收益率是各项资产收益率的线性组合(不存在风险的对冲)。

    由以上两个假设,我们得出,投资组合的收益率也服从正态分布,我们想知道这个正态分布的分位数。 为了求出这个分位数,由概率统计知识,我们需要知道投资组合收益率分布的均值和方差(标准差),它们分别将标准正态分布的概率密度曲线进行平移和伸缩。方差和标准差所蕴含的信息量是完全相同的,但由于标准差和样本具有相同的单位,所以经济学中用标准差来表示“波动率”。 在金融中,通常假设收益率序列的均值为 0 ,因此我们只关心标准差。 事实上,就算没有“均值为 0”的假设,我们一样无需在意均值,因为我们想求的是相对 VaR 而非绝对 VaR,即我们想求的是投资组合相对于无风险资产的 VaR,均值项会和无风险收益率相抵消。
    一个价值 1 元的投资组合,在 c 的置信水平下,在未来一天内的 VaR 等于σ×α,其中σ是投资组合收益率序列的标准差,α是标准正态分布的 q 分位数,q = 1 - c。
    我们从两个方向对 VaR =σ×α作出拓展:投资组合价值不是 1 元, 而是W0,求未来T天的 VaR。
    由于引入了时间变量,我们需要增加两个新假设:
    投资组合价值在所求时间段内保持不变。
    投资组合每天的收益率相互独立(无相关性)。
    根据时间的平方根规则 一个价值W0​元的投资组合,在 c 的置信水平下,在未来T天内的

    image.png
    以上就是 Delta-normal 方法的公式,因为它把 VaR 拆分成了四个参数的简单乘积,所以又叫 VaR 的参数方法。
    W 0和T是我们自行确定的,α可以在标准正态分布表查到,我们唯一不知道的就是波动率
    σ。
    GARCH 模型
    ARCH 和 GARCH 模型,这些模型都在对波动率σ建模,目的是通过历史数据预测未来的波动率。这其中隐含的假设是,过去的模式将延续到未来,没有新冲击 出现。 假设投资组合的对数收益率序列为{rt},将rt拆分为均值项μt和随机扰动项at,即
    image.png
    rt服从 ARMA(p, q)过程,即
    image.png
    ARCH(p) 模型假设:
    image.png
    其中
    image.png
    GARCH(p, q) 模型假设:
    image.png
    其中
    image.png
    收益率序列的随机扰动项虽然无(线性)自相关,但是存在高阶(非线性)的相关性。ARCH 和 GARCH 模型刻画的都是随机扰动项的二阶相关性,如此就能解释收益率序列的一些特征,比如波动群集性。
    ** RiskMetrics 方法**
    在简单形式中,RiskMetrics 假设随机扰动项at服从条件正态分布(给定 t - 1 时刻的历史信息)
    image.png
    其中
    image.png
    对比 GARCH 模型和 RiskMetrics 方法中的模型,可以发现,后者的 volatility equation 里滞后阶数 p 和 q 都等于1,没有常数项α0
    (在计量中我们把常数项也叫做漂移项),而且α1+β1=1,我们把α1+β1=1的 GARCH 模型叫做 IGARCH 模型,因此 RiskMetrics 方法中的模型实际上是一个不含漂移项的 IGARCH(1,1)模型。

    实例: 假设某投资者持有价值 100 万美元的 GOOGLE 公司股票,请利用过去 5 年(2012-09-27 到 2017-09-27)的日度交易数据预测未来一周内该头寸在 95% 的置信水平下可能遭受的最大损失和平均损失。
    数据处理

    > options(stringsAsFactors=F)
    > da <- readLines("http://labfile.oss.aliyuncs.com/courses/954/GOOGL.csv")
    > da <- unlist(strsplit(da, split=","))
    > da <- matrix(da, ncol=7, byrow=T)
    > colnames(da) <- da[1,]
    > da <- as.data.frame(da[-1,])
    > date <- as.data.frame(as.Date(da[,1]))
    > expr <- da[,2:ncol(da)]
    > expr <- as.data.frame(sapply(expr, as.numeric))
    > da <- cbind(date, expr)
    > colnames(da)[1] <- "Date"
    > colnames(da)[6] <- "Adj.Cloas"
    > head(da)
            Date     Open     High      Low    Close Adj.Cloas   Volume
    1 2012-09-26 375.3003 381.0010 370.8709 377.1071  377.1071 11334400
    2 2012-09-27 380.3553 381.8018 376.2012 378.6286  378.6286  7854300
    3 2012-09-28 377.4525 380.0300 375.9510 377.6276  377.6276  5561400
    4 2012-10-01 379.9049 382.8829 378.4835 381.2713  381.2713  6329600
    5 2012-10-02 382.9830 383.3784 375.5105 378.8739  378.8739  5574800
    6 2012-10-03 378.2383 382.3423 376.4765 381.6316  381.6316  4412100
    > dim(da)
    [1] 1258    7
    

    可以看到,da 包含 7 个变量,1258 个样本,7 个变量依次为日期、开盘价、最高价、最低价、收盘价、调整后的收盘价和交易量。

    > loss <- -diff(log(da$Adj.Cloas))*100
    > head(loss)
    [1] -0.4026585  0.2647271 -0.9602528  0.6307764 -0.7252448 -0.7252390
    

    查看了 loss 变量的前 6 行。由于是日度数据,对数收益率或损失率都非常小,即使进行了百分化,也只有零点几。
    一般 GARCH 模型计算 VaR 和 ES
    误用模型的害处远大于不用模型。
    确定均值方程(以使用 ARMA 模型为例)
    平稳性检验:如果是非平稳过程,则需差分,将序列转化为平稳过程。
    相关性检验:确定 ARMA 的阶数 p 和 q。
    模型检验:检验均值模型是否充分,即检验残差项是否还存在序列相关。
    ARCH 效应检验:检验均值方程残差项的平方是否存在序列相关。
    对波动率建模(以使用 GARCH 族模型)
    建立模型:确认 ARCH 效应显著后,选择合适的模型来拟合残差。
    模型检验:检验波动率模型是否充分,即检验标准化残差的平方是否存在序列相关。
    随机扰动项分布检验:检验我们使用的 GARCH 模型中对随机扰动项的分布的假设是否合理,即检验标准化残差是否服从特定的分布(如 GARCH 模型默认的正态分布)
    所有这些步骤都可以看作是对随机扰动项的提纯。我们使用的模型(无论是 ARMA 还是 GARCH),目的都在于刻画相关性(ARMA 刻画线性相关,GARCH 刻画非线性相关)。把相关的关系剔除掉,剩下的就是一个纯粹的、服从白噪声过程的随机扰动项。而这些时间序列里的相关性,就是我们预测未来的根基。
    特别注意:大多数资产的收益率序列相关性非常弱(如果收益率序列具有显著的相关性,我们就能轻易预测未来收益,进行无风险套利)。因此,我们非常简单地使用收益率序列的算数平均值代替均值方程,然后检验 ARCH 效应。

    对于 GARCH 模型,还没有公认的较好的定阶方法,黄金法则是 p,q 值一般不超过 2。

    > library(rugarch)
    > spec1 <- ugarchspec(mean.model=list(armaOrder=c(0, 0), include.mean=T), variance.model=list(garchOrder=c(1, 1)))
    > fit1 <- ugarchfit(data=loss, spec=spec1)
    > forecast1 <- ugarchforecast(fit1, n.ahead=5)
    

    spec1 中设置的参数,均值模型的 ARMA 阶数 p,q 都等于 0,包含均值项,也就是说,均值方程用简单的算数平均数代替。波动率模型设置为 GARCH(1,1)模型,可以使用 show(fit1) 命令来观察模型参数及一些统计检验的信息。 由于我们要预测未来一周的 VaR 和 ES,一周共有 5 个交易日,因此设置 n.ahead = 5。

    > sigmahat <- sigma(forecast1)
    > sigmahat
        1973-06-11 08:00:00
    T+1            1.127331
    T+2            1.235485
    T+3            1.311292
    T+4            1.365776
    T+5            1.405539
    > wvarfore <- sum(sigmahat^2)
    > VaR095 <- qnorm(0.95)*sqrt(wvarfore)
    > ES095 <- dnorm(qnorm(0.95))*sqrt(wvarfore)/0.05
    > print(cbind(VaR095, ES095))
           VaR095    ES095
    [1,] 4.755211 5.963227
    

    本实验计算的是相对 VaR,因此不需要加均值项。如果计算绝对 VaR,加上该序列的均值即可。 计算所得单位头寸的 VaR = 4.7552%,ES = 5.9632%,则该投资组合的 VaR 为

    image.png
    ES 为
    image.png
    也就是说,我们以 95% 的概率确信,该头寸在未来一周内可能遭受的损失不超过 47552 美元,如果不幸超过该损失,那么损失的平均水平为 59632 美元。
    如果使用平方根规则,n.ahead可以设置为 1,预测未来 1 天的波动率,再乘上5,结果会有细微差别
    RiskMetrics 方法计算 VaR 和 ES
    RiskMetrics 方法使用的模型其实是一个不含漂移项的 IGARCH(1,1)模型
    > spec2 <- ugarchspec(mean.model=list(armaOrder=c(0,0),include.mean=FALSE), variance.model=list(model='iGARCH', garchOrder=c(1,1)))
    > fit2 <- ugarchfit(data=loss,spec=spec2)
    > forecast2 <- ugarchforecast(fit2, n.ahead=1)
    Warning message:
    In `setfixed<-`(`*tmp*`, value = as.list(pars)) :
      Unrecognized Parameter in Fixed Values: beta1...Ignored
    > rsigmahat <- sigma(forecast2)
    > rVaR095 <- qnorm(0.95)*sqrt(5)*rsigmahat
    > rES095 <- dnorm(qnorm(0.95))*sqrt(5)*rsigmahat/0.05
    > print(cbind(rVaR095, rES095))
        1973-06-11 08:00:00 1973-06-11 08:00:00
    T+1            3.828858            4.801542
    

    计算所得单位头寸的 VaR = 3.8289%,ES = 4.8015%,则该投资组合的 VaR 为


    image.png

    ES 为


    image.png
    与使用 GARCH(1,1)模型的计算结果有差别,这说明了模型选择会对计算结果产生重要影响。

    历史模拟法、蒙特卡罗模拟法计算 VaR 和 ES

    历史模拟法假设随机变量在未来的分布等同于在过去的分布,而蒙特卡罗模拟法则人为设定随机变量在未来的分布类型(一种特殊的分布,如正态分布、学生 t 分布等),用历史数据估计这种分布的具体参数。
    历史模拟法
    在《土拨鼠之日》中,男主角作为一名记者去小镇上报导当地的土拨鼠日庆典,一场暴风雪耽误了回程,他只好在小镇过夜。第二天,他惊奇地发现自己不但被滞留在了小镇上,更可怕的是被滞留在了土拨鼠之日,昨天的一切都在重演,他被困在了同一天。 现在假设随机变量(损失变量)是男主角,它也被永久地困在了同一天。这一天在不断重演,每个“新”的一天,它都随机地取一个值。我们不知道随机变量的概率分布具体什么样,也就是说我们不知道随机变量每种取值的概率是多大,但我们可以用频率代替概率,通过很多天的取值来估计。 历史模拟法,就是假设随机变量在历史上不断重演,它的分布保持不变,我们可以通过历史取值来估计概率分布。
    蒙特卡罗模拟法
    电影中,楚门生活在一个人为设置的世界里,每天沿着同样的路去公司上班,与相同的人在固定的地点相遇,一成不变地进行寒暄……与《土拨鼠之日》不同,楚门面临的世界不是在一味地重复过去,而是向前发展的。我们可以从历史信息中估计一些参数(比如在某时刻会和某人相遇),推断出未来的分布。 蒙特卡罗模拟法以现在为起点,假设标准化残差服从特殊的分布,模拟出随机变量在未来的无数种取值,每种取值有一定的概率,从而形成了未来随机变量的概率分布。

    实例: 假设某投资者持有价值 100 万美元的 GOOGLE 公司股票,请利用过去 5 年(2012-09-27 到 2017-09-27)的日度交易数据预测未来一周内该头寸在 95% 的置信水平下可能遭受的最大损失和平均损失。
    数据处理

    > options(stringsAsFactors=F)
    > da <- readLines("http://labfile.oss.aliyuncs.com/courses/954/GOOGL.csv")
    > da <- unlist(strsplit(da, split=","))
    > da <- matrix(da, ncol=7, byrow=T)
    > colnames(da) <- da[1,]
    > da <- as.data.frame(da[-1,])
    > date <- as.data.frame(as.Date(da[,1]))
    > expr <- da[,2:ncol(da)]
    > expr <- as.data.frame(sapply(expr, as.numeric))
    > da <- cbind(date, expr)
    > colnames(da)[1] <- "Date"
    > colnames(da)[6] <- "Adj.Cloas"
    > head(da)
            Date     Open     High      Low    Close Adj.Cloas   Volume
    1 2012-09-26 375.3003 381.0010 370.8709 377.1071  377.1071 11334400
    2 2012-09-27 380.3553 381.8018 376.2012 378.6286  378.6286  7854300
    3 2012-09-28 377.4525 380.0300 375.9510 377.6276  377.6276  5561400
    4 2012-10-01 379.9049 382.8829 378.4835 381.2713  381.2713  6329600
    5 2012-10-02 382.9830 383.3784 375.5105 378.8739  378.8739  5574800
    6 2012-10-03 378.2383 382.3423 376.4765 381.6316  381.6316  4412100
    > dim(da)
    [1] 1258    7
    > 
    > loss <- -diff(log(da$Adj.Cloas))*100
    > head(loss)
    [1] -0.4026585  0.2647271 -0.9602528  0.6307764 -0.7252448 -0.7252390
    

    历史模拟法计算 VaR 和 ES

    > VaR1 <- quantile(loss, 0.95)
    > VaR1
         95% 
    2.072488 
    
    历史模拟法计算所得单位头寸在未来一天内的 VaR 为 2.0725%,考虑未来一周,我们可以使用时间的平方根规则,将单日 VaR 乘上 image.png

    ,得到多期 VaR,再乘上金额得到整个头寸的 VaR。
    我们也可以放弃时间平方根规则的假设,将 5 日作为一个单位考虑,这意味着我们要用滚动窗口形成 5 日损失变量的序列,再求这个序列的分位数。
    ES 是条件期望,在离散情形下,ES 是满足一定条件(大于 VaR)的损失变量的算术平均值。因此我们要把大于 VaR 的损失变量挑选出来,最直接的方法是对损失变量排序。

    > sloss <- sort(loss, decreasing=F)
    > head(sloss)
    [1] -15.064535 -12.923968  -7.434589  -5.455236  -5.350325  -4.629771
    

    sloss 变量是经过升序排列后的 loss 变量。 我们求最顶尖的那 5%的损失变量的均值,即为 ES。

    > ES1 <- sum(sloss[length(sloss):round(0.95*length(sloss))])/(length(sloss) - round(0.95*length(sloss)))
    > ES1
    [1] 2.942944
    

    计算所得单位头寸单日 ES 为2.9429%。
    蒙特卡罗模拟法计算 VaR 和 ES
    蒙特卡罗模拟法需要人为设定一个特殊的分布。在这里,我们假设标准化残差服从的是学生 t 分布,你也可以假设它服从正态分布或其它分布。

    > library(rugarch)
    > library(fGarch)
    > spec3 <- ugarchspec(mean.model=list(armaOrder=c(0, 0), include.mean=T), variance.model=list(garchOrder=c(1, 1)), distribution.model='std')
    > fit3 <- ugarchfit(data=loss, spec=spec3)
    > show(fit3)
    
    *---------------------------------*
    *          GARCH Model Fit        *
    *---------------------------------*
    
    Conditional Variance Dynamics   
    -----------------------------------
    GARCH Model : sGARCH(1,1)
    Mean Model  : ARFIMA(0,0,0)
    Distribution    : std 
    
    Optimal Parameters
    ------------------------------------
            Estimate  Std. Error   t value Pr(>|t|)
    mu     -0.068012    0.030475   -2.2318 0.025631
    omega   0.008991    0.003801    2.3653 0.018013
    alpha1  0.010173    0.002131    4.7728 0.000002
    beta1   0.984053    0.000897 1096.8202 0.000000
    shape   4.015649    0.465242    8.6313 0.000000
    
    Robust Standard Errors:
            Estimate  Std. Error   t value Pr(>|t|)
    mu     -0.068012    0.028073   -2.4227 0.015405
    omega   0.008991    0.005080    1.7699 0.076748
    alpha1  0.010173    0.002676    3.8020 0.000144
    beta1   0.984053    0.000415 2373.6320 0.000000
    shape   4.015649    0.537175    7.4755 0.000000
    
    LogLikelihood : -2023.478 
    
    Information Criteria
    ------------------------------------
                       
    Akaike       3.2275
    Bayes        3.2479
    Shibata      3.2275
    Hannan-Quinn 3.2352
    
    Weighted Ljung-Box Test on Standardized Residuals
    ------------------------------------
                            statistic p-value
    Lag[1]                      1.734  0.1879
    Lag[2*(p+q)+(p+q)-1][2]     1.881  0.2833
    Lag[4*(p+q)+(p+q)-1][5]     2.468  0.5126
    d.o.f=0
    H0 : No serial correlation
    
    Weighted Ljung-Box Test on Standardized Squared Residuals
    ------------------------------------
                            statistic p-value
    Lag[1]                     0.3009  0.5833
    Lag[2*(p+q)+(p+q)-1][5]    0.5549  0.9489
    Lag[4*(p+q)+(p+q)-1][9]    0.7447  0.9945
    d.o.f=2
    
    Weighted ARCH LM Tests
    ------------------------------------
                Statistic Shape Scale P-Value
    ARCH Lag[3]    0.1086 0.500 2.000  0.7417
    ARCH Lag[5]    0.4886 1.440 1.667  0.8870
    ARCH Lag[7]    0.5383 2.315 1.543  0.9748
    
    Nyblom stability test
    ------------------------------------
    Joint Statistic:  1.6117
    Individual Statistics:             
    mu     0.1035
    omega  0.6253
    alpha1 0.3738
    beta1  0.5808
    shape  0.3606
    
    Asymptotic Critical Values (10% 5% 1%)
    Joint Statistic:         1.28 1.47 1.88
    Individual Statistic:    0.35 0.47 0.75
    
    Sign Bias Test
    ------------------------------------
                       t-value    prob sig
    Sign Bias           0.2949 0.76810    
    Negative Sign Bias  1.8162 0.06958   *
    Positive Sign Bias  0.7936 0.42759    
    Joint Effect        3.9465 0.26730    
    
    
    Adjusted Pearson Goodness-of-Fit Test:
    ------------------------------------
      group statistic p-value(g-1)
    1    20     12.29       0.8728
    2    30     24.50       0.7037
    3    40     22.65       0.9831
    4    50     29.91       0.9856
    
    
    Elapsed time : 0.1625979 
    

    之所以要查看模型拟合结果,是因为我们要把这些估计得到的参数用于未来的模拟。 观察结果中 Optimal Parameters 那一栏,将估计值存储在下列变量中。

    > mu <- -0.068012
    > alpha <- c(0.008991, 0.010173)
    > beta <- 0.984053
    > df <- 4.015570
    > sig <- sigma(fit3)
    
    > t <- 5
    > nround <- 30000
    > set.seed(42)
    > err <- matrix(rstd(t*nround, mean=0, sd=1, nu=df), t, nround)
    > ini <- c(loss[1257], sig[1257])
    > xt <- NULL
    > 
    > for (j in 1:nround){
    +   lt <- NULL
    +   at <- ini[1] - mu
    +   vart <- ini[2]^2
    +   for (i in 1:t){
    +     var <- alpha[1] + alpha[2]*at[i]^2 + beta*vart[i]
    +     vart <- c(vart, var)
    +     at <- c(at, sqrt(var)*err[i, j])
    +     lt <- c(lt, at[i+1] + mu)
    +   }
    +   xt <- c(xt, sum(lt))
    + }
    
    > VaR2 <- quantile(xt, 0.95)
    > VaR2
         95% 
    3.469697 
    > idx <- c(1:nround)[xt>VaR2]
    > ES2 <- mean(xt[idx])
    > ES2
    [1] 4.887325
    

    计算所得单位头寸在未来一周内的 VaR 为 3.4697%,ES 为 4.8874%。

    分位数回归法计算 VaR

    不需要假设随机变量的分布类型,只要求分布的延续性。
    线性回归是一种特殊的分位数回归。 对比线性回归和分位数回归,我们发现,它们的解释变量都是由我们选定的,区别在于被解释变量上。线性回归的被解释变量是期望值,也就是均值。而分位数回归的被解释变量是分位数。

    实例: 假设某投资者持有价值 100 万美元的 GOOGLE 公司股票,请利用过去 5 年(2012-09-27 到 2017-09-27)的日度交易数据预测未来一天内该头寸在 95% 的置信水平下可能遭受的最大损失。 分位数回归的解释变量采用 Gaussian GARCH(1,1)模型下滞后一阶的波动率、滞后一阶损失变量的绝对值,判断它们的系数在α=0.05 的显著性水平下是否显著。
    数据处理

    > options(stringsAsFactors=F)
    > dd <- readLines("http://labfile.oss.aliyuncs.com/courses/954/GOOGL-rq.csv")
    > dd <- unlist(strsplit(dd, split=","))
    > dd <- matrix(dd, ncol=3, byrow=T)
    > colnames(dd) <- dd[1,]
    > dd <- as.data.frame(dd[-1,])
    > dd <- as.data.frame(sapply(dd, as.numeric))
    > head(dd)
             loss     sigl      absl
    1  0.26472709 1.385217 0.4026585
    2 -0.96025281 1.225897 0.2647271
    3  0.63077637 1.142523 0.9602528
    4 -0.72524475 1.187073 0.6307764
    5 -0.72523899 1.169602 0.7252448
    6  0.05210022 1.155311 0.7252390
    

    dd 由 3 列(3 个变量)构成,它们分别是损失变量 loss,滞后一阶的波动率 sigl,滞后一阶的损失变量绝对值 absl。
    分位数回归

    > library(quantreg)
    > mm <- rq(loss~sigl+absl, tau=0.95, data=dd)
    > summary(mm)
    
    Call: rq(formula = loss ~ sigl + absl, tau = 0.95, data = dd)
    
    tau: [1] 0.95
    
    Coefficients:
                Value   Std. Error t value Pr(>|t|)
    (Intercept) 1.00424 0.32032    3.13514 0.00176 
    sigl        0.49267 0.21619    2.27889 0.02284 
    absl        0.39962 0.15122    2.64261 0.00833 
    

    从回归结果中我们可以看到,常数项、sigl 和 absl 的系数在α=0.05 的显著性水平下都显著,因为它们的 p 值都小于 0.05。


    image.png

    单位头寸在未来一天内的 VaR 为 1.7322%。算式中的 1.00424,0.49267,0.39962 分别为分位数回归结果中的常数项、sigl 系数和 absl 系数估计值。1.204513 和 0.3365871 分别为当期的波动率和损失变量绝对值,它们相对于下一期(我们要估计的那一期)来说是滞后一期的解释变量。

    相关文章

      网友评论

          本文标题:15金融风险分析与评估

          本文链接:https://www.haomeiwen.com/subject/dbnriktx.html