En finance, les corrélations ont une grande importance, notamment dans la littérature concernant les co-mouvements, les effets de contagion et les spillovers. La corrélation est un indicateur compris entre -1 et 1 dont le coefficient indique si deux séries évoluent dans le même sens (corrélation proche de 1), de manière inverse (proche de -1) et de façon indépendente (proche de 0). On va voir ici comment visualiser les corrélations entre actifs financiers - en l’occurence entre crypto-actifs. On va utiliser les données de rendements d’actifs qu’on a extrait dans la page Importer des données financières depuis Yahoo Finance (et faire des beaux graphiques) avec le package quantmod avec la commande suivante :

symbols <- c("BTC-USD", "ETH-USD", "LTC-USD", "ADA-USD", "XRP-USD")
getSymbols(symbols, from="2017-11-10", to="2023-06-30", src="yahoo", periodicity="daily")

BTC<-dailyReturn(`BTC-USD`)
ETH<-dailyReturn(`ETH-USD`)
LTC<-dailyReturn(`LTC-USD`)
ADA<-dailyReturn(`ADA-USD`)
XRP<-dailyReturn(`XRP-USD`)

dataset<-merge(BTC, ETH, LTC, ADA, XRP)

Par simplicité, on va transformer dataset en objet zoo, et tracer les graphiques de rendements

dataset<-merge(BTC, ETH, LTC, ADA, XRP)
dataset<-as.zoo(dataset)
names(dataset)<-c("BTC", "ETH", "LTC", "ADA", "XRP")
plot(dataset, main="dataset") 

Untitled

On peut voir que le Bitcoin (BTC), l’Ethereum (ETH) et le Litecoin (LTC) ont des mouvements assez similaires, tandis que que le Cardano (ADA) ou le Ripple (XRP) sont un peu plus différents. On peut visualiser l’ensemble des corrélations avec la commande suivante :

cor(dataset)

Untitled

On peut également observer la corrélation entre le Bitcoin (BTC) et l’Ethereum (ETH) avec la fonction

cor.test(dataset$BTC, dataset$ETH, method="pearson", conf.level=0.95)

Untitled

Ce qui nous permet d’avoir la possibilité de modifier la méthode (on a la choix entre "pearson", "kendall" et "spearman”) et l’intervalle de confiance. Le coefficient de corrélation nous permet aussi de mesurer le $R^2$

rho<-cor(dataset$BTC, dataset$ETH)
rho^2

Untitled

Le résultat indique qu’environ 60% de la variance du Bitcoin est expliquée par l’Ethereum.

Lorsqu’on a beaucoup de données (comme c’est le cas ici), on peut représenter la matrice des corrélations calculée précédemment de différentes manières : avec symnum, corrplot, heatmap et/ou ggcorrplot :

require(corrplot)
#require(ggcorrplot)
M<-cor(dataset)
symnum(M, abbr.colnames=F)
corrplot(M, type="lower", method="circle")
heatmap(M, symm=T)
ggcorrplot(M,
  p.mat = p.mat,
  hc.order = TRUE,
  type = "lower",
  insig = "blank"
)

Matrice de corrélation avec “symnum”.

Matrice de corrélation avec “symnum”.

Matrice de corrélation avec “heatmap”

Matrice de corrélation avec “heatmap”

Matrice de corrélation avec “corrplot”. Plus de détails ici.

Matrice de corrélation avec “corrplot”. Plus de détails ici.

Matrice de corrélation avec “ggcorrplot”. Plus de détails ici.

Matrice de corrélation avec “ggcorrplot”. Plus de détails ici.