Vous êtes sur la page 1sur 14

Sommaire

 Historique R
 Aperu / objectifs du projet en quelques graphiques
 R: capacits graphiques, du langage, des packages, ...
 Pour un bon dmarrage: documentation, installation, aides,
R-Project  R: le langage, les objets, lecture des donnes, les graphiques,
 Statistique avec R: modlisations, estimations, rgression, tests,
http://www.r-project.org/  Programmer avec R
 La priphrie: dition, debug, interfaces,
 Quelques lments spcifiques utiles au projet:
 tlchargement des cotations, source des donnes (actions, indices, intraday
futures, devises, donnes macro, indices hedge funds, )
 RMetrics,

Cette prsentation donne un aperu de R, illustre son utilisation par de nombreux exemples pertinents en
finance et au projet, permet de dmontrer la puissance et la "relative" simplicit pour aboutir des rsultats
spectaculaires et rapides
Daniel HERLEMONT
Les dtails et exemples seront repris en TP.
Ce support de cours est fourni avec le document http://cran.r-project.org/doc/contrib/rdebuts_fr.pdf lire
Daniel HERLEMONT Danielabsolument
HERLEMONT
1 2

R Un avant got de tout ce que vous allez apprendre


Des donnes et encore des donnes
> cac=EuStockMarkets[,"CAC"] >data(EuStockMarkets)
 R = GNU S - un environnement interactif et graphique pour l'analyse de donnes > plot(cac) > plot(EuStockMarkets)
R est cr en 1996, par Ross Ihaka et Robert Gentleman de l'Universit de Auckland. R est un dialecte de S cr
l'origine par AT&T Bell Labs, disponible sous la forme du logiciel S-Plus commercialis par Insightful.

 R est gratuit et en open source R une success story de l'open source: l'un des rares projets avoir reu la
distinction ACM, les autres sont: UNIX, TeX,TCI/IP, WWW,Postscript, Apache
 R
 est aussi un langage de programmation, interactif et "facile" apprendre.
syntaxe proche du C, mais plus proche de langages dits fonctionnels tels que LISP ou APL. R est aussi
orient objet.
 contient un trs grand choix de techniques statistiques, y compris les plus rcentes. tsPlot(EuStockMarkets)

 permet de faire des graphiques trs flexibles et dune qualit exceptionnelle. Des graphes et encore des graphes Des tests statistiques et modles
 permet de construire facilement vos propres fonctions et dintgrer dautres modules disponibles sur
Internet.
 est aussi un logiciel mathmatique puissant (calcul matriciel, intgration numrique, optimisation,
data mining ... )
 Avec tout l'avantage de l'open source: qualit des programmes raliss par les meilleurs experts, qualit de
la documentation et ractivit du support des utilisateurs, trs grande richesse des contributions (plus de 200
packages)
 Des modules adapts, voire spcialiss en finance:
 ts, tseries pour les sries temporelles
 VaR, evd, pour la Value at Risk, et valeurs extrmes.
 Rmetrics: http://www.itp.phys.ethz.ch/econophysics/R/ an "Introduction to Financial Engineering and Computationa Des programmes et
l Finance with R" covering areas from data management, time series and regression analysis, extremal value theory
and valuation of financial market instruments. plotOHLC(x, ylab = "price", main = instrument)
des systmes de trading .
Daniel HERLEMONT Daniel HERLEMONT
3 4

R: des capacits graphiques sans limite . R: un langage simple, concis et puissant


Notched Boxplots
> x = c(3,6,7,8) Cre un vecteur x
> mean(x) Affiche la moyenne de x
4

> var(x) Affiche la variance de x


> y = c(4.5,3,2,-0.5) Cre un autre vecteur y
2

> plot(x,y) Graphique de x versus y


0

> x-y x-y composante par composante


-2

1 2 3 4 5

Group
6 7 8 9 10
> lm(y ~ x) Rgression linaire de y sur x
> m = matrix(runif(9),ncol=3) Cre une matrice 3x3
> solve(m) Inverse de la matrice x.matrix
> cube = function(z) z^3 Cre une fonction mettre au cube
> sort(x) Ordonner un vecteur
> eigen() Valeurs et vecteurs propres dune matrice carre
> alea = rnorm(1000) Gnrer des nombres pseudo-alatoires,
suivant une loi normale
> rendements=diff(log(prix)) rendements partir des prix
.

x = rnorm(1000)
hist(x, probability=T, col='light blue', main='Loi normale')
lines(density(x), col='red', lwd=3)
curve(dnorm(x), add=T, col='red', lty=2, lwd=3)

Remarque: la puissance et concision du langage provient du caractre interprt et fonctionnel, idal


pour des oprations interactives rapides, du prototypage
en contre partie: pas toujours vident comprendre, ni maintenir pour des applications trop complexes
=> solution = R + langage fortement typ du type C++ et JAVA pour programmes plus complexes
Daniel HERLEMONT Daniel HERLEMONT
5 6

Page 1
1
R: de trs nombreux packages Les packages pour les sries temporelles

R est pr install avec le package de base et quelques


ts http://www.yats.com/rhelp/library/ts/html/00Index.html
packages recommands
base The R Base Package
fourni avec la distribution R, contient de nombreuses fonctions pour les sries temporelles
mle Maximum likelihood estimation
boot Bootstrap R (S-Plus) Functions (Canty) modreg Modern Regression: Smoothing and Local Methods fonctions d'autocorrlation
class Functions for classification mva Classical Multivariate Analysis estimation de modles ARMA, ARMAX, ARIMA, SARIMA et prdiction
cluster Functions for clustering (by Rousseeuw et al.) nlme Linear and nonlinear mixed effects models
ctest Classical Tests nls Nonlinear Regression
mthodes non paramtriques (kernel)
eda Exploratory Data Analysis nnet Feed-forward neural networks and multinomial log-linear models filtrage de Kalman
foreign Read data stored by Minitab, S, SAS, SPSS, Stata, ... rpart Recursive partitioning oprateur de diffrence
grid The Grid Graphics Package spatial functions for kriging and point pattern analysis
KernSmooth Functions for kernel smoothing for Wand & Jones (1995)splines Regression Spline Functions and Classes
filtrage de HoltWinters
lattice Lattice Graphics stepfun Step Functions, including Empirical Distributions donnes: cours indices europens
lqs Resistant Regression and Covariance Estimation survival Survival analysis, including penalised likelihood.
MASS Main Library of Venables and Ripley's MASS tcltk Tcl/Tk Interface
methods Formal Methods and Classes tools Tools for Package Development
tseries http://www.yats.com/rhelp/library/tseries/html/00Index.html
mgcv Multiple smoothing parameter estimation and GAMs by GCV ts Time Series Functions un autre package pour les sries temporelles,
estimations/prdictions GARCH,
quelques autres packages utiles: tests de racine unitaire (Dickey Fuller)
tseries: Time series analysis and computational finance test de (non) normalit, (non) linarit (BDS), stationarit (kpss),
lmtest: Testing Linear Regression Models maximum drawdown, ratio de Sharpe, Sterling,
VaR : Value at Risk graphiques Open/High/Low/Close.
evd Functions for extreme value distributions. Extends simulation, distribution, quantile and density functions to univariate, bivariate and
(for simulation) multivariate parametric extreme value distributions, and provides fitting functions which calculate maximum likelihood
traitement de donnes intraday irrgulires .
estimates for univariate and bivariate models. tlchargement des cours sur YAHOO.
dse pour les sries temporelles multivaries, donnes disponibles: indicateurs macro conomiques,
quadprog For solving quadratic programming problems.
VLMC Chanes de Markov
waveslim Basic wavelet routines for time series analysis. voir aussi:
RMetrics
Ainsi que RMetrics La plupart de packages ont des dmos, entrer >help("demo")
Daniel HERLEMONT Daniel HERLEMONT
7 8

R; une documentation de qualit Installer R, c'est facile en principe


Manuels utilisateur et de rfrence: http://cran.r-project.org/manuals.html galement disponible en ligne. Procdure gnrale:
FAQ http://cran.r-project.org/doc/FAQ/R-FAQ.html Tlchargement et installation: http://cran.r-project.org/
WINDOWS: http://cran.r-project.org/bin/windows/
Diverses documentations dans la section contributed docs http://cran.r-project.org/other-docs.html : Cliquer sur le lien "base", excuter le lien correspondant la dernire version disponible:
exemple: http://cran.r-project.org/bin/windows/base/rw1081.exe
En Franais:

**** R pour les dbutants: commencer par ce document !!!


http://cran.r-project.org/doc/contrib/rdebuts_fr.pdf

