Suite à un commentaire de Jacques (ici), je vais faire un court billet
sur le CAC40. Le commentaire posait la question de la constitution
d'une base avec tous les titres du CAC... Pour
rappel, l'indice CAC40 a beaucoup évolué dans le temps, donc j'ai
toujours peur des études temporelles sur les titres qui constituent
l'indice (dont on peut retrouver l'histoire ici). Sur les titres qui composent actuellement le CAC, ils sont listés (avec le ticker) là. Par exemple pour le prix de l'action Total,
> x<-get.hist.quote("FP.PA")
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=FP.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=FP.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 88 Kb
time series starts 2003-01-01
ou pour GDF Suez,
> x<-get.hist.quote("GSZ.PA")
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=GSZ.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=GSZ.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 125 Kb
time series starts 2000-01-03
pour le prix de l'action Sanofi,
> x<-get.hist.quote("AVE.PA")
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=AVE.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=AVE.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 87 Kb
time series starts 2003-01-01
time series ends 2010-01-29
Par contre j'ai un petit soucis, à savoir l'arrêt fin janvier.... il faudrait creuser un peu....J'ai mis les codes (et les noms) des entreprises dans un petit fichier csv (ici).
Le hic est que les fichiers sont de taille différentes, et qu'il n'y a
que 36 entreprises.... mais commençons par ça. Si on fait un merge de
séries temporelles, on peut concaténer les séries, en mettant des NA
pour les jours sans prix...
> code=read.table("http://perso.univ-rennes1.fr/arthur.charpentier/code-CAC.csv",sep=";",header=TRUE)
> code$Nom=as.character(code$Nom)
> code$Code=as.character(code$Code)
> head(code)
Code Nom
1 ACA.PA CREDIT AGRICOLE
2 AI.PA AIR LIQUIDE
3 ALO.PA ALSTOM
4 ALU.PA ALCATEL-LUCENT
5 BN.PA DANONE
6 BNP.PA BNP PARIBAS
> i=1
> X<-get.hist.quote(code$Code[i])
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=ACA.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=ACA.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 100 Kb
time series starts 2001-12-14
> Xc=X$Close
> for(i in 2:36){
+ x<-get.hist.quote(code$Code[i])
+ xc=x$Close # si on veut le prix en cloture
+ Xc=merge(Xc,xc)
> for(i in 2:36){
+ x<-get.hist.quote(code$Code[i])
+ xc=x$Close # si on veut le prix en cloture
+ Xc=merge(Xc,xc)
+ }
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=AI.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=AI.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 87 Kb
time series starts 2003-01-01
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=ALO.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=ALO.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 57 Kb
time series starts 2003-01-01
[...]
essai
de l'URL
'http://chart.yahoo.com/table.csv?s=VK.PA&a=0&b=02&c=1991&d=1&e=16&f=2010&g=d&q=q&y=0&z=VK.PA&x=.csv'
Content type 'text/csv' length unknown
URL ouverte
downloaded 89 Kb
time series starts 2003-01-01
> names(Xc)=code$Code
Bref, ça a l'air de marcher...
On
peut alors jouer à comparer les corrélations. Le soucis, c'est que dans
la base, il y a beaucoup de valeurs manquantes. En fait, sur seulement 345 jours de cotations, tous les titres étaient présents.
> R=diff(log(Xc))
> f=function(x){sum(is.na(x))}
> Ind=apply(R,1,f)
> sum(Ind==0)
[1] 345
On peut alors bricoler pour construire à la main la matrice de corrélation (qui ne supporte pas les valeurs manquantes).
> correlation=matrix(NA,36,36)
> for(i in 1:36){
+ for(j in 1:36){
+ I=(is.na(R[,i])==FALSE)&(is.na(R[,j])==FALSE)
+ correlation[i,j]=cor(R[I,i],R[I,j])
+ }}
On peut enfin visualiser les corrélations sur le graphique suivant,
> colnames(correlation)=code$Code
> rownames(correlation)=code$Code
> library(package="ellipse")
> plotcorr(correlation,cex=.5)
On peut également visualiser les corrélations à l'aide de couleurs, plutôt que des ellipses schématisant la normalité jointe
> library(corrgram)
> corrgram(correlation, order=NULL, lower.panel=panel.shade,
+ upper.panel=NULL, text.panel=panel.txt, main="")









, applied to
). This upper bound can be far away from the true probability, see e.g. the gaussian case below, i.e. if
,




, i.e.
, we have an upper bound for the
Value-at-Risk,
, then
, i.e.
. But since,
distribution, then








à la date 0, elle peut

. On supposera que
(je reviendrais plus tard sur l'interprétation de cette hypothèse).
Pour valoriser tout actif contingent, on crée un portefeuille de
réplication, consitué de
quantités de l'actif risqué, et
de l'actif sans risque. Soit
la valeur de l'actif contigent si l'actif risqué monte, et
s'il baisse. Alors




, alors il y aurait une opportunité d'arbitrage,
l'actif sans risque présentant un rendement plus faible que
l'action, quel que soit l'état de la nature. De même, si
,
il n'y aurait aucun intérêt à acheter l'action.
Aussi, par des arguments d'absence d'opportunité d'arbitrage,
peut être vu comme une probabilité. On parlera alors de
où 




, on peut écrire
et
sont des probabilités, aussi, en notant
la fonction de répartition de la loi binomiale, on peut écrire

.
Pour visualiser la convergence vers le prix de la formule de Black-Scholes, rien de plus simple,
Les arbres sont très intéressants car ils permettent de
valoriser des options qui pourraient sembler relativement complexe.
J'avais évoqué ici la valorisation des options
américaines, qui se fait très facilement par arbres
(facilement, je n'ai pas dit efficacement). Rubinstein (1994) avait aussi proposé des arbres
mutlivariés, pour valoriser des options multisupports, comme des
options sur spread (représentés sur la figure ci-contre).
On peut aussi calculer facilement des grecques. Bref, les arbres c'est
très pratique.
Pour rappel, on dit qu'un processus (en temps discret, mais on peut généraliser) est une martingale si

une filtration, c'est à dire toute simplement une suite croissante de tribus
, et
une suite de variables aléatoires. On dit que
est intégrable pour tout entier n.
.
MARTINGALE,
MARTINGALE
Pour Paul Samuelson,
cette notion de martingale est étroitement liée à la notion d'
Afin de faire une comparaison, je n'ai pas comparé avec une quelconque courbe de taux d'obligations d'état, mais juste le taux des livrets A (qui peut se trouver
J'ai décidément du mal à croire cet argument comme quoi la bourse peut être vu comme un "bon choix" sur du long terme (20 ans me paraît être du long terme, mais êut être là aussi, je suis un peu jeune pour trouver ça court).






