1 Présentation des données

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.

2 QQplot

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)

3 Seuil des valeurs extrêmes

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)

Suite

Copyright © 2016 Blog de Kezhan Shi