* Introduction au systme R par Yves Brostaux. http://cran.r-project.org/doc/contrib/Brostaux-Introduction-au-R.zip Choisir les options d'installation
* Introduction R par Vincent Zoonekynd, trs complet, pas pas, en langage simple, trs illustr avec de nombreux
et jolis graphiques: http://zoonek2.free.fr/UNIX/48_R/all.html
* Notes de cours, illustrations, exercices, problmes Fiches de Travaux Dirigs, de A.B. Dufour, D. Chessel, J. Lobry
& J.Thioulouse (Unviersit de Lyon): http://pbil.univ-lyon1.fr/R/enseignement.html
* Support de cours sur le logiciel R, par Pierre-Andr Cornillon, Laboratoire de Statistiques, Universit de Rennes II:
Installation minimale
http://www.uhb.fr/sc_sociales/mass/maitrise/doc/log4.pdf
Cliquer sur l'icne
En anglais:
* SimpleR: Using R for Introductory Statistics, by John Verzani:
http://www.math.csi.cuny.edu/Statistics/R/simpleR/index.html

** Practical Regression and Anova in R: http://www.stat.lsa.umich.edu/~faraway/book/


Linear Regression Lectures (including R codes)
Time Series prediction and forecasting http://www.massey.ac.nz/~pscowper/notes_161342.pdf R est prt tre utilis

Daniel HERLEMONT Daniel HERLEMONT


9 10

Installer et utiliser un package A l'aide !!!

Voir si le package est dj install ? >help("sd") # affiche l'aide sur la fonction sd (standard deviation)
0
Si oui: inutile de le tlcharger nouveau >?sd
1 passer en 5 >sd # affiche le code de la fonction !!! Utile dans certains cas

Installer via internet, depuis le site CRAN


Menu "Packages" "Install packages from CRAN"

2 Slectionner le package installer


Comment lire une aide .
puis OK
exemple installation de "tseries" lisez la courte introduction au
un package pour les dbut.
Vous pouvez vrifier que le package
Time Series
a bien t intgr:
- la liste des packages cf: "load
Descendez la fin et rpter les
4
3 Tlchargement: package" exemples !
- dans l'aide en ligne On comprend souvent
rapidement lide de la fonction.

Lisez les dtails de la fonction


plus tard.
Rpondre "y"

5 Pour utiliser un package dj tlcharg et install, il faut le charger dans l'espace de


travail par menu: cf tape 0, ou par ligne de commande:
> library(tseries)
A faire chaque session de travail : vous pouvez aussi sauvegarder votre espace de travail en quittant R,
auquel cas, cette tape sera inutile et vous pouvez commencer utiliser le package juste aprs lancement
de R A priori l'installation du package n'est faire qu'un seule fois, a moins d'une mise jour du package
Daniel HERLEMONT
qui justifie un nouveau tlchargement Daniel HERLEMONT
11 12

Page 2
2
Aide en ligne HTML Manuels, FAQs, mailing lists

Aide en ligne R
donne accs aux FAQ, aide console,
format HTML,
ainsi que manuel utilisateur et guides en pdf,
y compris pour les packages nouvellement installs,
et intgrs automatiquement avec la documentation.

fonctions de recherche par mots cls

Si cela ne suffit pas:


Recherche sur le site R et mailing list: une bonne faon pour trouver rapidement les meilleures rponses
http://cran.r-project.org/search.html, avec Google
http://finzi.psych.upenn.edu/search.html

FAQs http://cran.r-project.org/doc/FAQ/R-FAQ.html

Daniel HERLEMONT Daniel HERLEMONT


13 14

Les bases du langage Oprateurs et fonctions standards

x, X, z1, Z1, Y.star Noms possibles pour les variables Attention: X et x sont deux objets diffrents
# # commentaire
c,t,q,s,I,TRUE,FALSE,pi, Noms rservs, ne pas les utiliser !

> a = 6 affectation: a est maintenant un vecteur avec 6 comme unique composante Oprations usuelles : + - * /
Oprateurs logiques
> a <- 6 affection, oprateur historique, idem = qui est plus court Puissances: 2^5 ou bien 2**5
> a _ 6 idem, mais viter !!! Divisions entires: %/% == test galit
Modulo: %% (7%%5 donne 2) < plus petit
> name <- "Carmen"; n1 <- 10; n2 <- 100; # ; pour sparer les instructions
> plus grand
<= plus petit ou gal
>= plus grand ou gal
Fonctions standards:
!= diffrent
Conversions explicites
abs(), sign(), log(), log10(), sqrt(), & et (and)
Les objets ont tous deux attributs intrinsques : le mode et la longueur.
Le mode est le type des lments dun objet ; as.logical exp(), sin(), cos(), tan() | ou (or)
il en existe quatre principaux : numrique, caractre, complexe, et logique as.numeric gamma(), lgamma(), choose()
> mode(1) > mode("a") as.complex
[1] "numeric" [1] "character" as.character Pour arrondir: round(x,3) arrondi 3 chiffres aprs la virgule
>as.logical(1)
[1] TRUE
Et aussi: floor(2.5) donne 2, ceiling(2.5) donne 3
Quelque soit le mode, les valeurs manquantes sont reprsentes par NA

> 5/0 > exp(-5/0) >1/0-1/0


[1] Inf [1] 0 [1] NaN

Daniel HERLEMONT Daniel HERLEMONT


15 16

Chanes de caractres Objects

> "She said: \"Double quotes can be included in Rs strings.\""

>cat("hello worll \n") # imprime une chaine dans la sortie standard (la console par dfaut)
# \n pour sauter une ligne

>paste("chaine1","chaine2") # concatnation de chaines


chaine1 chaine2

>paste("chaine1","chaine2",sep="") # concatnation sans espaces


chaine1chaine2

autres oprateurs utiles:


match, %in%, pour tester des patterns
'sub' and 'gsub' pour effectuer des substitutions avec des expressions rgulires

Daniel HERLEMONT Daniel HERLEMONT


17 18

Page 3
3
Vecteurs & Variables Vecteurs (suite)
> w <- 7 # affecte lobjet de nom w la valeur 7
> w = 7 # Le signe gal a la mme fonction <<- dans une fonction pour > vector("numeric",100) # Cration d'un vecteur, tous les lements
> w # Le nom de lobjet affiche son contenu dfinir une variable globale Tri, rang, min, max ...
[1] 7 > v = c(2,3.5,-0.2)
> is.vector(w) > v > v = c(2,3.5,-0.2)
[1] TRUE # w est un vecteur [ ] lments des vecteurs [1] 2.0 3.5 -0.2
Srie dentiers L'indexation commence partir de 1 et non pas 0 length > sort(v) #tri
> w <- 1:12 > length(v) [1] -0.2 2 3.5
> w > w = c(145.00,-1.00,28.88,0.02,34.50) [1] 3
[1] 1 2 3 4 5 6 7 8 9 10 11 12 [1] 145.00 -1.00 28.88 0.02 34.50 > order(v)
les vecteurs sont dynamiques >[1] 3 1 2
c Combinaison > w[2:3] # du second au troisime > length(v)=4 # on peut modifier la taille
> w <- c(2,5,-3,8,"a") [1] -1.00 28.88 [1] 2.0 3.5 -0.2 NA >rev(v) # inverse
> w # chanes de caractres > v[6]=10 [1] -0.2 3.5 2.0
[1] "2" "5" "-3" "8" "a" > w[4] le quatrime > v
[1] 0.02 [1] 2.0 3.5 -0.2 NA NA 10 >v[c(3,2,1:2)]
mode > append(v,100) [1] -0.2 3.5 2.0 3.5
> mode(w) > w[-4] # tous sauf le quatrime [1] 2.0 3.5 -0.2 NA NA 10 100
[1] "character" [1] 145.00 -1.00 28.88 34.50 > min(v)
> w <- c(1,5,-36,3.66) slections [1] -0.2
> w w est un vecteur numrique > w[-c(2,4)] # tous sauf 2ieme et 4ieme > v[is.na(v)] = 0 # affecte 0 aux lments NA > max(v)
[1] 1.00 5.00 -36.00 3.66 [1] 145.00 28.88 34.50 > v [1] 3.5
> mode(w) [1] 2.0 3.5 -0.2 0 0 10 100 > range()
[1] "numeric" > w[2:4] # du 2ieme au 4ieme [1] -0.2 3.5
> w <- c(T,T,T,F,F) [1] -1.00 28.88 0.02
> w w est un vecteur logique > which(v==min(v))
[1] TRUE TRUE TRUE FALSE FALSE > w[w>1] # lments > 1 [1] 3
> mode(w) [1] 145.00 28.88 34.50 > which(v==max(v))
[1] "logical"
Daniel HERLEMONT Daniel HERLEMONT [1] 2
19 20

Vecteurs (suite) Calculs sur les vecteurs

> x <- c(1,3,5,7,9)


