требование к капиталу платежеспособности с использованием копул - PullRequest
0 голосов
/ 29 марта 2020

Я хочу доказать, что при использовании копул СКВ для платежеспособности 2 может быть ниже, чем при использовании стандартной формулы. В следующем коде я моделирую три различных распределения, я вычисляю scr, а затем подгоняю связку и вычисляю scr снова. Верны ли мои расчеты? Спасибо

library(scatterplot3d)
library(MASS)
library(psych)
library(actuar)
set.seed(100)
n<-20000
m <- 3
mu    <- rep(0, m)
sigma <- matrix(c(1.0,  0.5,  0.25,
                  0.5,  1.0, 0.25,
                  0.25, 0.25,  1.0), nrow=3)

x <- mvrnorm(n, mu=mu, Sigma=sigma, empirical=TRUE)
colnames(x) <- paste0("x",1:m)
cor(x, method='spearman')  

k <- pnorm(x)
#first risk-----------------------------

z1 <- qgamma(k[,1], shape=2,  scale=9)

summary(z1)
#fsecond risk-----------------------------

z2 <-  qlnorm(k[,2],meanlog = 5, sdlog = 1)

summary(z2)
#third risk-----------------------------

z3 <-     qpareto(k[,3], 1,2)

summary(z3)
z  <- cbind(z1,z2,z3)
cor(z, meth='spearman')
pairs.panels(z)

library(VineCopula)
library(copula)
u <- pobs(as.matrix(cbind(z1,z2,z3)))[,1]
d <- pobs(as.matrix(cbind(z1,z2,z3)))[,2]
selectedCopula <- BiCopSelect(u,d,familyset=c(3,4,5))
selectedCopula
summary(selectedCopula)

my_dist <- mvdc(frankCopula(param = 3.32, dim = 3), margins = c("gamma","lnorm","pareto"), paramMargins = list(list(2,9), list(5,1),list(1,2)))

# Generate random sample observations from the multivariate distribution
v <- rMvdc(100000, my_dist)
# Compute the density
pdf_mvd <- dMvdc(v, my_dist)
plot(pdf_mvd)
# Compute the CDF
cdf_mvd <- pMvdc(v, my_dist)


fr<-frankCopula(param = 3.32,dim=2)

plot(fr,n=4000,main="Frank Copula with theta = 3.32",col="deepskyblue2")
persp(fr, dCopula, main="Frank Copula Density", xlab="U1", ylab="U2", theta=-30,col="deepskyblue2")
persp(fr, pCopula, main="Frank Copula CDF", xlab="U1", ylab="U2", theta=-10,col="deepskyblue2")




#scr for extrernla model-------------------------------------

scr1<-quantile(z1,0.995)-mean(z1)
scr2<-quantile(z2,0.995)-mean(z2)
scr3<-quantile(z3,0.995)-mean(z3)

scr<-sqrt(scr1^2+scr2^2+scr3^2+2*0.5*scr1*scr2+2*0.25*scr1*scr3+2*0.25*scr3*scr2)
#scr for copula model-------------------------------------



scr1c<-quantile(v[,1],0.995)-mean(v[,1])
scr2c<-quantile(v[,2],0.995)-mean(v[,2])
scr3c<-quantile(v[,3],0.995)-mean(v[,3])

scrc<-sqrt(scr1c^2+scr2c^2+scr3c^2+2*0.5*scr1c*scr2c+2*0.25*scr1c*scr3c+2*0.25*scr3c*scr2c)

Обратите внимание, что значения корреляции фиксированы для обоих методов.

Нужно ли рассчитывать SCR, используя связки с

m<-quantile(v,0.995)-mean(v)
...