require(graphics)
### EXAMPLE 1
x <- (-15:15)/3 ; round(x, 2)
round(pkiener3(x, m=0, g=1, k=4, d=0.1), 4)
round(dkiener3(x, m=0, g=1, k=4, d=0.1), 4)
round(lkiener3(x, m=0, g=1, k=4, d=0.1), 4)
plot( x, pkiener3(x, m=0, g=1, k=9999, d=0), las=1, type="l", lwd=2)
lines(x, pkiener3(x, m=0, g=1, k=4, d=0.1), col="red")
lines(x, pkiener3(x, m=0, g=1, k=4, d=0.25), lwd=1) # d in [-1:k, 1:k]
plot( x, dkiener3(x, m=0, g=1, k=9999, d=0), las=1, type="l", lwd=2, ylim=c(0,0.6))
lines(x, dkiener3(x, m=0, g=1, k=4, d=0.1), col="red")
lines(x, dkiener3(x, m=0, g=1, k=4, d=0.25), lwd=1)
plot( x, lkiener3(x, m=0, g=1, k=9999, d=0), las=1, type="l", lwd=2)
lines(x, lkiener3(x, m=0, g=1, k=4, d=0.1), col="red")
lines(x, lkiener3(x, m=0, g=1, k=4, d=0.25), lwd=1)
p <- c(ppoints(11, a = 1), NA, NaN) ; p
qkiener3(p, k=4, d=0.1)
dpkiener3(p, k=4, d=0.1)
dqkiener3(p, k=4, d=0.1)
varkiener3(p=0.01, k=4, d=0.1)
ltmkiener3(p=0.01, k=4, d=0.1)
eskiener3(p=0.01, k=4, d=0.1) # VaR and ES should be positive
### END EXAMPLE 1
### PREPARE THE GRAPHICS FOR EXAMPLES 2 AND 3
xx <- c(-4,-2, 0, 2, 4)
lty <- c( 3, 2, 1, 4, 5, 1)
lwd <- c( 1, 1, 2, 1, 1, 1)
col <- c("cyan3","green3","black","dodgerblue2","purple2","brown3")
lat <- c(-6.9, -4.6, -2.9, 0, 2.9, 4.6, 6.9)
lgt <- c("logit(0.999) = 6.9", "logit(0.99) = 4.6", "logit(0.95) = 2.9",
"logit(0.50) = 0", "logit(0.05) = -2.9", "logit(0.01) = -4.6",
"logit(0.001) = -6.9 ")
funleg <- function(xy, d) legend(xy, title = expression(delta), legend = names(d),
lty = lty, col = col, lwd = lwd, inset = 0.02, cex = 0.8)
funlgt <- function(xy) legend(xy, title = "logit(p)", legend = lgt,
inset = 0.02, cex = 0.6)
### EXAMPLE 2
### PROBA, DENSITY, LOGIT-PROBA, LOG-DENSITY FROM x
x <- seq(-5, 5, by = 0.1) ; head(x, 10)
d <- c(-0.15, -0.1, 0, 0.1, 0.15, 0.25) ; names(d) <- d
fun1 <- function(d, x) pkiener3(x, k=4, d=d)
fun2 <- function(d, x) dkiener3(x, k=4, d=d)
fun3 <- function(d, x) lkiener3(x, k=4, d=d)
fun4 <- function(d, x) dkiener3(x, k=4, d=d, log=TRUE)
mat11 <- sapply(d, fun1, x) ; head(mat11, 10)
mat12 <- sapply(d, fun2, x) ; head(mat12, 10)
mat13 <- sapply(d, fun3, x) ; head(mat13, 10)
mat14 <- sapply(d, fun4, x) ; head(mat14, 10)
op <- par(mfcol = c(2,2), mar = c(2.5,3,1.5,1), las=1)
matplot(x, mat11, type="l", lwd=lwd, lty=lty, col=col,
main="pkiener3(x, m=0, g=1, k=4, d=d)", xlab="", ylab="")
funleg("topleft", d)
matplot(x, mat12, type="l", lwd=lwd, lty=lty, col=col,
main="dkiener3", xlab="", ylab="")
funleg("topleft", d)
matplot(x, mat13, type="l", lwd=lwd, lty=lty, col=col, yaxt="n", ylim=c(-9,9),
main="lkiener3", xlab="", ylab="")
axis(2, at=lat, las=1)
funleg("bottomright", d)
funlgt("topleft")
matplot(x, mat14, type="l", lwd=lwd, lty=lty, col=col, ylim=c(-8,0),
main="log(dkiener3)", xlab="", ylab="")
funleg("bottom", d)
par(op)
### END EXAMPLE 2
### EXAMPLE 3
### QUANTILE, DIFF-QUANTILE, DENSITY, LOG-DENSITY FROM p
p <- ppoints(1999, a=0) ; head(p, n=10)
d <- c(-0.15, -0.1, 0, 0.1, 0.15, 0.25) ; names(d) <- d
mat15 <- outer(p, d, \(p,d) qkiener3(p, k=4, d=d)) ; head(mat15, 10)
mat16 <- outer(p, d, \(p,d) dqkiener3(p, k=4, d=d)) ; head(mat16, 10)
mat17 <- outer(p, d, \(p,d) dpkiener3(p, k=4, d=d)) ; head(mat17, 10)
op <- par(mfcol = c(2,2), mar = c(2.5,3,1.5,1), las=1)
matplot(p, mat15, type="l", xlim=c(0,1), ylim=c(-5,5),
lwd=lwd, lty=lty, col=col, las=1,
main="qkiener3(p, m=0, g=1, k=4, d=d)", xlab="", ylab="")
funleg("topleft", d)
matplot(p, mat16, type="l", xlim=c(0,1), ylim=c(0,40),
lwd=lwd, lty=lty, col=col, las=1,
main="dqkiener3", xlab="", ylab="")
funleg("top", d)
plot(NA, NA, xlim=c(-5, 5), ylim=c(0, 0.6), las=1,
main="qkiener3, dpkiener3", xlab="", ylab="")
mapply(matlines, x=as.data.frame(mat15), y=as.data.frame(mat17),
lwd=lwd, lty=1, col=col)
funleg("topright", d)
plot(NA, NA, xlim=c(-5, 5), ylim=c(-7, -0.5), las=1,
main="qkiener3, log(dpkiener3)", xlab="", ylab="")
mapply(matlines, x=as.data.frame(mat15), y=as.data.frame(log(mat17)),
lwd=lwd, lty=lty, col=col)
funleg("bottom", d)
par(op)
### END EXAMPLE 3
### EXAMPLE 4: PROCESSUS: which processus look credible?
### PARAMETER d VARIES, k=4 IS CONSTANT
### RUN SEED ii <- 1 THEN THE cairo_pdf CODE WITH THE 6 SEEDS
# cairo_pdf("K3-6x6-stocks-d.pdf")
# for (ii in c(1,2016,2018,2022,2023,2024)) {
ii <- 1
set.seed(ii)
p <- sample(ppoints(299, a=0), 299)
d <- c(-0.1, -0.05, 0, 0.05, 0.1, 0.25) ; names(d) <- d
mat18 <- outer(p, d, \(p,d) qkiener3(p=p, g=0.85, k=4, d=d))
mat19 <- apply(mat18, 2, cumsum)
title <- paste0(
"stock_", ii,
": k = 4",
", d_left = c(", paste(d[1:3], collapse = ", "), ")",
", d_right = c(", paste(d[4:6], collapse = ", "), ")")
plot.ts(mat19, ann=FALSE, las=1,
mar.multi=c(0,3,0,1), oma.multi=c(3,0,3,0.5))
mtext(title, outer = TRUE, line=-1.5, font=2)
plot.ts(mat18, ann=FALSE, las=1,
mar.multi=c(0,3,0,1), oma.multi=c(3,0,3,0.5))
mtext(title, outer=TRUE, line=-1.5, font=2)
# }
# dev.off()
### END EXAMPLE 4
Run the code above in your browser using DataLab