Statistiques lmentaires Calculs
#somme Calculs vectoriss
> v=runif(10) # gnre 10 nb alatoire selon la loi uniforme > sum(x) > 2*x
> options(digits=2) [1] 25 [1] 2 6 10 14 18
> v # v a 10 lments.
[1] 0.11 0.55 0.31 0.92 0.82 0.28 0.18 0.28 0.64 0.98 #somme cumule > x - 1.5
> cumsum(x) [1] -0.5 1.5 3.5 5.5 7.5
> mean(v)
[1] 1 4 9 16 25
[1] 0.51
> abs(2*x - 10)
> median(v) # oprateur diffrence [1] 8 4 0 4 8
[1] 0.43 > diff(x)
> var(v) # estimateur de la variance (sans biais) [1] 2 2 2 2 > log(x) # logarithme nprien
[1] 0.10 > diff(x, lag = 2) [1] 0.0 1.1 1.6 1.9 2.2
> sum( (v - mean(v))^2 )/9 [1] 4 4 4
[1] 0.10
# produit > sqrt(x)
> prod(x) [1] 1.0 1.7 2.2 2.6 3.0
> quantile(v) [1] 945
0% 25% 50% 75% 100%
0.11 0.28 0.43 0.77 0.98 # produit cumul > rendements=diff(log(prix))
> cumprod(x)
[1] 1 3 15 105 945

Daniel HERLEMONT Daniel HERLEMONT


21 22

Squences Listes

Une liste est une collection ordonne d'objets, non ncessairement du mme mode. Les lments des listes peuvent
donc tre n'importe quel objet dfini dans R. Cette proprit est notamment utilise par certaines fonctions pour
Squences, rptitions, ... renvoyer des rsultats complexes sous forme d'un seul objet liste.
rep pour faire des rptitions, seq pour des suites, rev pour inverser
La constitution d'une liste passe par la fonction list(nom1=lment1, nom2=lment2, ), l'utilisation des
> seq(-3,3,by=2) noms tant facultative. Chaque lment de la liste peut tre accd par son index numrique entre double crochets
[1] -3 -1 1 3 [[]], ou son nom prcd du signe $.
> rep("a", 3) > liste1 <- list(coeff=y, prod=z, nb=c("un", "deux"))
[1] "a" "a" "a" > # extraction du premier lment de la liste par index
> rep(1, 3) > liste1[[1]]
[1] 1 1 1 [1] -0.5 0.5
> rep(c(1, 2), 3) > # extraction du premier lment de la liste par nom
[1] 1 2 1 2 1 2 > liste1$coeff
> seq(from = 1, to = 10, by = 4) [1] -0.5 0.5
[1] 1 5 9 > # extraction d'un sous-lment de coeff par index
> seq(from = 1, to = 10, by = 0.5) > liste1[[1]][1]
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 [1] -0.5
[13] 7.0 7.5 8.0 8.5 9.0 9.5 10.0 L'indexation par les simples crochets est galement possible, mais slectionne alors une sous-liste, ventuellement
> seq(from = 1, to = 10, length = 3) de longueur unitaire, et non plus l'objet lmentaire lui-mme.
[1] 1.0 5.5 10.0 Exemple:
> rep(1:3, 1:3) > mode(liste1[[1]])
[1] 1 2 2 3 3 3 [1] "numeric"
> mode(liste1[1])
[1] "list"
Il est possible de concatner plusieurs listes en une seule au moyen de la fonction c(liste1, liste2, ), comme
pour les vecteurs. Lutilisation de la fonction list(liste1, liste2, ) conduirait l'obtention d'une liste de listes.

Daniel HERLEMONT Daniel HERLEMONT


23 24

Page 4
4
Listes (suite) Matrices & Arrays

> my.list <- list(c(5,4,-1),c("X1","X2","X3"))


Matrice
> my.list =
[[1]]:
[1] 5 4 -1
vecteur+dimension
[[2]]:
[1] "X1" "X2" "X3"

> my.list[[1]]
[1] 5 4 -1

> names(my.list) <- c("c1","c2")

> my.list$c2[2:3]
[1] "X2" "X3"

> my.list <- list(c1=c(5,4,-1),c2=c("X1","X2","X3"))


> my.list
$c1
[1] 5 4 -1
$c2
[1] "X1" "X2" "X3"

Daniel HERLEMONT Daniel HERLEMONT


25 26

Matrices Oprations Matricielles

> dim(x.mat) Dimension dune matrice


> x <- c(3,-1,2,0,-3,6) [1] 3 2
Cre une matrice avec 2 colonnes (par dfaut : cration par colonnes) > t(x.mat) Transpose dune matrice
> x.mat <- matrix(x,ncol=2) [,1] [,2] [,3]
> x.mat [1,] 3 2 -3
[,1] [,2] [2,] -1 0 6
les lignes et colonnes peuvent tre nomms
[1,] 3 0 > x.mat %*% t(x.mat) Multiplication matricielle Produits scalaires
[2,] -1 -3 > dimnames(x.mat) <- list(c("L1","L2","L3"), [,1] [,2] [,3] > x=1:3
[3,] 2 6 c("C1","C2")) [1,] 10 6 -15 > y=3:1
Cration par lignes > x.mat [2,] 6 4 -6 > t(x)%*%y
> x.mat <- matrix(x,ncol=2,byrow=T) C1 C2 [3,] -15 -6 45 > 10
> x.mat L1 3 0
[,1] [,2] L2 -1 -3 Autres fonctions utiles:
[1,] 3 -1 L3 2 6 solve() Inverse dune matrice carre
[2,] 2 0 eigen() Valeurs et vecteurs propres dune matrice carre
[3,] -3 6 >x.mat["L1","C1"] # on peut indexer par nom
Extractions [1] 3 > cbind(x.mat,x.mat) combinaisons, par colonnes
> x.mat[,2] 2me colonne > x.mat[,"C1"] [,1] [,2] [,3] [,4]
[1] -1 0 6 L1 L2 L3 [1,] 3 -1 3 -1
> x.mat[c(1,3),] 1re et 3me ligne 3 -1 2 [2,] 2 0 2 0
[,1] [,2] > x.mat["L1",] [3,] -3 6 -3 6
[1,] 3 -1 C1 C2
[2,] -3 6 3 0 > rbind(x.mat,x.mat[1,]) combinaisons, par lignes
> x.mat[-2,] Sans 2me ligne [,1] [,2]
[,1] [,2] [1,] 3 -1
[1,] 3 -1 [2,] 2 0
[2,] -3 6 [3,] -3 6
[4,] 3 -1
Daniel HERLEMONT Daniel HERLEMONT
27 28

Lire des donnes Fonctions apply

R est un langage fonctionnel: les fonctions sont des objets


et les variables, arguments peuvent tre des fonctions elles mmes

exemples lapply : applique une fonction une liste: une alternative aux boucles:

> x <- list(a = 1:10, beta = exp(-3:3),


logic = c(TRUE,FALSE,FALSE,TRUE))

> # compute the list mean for each list element


> lapply(x,mean)
$a
[1] 5.5
$beta
[1] 4.535125
$logic
[1] 0.5

sapply "user friendly" apply, fonction pour tout: liste, vecteur, matrice, .
Les data.frame sont assez proches des matrices (mme nb d'lments en ligne et colonne) tapply pour appliquer la fonction tous les lments d'un array, matrice,
la diffrence que les lments peuvent avoir des modes diffrents. replicate(n,expr, ...) applique n fois l'expression (utile lorsque l'expression fait appel un gnraeur alatoire)

Les data.frame sont utiliss dans la plupart des fonctions statistiques de R

Daniel HERLEMONT Daniel HERLEMONT


29 30

Page 5
5
Graphiques quantile-quantiles plots intraday future CAC40

> plot(rnorm(100),rnorm(100)) La fonction rnorm()


simule des variables alatoires qqplot incrments de 1 heure
3

normalement distribues.
2
1

Consultez ?rnorm,
rnorm(100)

mais aussi ?runif, Centre de distribution ~ gaussien


0

?rexp,
-1

?binom, ... Queues de distribution "anormales"


-2

-3 -2 -1 0 1 2

rnorm(100)
Lecture verticale

Perte -3 sigma Lecture horizontale Idem pour les hausses


sans doute moins marqu
> x=rnorm(100) attendue ~ 50
La perte "normale" -50 (asymtrie ngative
> qqnorm(x) -3 sigma ( ~ 0.14%), - a voir . )
> qqline(x) ralise ~ 100
se produit en ralit
-2 sigma ( ~ 2.28%)
~ 8 sigma !!!
soit en ralit, ~ 16 fois plus
quasiment
d'vnements 3 sigma
impossible
que dans le modle normal
avec l'hypothse
normale
Daniel HERLEMONT Daniel HERLEMONT
31 32

Exemples distributions en qqplots Boxplot

Boite moustache

Student, degr de On peut reprsenter graphiquement les 5 quartiles


libert = 3 Exponentielle:
galement utilise maximum
peut tre utilis
pour modliser pour modliser les
la distribution cours troisime quartile
des incrments

mdiane,

premier quartile,

Cauchy
Toutes les distributions
minimum,
l'extrme n'ont pas des queues
possde paisses: exemple la
une moyenne loi uniforme
Permet de visualiser rapidement, l'allure de l'chantillon, les asymtries, l'aplatissement
et variance
infinies autres exemples:
binomiale Rappel de quelques formules empiriques:
gaussienne tronque
3 4
skewness = 1
(Xi-m)
kurtosis = 1
qui sont des profils de P&L de systmes de trading avec (Xi-m) SemiInterq uantileRan ge
3( meanmedian )/ 3
profit exit et stop loss. n n 1090Percentile Range

