Analyse des données de crypto-monnaie, partie I : Obtention et lecture de données d’actifs numériques

1 Intro

Le mot «crypto-monnaie» a pris d'assaut le monde financier, et pourtant, il manque des recherches formelles et ouvertes sur les données des actifs numériques. Personnellement, étant un investisseur en crypto-monnaie et scientifique des données, je suis fasciné par l'étude de cette classe d'actifs naissante au microscope d'outils d'analyse de données et d'apprentissage automatique afin de guider mes décisions d'investissement.

Nous espérons que ces séries de tutoriels permettront de combler l'écart entre les scientifiques des données et le monde de la crypto-monnaie; inversement, les traders non techniques en cryptographie pourront profiter de cette occasion pour acquérir des compétences de codage directement applicables. Nos données viendront de Poloniex.

2 Mise en place de l'environnement de recherche

Nous utiliserons Python 3 et l'environment Anaconda tout au long de la série. Avant de commencer à extraire les données des crypto-monnaies, suivez les instructions pour installer Anaconda, l’outil de gestion de paquets. Le lien vous mènera au site Web de Continuum Analytics qui installera les deux: l'interpréteur Python et les packages dont nous aurons besoin. En particulier, nous allons tirer parti de la bibliothèque Pandas et de Jupyter Notebooks, deux des outils les plus impressionnants pour jouer avec des données.

Lorsque vous avez terminé d'installer l'environnement, recherchez Anaconda Navigator dans votre système, ouvrez-le.

anaconda-dashboard.png

Lorsque vous êtes dans le navigateur, cliquez sur le bouton de lancement situé sous l’icône Jupyter Notebook.

Cela ouvrira la fenêtre racine de Jupyter dans votre navigateur par défaut. Créez un nouveau bloc-notes Python 3 en cliquant sur l’option correspondante dans le menu déroulant Nouveau.

Cela vous mènera au cahier. Ceci termine la configuration de notre environnement de recherche.

3 Gratter les données

Importez la bibliothèque pandas, et tapez :

import pandas as pd

Pour exécuter une cellule de code, appuyez sur le bouton Lecture situé sur le panneau supérieur ou appuyez sur Maj + Entrée.

Exécutez aussi :

%matplotlib inline

Cela fera apparaître des tracés visuels en ligne sans autre appel pour afficher le tracé.

Poloniex utilise JSON ou JavaScript Object Notation pour communiquer ses données historiques Open, High, Low, Close, Volume (OHLCV) avec le monde extérieur, ce qui est quasiment la norme de transfert de données pour la majorité des places de marché de crypto-monnaies :

{"date":1483920000,"high":916.41833046,"low":880,"open":916.41832969,
"close":902,"volume":1561326.5181909,"quoteVolume":1743.42476903,
"weightedAverage":895.55141462}

Le problème avec JSON est qu’il est assez fastidieux de le décompresser et de le trier manuellement dans des tableaux. Si vous deviez le faire manuellement, vous devriez interroger chaque objet comme un dictionnaire Python et trier les valeurs dans des tableaux. Heureusement, la bibliothèque pandas a la fonction pd.read_json() qui effectuera tout le tri et les conversions datetime. Nous sommes prêts à écrire notre fonction d'extraction de données, qui prendra un symbole et une fréquence de barres et renverra une trame de données pandas contenant la série temporelle d'une crypto-monnaie donnée :

def CryptoData(symbol, frequency):
    #Params: String symbol, int frequency = 300,900,1800,7200,14400,86400
    #Returns: df from first available date
    url ='https://poloniex.com/public?command=returnChartData&currencyPair='+symbol+'&end=9999999999&period='+str(frequency)+'&start=0'
    df = pd.read_json(url)
    df.set_index('date',inplace=True)
    return df

Maintenant, voyons-le en action! Récupérons tous les jours bitcoin - USD close data. Dans la cellule suivante, tapez :

df = CryptoData('USDT_BTC', 86400)['close']

Maintenant, lancez-le. Notez que si vous supprimez ['close'] à la fin de l'appel, vous obtiendrez toutes les données de la barre OHLCV.

4 Obtenir le premier regard

Vous pouvez inspecter la tête du dataframe en tapant et en exécutant df.head() :

date
2015-02-19    244.00
2015-02-20    240.25
2015-02-21    245.00
2015-02-22    235.00
2015-02-23    235.00
Name: close, dtype: float64

Pour inspecter visuellement la série chronologique d’historique, tapez df.plot(). Vous obtiendrez un graphique de l'historique des prix en sortie :

df.plot.png

C’est bien et joli, mais nous n’obtenons pas beaucoup d’informations sur ce complot. Les pandas vous permettent d'effectuer beaucoup d'analyses rapides et sales en chaînant des appels de méthode sur une trame de données. Par exemple, vous pouvez obtenir des statistiques descriptives sur les rendements en pourcentage de la série en tapant df.pct_change().describe() :

df.change.png

Comme prévu, le bitcoin est très volatile, mais pouvons-nous le visualiser ? Nous pouvons tracer l'histogramme des pourcentages de retour sur une ligne: df.pct_change().hist(bins=100), ce qui donne le graphique suivant :

hist.png

Nous pouvons maintenant visualiser les queues grasses de Bitcoin.

Espérons que cela vous a donné un avant-goût de la suite de la série. N'hésitez pas à expérimenter avec la fonction d'extraction de données et la bibliothèque de pandas. Essayez de récupérer des données pour d'autres actifs numériques en modifiant la chaîne de symboles dans l'appel de fonction ou essayez de tracer différentes séries chronologiques d'historique, en appelant simplement .plot() sur le cadre de données.

S'il vous plaît laissez vos commentaires et commentaires ci-dessous.

Bon code !

5 Source

Ceci est une traduction de l'article de Ed Silantyev disponible sur Medium.