Rejoignez-Nous sur

Comment les portefeuilles BitMEX impactent le prix du Bitcoin

News

Comment les portefeuilles BitMEX impactent le prix du Bitcoin

mtSh7vxezjTYIGXG5hQbtbkKPfo2 f81n3esp
Photo de profil de l'auteur

@evanazeEvan Azevedo

Je suis généraliste et amoureux des sciences

Une partie de la construction d'une stratégie commerciale rentable consiste à tester rapidement de nouvelles idées. Ceux-ci ont tendance à être les faiseurs d'argent dans les rares cas où ils s'avèrent utiles une fois que vous pouvez les intégrer dans votre stratégie.

Aujourd'hui, nous étudierons une de ces idées. Voici le contexte: actuellement, BitMEX – une grande bourse d'échange de Bitcoin – n'autorise les retraits de leurs portefeuilles qu'une seule fois par jour.

Ces retraits – ou sorties – peuvent être un volume assez élevé, nous aimerions donc savoir si ces soi-disant sorties de Bitcoin des portefeuilles BitMEX sont probablement un indicateur du marché Bitcoin. Puisque je travaille pour Amberdata et qu'Amberdata fournit les meilleures métriques et données de blockchain, nous utiliserons leur produit pour l'analyse d'aujourd'hui. Tout ce dont nous avons besoin pour cette analyse est l'API Pro d'Amberdata et Python3 installés, alors commençons!

Qu'est-ce que Inflow / Outflow?

Ici, nous examinons les mouvements importants de Bitcoin dans et hors des portefeuilles BitMEX. Plus précisément, lorsque quelqu'un dépose de l'argent dans son portefeuille BitMEX ou effectue un retrait de celui-ci; cependant, nous n'avons pas accès aux données de la Bourse lorsque les utilisateurs déposent de l'argent. Nous déduisons donc le flux d'argent dans les portefeuilles en surveillant les soldes de leurs comptes sur la blockchain. Autrement dit, l'entrée augmente le solde d'une adresse, tandis que la sortie diminue le solde de l'adresse.

mtSh7vxezjTYIGXG5hQbtbkKPfo2 mgc3emr

Vérification de la santé mentale pour vous assurer que les sorties ne se produisent qu'une fois par jour

Juste comme un rapide contrôle de santé mentale, j'ai décidé de regarder les soldes de compte horaires de quelques portefeuilles BitMEX BTC récemment actifs. Comme prévu, les sorties de portefeuille n'atteignent qu'une seule fois par jour. Remarque: la valeur sur l'axe des y est en Shatoshi, pas en Bitcoin. Nous pouvons également tester cette hypothèse directement avec le code ci-dessous. Il regroupe les données d'heure en heure et tous les jours et teste pour voir s'il y a plus d'une sortie par adresse par jour. Le tester sur nos données ci-dessus montre que l'hypothèse est sûre pour l'instant. Le cahier complet pour cette analyse est disponible ici.
combined = pd.DataFrame(data).T
combined.columns = (str(i) for i in range(N))
combined = combined.applymap(lambda x: 1 if x > 0 else 0)
combined = combined.reset_index().rename({"index": "ts"}, axis=1)
combined('date') = combined("ts").apply(lambda df: datetime.datetime(year=df.year, month=df.month, day=df.day)) 
combined.set_index(combined("date"),inplace=True)
combined = combined.drop(("date", "ts"), axis=1)
combined = combined.resample('D').sum()
if combined.max(axis=1).max() == 1:
    print("Our assumtion is safe.")
else:
    print("Incorrect assumption!")

Lorsque nous affichons les soldes des comptes de toutes les adresses associées à BitMEX, nous pouvons commencer à obtenir une image des entrées / sorties nettes de l'échange. Parlons un peu de la justification de nos calculs.

Le calcul

Notre principal intérêt est l'argent entrant et sortant des portefeuilles BitMEX, alors parlons un peu de la façon dont nous calculons cela. Imaginez que nous ayons une vue d'ensemble des soldes des comptes sur chaque adresse BitMEX. Lorsqu'une des adresses, appelons-la A, effectue un échange avec une autre adresse BitMEX, B, pour 100 $ de Bitcoin, la transaction se présente comme suit:

A – 100 -> B.

En d'autres termes, l'adresse A a une sortie de 100 $ et l'adresse B a une entrée de 100 $.

Mais, nous nous intéressons surtout au flux d'argent entrant et sortant du système: l'échange BitMEX. Par conséquent, nous examinons le flux net de toutes les adresses. Nous calculons le flux net comme:

