Comme exemple de données, on peut prendre l’indice SP 500.
On peut afficher la table des données :
datatable(head(data,200))
On peut visualiser la série temporelle :
ts=xts(data$Close,order.by=data$Date,frequency=365.25)
colnames(ts)=c("Close")
dygraph(ts, main = "S&P 500 index", ylab = "Dollars") %>%
dyRoller(rollPeriod = 61)%>%
dyOptions(fillGraph = FALSE, fillAlpha = 0.4) %>%
dyRangeSelector()
Comme on va étudier les rendements journaliers, on peut également afficher son graphique :
ts=xts(data$DR,order.by=data$Date,frequency=365.25)
colnames(ts)=c("Daily return")
dygraph(ts, main = "Rendements journaliers S&P 500", ylab = "Dollars") %>%
dyRoller(rollPeriod = 61)%>%
dyOptions(fillGraph = FALSE, fillAlpha = 0.4) %>%
dyRangeSelector()
De mémoire, il est courant d’étudier les rendements journaliers. Je me demande si c’est possible d’étudier les rapports, ce qui revient à étuider les exponentielles des rendements journaliers. Ainsi, l’exemple pourrait être plus proche du cas d’assurance : les valeurs sont positives, and les petites valeurs suivent une loi lognormale. Si vous avez suggestions, n’hésitez pas à commenter.
On peut voir que si les rendements journaliers autour de 0 suivent une loi normale, les valeurs plus extrêmes ne suivent plus cette même distribution. Ainsi, il est nécessaire de “découper” la distribution afin de mieux modéliser.
probs=seq(0.0001,0.9999,5e-5)
qqd=data.frame(probs=probs,th=qnorm(p=probs,mean=mean(data$DR,na.rm=TRUE),sd=sd(data$DR,na.rm=TRUE)),
emp=quantile(data$DR,probs,na.rm=TRUE))
p <- ggplot(qqd, aes(th,emp,label=probs))
p=p+geom_point()+geom_abline(slope=1,intercept = 0)
ggplotly(p)
On peut utiliser l’estimateur de Hill pour trouver le seuil des valeurs extrêmes :
rn=-data[data$DR< -1,]$DR
hill_param=hillest(rn)
p <- ggplot()
p=p + geom_line(data=hill_param, aes(x=index, y=y,label=d))+
geom_line(data=hill_param, aes(x=index, y=u),colour="red")+
geom_line(data=hill_param, aes(x=index, y=l),colour="red")
ggplotly(p)
rp=data[data$DR> 1,]$DR
hill_param=hillest(rp)
p <- ggplot()
p=p + geom_line(data=hill_param, aes(x=index, y=y,label=d))+
geom_line(data=hill_param, aes(x=index, y=u),colour="red")+
geom_line(data=hill_param, aes(x=index, y=l),colour="red")
ggplotly(p)
Copyright © 2016 Blog de Kezhan Shi