Un TP sera consacr aux "meilleurs fits" parmtriques des queues de distribution mode = le point de frquence maximum (si il existe) et moyenne-mode 3(moyenne-mdiane)
Daniel HERLEMONT Daniel HERLEMONT
33 34

scatter plots Graphiques - hist


#superpose un histogramme issu
Exemple: scatter plot La fonction plot est gnrique > hist(rcac,prob=T,breaks=100, #d'une loi de student de d.l.=3
rendements DAX vs CAC40 exemple regression DAX vs CAC col="light blue") #avec le fit gaussien
> cac=EuStockMarkets[,"CAC"] > curve(dnorm(x,mean(rcac),sd(rcac)), z=rt(1000,3)
> rcac=diff(log(cac)) > plot(lm(rdax ~rcac)) add=T,lwd=2) hist(z,breaks=50,prob=T,
> dax=EuStockMarkets[,"DAX"] col="light blue",main="Student 3")
> rdax=diff(log(dax)) curve(dnorm(x,mean(z),sd(z)),add=T)
> plot(rcac,rdax)
# ou plot(rcac ~ rdax)

Le rendements sont leptokurtiques, ils ressemblent assez bien


une loi de student .

Pour superposer faire d'abord un plot(.) ou hist(), puis utiliser curve, points, lines, .
On peut aussi utiliser plot(., add=T) dans certains cas
Daniel HERLEMONT Daniel HERLEMONT
35 36

Page 6
6
Hist et density Paramtres graphiques

data(EuStockMarkets) Pour ajouter des lignes


> lines(x,y,)
cac=EuStockMarkets[,"CAC"]
rcac=diff(log(cac)) Ajouter une horizontale 0 et deux verticales 2 et 3
d=density(rcac) > abline(h=0,v=c(2,3))
plot(d,lwd=3,col="red")
hist(rcac,prob=T,breaks=100,add=T,col="light blue") Ajoute une droite de rgression
> abline(lsfit(x,y))

Ajoute une ligne de pente 1 et "intercept" 0


Estimation non paramtrique > abline(0,1)
de la densit
Lgendes: trs flexibles, voir aide !
> legend(locator(1),)
cf ?density
dans le package de base!

par(), pour contrler diffrents aspects: exemples:


par(mfrow=c(2,2)) # 4 graphiques en 2 lignes sur 2 colonnes
par(bg="black", fg="white") # couleurs de fond, et trac

voir aide en ligne >?par()
K = noyau

Daniel HERLEMONT Daniel HERLEMONT


37 38

Paramtres graphiques (suite) Autres fonctions graphiques


add=FALSE si TRUE superpose le graphe au graphe existant (sil y en a un)
axes=TRUE si FALSE ne trace pas les axes ni le cadre
type="p" le type de graphe qui sera dessin, "p" : points, "l" : lignes, "b" :
points connectes par des lignes, "o" : idem mais les lignes recouvrent
les points, "h" : lignes verticales, "s" : escaliers, les donnes tant reprsentes
par le sommet des lignes verticales,
xlim=, ylim= fixe les limites infrieures et suprieures des axes, par exemple avec
xlim=c(1, 10) ou xlim=range(x)
xlab=, ylab= annotations des axes, doivent tre des variables de mode caractre barplot()
main= titre principal, doit tre une variable de mode caractre pairs() persp()
sub= sous-titre (crit dans une police plus petite)

color= pour tracer en couleur: exemple col="red"


lwd= paisseur du trac ex: lwd=3

Exemple utilisation de xlim et ylim pour cibler une zone


> hist(rcac,prob=T,breaks=100,col="light blue",
xlim=c(-0.08,-0.02),ylim=c(0,10))
> curve(dnorm(x,mean(rcac),sd(rcac)),add=T,lwd=2)

polygon() pie() image()

queues paisses: le fit gaussien sous estime Fait partir des examples dans l'aide des fonctions
la frquence et l'ampleur des fortes baisses Il y en a d'autres

Daniel HERLEMONT Daniel HERLEMONT


39 40

La loi normale Distributions


0.4

1
2
1 x Pour la loi normale, la racine est norm. Puis ajouter au dbut les lettres
f(x;,)= e 2
0.3


2 d pour calculer des valeurs de la densit ( dnorm() )
dnorm(x)

0.2

p pour calculer des probabilits ( pnorm() )


0.1

q pour calculer des quantiles ( qnorm() )


0.0

> dnorm(2,mean=1,sd=2) Valeur de la densit


[1] 0.1760327 au point 2 pour X ~ N(1,4)
-4 -2 0 2 4
r pour obtenir des nombres pseudo-alatoires distribus selon la distribution
choisie ( rnorm() )
> qnorm(0.975) Quantile pour
[1] 1.959964 la probabilit 0.975 avec moyenne 0 et cart-type 1 Distribution Racine Arguments supplmentaires
> pnorm(c(2,3),mean=2) = P(X<2) et P(X<3), o X ~ N(2,1) normale norm mean, sd, log
[1] 0.5000000 0.8413447 lognormale lnorm meanlog, sdlog, log
> norm.alea <- rnorm(1000) Gnrer des nombres pseudo-alatoires, suivant une loi t (Student) t df, log
> summary(norm.alea) loi normale uniforme unif min, max, log
Min. 1st Qu. Median Mean 3rd Qu. Max.
-3.418 -0.6625 -0.0429 -0.01797 0.6377 3.153 loi F (Fisher) f df1, df2
2 chisq df, ncp, log
> sd(norm.alea)
[1] 0.9881418 binomiale binom size, prob, log
exponentielle exp rate, log
poisson pois lambda, log
...

Daniel HERLEMONT Daniel HERLEMONT


41 42

Page 7
7
Modlisations, Estimations, Tests Quelques tests classiques

Les probabilits parlent de lchantillon partir de la population. La statistique infrentielle parle de la population t.test() test de Student (test t), > t.test(1:10)
(modle) partir dun chantillon.
Il s'agit donc de proposer un modle, tester des hypothses, accepter/rejeter le modle,
qui permet de dterminer si deux One Sample t-test
estimer les paramtres du modle, les intervalles de confiance moyennes de deux populations sont data: 1:10
t = 5.7, df = 9, p-value = 0.0002782
L'objectif de la modlisation peut tre multiple: significativement diffrentes (au alternative hypothesis: true mean is not equal to 0
caractriser les donnes,
moins dun point de vue statistique) 95 percent confidence interval:
effectuer des prdictions avec de nouvelles valeurs
valuer l'impact des caractristiques (ex: queues de distribution, asymtrie) sur la gestion du risque zscore si on connat la variance. 3.3 7.7
valuer les "produits" drivs au sens large: options, mais aussi stratgies optimales sample estimates:
mean of x
5.5
R fournit l'environnement ncessaire pour mener bien une analyse statistique: mais un t.test() est paramtrique et suppose
l'chantillon issu d'une loi normale dont on ne connat pas la variance ..
- calculer des statistiques simples: moyenne, variance, mdianes, quantiles, Peut s'avrer inadapt pour des distribution queues paisses
=> tests non paramtriques : tests de Wilcoxon, analyse de la variance de Kruskal-Wallis,
- visualiser les donnes
pour une variable: histogrammes, boxplot(moustaches), qqplots, Autres tests:
pour 2 ou plusieurs variables: scatter plots chisq.test() Test de 2 pour des tables de contingence et adquation
pour identifier les outliers, les asymtrie, l'allure des rsidus d'une rgression, ks.test() Test de Kolmogorov-Smirnov pour ladquation une distrib.
shapiro.test() Test de normalit
- modliser par diffrentes mthodes:
voir package ctest
lsfit, lm rgressions linaires par moindre carr
glm tests relatifs au maximum de vraisemblance . Cf package mle,
package mle estimations par maximum de vraisemblance
fitdistr() sera utilis pour "fitter" des distributions particulires d'autres cours et TP aborderont ces questions importantes
t-student, exponentielle tests, estimations, intervalles de confiance,
Daniel HERLEMONT Daniel HERLEMONT
43 44

Exemple test des rendements des Hedge Funds Modles linaires

