aa <- c(0.1,0.2,0.5,0.8,0.9)
qgamma(aa,1,1)+qgamma(aa,1,1)
[1] 0.2107210 0.4462871 1.3862944 3.2188758
[5] 4.6051702
qgamma(aa,2,1)
[1] 0.5318116 0.8243883 1.6783470 2.9943083
[5] 3.8897202
xx <- c(0, 100, 200, 500, 1000)
pdf <- c(0.3, 0.4, 0.15, 0.1, 0.05)
cdf <- c(0.3, 0.7, 0.85, 0.95, 1)
EX <- sum(xx*pdf)
aa <- c(0.22,0.3,0.39,0.8501, 0.95, 0.9999)
(TVaR.39 <- ((0.15*200+0.1*500+0.05*1000)+
100*(0.7-0.39))/(1-0.39))
aa <- c(0.9, 0.99, 0.999, 0.9999)
ss <- log(1000^2/(1.5*exp(2*(log(1000))))+1)
(VaR.ln <- exp(log(1000)-(0.5*ss^2)+ss*qnorm(aa)))
EY <- exp(log(1000)-0.5*ss^2+1/2*ss^2)
qgamma(aa,1.5,1.5/1000)
(TVaR.ln <- EY*(1-pnorm(qnorm(aa)-ss))/(1-aa))
(TVaR.G <- 1000*(1-pgamma(qgamma(aa,1.5,1.5/1000),2.5,1.5/1000))/(1-aa))
xx <- c(0, 100, 500, 1000, 5000, 10000)
px <- c(0.5, 0.3, 0.1, 0.05, 0.043, 0.007)
sum(xx*px)
sum(xx^2*px)
sum(xx^2*px)-(sum(xx*px))^2
(5000-3000)*0.043+(10000-3000)*0.007
sum(xx*px)-(10000-7000)*0.007
# Simulation
# Finite sum of independent rvs
##
#S = X1 + X2 + X3
##
#Distribution of X1 : log normal
#mu<-log(1000)-0.5
#sig<-1
# Distribution of X1 : gamma
al1<-2.5
be1<-2.5/1000
# Distribution of X2 : gamma
al2<-0.5
be2<-0.5/1000
# Distribution of X3 : log normal
mu<-log(1000)-0.5
sig<-1
##
#Expectations
#
EX1<-al1/be1
EX2<-al2/be2
EX3<-exp(mu+(sig^2)/2)
ES<-EX1+EX2+EX3
##
#Variance
#
VarX1<-EX1/be1
VarX2<-EX2/be2
VarX3<-exp(2*mu+2*(sig^2))-(EX3^2)
VarS<-VarX1+VarX2+VarX3
##
#Simulation
##
#simulation of nsim samples of U (a rv with Unif(0,1))
set.seed(19661122)
nsim<-1000000 # nb of simulations
nrisk<-3 # nb of risks (X1, X2, X3)
matU<-matrix(runif(nsim*nrisk),nsim,nrisk,byrow=TRUE)
# simulation of nsim samples of X1, X2, X3
vX1<-qgamma(matU[,1],al1,be1)
vX2<-qgamma(matU[,2],al2,be2)
vX3<-qlnorm(matU[,3],mu,sig)
vS<-vX1+vX2+vX3
c(EX1,mean(vX1))
[1] 1000.0000 998.6502
c(EX2,mean(vX2))
[1] 1000.0000 999.0069
c(EX3,mean(vX3))
[1] 1000.0000 999.7506
c(ES,mean(vS))
[1] 3000.000 2997.408
c(VarX1,var(vX1))
[1] 400000.0 398986.8
c(VarX2,var(vX2))
[1] 2000000 1985585
c(VarX3,var(vX3))
[1] 1718282 1699641
c(VarS,var(vS))
[1] 4118282 4077440
##
#Approximation of FS
# Build a function which computes
# the approximated values of FS from the sample vS
FSn<-ecdf(vS)
vx<-(0:100)*100
approxFS<-FSn(vx) # computes approximated values of FS(x) at components of vx
plot(vx,approxFS,type="l",main="Approximated values of cdf of S",xlab="x",ylab="")

###Approximation of VaRS and TVaRS
vkap<-(1:99)/100
approxVaRS<-quantile(vS,probs=vkap,type=1,names=FALSE) # Approximated values of VaR of S
plot(vkap,approxVaRS,type="l",main="Approximated values of VaR of S",xlab="kappa",ylab="")

