# https://finance.yahoo.com/quote/PBR/ library("stochvol") data = read.csv("https://hedibert.org/wp-content/uploads/2024/06/PBR.csv") names(data) attach(data) n = nrow(data) days = seq(1,n,length=5) date = data[days,1] y = Adj.Close[2:n]/Adj.Close[1:(n-1)]-1 par(mfrow=c(1,1)) plot(Adj.Close,axes=FALSE,xlab="Day",ylab="Price (US dollars)",type="l") axis(2);box() axis(1,at=days,lab=date) hist(y,breaks=seq(min(y),max(y),length=100),prob=TRUE,main="", xlab="Return") plot(y,xlab="Week",ylab="Return",type="l",axes=FALSE) axis(2);box() axis(1,at=days,lab=date) fit.svtl = svtlsample(y,draws=5000,burnin=1000,thin=1) q.svtl = t(apply(exp(fit.svtl$latent[[1]]/2),2,quantile,c(0.1,0.5,0.9))) volvol = sqrt(fit.svtl$para[[1]][,3]^2/(1-fit.svtl$para[[1]][,2]^2)) par(mfrow=c(2,3)) plot(density(fit.svtl$para[[1]][,1]),xlab=expression(mu),main="",lwd=2) plot(density(fit.svtl$para[[1]][,2]),xlab=expression(phi),main="",lwd=2) plot(density(fit.svtl$para[[1]][,3]),xlab=expression(sigma),main="",lwd=2) plot(density(volvol),xlab=expression(sigma/sqrt(1-phi^2)),main="",lwd=2) plot(density(fit.svtl$para[[1]][,4]),xlab=expression(nu),main="",lwd=2) plot(density(fit.svtl$para[[1]][,5]),xlab=expression(rho),main="",lwd=2) par(mfrow=c(1,1)) plot(q.svtl[,2],xlab="Day",main="SV-tl",lwd=2,type="l",ylab="Standard deviation", ylim=c(-0.04,max(q.svtl)),col=2,axes=FALSE) lines(q.svtl[,1],col=3) lines(q.svtl[,3],col=3) lines(0.2*y,type="h") axis(2);box() axis(1,at=days,lab=date) days = seq(1500,2500,length=5) date = data[days,1] par(mfrow=c(1,1)) plot(q.svtl[1500:2500,2],xlab="Day",main="SV-tl",lwd=2,type="l", ylab="Standard deviation",col=2,axes=FALSE,ylim=c(0,0.12)) axis(2);box() axis(1,at=days-1499,lab=date) lines(0.2*abs(y[1500:2500]),type="h")