商院本科生吧 关注:3贴子:54
  • 3回复贴,共1

浦发银行VaR值计算方法汇总

只看楼主收藏回复

##浦发银行VaR度量
##第一步,加载包
library(PerformanceAnalytics)
library(tseries)
library(quantmod)
##第二步,爬取数据
setSymbolLookup(PFYH=list(name='600000.ss',src='yahoo'))
getSymbols("PFYH",from="2014-03-12",to="2018-5-22")
setSymbolLookup(SZZS=list(name='000001.ss',src='yahoo'))
getSymbols("SZZS",from="2014-03-12",to="2018-5-22")
##第三步,数据基本分析
str(PFYH)
tail(PFYH)
pfyhspj=Cl(PFYH)
tail(pfyhspj)
##对数化差分处理
pfyhspj.ret=diff(log(pfyhspj))
tail(SZZS)
szzsspj=Cl(SZZS)
tail(szzsspj)
szzsspj.ret=diff(log(szzsspj))
##合并数据
datahb=merge(pfyhspj.ret,szzsspj.ret)
datahbna=na.omit(datahb)
head(datahbna)
##可视化
plot(pfyhspj.ret,col="red",main = "浦发银行收盘价日收益率")
plot(szzsspj.ret,col="pink",main = "上证指数收盘价日收益率")
pairs(data.frame(datahbna), pch=20, col='darkblue',
main="浦发银行同上证指数相关关系")
plot.zoo(datahbna,col=3:4,main = "浦发银行同上证指数日收益率")
##方法1,VaR模型法,组合情况下
##install.packages("vars")
library(vars)
var=VAR(datahbna,lag.max=4,ic="AIC")
summary(var)
plot(var)
coef(var)
##方法2,历史模拟法,单独处理
V=VaR(pfyhspj.ret,p=0.95,method = "historical")
V
##组合情况下数据分析
##同上证指数组合情况下并单独表示
V1=VaR(datahbna,p=0.95,method = "historical")
V1
##资产组合情况下的VaR值
V2=VaR(datahbna,portfolio_method = "component")
V2






IP属地:湖南1楼2018-05-23 15:03回复
    更多的方法更新:
    ##方法3,公式法则
    r=na.omit(pfyhspj.ret)
    m <- mean(r)
    s <- sd(r)
    V3 <- -qnorm(0.05, m, s)
    print(V3)
    ##说明下跌不会超过2.9%的可能性为95%
    ##方法4,历史模拟法
    V4<- -quantile(r, 0.05)
    print(V4)
    ##方法5,蒙特卡洛模拟
    sim_norm_return <- rnorm(10000, m, s)
    V5 <- -quantile(sim_norm_return, 0.05)
    print(V5)
    ##调整,分配数量原则
    length(r)
    sim_return <- r[ceiling(runif(10000)*1024)]
    V6<- -quantile(sim_return, 0.05)
    print(V6)
    结果展示:
    > V1
    X600000.SS.Close X000001.SS.Close
    VaR -0.02666209 -0.02218556
    > V2
    $MVaR
    [1] 0.02518434
    $contribution
    X600000.SS.Close X000001.SS.Close
    0.01229424 0.01289010
    $pct_contrib_MVaR
    X600000.SS.Close X000001.SS.Close
    0.4881701 0.5118299
    > print(V3)
    [1] -0.02910112
    > print(V4)
    5%
    0.02666209
    > print(V5)
    5%
    0.02953683
    > print(V6)
    5%
    0.02634703


    IP属地:湖南2楼2018-05-23 15:30
    回复
      注意正负号,原因在于选择的是0.95还是0.05。


      IP属地:湖南3楼2018-05-23 15:31
      回复
        自己搞了一个贴吧呀哈哈哈,我也关注VaR计算,一起交流吧,我的v wapmap


        4楼2020-03-04 17:11
        回复