##
funTVaR<-function(kap) mean(vS[vS>quantile(vS,probs=kap,type=1,names=FALSE)])
vkap<-(1:99)/100
approxTVaRS<-sapply(vkap,funTVaR)
matplot(vkap,cbind(approxVaRS,approxTVaRS),type="l",main="Approximated values of VaR and
TVaR of S",xlab="kappa",ylab="")

LS0tCnRpdGxlOiAiQUNUVS00NTcgKE1hc3QgNzI0KSBSaXNrIFRoZW9yeSIKYXV0aG9yOiAiUHJvZi4gTWVsaW5hIE1haWxob3QiCmRhdGU6ICIyMDI0LTEyLTI4IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCgoKYGBge3J9CmFhIDwtIGMoMC4xLDAuMiwwLjUsMC44LDAuOSkKI1ZhUiBvZiBhIHN1bSBvZiBpbmRlcCBleHBvbmVudGlhbHMKMipxZXhwKGFhLDEpCiNzaG91bGQgc2hvdyB0aGF0IFZhUiBvZiB0aGUgc3VtIGlzIG5vdCBhbHdheXMgc21hbGxlciB0aGFuIHN1bSBvZiBWYVJzLgpxZ2FtbWEoYWEsMiwxKQpgYGAKYGBge3J9Cnh4IDwtIGMoMCwgMTAwLCAyMDAsIDUwMCwgMTAwMCkKcGRmIDwtIGMoMC4zLCAwLjQsIDAuMTUsIDAuMSwgMC4wNSkKY2RmIDwtIGMoMC4zLCAwLjcsIDAuODUsIDAuOTUsIDEpCkVYIDwtIHN1bSh4eCpwZGYpCmFhIDwtIGMoMC4yMiwwLjMsMC4zOSwwLjg1MDEsIDAuOTUsIDAuOTk5OSkKKFRWYVIuMzkgPC0gKCgwLjE1KjIwMCswLjEqNTAwKzAuMDUqMTAwMCkrCgkJMTAwKigwLjctMC4zOSkpLygxLTAuMzkpKQoKYWEgPC0gYygwLjksIDAuOTksIDAuOTk5LCAwLjk5OTkpCnNzIDwtIGxvZygxMDAwXjIvKDEuNSpleHAoMioobG9nKDEwMDApKSkpKzEpCihWYVIubG4gPC0gZXhwKGxvZygxMDAwKS0oMC41KnNzXjIpK3NzKnFub3JtKGFhKSkpCkVZIDwtIGV4cChsb2coMTAwMCktMC41KnNzXjIrMS8yKnNzXjIpCnFnYW1tYShhYSwxLjUsMS41LzEwMDApCihUVmFSLmxuIDwtIEVZKigxLXBub3JtKHFub3JtKGFhKS1zcykpLygxLWFhKSkKKFRWYVIuRyA8LSAxMDAwKigxLXBnYW1tYShxZ2FtbWEoYWEsMS41LDEuNS8xMDAwKSwyLjUsMS41LzEwMDApKS8oMS1hYSkpCmBgYAoKCmBgYHtyfQp4eCA8LSBjKDAsIDEwMCwgNTAwLCAxMDAwLCA1MDAwLCAxMDAwMCkKcHggPC0gYygwLjUsIDAuMywgMC4xLCAwLjA1LCAwLjA0MywgMC4wMDcpCnN1bSh4eCpweCkKc3VtKHh4XjIqcHgpCnN1bSh4eF4yKnB4KS0oc3VtKHh4KnB4KSleMgooNTAwMC0zMDAwKSowLjA0MysoMTAwMDAtMzAwMCkqMC4wMDcKc3VtKHh4KnB4KS0oMTAwMDAtNzAwMCkqMC4wMDcKYGBgCgoKYGBge3J9CiMgU2ltdWxhdGlvbgojIEZpbml0ZSBzdW0gb2YgaW5kZXBlbmRlbnQgcnZzCiMjCiNTID0gWDEgKyBYMiArIFgzCiMjCiNEaXN0cmlidXRpb24gb2YgWDEgOiBsb2cgbm9ybWFsCiNtdTwtbG9nKDEwMDApLTAuNQojc2lnPC0xCiMgRGlzdHJpYnV0aW9uIG9mIFgxIDogZ2FtbWEKYWwxPC0yLjUKYmUxPC0yLjUvMTAwMAojIERpc3RyaWJ1dGlvbiBvZiBYMiA6IGdhbW1hCmFsMjwtMC41CmJlMjwtMC41LzEwMDAKIyBEaXN0cmlidXRpb24gb2YgWDMgOiBsb2cgbm9ybWFsCm11PC1sb2coMTAwMCktMC41CnNpZzwtMQojIwojRXhwZWN0YXRpb25zCiMKRVgxPC1hbDEvYmUxCkVYMjwtYWwyL2JlMgpFWDM8LWV4cChtdSsoc2lnXjIpLzIpCkVTPC1FWDErRVgyK0VYMwojIwojVmFyaWFuY2UKIwpWYXJYMTwtRVgxL2JlMQpWYXJYMjwtRVgyL2JlMgpWYXJYMzwtZXhwKDIqbXUrMiooc2lnXjIpKS0oRVgzXjIpClZhclM8LVZhclgxK1ZhclgyK1ZhclgzCiMjCiNTaW11bGF0aW9uCiMjCiNzaW11bGF0aW9uIG9mIG5zaW0gc2FtcGxlcyBvZiBVIChhIHJ2IHdpdGggVW5pZigwLDEpKQpzZXQuc2VlZCgxOTY2MTEyMikKbnNpbTwtMTAwMDAwMCAjIG5iIG9mIHNpbXVsYXRpb25zCm5yaXNrPC0zICMgbmIgb2Ygcmlza3MgKFgxLCBYMiwgWDMpCm1hdFU8LW1hdHJpeChydW5pZihuc2ltKm5yaXNrKSxuc2ltLG5yaXNrLGJ5cm93PVRSVUUpCiMgc2ltdWxhdGlvbiBvZiBuc2ltIHNhbXBsZXMgb2YgWDEsIFgyLCBYMwp2WDE8LXFnYW1tYShtYXRVWywxXSxhbDEsYmUxKQp2WDI8LXFnYW1tYShtYXRVWywyXSxhbDIsYmUyKQp2WDM8LXFsbm9ybShtYXRVWywzXSxtdSxzaWcpCnZTPC12WDErdlgyK3ZYMwpjKEVYMSxtZWFuKHZYMSkpCmMoRVgyLG1lYW4odlgyKSkKYyhFWDMsbWVhbih2WDMpKQpjKEVTLG1lYW4odlMpKQpjKFZhclgxLHZhcih2WDEpKQpjKFZhclgyLHZhcih2WDIpKQpjKFZhclgzLHZhcih2WDMpKQpjKFZhclMsdmFyKHZTKSkKIyMKI0FwcHJveGltYXRpb24gb2YgRlMKIyBCdWlsZCBhIGZ1bmN0aW9uIHdoaWNoIGNvbXB1dGVzCiMgdGhlIGFwcHJveGltYXRlZCB2YWx1ZXMgb2YgRlMgZnJvbSB0aGUgc2FtcGxlIHZTCkZTbjwtZWNkZih2UykKdng8LSgwOjEwMCkqMTAwCmFwcHJveEZTPC1GU24odngpICMgY29tcHV0ZXMgYXBwcm94aW1hdGVkIHZhbHVlcyBvZiBGUyh4KSBhdCBjb21wb25lbnRzIG9mIHZ4CnBsb3QodngsYXBwcm94RlMsdHlwZT0ibCIsbWFpbj0iQXBwcm94aW1hdGVkIHZhbHVlcyBvZiBjZGYgb2YgUyIseGxhYj0ieCIseWxhYj0iIikKIyMjQXBwcm94aW1hdGlvbiBvZiBWYVJTIGFuZCBUVmFSUwp2a2FwPC0oMTo5OSkvMTAwCmFwcHJveFZhUlM8LXF1YW50aWxlKHZTLHByb2JzPXZrYXAsdHlwZT0xLG5hbWVzPUZBTFNFKSAjIEFwcHJveGltYXRlZCB2YWx1ZXMgb2YgVmFSIG9mIFMKcGxvdCh2a2FwLGFwcHJveFZhUlMsdHlwZT0ibCIsbWFpbj0iQXBwcm94aW1hdGVkIHZhbHVlcyBvZiBWYVIgb2YgUyIseGxhYj0ia2FwcGEiLHlsYWI9IiIpCiMjCmZ1blRWYVI8LWZ1bmN0aW9uKGthcCkgbWVhbih2U1t2Uz5xdWFudGlsZSh2Uyxwcm9icz1rYXAsdHlwZT0xLG5hbWVzPUZBTFNFKV0pCnZrYXA8LSgxOjk5KS8xMDAKYXBwcm94VFZhUlM8LXNhcHBseSh2a2FwLGZ1blRWYVIpCm1hdHBsb3QodmthcCxjYmluZChhcHByb3hWYVJTLGFwcHJveFRWYVJTKSx0eXBlPSJsIixtYWluPSJBcHByb3hpbWF0ZWQgdmFsdWVzIG9mIFZhUiBhbmQKVFZhUiBvZiBTIix4bGFiPSJrYXBwYSIseWxhYj0iIikKYGBg