Net = In – Out.

Dans cette vue, nous pouvons comparer l'argent total entrant dans les portefeuilles BitMEX Bitcoin et l'argent total sortant. Quand il y a un grand mouvement dans les deux sens, cela apparaîtra sur les entrées / sorties nettes.

L'analyse

Maintenant que nous avons terminé le calcul, il est temps de tourner notre attention vers l'obtention des données. Comme mentionné ci-dessus, nous nous concentrons sur les portefeuilles BitMEX Bitcoin, et comme nous voulons capturer autant d'activité que possible, nous étendons le retour en arrière à un an à compter de la date actuelle. Nous avons recueilli autant d'adresses que possible pour cette analyse, environ cinq cent mille au total. Ces adresses commencent toutes par «3BMEX» ou «3BitMEX», et dans notre analyse, «3BMEX» était beaucoup plus courant. Dans notre cas, les adresses d'activité moyennes ne diffèrent pas beaucoup entre les deux conventions de dénomination.

mtSh7vxezjTYIGXG5hQbtbkKPfo2 at2h3el0

Une fois que vous avez vos adresses – et cela peut être n'importe quel ensemble d'adresses sur les chaînes de blocs prises en charge – vous pouvez utiliser cette excellente petite fonction pour obtenir la réponse d'Amberdata:

def get_response(url, headers=None, queryString=None):
    "Get the REST response from the specified URL"
    if not headers:
        headers = {'x-api-key': api_key}
    if queryString:
        response = requests.request("GET", url, headers=headers, params=queryString)
    else:
        response = requests.request("GET", url, headers=headers)
    response = json.loads(response.text)
    try:
        if response("title") == "OK":
            return response("payload")
    except KeyError:
        return None
Cela fonctionne pour tous les appels de l'analyse, mais en utilisant

response("payload")

peut ne pas être idéal pour votre cas d'utilisation, selon le point final. Dans ce cas, nous accédons à Amberdata Historique du solde du compte endpoint, qui ressemble un peu à ceci:

url = "https://web3api.io/api/v2/addresses/" + address + "/account-balances/historical"

querystring = {"startDate": startTime, "endDate": endTime}

headers = {
    'x-amberdata-blockchain-id': "bitcoin-mainnet",
    'x-api-key': os.getenv("AMBERDATA_API_KEY")
}

payload = get_response(url, headers, querystring)
Où adresse est l'adresse pour laquelle obtenir le solde du compte. Nous nous concentrons sur les adresses sur Bitcoin, nous utilisons donc

bitcoin-mainnet

pour l'ID de la blockchain.

À cinq cent mille adresses sur une période d'un an, ce calcul peut prendre jusqu'à 40 heures! C'est là que la prise en charge intégrée de Python pour la concurrence est utile. Utilisation d'une fonction appelée

daily_inflow_outflow

dans

utils.py

pour calculer les entrées et sorties totales quotidiennes pour une adresse, nous pouvons utiliser les

ThreadPoolExecutor

pour réduire le temps d'exécution de 5x ou plus – en fonction de la vitesse de votre machine. Nous sauvegardons les flux quotidiens agrégés et les ajoutons au

gross_daily

trame de données. Après avoir exécuté mon analyse, la taille de

all_activity

dépassait 6 Go! Nous pouvons l'utiliser plus tard pour approfondir l'activité.

