inst/doc/Guide_cvar.R

### R code from vignette source 'Guide_cvar.Rnw'

###################################################
### code chunk number 1: Guide_cvar.Rnw:57-59
###################################################
library(cvar)
pd <- packageDescription("cvar")


###################################################
### code chunk number 2: Guide_cvar.Rnw:205-208
###################################################
cvar::VaR(qnorm, p_loss = 0.05, dist.type = "qf")
cvar::VaR(qnorm, p_loss = 0.05)
cvar::VaR(qnorm)


###################################################
### code chunk number 3: Guide_cvar.Rnw:212-213
###################################################
cvar::VaR(qnorm, p_loss = c(0.01, 0.05))


###################################################
### code chunk number 4: Guide_cvar.Rnw:220-222
###################################################
muA <- 0.006408553
sigma2A <- 0.0004018977


###################################################
### code chunk number 5: Guide_cvar.Rnw:225-226
###################################################
res1 <- cvar::VaR(qnorm, p_loss = 0.05, mean = muA, sd = sqrt(sigma2A))


###################################################
### code chunk number 6: Guide_cvar.Rnw:231-233
###################################################
res2 <- cvar::VaR(qnorm, p_loss = 0.05, intercept = muA, slope = sqrt(sigma2A))
abs((res2 - res1)) # 0, intercept/slope equivalent to mean/sd


###################################################
### code chunk number 7: Guide_cvar.Rnw:237-244
###################################################
## with cdf the precision depends on solving an equation
res1a <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   mean = muA, sd = sqrt(sigma2A))
res2a <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   intercept = muA, slope = sqrt(sigma2A))
abs((res1a - res2)) # 3.287939e-09
abs((res2a - res2)) # 5.331195e-11, intercept/slope better numerically


###################################################
### code chunk number 8: Guide_cvar.Rnw:250-257
###################################################
## as above, but increase the precision, this is probably excessive
res1b <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   mean = muA, sd = sqrt(sigma2A), tol = .Machine$double.eps^0.75)
res2b <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   intercept = muA, slope = sqrt(sigma2A), tol = .Machine$double.eps^0.75)
abs((res1b - res2)) # 6.938894e-18 # both within machine precision
abs((res2b - res2)) # 1.040834e-16


###################################################
### code chunk number 9: Guide_cvar.Rnw:261-263
###################################################
abs((res1b - res2)/res2) # 2.6119e-16 # both within machine precision
abs((res2b - res2)/res2) # 3.91785e-15


###################################################
### code chunk number 10: Guide_cvar.Rnw:272-277
###################################################
## if(require("PerformanceAnalytics")){
data(edhec, package = "PerformanceAnalytics")
mu <- apply(edhec, 2, mean)
sigma2 <- apply(edhec, 2, var)
musigma2 <- cbind(mu, sigma2)


###################################################
### code chunk number 11: Guide_cvar.Rnw:281-285
###################################################
## analogous calc. with PerformanceAnalytics::VaR
vPA <- apply(musigma2, 1, function(x)
    PerformanceAnalytics::VaR(p = .95, method = "gaussian", invert = FALSE,
                              mu = x[1], sigma = x[2], weights = 1))


###################################################
### code chunk number 12: Guide_cvar.Rnw:291-295
###################################################
vAz1 <- cvar::VaR(qnorm, p_loss = 0.05, mean = mu, sd = sqrt(sigma2))
vAz2 <- cvar::VaR(qnorm, p_loss = 0.05, intercept = mu, slope = sqrt(sigma2))
max(abs((vPA - vAz1))) # 5.551115e-17
max(abs((vPA - vAz2))) #   ""


###################################################
### code chunk number 13: Guide_cvar.Rnw:299-305
###################################################
vAz1a <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   mean = mu, sd = sqrt(sigma2))
vAz2a <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   intercept = mu, slope = sqrt(sigma2))
max(abs((vPA - vAz1a))) # 3.287941e-09
max(abs((vPA - vAz2a))) #  1.465251e-10, intercept/slope better


###################################################
### code chunk number 14: Guide_cvar.Rnw:309-317
###################################################
vAz1b <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   mean = mu, sd = sqrt(sigma2),
                   tol = .Machine$double.eps^0.75)
vAz2b <- cvar::VaR(pnorm, p_loss = 0.05, dist.type = "cdf",
                   intercept = mu, slope = sqrt(sigma2),
                   tol = .Machine$double.eps^0.75)
max(abs((vPA - vAz1b))) # 4.374869e-13
max(abs((vPA - vAz2b))) # 3.330669e-16


###################################################
### code chunk number 15: Guide_cvar.Rnw:329-332
###################################################
cvar::ES(qnorm, p_loss = 0.05, dist.type = "qf")
cvar::ES(qnorm, p_loss = 0.05)
cvar::ES(qnorm)


###################################################
### code chunk number 16: Guide_cvar.Rnw:336-337
###################################################
cvar::ES(qnorm, p_loss = c(0.01, 0.05))


###################################################
### code chunk number 17: Guide_cvar.Rnw:341-343
###################################################
muA <- 0.006408553
sigma2A <- 0.0004018977


###################################################
### code chunk number 18: Guide_cvar.Rnw:349-352
###################################################
res1 <- cvar::ES(qnorm, p_loss = 0.05, mean = muA, sd = sqrt(sigma2A))
res2 <- cvar::ES(qnorm, p_loss = 0.05, intercept = muA, slope = sqrt(sigma2A))
abs((res2 - res1)) 


###################################################
### code chunk number 19: Guide_cvar.Rnw:356-363
###################################################
## with cdf the precision depends on solving an equation
res1a <- cvar::ES(pnorm, p_loss = 0.05, dist.type = "cdf",
                   mean = muA, sd = sqrt(sigma2A))
res2a <- cvar::ES(pnorm, p_loss = 0.05, dist.type = "cdf",
                   intercept = muA, slope = sqrt(sigma2A))
abs((res1a - res2)) # 
abs((res2a - res2)) # intercept/slope better numerically


###################################################
### code chunk number 20: Guide_cvar.Rnw:368-375
###################################################
## as above, but increase the precision, this is probably excessive
res1b <- cvar::ES(pnorm, p_loss = 0.05, dist.type = "cdf",
                   mean = muA, sd = sqrt(sigma2A), tol = .Machine$double.eps^0.75)
res2b <- cvar::ES(pnorm, p_loss = 0.05, dist.type = "cdf",
                   intercept = muA, slope = sqrt(sigma2A), tol = .Machine$double.eps^0.75)
abs((res1b - res2))
abs((res2b - res2))


###################################################
### code chunk number 21: Guide_cvar.Rnw:379-381
###################################################
abs((res1b - res2)/res2)
abs((res2b - res2)/res2)

Try the cvar package in your browser

Any scripts or data that you put into this service are public.

cvar documentation built on Nov. 3, 2022, 5:06 p.m.