rendements mensuels des hedge funds CSFB Tremon de 1993 a fin 2003:
lsfit(x,y) fit y=a+b*x
hf=read.table("http://www.yats.com/downloads/CSFBTremont.csv",header=T,sep=",")
> sapply(hf[,2:15],function(x) {t.test(x,alternative="greater")}) # noter l'utilisation de sapply, par la mthode des moindres carrs ordinaires MCO ou OLS en anglais
x = matrice,
colonne = variables, lignes=observations
HedgeFundIndex ConvertibleArbitrage DedShortBias Question : est ce que les rendements sont > 0 ?
statistic 4.077812 6.70737 -0.2893419 pour les fonds EmergingMarkets reg=lm(y~x) rgression linaire, idem lsfit, mais en mieux
p.value 4.124777e-05 3.528962e-10 0.6135884 la probabilit critique est de 0.06, signifie qu'on ne analyse de la variance
estimate 0.9115833 0.8441667 -0.1374167 pourrait pas rejeter l'hypothse d'un rendement ngatif sait traiter les cas singulier (colinarit)
EmergingMarkets EquityMktNtrl EventDriven
au seuil de 5%. Malgr un rendement moyen largement >0
statistic 1.509001 10.51022 5.778363
p.value 0.06697452 5.61863e-19 3.084194e-08 Li au fait que c'est celui qui a la plus grande volatilit Il existe des mthodes gnriques, applicables galement la plupart des modles:
estimate 0.7064167 0.8509167 0.919 cf ci dessous:
Distressed HedgedMultiStrategy RiskArbitrage summary(reg)
statistic 5.829398 5.000402 5.825979
p.value 2.432789e-08 9.965083e-07 2.471843e-08 plot(reg)
estimate 1.07375 0.83775 0.6845
FixedIncArb GlobalMacro LongShort
statistic 5.345858 3.741127 3.484459
> sapply(hf[,2:15],sd) # affiche la volatilit predict(reg,newValues)
HedgeFundIndex ConvertibleArbitrage DedShortBias
p.value 2.203366e-07 0.0001416777 0.0003455313
2.448837 1.378690 5.202580 anova(reg) analyse de la variance
estimate 0.5564167 1.194417 1.01025
EmergingMarkets EquityMktNtrl EventDriven
ManagedFutures MultiStrategy
5.128165 0.886882 1.742213
statistic 1.976854 6.459962
Distressed HedgedMultiStrategy RiskArbitrage
p.value 0.02518534 1.195199e-09
2.017763 1.835271 1.287049
estimate 0.63225 0.76675
FixedIncArb GlobalMacro LongShort
1.140180 3.497390 3.176027
A comparer aux Pour les petites valeurs de n, ManagedFutures MultiStrategy Cf cours conomtrie
tests de wilcoxon la t stat = n^05 r/sigma 3.503522 1.300213
wilcox.test() a une certaine parent avec
le ratio de Sharpe
A refaire en TP
Daniel HERLEMONT Daniel HERLEMONT
45 46

Exemple rgression linaire Alcatel vs CAC40 Rgressions multiples


> start="2003-07-01"; end="2004-02-01"
> index <- get.hist.quote(instrument = "^fchi", quote="Close", start=start, end=end) > rEuStockMarkets=diff(log(EuStockMarkets)) #rendements
> stock <- get.hist.quote(instrument = "cgep.pa", quote="Close", start=start, end=end)
> x <- na.remove(ts.union(index,stock)) # traiter les valeurs absentes # rgression des rendements du CAC sur DAX et FTSE et SMI
> plot(x)
> ri=diff(log(x[,"index"])) > regression=lm(rEuStockMarkets[,"CAC"]~rEuStockMarkets[,"DAX"]+rEuStockMarkets[,"FTSE"]+rEuStockMarkets[,"SMI"])
> rs=diff(log(x[,"stock"])) > summary(regression)
> reg=lm(rs~ri)
> summary(reg) Call:
Call: lm(formula = rEuStockMarkets[, "CAC"] ~ rEuStockMarkets[, "DAX"] +
lm(formula = rs ~ ri) rEuStockMarkets[, "FTSE"] + rEuStockMarkets[, "SMI"])

Residuals: Residuals:
Min 1Q Median 3Q Max Min 1Q Median 3Q Max
-0.053439 -0.009893 -0.001558 0.009427 0.084441 -4.68e-02 -4.07e-03 7.46e-05 4.05e-03 3.06e-02

Coefficients: Coefficients:
Estimate Std. Error t value Pr(>|t|) Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.001767 0.001608 1.099 0.274 (Intercept) -0.000177 0.000162 -1.09 0.27
ri 1.560668 0.155252 10.052 <2e-16 *** rEuStockMarkets[, "DAX"] 0.505400 0.024057 21.01 < 2e-16 ***
--- rEuStockMarkets[, "FTSE"] 0.380386 0.027296 13.94 < 2e-16 ***
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1 rEuStockMarkets[, "SMI"] 0.147557 0.025390 5.81 7.3e-09 ***
---
Residual standard error: 0.01955 on 148 degrees of freedom Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Multiple R-Squared: 0.4057, Adjusted R-squared: 0.4017
F-statistic: 101.1 on 1 and 148 DF, p-value: < 2.2e-16 Residual standard error: 0.007 on 1855 degrees of freedom
Multiple R-Squared: 0.601, Adjusted R-squared: 0.6
# commentaires: F-statistic: 931 on 3 and 1855 DF, p-value: <2e-16
# un beta de l'ordre de 1.56, trs significatif (p-value=<2e-16)
# par contre on ne peut pas rejeter l'hypothse
# d'un alpha diffrent de zro (p-value=0.274)
Les rsidus ne sont pas gaussiens
plot(reg)
Daniel HERLEMONT Daniel HERLEMONT
47 48

Page 8
8
Optimisations avec R Fonctions & Porte

Optimize {base} : One Dimensional Optimization


f <- function (x,a) (x-a)^2
xmin <- optimize(f, c(0, 1), tol = 0.0001, a = 1/3) Fonctions dclaration:
xmin
function ( arglist ) body
optim: {base}
General-purpose optimization (multi dimensional)
exemple:
based on Nelder-Mead, quasi-Newton and conjugate-gradient algorithms.
It includes an option for box-constrained optimization and simulated annealing.
> echo <- function(x) print(x)
Valeurs par dfaut name = expression
constrOptim {base} f=function(v1,v2, epsilon=1e-6) {
return( max(abs(v1-v2))<epsilon)
Minimise a function subject to linear inequality constraints
using an adaptive barrier algorithm.
}
f(0,1e-5,1e-4) ou f(eps=1e-4,0,1e-5) ou f(eps=1e-4,v2=1e-5,v1=0)
TRUE
The function uniroot searches the interval from lower to upper for a root (i.e., zero) of the
function f with respect to its first argument. "" dsigne une liste arbitraire d'arguments

D, deriv, deriv3: Compute derivatives of simple expressions, symbolically. Porte (Scope) similaire tout langage de haut niveau, tel que pascal.
Integrate integration
Les variables dclares dans une fonction sont locales la fonction.

Daniel HERLEMONT Daniel HERLEMONT


49 50

Programmation en R Enregistrer des donnes

Enregistre les donnes dans un format interne (mais manmoins standard - XDR)
Pour afficher le code source d'une fonction Structure de contrle: classique > save(EuStockMarkets,file="c:/data/eu.RData")
> sd
Enregistre les donnes dans un format texte : pour la portabilit entre machines
function (x, na.rm = FALSE)
> save(EuStockMarkets,file="c:/data/eu.txt.RData ",ascii=T)
{ if(cond) expr
Enregistre les donnes dans un format texte compress : pour la portabilit, l'espace disque et tlchargements
if (is.matrix(x))
> save(EuStockMarkets,file="c:/data/eu.txt.gz.RData",ascii=T,compress=T)
apply(x, 2, sd, na.rm = na.rm) if(cond) cons.expr else alt.expr
On peut enregistrer plusieurs objets dans un mme fichier
else if (is.vector(x))
> save(DJIA,EuStockMarkets,file="c:/data/stk.txt.gz.RData ",ascii=T,compress=T)
sqrt(var(x, na.rm = na.rm)) for(var in seq) expr
# la notation .txt.gz.Rdata est utilise par commodit, on pourrait se contenter de .RData
else if (is.data.frame(x)) while(cond) expr
sapply(x, sd, na.rm = na.rm)
Sauver tout l'environnement
else sqrt(var(as.vector(x), na.rm = na.rm)) repeat expr > save(file="c:/data/",ascii=T,compress=T)
}
break
Aussi, une faon pour transfrer des sources et donnes, remettre un travail
La valeur retourne est la dernire valuation
on peut aussi utiliser return(valeur) next

{} blocs d'instructions

Daniel HERLEMONT Daniel HERLEMONT


51 52

Des commandes utiles Examiner un objet

Quelques commandes utiles sur les objets . lorsqu'on est un peu perdu
>getwd() # renvoie le rpertoire courant
>setwd("c:/monRepertoire) # dfini le rpertoire de > ls(pattern="^Eu") # pour retrouver le nom exact des marchs Europens.
travail [1] "EuStockMarkets"

>q() quitte R, avec ou sans sauver l'environnement >print(EuStockMarkets) # pour voir le contenu, ou tout simplement
>EuStockMarkets
>edit(EuStockMarkets) # permet d'diter les data dans un tableur interne
>ls() # affiche les variables en mmoire
> str(EuStockMarkets) # affiche un rsum de la structure de l'objet.
>rm(myVar) # retire myVar de la "mmoire". mts [1:1860, 1:4] 1629 1614 1607 1621 1618
>rm(list=ls()) # retire tout - attr(*, "dimnames")=List of 2
..$ : NULL
# detruit les variables commenant par xyz suivie par ..$ : chr [1:4] "DAX" "SMI" "CAC" "FTSE"
un nb (exp. rgulire) - attr(*, "tsp")= num [1:3] 1991 1999 260
>rm(list=ls(pattern="^xyz[0-9]")) - attr(*, "class")= chr [1:2] "mts" "ts"

>cac= EuStockMarkets[,"CAC"]
dition:: > str(cac)
- la console: utiliser l'historique des commandes Time-Series [1:1860] from 1991 to 1999: 1773 1751 1718 1708 1723 ..
avec les flches
voir aussi la commande >history() > str(DJIA)
data.frame': 2521 obs. of 31 variables:
- ou diteur de texte classique, faire ensuite:
$ Date:`POSIXct', format: chr "2003-08-29 00:00:00" ...
> edit() # lance l'diteur cf aide: ?edit $ AA : num 28.6 28.4 27.6 27.8 27.8 ...
> source("MonFichierSource") $ AXP : num 45.0 45.0 44.5 44.5 45.1 ...
dite/visualise les donnes
Debug > fix(EuStockMarkets) # s'applique aussi aux fonctions
lance l'diteur de texte (notepad > str(ls)
il existe quelques commandes mais comme pour tout langage, la meilleure > fix(maFonction) function (name, pos = -1, envir = as.environment(pos), all.names = FALSE,
faon est encore de tracer sur la console ou dans un fichier !!!
pattern)
En cas de boucle dans un programme: appuyer sur la touche ESC
Daniel HERLEMONT Daniel HERLEMONT
53 54

Page 9
9
Un systme ouvert: Interfaces Windows, JAVA, Bases de donnes refcard

R est un langage interprt trs flexible, on peut dvelopper ses propres fonctions, librairies
en R ou autre langage ou en C/C++, JAVA en cas de besoin:
- performance, R tant un langage interprt peu s'avrer ineffciace dans certains cas
- intgrer du code existant,
- dvelopper des interfaces et intgrer R dans une application
en tant que serveur de calcul, graphique, .

voir le manuel Extensions

Intgration avec le monde WINDOWS http://cran.r-project.org/contrib/extra/dcom/


This package contains a COM server used to connect a client application (e.g. Microsoft Excel)

Interfaces JAVA, CORBA, PYTHON, XML: http://www.omegahat.org

Interfaces bases de donnes : MySQL, ODBC, Postgresql, .

Exemple d'accs une base de donnes:


> library(RMySQL)
> ch <- dbConnect(MySQL(),dbname="stocks",user="myuser",password="mypassword")
> ibm <- quickSQL(ch,"select Date, Open, High, Low, Close, Volume from quotes where Ticker
> close(ch)

Daniel HERLEMONT Daniel HERLEMONT


55 56

Donnes - actions & indices Tlchargement et lecture des cotations YAHOO

Exemple: tlchargement avec R des cotations YAHOO Date,Open,High,Low,Close,Volume,Adj. Close*


plus de 10 ans d'historique, sur tous les marchs mondiaux, remonte 20-Feb-04,3749.68,3765.66,3720.99,3733.28,0,3733.28
19-Feb-04,3718.78,3761.33,3715.98,3759.32,0,3759.32
EuStockMarkets - package ts mme jusqu' 1930 pour les actions US, les cours sont ajusts
18-Feb-04,3714.09,3717.33,3699.28,3709.02,0,3709.02
http://www.yats.com/rhelp/library/ts/html/EuStockMarkets.html des dividendes et des splits, c'est rapide et 17-Feb-04,3681.86,3710.82,3681.86,3703.82,0,3703.82
Daily Closing Prices of Major European Stock Indices, 1991-1998: Contains gratuit !!! 16-Feb-04,3655.73,3678.07,3649.76,3678.07,0,3678.07
the daily closing prices of major European stock indices: 13-Feb-04,3674.43,3686.06,3644.32,3649.34,0,3649.34
Germany DAX (Ibis), Switzerland SMI, France CAC, and UK FTSE. # Tlchargement avec R: 12-Feb-04,3689.64,3698.67,3665.41,3681.56,0,3681.56
> url="http://chart.yahoo.com/table.csv?s=^FCHI" .
exemple:
> download.file(url,file="c:/yahoo/^FCHI.txt")
>data(EuStockMarkets) #charge les data
>plot(EuStockMarkets)
# lecture du fichier:
> # skip=1 pour ignorer la premire ligne
> # sep="," sparateur = virgule
> x=read.table("c:/yahoo/^FCHI.txt",skip=1,sep=",")
> # on peut d'ores et dj afficher le graphe
> plot(x[,5],ty="l",ylab="close",main="CAC40")
# that's all
Cours actions composant le DJIA # jusqu' prsent nous n'avons fait qu'utiliser des fonction de base de R

DJIA data package VaR.


http://www.yats.com/rhelp/library/VaR/html/DJIA.html
Daily Closing Prices of Stocks in The Dow Jones 30 Industrial Index La fonction de tlchargement YAHOO existe dj dans le package tseries:
This data frame contains daily closing prices of stocks in Dow Jones 30 Industrial index. get.hist.quote
Data covers a time period from 30-08-1993 till 29-08-2003. The composition of DJIA 30 avec traitement des dates et mise sous forme de time series c'est un peu plus compliqu
corresponds le source de get.hist.quote se trouve dans "library/tseries/R/tseries"
to September 1st, 2003. Une bonne faon pour apprendre .

Daniel HERLEMONT
Les sources R sont dans dans le rpertoire d'installation, puis
Daniel HERLEMONT
57 library/package/R/package 58

Tlchargements YAHOO Symboles YAHOO/Reuters

Tlchargement du CAC40 sur YAHOO + graphique barchart

# Plot OHLC bar chart for the last `nDays' days of the instrument `instrument'
nDays <- 50
instrument = "^FCHI" # FCHI = CAC40 sur YAHOO/Reuters Symobles Actions du CAC40 PEUP.PA PEUGEOT
start = strftime(as.POSIXlt(Sys.time() - nDays*24*3600), format="%Y-%m-%d") DANO.PA GROUPE DANONE
ACCP.PA ACCOR PRTP.PA PINAULT-PR RED
end = strftime(as.POSIXlt(Sys.time()), format = "%Y-%m-%d")
AGFP.PA AGF DEXI.PA DEXIA RENA.PA RENAULT
x = get.hist.quote(instrument = instrument, start = start, end = end)
plotOHLC(x, ylab = "price", main = instrument) AIRP.PA AIR LIQUIDE EAD.PA EADS SASY.PA SANOFI-SYNTHELAB
AVEP.PA AVENTIS EAUG.PA VIVENDI UNIVERSA SCHN.PA SCHNEIDER ELECTR
AXAF.PA AXA EXHO.PA SODEXHO ALLIANCE SGEF.PA VINCI
BNPP.PA BNP PARIBAS FTE.PA FRANCE TELECOM SGOB.PA SAINT-GOBAIN
BOUY.PA BOUYGUES LAFP.PA LAFARGE SOGN.PA SOCIETE GENERALE
CAGR.PA CREDIT AGRICOLE LAGA.PA LAGARDERE STM.PA STMICROELECTRONI
CAPP.PA CAP GEMINI LVMH.PA L.V.M.H. TCFP.PA THALES
CARR.PA CARREFOUR LYOE.PA SUEZ TFFP.PA TF1
CASP.PA CASINO GUICHARD MICP.PA MICHELIN TMS.PA THOMSON
CELR.PA ARCELOR OREP.PA L OREAL TOTF.PA TOTAL
CGEP.PA ALCATEL PERP.PA PERNOD RICARD VIE.PA VEOLIA ENVIRON

> alcatel=na.remove(get.hist.quote("cgep.pa",quote="Close"))
# moyenne mobile 20 jours:
> mm=filter(alcatel,filter=rep(1/20,20))
http://www.yats.com/rhelp/library/tseries/html/plotOHLC.html > lines(mm,col="blue")
> plot(alcatel)
> lines(mm,col="blue",lwd=2)

Daniel HERLEMONT Daniel HERLEMONT


59 60

Page 10
10
YAHOO (suite) Tick data intraday futures CAC40

Le site du MATIF fournit gratuitement les


ticks data des contrats futures CAC
(comme la plupart des autres places)
Principaux Indices PARIS
^FCHI CAC40 Indices US http://www.matif.fr/scripts/tick.pl
^SBF120 ^SPX S&P 500 (ou ^GSPC ?)
les fichiers sont dans un format .exe (.zip), puit texte tabul:
^SBF250 ^OEX S&P 100
^SBF80 ^IXIC NASDAQ Zone Content Format Comment/type
^DJI DJI 1 CTRT C 3 contract code
^MIDCA 2 SESSION C 3 GLO, GLD, NSC
^SML S&P Small Caps 600 3 TRADING_DATE C 8 trading day: YYYYMMDD
^MID S&P Mid Caps 400 4 TRADING_TIME C 9 trading time: HHMMSSD
5 ISSUE C6 maturity: YYYYMM
Principaux Indices Europe ^VIX vol implicite S&P 500 options 6 RANK N 2 maturity rank
^STOXX50E Eursotoxx50 ^VXO old VIX bas sur les options des action S&P 100 7 PRICE N 11,4 Traded price
^VLIC Value Line 8 VOLUME N 8 Traded volume
^SSMI SMI 9 DATE_CL N 8 clearing day: YYYYMMDD
^GDAXI DAX ^VXN NASDAQ Volatility
^FTSE FTSE clearing day=evening session (GLO) + morning session (GLD) + day session (NSC)
main session=morning session (GLD) + day session (NSC)
^AEX Pays Bas ^TYX 30 years bonds
^SMSI Espagne ^TNX 10 years note
^MIBTEL Italie ^FVX 5 Years note
... ^IRX 13 Weeks Bill
descriptions: http://www.cboe.com CTRT SESSION TRADING_DATE TRADING_TIME ISSUE RANK PRICE VOLUME DATE_CL
FCE GLO 20031031 1630090 200311 1 3379 6 20031103
..
FCE NSC 20031103 805170 200311 1 3384.5 1 20031103
^OIX Oil Index ..
^XAU Or Attention: trs gros fichiers : un mois ~ 100 000 lignes ~ 28 MO !!!
R n'est pas toujours trs adapt ce type de problme !!!
=> programmations spcifiques en C, C++, JAVA

Contrat Futures US: Intraday tick data CME/GLOBEX: http://www.cme.com/ftp.wrap/gtime


Daniel HERLEMONT Daniel HERLEMONT
61 62

Donnes - exchange Donnes macro


Taux de change: EUR/USD, USD/JPY, USD/CHF et GPD/USD
exchange.rates package VaR.
http://www.yats.com/rhelp/library/VaR/html/exchange.rates.html Donnes macro du package tseries
Description: Data on the currencies exchange rates for USD, EUR, CHF, GPD. Data covers a
period from 03-01-2000 till 22-08-2003. http://www.yats.com/rhelp/library/tseries/html/NelPlo.html 14 macroeconomic time series: cpi, ip,
gnp.nom, vel, emp, int.rate, nom.wages, gnp.def, money.stock, gnp.real, stock.prices, gnp.capita, real.wages, and unemp and the joint
RMetrics: cours Intraday et journaliers indices, actions, et devises series NelPlo. Details The series are of various lengths but all end in 1988. The data set contains the following series: consumer price
index, industrial production, nominal GNP, velocity, employment, interest rate, nominal wages, GNP deflator, money stock, real
http://www.yats.com/rhelp/library/fBasics/html/E1-fBasicsData.html GNP, stock prices (SP500), GNP per capita, real wages, unemployment
A collection of Data Sets used in the examples of the fBasics library. The data sets are:
audusd.csv Reuters Tick-by-Tick AUDUSD rates 1997-10, http://www.economagic.com/ Economic Time Series Page:
usdthb.csv Reuters Tick-by-Tick USDTHB rates 1997, There are more than 100,000 time series for which data can be retrieved. The core data sets involve US
fdax9710.csv Minute-by-Minute DAX Futures Prices for 1997-10, macroeconomic data
fdax97m.csv Minutely Time and Sales DAX Futures for 1997, voir fBasics:
bmwres.csv Daily log Returns of German BMW Stock Proces,
nyseres.csv Daily log Returns of the NYSE Composite Index.
http://www.yats.com/rhelp/library/fExtremes/html/euroex.html UK/Euro exchanges rates
Banque Central Europenne:
http://www.yats.com/rhelp/library/fExtremes/html/exchange.html UK/US and UK/Canada Exchange Rates
Contient les taux de change journaliers EUR contre autres devises depuis 1999
http://www.ecb.int/stats/eurofxref/eurofxref-xml.html

Ainsi que de trs nombreuses data conomiques concernant la zone Euro


https://stats.ecb.int/stats/download/index.html

Daniel HERLEMONT Daniel HERLEMONT


63 64

Data - Hedge Funds CSFB Tremont Rmetrics http://www.itp.phys.ethz.ch/econophysics/R/

CSFB Tremont: http://www.hedgeindex.com/ publie des indices de rendements des hedge. Un fichier au
format CSV a t prpar http://www.yats.com/downloads/CSFBTremont.csv, contenant les
rendements mensuel depuis 1993 (soit 120 points par indice). Le fichier contient une l'en-tte:
Date, HedgeFundIndex, ConvertibleArbitrage, DedShortBias, EmergingMarkets,
EquityMktNtrl, EventDriven, Distressed, HedgedMultiStrategy, RiskArbitrage,
FixedIncArb, GlobalMacro, LongShort, ManagedFutures, MultiStrategy suivi par
les lignes correspondantes pour la date et les rendements. La commande R
suivante
hf=read.table("CSFBTremont.csv",header=T,sep=",") permet de charger le
fichier dans une data.frame. Voir support de cours pour des exemples
d'utilisation.

Total Annualized Average Best Worst


Index Return Total Return Month Month Month volatility Beta Sharpe
CSFB/Tremont Hedge Fund Index 186.89% 11.11% 0.91% 8.53% -7.55% 8.48% 0.26 0.82
HEDG Convertible Arbitrage 171.22% 10.49% 0.84% 3.57% -4.68% 4.78% 0.04 1.33
HEDG Ded Short Bias -27.58% -3.18% -0.14% 22.71% -8.69% 18.02% -0.9 -0.41
HEDG Emerging Markets 98.63% 7.10% 0.71% 16.42% -23.03% 17.76% 0.54 0.17
HEDG Equity Mkt Ntrl 175.23% 10.65% 0.85% 3.26% -1.15% 3.07% 0.07 2.13
HEDG Event Driven 194.29% 11.40% 0.92% 3.68% -11.77% 6.04% 0.21 1.21
HEDG Distressed 251.45% 13.39% 1.07% 4.10% -12.45% 6.99% 0.23 1.33
HEDG E.D. Multi-Strategy 166.51% 10.30% 0.84% 4.66% -11.52% 6.36% 0.19 0.97
HEDG Risk Arbitrage 124.47% 8.42% 0.68% 3.81% -6.15% 4.46% 0.13 0.96
HEDG Fixed Inc Arb 93.14% 6.80% 0.56% 2.02% -6.96% 3.95% 0.01 0.68
HEDG Global Macro 286.82% 14.49% 1.19% 10.60% -11.55% 12.12% 0.19 0.86
HEDG Long/Short 214.93% 12.16% 1.01% 13.01% -11.43% 11% 0.41 0.73

Daniel HERLEMONT Daniel HERLEMONT


65 66

Page 11
11
RMetrics / fBasics RMetrics data

A collection of Data Sets used in the examples of the fBasics library.


The data sets are:
1 audusd.csv Reuters Tick-by-Tick AUDUSD rates 1997-10,
2 usdthb.csv Reuters Tick-by-Tick USDTHB rates 1997,
3 fdax9710.csv Minute-by-Minute DAX Futures Prices for 1997-10,
4 fdax97m.csv Minutely Time and Sales DAX Futures for 1997,
5 bmwres.csv Daily log Returns of German BMW Stock Proces,
6 nyseres.csv Daily log Returns of the NYSE Composite Index.

Installation:
Pour mmoire, dans le package ts:
- tlcharger fBasics.zip sur le site RMetrics
EuStockMarkets: indicees Europens: "DAX" "SMI" "CAC" "FTSE"
package requis: date, tseries

dmos:
excuter les dmos dans le rpertoire libarary/fBasics/demo
examiner les sources . Chargement d'une serie en mmoire: exemple:
Astuce: pour excuter la demo, faire un drag & drop du fichier dans la console R! > data(nyseres)
Pour info voir le contenu installDir/library/fBasics/data/Rdata.zip

Daniel HERLEMONT Daniel HERLEMONT


67 68

Graphiques Demo fBasics - Central Limit Theorem at work

Exemple: library/fBasics/demo/xmpDistCLT.R

#
# Title:
tsPlot #Explore Aggregation Effects with the Central Limit Theorem
#
pour les indices Europens # Description:
# This example creates a Quantile-Quantile Plot for the
# NYSE Composite Index residuals. Calculate mean, variance,
# skewness and kurtosis. It also tests the program for a
# set of iid residuals of equal size derived from a Gaussian
# distribution, compared the data with those obtained
# from an aggregated time series as a result of the
# Central Limit Theorem
#

## tsPlot

# Show multiple plot:


par(mfrow=c(1, 1))

data(EuStockMarkets)
tsPlot(EuStockMarkets, gpars = list(col = c(2:4, 6)) )

title(main = "European Stock Markets")


Daniel HERLEMONT Daniel HERLEMONT
69 70

Faits styliss avec RMetrics Demos fBasics - long memeory effect

xmpCorLongMemory.R

## logpdfPlot - #
# Plot the log-returns of the NYSE Composite Index # Title:
# and compare with the Gaussian Distribution: #Calculate Hurst Exponent and Plot Long Memory ACF
par(mfrow = c(2, 2)) #
data(nyseres) # Description:
# Extract from data.frame: #This example plots the long memory autocorrelation function
x = nyseres[, 1] #of the volatility calculated from the NYSE residuals
logpdfPlot(x, main = "log PDF Plot") #and estimate the Hurst-Exponent from the slope of the
# loglogpdfPlot - #log-log plot.
# Plot the log-returns of the NYSE Composite Index #
# and compare with the Gaussian Distribution: # Function:
logpdfPlot(x, type = "log-log", main = "log-log PDF Plot") # lmacf()
Continue = readline("Press any key > ")

## qqgaussPlot -
# Create a Gaussian Quantile-Quantile plot
# for the NYSE Composite Index log-returns:
qqgaussPlot(x)
Continue = readline("Press any key > ")

## scalinglawPlot -
# Investigate and plot the scaling law
# for the NYSE Composite Index log-returns:
scalinglawPlot(x)

C:\R\rw1081\library\fBasics\html\B5-stylizedFacts.html
Daniel HERLEMONT Daniel HERLEMONT
71 72

Page 12
12
Dmo fBasics - scaling law Systme de trading

xmpDistScalinglaw.R

# Settings:

# Create a Scaling Law Plot


# Data: NYSE Composite Index log Returns
par(mfrow = c(2, 2))
data(nyseres)

# Scaling Law Plot:

x = nyseres[,1]
print(scalinglawPlot(x, span = 6, doplot = TRUE))

# Title: # Compare with alpha-Stable Distribution:


# Explore Scaling Law Behavior of a Time Series
# print(scalinglawPlot(x = rstable(length(x), alpha = 1.85,
# Description: beta = 0), doplot = TRUE))
# This example plots the scaling laws for the NYSE, alpha-
# stable and Gaussian distributed residuals. It checks the # Compare with Gaussian Distribution:
# slope and intercept obtained from the straight line fit.
# print(scalinglawPlot(x=rnorm(length(x)), doplot=TRUE))
# Function:
#
Daniel HERLEMONT scalinglawPlot() Daniel HERLEMONT
73 74

Demos in package 'fBasics': Dmo fBasics


xmpCorLongMemory Long Memory ACF and Hurst Exponent
xmpCorSimpleCorrelations Correlation Functions, ACF, PACF, XCF
xmpCorTaylorEffect Taylor Effect of Time Series Data
xmpDistBastats Basic Statistics of Time Series Data
xmpDistCLT Aggregation Effects and the Central Limit Theorem
xmpDistDFhyp Hyperbolic Distribution Functions
xmpDistDFnig Normal Inverse Gaussian Distribution Functions
xmpDistDFstable Stable Distribution Functions
xmpDistDFsymstb Symmetric Stable Distributions
xmpDistDFsymstbLimits
xmpDistDFsymstbTails The Tails of the Symmetric Stable Distribution
xmpDistLogpdf Plot Distributions on a Logarithmic Scales
xmpDistLogpdfFit Fit the Tail of Distributions on a Logarithmic Scale
xmpDistMLEhyp MLE Parameter Estimation for the Hyperbolic Density
xmpDistMLEnig MLE Parameter Estimation the Inverse Gaussian Density
xmpDistMLEstudent MLE Parameter Estimation for the Student-t Density
xmpDistQQgauss Quantile-Quantile Plot and Basic Statistics
xmpDistScalinglaw Scaling Law Behavior of a Time Series
xmpImportEconomagic Import Data from Economagic's Internet Site
xmpImportYahoo Import Data from Yahoo's Internet Site
xmpTestCorrelations Perform Correlation Tests
xmpTestGoFnorm Goodness-Of-Fit Tests for Testing Normality
xmpTestKSgofAggregation Aggregated NYSE Residuals in the Gaussian Limit
xmpTestKSgofConvergence Student's-t Distribution in the Gaussian Limit
xmpTestKSgofSubsamples Compare Subsamples of Time Series by the KS Test
xmpTestRuns Perform a Runs Test on Time Series Data
xmpTestRunsExt Perform an Extended Runs Test on Time Series Data
xmpXtsDailyWeeklyHists Intra-Daily/Weekly Volatility Histograms for HF Data
xmpXtsDeSeasonalization De-Seasonalize an Intra Day Time Series in Upsilon Time
xmpXtsDeVolatilization De-Volatilize a High Frequency Time Series
xmpXtsFXFilter Parse and Filter High Freuency Foreign Exchange Data
xmpXtsInterpolation Interpolation of Intra-Daily Data Records
Daniel HERLEMONT Daniel HERLEMONT
75 76

RMetrics / fSeries Demos in package 'fSeries

testCases.regFit Test Cases for regFit Collection


xmpAparchEstimation APARCH Parameter Estimation
xmpAparchInnovations APARCH Time Series Innovations
xmpAparchNYSERES APARCH NYSE Composite Index Estimation
xmpAparchSimulation APARCH Time Series Simulation
xmpAparchWriteSim APARCH Write Simulation Function
xmpArmaCorrelation ARMA Time Series Correlations
xmpArmaDiagnostics ARMA Model Diagnostics
xmpArmaEstimation ARMA Parameter Estimation
xmpArmaForecasts ARMA Forecasts
xmpArmaIdentification ARMA Process Identification
xmpArmaRoots Unit Roots of an ARMA Process
xmpArmaSelection ARMA Process Selection
xmpArmaSimulation ARMA Time Series Simulation
xmpArmaTrueAcf True ACF of an ARMA Process
xmpEuStockMarkets European Stock Market Data
xmpGarchModelling Garch Time Series Modelling
xmpGarchSimulation Garch Time Series Simulation
xmpRegRecession Modelling US Recession
xmpTestBDS BDS Time Series Test
xmpTestCointegration Cointegration Tests
xmpTestNonlinearity Nonlinearity Tests
Installation: allez dans la section download sur le site Rmetrics le package fSeries xmpTestNormality Normality Tests
packages requis: fBasics, date, tseries, lmtest, mda, polspline, xmpTestStationarity Stationarity Tests
xmpTradingPatternCreation Create Tading Pattern
xmpTradingPatternTests Windowed Correlation Tests
xmpTradingWithMACD Trade with the MACD Oscillator
xmpTradingWithTrend Trade in the Direction of the Trend
Daniel HERLEMONT Daniel HERLEMONT
77 78

Page 13
13
Rmetrics / fExtremes, fOptions Demos in package 'fOptions'

xmpAMERICANbaw Barone-Adesi and Whaley Approximation


xmpAMERICANbsa Bjerksund and Stensland Approximation
xmpAMERICANskd Americam Calls on Dividend Paying Stocks
xmpCRRBinomialTree Cox-Ross-Rubinstein Binomial Option Tree Model
xmpEXOTICconvar Options with Contract Variations
xmpEXOTIClimdep Limit Dependent Options
xmpEXOTICmulfac Multiple Factor Options
xmpEXOTICpathdep Simple Path Dependent Options
xmpGBSgreeks Generalized Black-Scholes Option Sensitivities
xmpGBSgreeks2D 2-D Graphs of GBS Option Sensitivities
xmpGBSgreeks3D 3-D Graphs of GBS Option Sensitivities
xmpGBSoption Generalized Black-Scholes Option Prices
xmpGBSoption2D 2-D Graphs of GBS Option Prices
xmpGBSoption3D 3-D Graphs of GBS Option Prices
xmpGBSpayoff Profit/Loss in Buying and Writing Calls and Puts
xmpHNGdiag Conditional Variances and Innovations
xmpHNGgreeks The Greeks of European Call Options
xmpHNGmle HN GARCH(1,1) Log Likelihood Parameter Estimation
xmpHNGmoments Moments of the Log Return Distribution
xmpHNGrms RMS Parameter Estimation and Option Misspricing
xmpHNGscaling Pricing of European Call Options
xmpHNGsim Simulation of HN GARCH(1,1) Price Paths
xmpHNGsmile Investigation of the Smile Effect
xmpLDSbscall Black Scholes Monte Carlo Pricing
xmpLDSbsconvergence Convergence Behaviour of Black Scholes MC Pricing
xmpLDSgap MC Simulate the price of a Gap Option
xmpLDShalton Compute Halton low discrepancy numbers
xmpLDSlookback MC Simulate the price of a Fix Strike Lookback Option
xmpLDSprimes Compute Prime Numbers
xmpLDSsfaure Compute Faure low discrepancy numbers
xmpLDSssobol Compute Sobol low discrepancy numbers
xmpXChooser
xmpXExecutiveStock
xmpXLookback
xmpXStandardBarrier
Daniel HERLEMONT Daniel HERLEMONT
79 80

Page 14
14