for i in tqdm.trange(len(addresses) // config.P):
        with ThreadPoolExecutor(max_workers=4) as executor:
            futures = {executor.submit(utils.daily_inflow_outflow, addresses(config.P*i+j), headers, querystring): addresses(config.P*i+j) for j in range(config.P) if i+j < len(addresses)}
            for future in as_completed(futures):
                address = futures(future)
                res = future.result()
                if res is not None:
                    gross_daily += res
                    all_activity(address) = res.to_json()
                else:
                    all_activity(address) = {}

Nous utilisons certaines fonctions vectorisées dans Pandas pour additionner tous les entrées et sorties de ces portefeuilles, superposer le net avec le prix du bitcoin, et le tour est joué!

mtSh7vxezjTYIGXG5hQbtbkKPfo2

Entrées / sorties nettes et prix Bitcoin

Tout d'abord, notez les pics évidents d'entrée / sortie. Nous pourrions les classer comme comportement anormal. Ce sont les signaux que nous souhaitons évaluer dans notre stratégie. Nous différencions d'abord les flux nets, ou – dans la terminologie des séries chronologiques – introduisons un décalage d'un. Autrement dit, nous calculons la variation quotidienne du flux net. En traçant les flux nets quotidiens décalés sur un histogramme, nous pouvons avoir une idée de la distribution des changements quotidiens dans les flux nets et pouvons déduire des anomalies.

mtSh7vxezjTYIGXG5hQbtbkKPfo2 3j1e3enm

Différences d'entrées / sorties nettes et écarts-types en rouge

Ici, nous recherchons spécifiquement les valeurs aberrantes, nous avons donc tracé les écarts-types de la moyenne par des lignes rouges. Nous choisissons la ligne rouge extérieure pour indiquer des variations importantes des flux nets. En clair, si nous observons un changement quotidien de l'entrée ou de la sortie nette supérieure à 3 sigma, il s'agit alors d'un flux important sortant ou entrant dans les portefeuilles BitMEX. Si nous choisissons 3 écarts-types, nous finissons par exclure 97,521% des jours de notre analyse. Certains statisticiens aux yeux pointus peuvent remarquer que 97,521% n'est pas le 99,7% que nous attendrions de 3 sigma. Étant donné qu'il ne s'agit que d'une estimation empirique basée sur des valeurs historiques et que notre variation quotidienne des flux nets ne semble pas distribuée normalement, nous ne pouvons pas nous attendre à voir des quantiles exacts.

Maintenant que nous pouvons identifier les jours de flux net anormalement élevés, nous pouvons tracer nos jours d'entrées / sorties élevées sur le prix du Bitcoin.

mtSh7vxezjTYIGXG5hQbtbkKPfo2 q41l3e1p

Jours d'entrée / sortie élevés dans BitMEX et Bitcoin

Ici, nous pouvons voir que la sortie élevée de BitMEX s'accompagne généralement d'une forte baisse des prix. L'événement d'octobre 2019, mars 2020 et fin mai 2020 a tous été suivis d'énormes sorties de Bitcoin dans les portefeuilles BitMEX. Nous pouvons approfondir ces périodes et voir ce qui se passait.

mtSh7vxezjTYIGXG5hQbtbkKPfo2 ig1q3ek6

Une période de sorties en 2019, où les sorties ont suivi une forte baisse des prix de 20%

mtSh7vxezjTYIGXG5hQbtbkKPfo2 8t203e0d

La deuxième période de forte sortie, en 2020

Mais, notez qu'il faut un jour à l'algorithme actuel pour reconnaître le changement de flux. À ce moment-là, il est probablement déjà trop tard, nous pouvons donc faire mieux avec un écart-type SMA glissant, ou Bandes de Bollinger. Ceux-ci nous aideront à identifier rapidement lorsque nous connaissons des débits suffisamment importants que d'habitude dans les deux sens. Utilisation de code légèrement modifié à partir d'un site Web Python pour Bandes de Bollinger:
def bollinger_bands(df,lookback,std,plot='no'):
    sym = list(df.columns.values)(0)
    rolling_mean = df.rolling(window=lookback,center=False).mean()
    rolling_std = df.rolling(window=lookback,center=False).std()
    upper_band = rolling_mean + std*rolling_std
    lower_band = rolling_mean - std*rolling_std
    lower_band.rename(columns={sym:'lower band'}, inplace=True)
    upper_band.rename(columns={sym:'upper band'}, inplace=True)
    rolling_mean.rename(columns={sym:'SMA'}, inplace=True)
if plot == 'yes':
        ax = df.plot(title="Net Flow BB", label=sym,color = 'blue')
        rolling_mean.plot(ax=ax, color='gold')
        upper_band.plot(ax=ax, color = 'cyan')
        lower_band.plot(ax=ax, color = 'cyan')
        ax.set_xlabel("Date")
        ax.set_ylabel("Price")
        ax.legend(loc='upper left', prop={'size':8})
        plt.savefig(sym+'_BollingerBands.png')
        plt.show()
    return rolling_mean,upper_band,lower_band
rolling_mean, upper, lower = bollinger_bands(data(("net")), lookback=60, std=3, plot="yes")

Nous donne ce genre de graphique douloureux:

mtSh7vxezjTYIGXG5hQbtbkKPfo2 p62a3er9

60 SMA et 3 sigma BB

Où les lignes cyan sont les bandes de Bollinger. Lorsque notre série passe au-dessus ou en dessous de ces bandes, c'est un signal de comportement anormal. Nous voyons maintenant à quel point nous identifions plus rapidement les grands flux. Les résultats diffèrent considérablement en fonction de la fenêtre rétrospective et du choix de sigma, je vous encourage donc à essayer par vous-même. En traçant les jours qui dépassent les bandes de Bollinger, nous trouvons un ajustement beaucoup plus serré avec les mouvements de prix:

mtSh7vxezjTYIGXG5hQbtbkKPfo2 gn2k3ejs

Flux anormaux de la bande de Bollinger

Zoom sur les deux périodes de hauts débits:

mtSh7vxezjTYIGXG5hQbtbkKPfo2 c32m3eya

Première période – 2019

mtSh7vxezjTYIGXG5hQbtbkKPfo2 w42s3eb0

Deuxième période – 2020

Nous voyons que nous avons un indicateur en retard et plus de faux positifs que nous n'en avions dans la méthode précédente. Les faux positifs sont une chute courante des bandes de Bollinger, et ils sont généralement associés à un autre indicateur pour cette raison. Heureusement, nous avons une image très claire de la période d'activité la plus élevée à la mi-mars 2020. Les gens se sont précipités après une baisse de plus de 37,5% et ont acheté autant qu'ils le pouvaient pendant deux jours, et beaucoup de gens sont également partis le troisième jour après le laissez tomber. Dans la première période, nous pouvons voir tout le monde vendre après une baisse d'environ 20%. Une autre grande leçon pour simplement HODL et continuer d'avancer.

Maintenant, amusons-nous et regardons les flux les plus importants de la période. Ce sont tous les débits supérieurs à trois écarts types par rapport aux valeurs normales:

mtSh7vxezjTYIGXG5hQbtbkKPfo2 p42y3e4z

Flux> 3 sigma

Zoom avant pour plus de contexte:

mtSh7vxezjTYIGXG5hQbtbkKPfo2 rb343e0d

3 Sigma Flows pour la première période

mtSh7vxezjTYIGXG5hQbtbkKPfo2 m03a3eu7

3 Sigma Flows pour la deuxième période

Cette méthode équivaut à tracer une ligne horizontale au-dessus et au-dessous des flux nets et à marquer tous les jours avec des entrées nettes au-dessus et des sorties nettes sous la ligne comme des anomalies. Bien que la façon la plus directe de visualiser l'activité que nous décrivons, ici, nous sommes aussi les plus enclins à biais de surveillance des données. De toute évidence, ces activités de sortie se produisent autour des périodes de mouvements de prix les plus importantes. Cependant, comme nous ne pouvons pas connaître à l'avance les écarts-types moyens du flux net, nous ne pouvons pas affirmer avec certitude que ce type d'analyse est même possible. La seule façon possible de faire fonctionner ce live serait d'utiliser les bandes de Bollinger avec une fenêtre rétrospective de 365 jours, mais nous n'avons pas suffisamment de données ici pour le tester à nouveau.

Un inconvénient de cette analyse est que nous n'observons que les flux journaliers. Comme nous le savons, le Bitcoin est échangé en direct à tout moment du jour et de la nuit à travers le monde, il est donc à notre détriment de diviser les prix par jour. Une façon intéressante de faire avancer cette recherche serait de creuser dans les périodes de forte entrée / sortie et de faire une analyse horaire ou minute par minute, et de voir à quelle vitesse nous obtenons le signal et pouvons agir en conséquence.

Afin de mettre en œuvre ce concept dans une stratégie en direct, nous pouvons tirer parti du Adresses Balance Batch point de terminaison pour surveiller les entrées et sorties en direct des portefeuilles BitMEX. Lorsque les sorties atteignent un certain seuil, nous avons une indication qu'un mouvement de marché important va se précipiter.
Le code complet de cet article est disponible ici.

Mots clés

La bannière Noonification

Abonnez-vous pour obtenir votre récapitulatif quotidien des meilleures histoires technologiques!



Traduction de l’article de Evan Azevedo : Article Original

BlockBlog

Le Meilleur de l'Actualité Blockchain Francophone & Internationale | News, Guides, Avis & Tutoriels pour s'informer et démarrer facilement avec Bitcoin, les Crypto-Monnaies et le Blockchain. En Savoir Plus sur L'Équipe BlockBlog

Commenter cet Article

Commenter cet Article

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Plus dans News

Les Plus Populaires

Acheter des Bitcoin

Acheter des Alt-Coins

Sécuriser vos Cryptos

Vêtements et Produits Dérivés

Top