Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # more: http://www.reakkt.com/2012/07/var-you-cannot-estimate-unknown.html
- TxtNum <- function(txt,num,d=4) {
- return( paste(txt,format(num,digits=d)) )
- }
- VaR <- function(x,alpha) {
- n <- length(x)
- # 1% of the elements
- pct <- ceiling(n/100)
- x.sorted <- sort(x)
- # number of alpha coefficients
- alphaN <- length(alpha)
- var <- sapply(alpha, function(d) quantile(x,d))
- cvar <- sapply(alpha*100, function(d) mean(head(x.sorted,d*pct)))
- list(VaR=var, CVaR=cvar, min=min(x))
- }
- PlotVaR <- function(x) {
- var.list <- VaR(x,c(0.05,0.01))
- plot(density(x),main="Unit Returns Density + VaR")
- mtext(paste(TxtNum("mean=",mean(x)),
- TxtNum("VaR 5%=",var.list$VaR[1]),
- TxtNum("VaR 1%=",var.list$VaR[2]),
- TxtNum("CVaR 5%=",var.list$CVaR[1]),
- TxtNum("CVaR 1%=",var.list$CVaR[2]),
- TxtNum("min=",var.list$min)),
- line=0.5,cex=0.8)
- abline(v=mean(x),col="Blue",lty="dotted")
- abline(v=quantile(x,0.05),col="Red",lty="dotted")
- abline(v=quantile(x,0.01),col="DarkRed",lty="dotted")
- }
- # UniWIBID data available at http://www.union-investment.pl/praktyczne/wycena/index_wycena.html
- uniwibid.data <- read.csv("uniwibid.csv",header=TRUE,sep=";",dec=",")
- uniwibid.date <- rev(as.Date(uniwibid.data[,1]))
- uniwibid.price <- rev(as.numeric(as.character(uniwibid.data[,2])))
- uniwibid.change <- log(uniwibid.price[-1]/uniwibid.price[-length(uniwibid.price)])
- uniwibid <- cbind(uniwibid.date[-1],uniwibid.price[-1],uniwibid.change)
- colnames(uniwibid) <- c("Date","Price","Change")
- uniwibidN <- nrow(uniwibid)
- shock.idx <- which.min(uniwibid[,"Change"])
- shock.change <- uniwibid[shock.idx,"Change"]
- shock.retreat.idx <- tail(which(uniwibid[1:(shock.idx-1),"Price"]<=uniwibid[shock.idx,"Price"]),1)
- as.Date(uniwibid[shock.idx,"Date"],origin="1970-01-01")
- as.Date(uniwibid[shock.retreat.idx,"Date"],origin="1970-01-01")
- Fn <- ecdf(uniwibid[1:(shock.idx-1),"Change"])
- Fn(0) # return <= 0 probability
- Fn <- ecdf(uniwibid[shock.idx:uniwibidN,"Change"])
- Fn(0)
- Fn <- ecdf(uniwibid[,"Change"])
- Fn(0)
- plot(uniwibid[1:(shock.idx-1),"Price"],type="l",main="UniWIBID Price",ylab="")
- plot(uniwibid[shock.retreat.idx:uniwibidN,"Price"],type="l",main="UniWIBID Price",ylab="")
- PlotVaR(uniwibid[1:(shock.idx-1),"Change"])
- PlotVaR(uniwibid[shock.idx:uniwibidN,"Change"])
- PlotVaR(uniwibid[shock.retreat.idx:uniwibidN,"Change"])
- PlotVaR(uniwibid[,"Change"])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement