Académique Documents
Professionnel Documents
Culture Documents
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 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
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)
Page 1
1
R: de trs nombreux packages Les packages pour les sries temporelles
* 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
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
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.
FAQs http://cran.r-project.org/doc/FAQ/R-FAQ.html
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
>cat("hello worll \n") # imprime une chaine dans la sortie standard (la console par dfaut)
# \n pour sauter une ligne
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
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.
Page 4
4
Listes (suite) Matrices & Arrays
> my.list[[1]]
[1] 5 4 -1
> my.list$c2[2:3]
[1] "X2" "X3"
exemples lapply : applique une fonction une liste: une alternative aux boucles:
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)
Page 5
5
Graphiques quantile-quantiles plots intraday future CAC40
normalement distribues.
2
1
Consultez ?rnorm,
rnorm(100)
?rexp,
-1
-3 -2 -1 0 1 2
rnorm(100)
Lecture verticale
Boite moustache
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
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
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
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
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
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
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
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.
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
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, .
Daniel HERLEMONT
Les sources R sont dans dans le rpertoire d'installation, puis
Daniel HERLEMONT
57 library/package/R/package 58
# 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)
Page 10
10
YAHOO (suite) Tick data intraday futures CAC40
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.
Page 11
11
RMetrics / fBasics RMetrics data
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
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
data(EuStockMarkets)
tsPlot(EuStockMarkets, gpars = list(col = c(2:4, 6)) )
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:
x = nyseres[,1]
print(scalinglawPlot(x, span = 6, doplot = TRUE))
Page 13
13
Rmetrics / fExtremes, fOptions Demos in package 'fOptions'
Page 14
14