Изучаем динамику основных криптовалют и определяем валюты с взрывным ростом

Время чтения текста – 7 минут

На финансовых рынках стало крайне нестабильно. Сейчас специалисты по финансам и инвестициям серьезно затрудняются в ответе на вопрос “Куда лучше инвестировать?”. И правда, акции российских компаний (даже “голубые фишки”) больше не внушают доверия. Ответы с точки зрения инвесторов мы вам не дадим, конечно, мы все-таки аналитики. Однако, если вы хотите стать счастливым и успешным обладателем криптовалют, то сегодняшняя статья о том, как проанализировать динамику криптовалют, будет очень кстати.
Сегодня мы разберемся в том, как:

  1. найти Tоп-5 криптовалют по объему их капитализации и построить графики динамики стоимости
  2. сравним изменение цены валюты и капитализации криптовалюты за год

Скрипт для обработки данных

Если вы все же решите парсить отдельно биржу Binance, то помните, что на самой бирже в архивных данных лежат не все периоды и валюты.

Наш скрипт выполнен с помощью CoinGecko API. Этот API усредняет собранные данные с 596 бирж, что помогает избавиться от незначительных колебаний и прочего статистического шума.
Мы проверили несколько вариантов получения данных (в т.ч. и парсинг биржи Binance), но именно этот клиент отдает больше всего информации (например, по капитализации криптовалют).

Подготовка

# импорт библиотек
import requests
from bs4 import BeautifulSoup as bs
import time
import pandas as pd
import urllib.request
import matplotlib.pyplot as plt

Получаем Топ-5 криптовалют по капитализации

# получаем капитализацию валют через coingecko
r = requests.get("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=5&page=1", headers = {'User-Agent':'Mozilla/5.0'})
 
if r.status_code == 200:
  
 d = {
     'crypto name':   [i['id'] for i in r.json()],
     'symbol': [i['symbol'].upper() for i in r.json()],
     'capitalization': [i['market_cap'] for i in r.json()]     
   }
      
 df_coingecko = pd.DataFrame(d)

df_coingecko.head()

Динамика изменения стоимости валюты

# получаем динамику стоимости валюты bitcoin в usd за 7 дней
r = requests.get("https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=7", headers = {'User-Agent':'Mozilla/5.0'})
 
if r.status_code == 200:
 d = {
     'datetime':   [i[0] for i in r.json()['prices']],
     'price': [i[1] for i in r.json()['prices']]   
   }
      
 df_change = pd.DataFrame(d)

Визуализируем результаты

df_change['datetime'] = pd.to_datetime(df_change['datetime'],unit='ms')
df_change.set_index('datetime', inplace=True)
df_change['price'].plot(title="Bitcoin price changes", ylabel="Price, $")

Анализ роста криптовалют за месяц

# получаем данные по 100 монетам с самой большой капитализацией
r = requests.get("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&price_change_percentage=30d", headers = {'User-Agent':'Mozilla/5.0'})

if r.status_code == 200:
 d = {
     'crypto name':   [i['id'] for i in r.json()],
     'symbol': [i['symbol'].upper() for i in r.json()],
     'price_change_percentage_30d_in_currency': [i['price_change_percentage_30d_in_currency'] for i in r.json()]     
   }
 df_change = pd.DataFrame(d)

# сортируем
df_change.sort_values('price_change_percentage_30d_in_currency', ascending=False, inplace=True)

# находим 5 валют с максимальным ростом за месяц
df_change.head()

# находим 5 валют с максимальным падением за месяц
df_change.tail()
Анализ роста валют за год (включая изменение капитализации)
# получаем данные по 100 монетам с самой большой капитализацией за год
r = requests.get("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&price_change_percentage=1y", headers = {'User-Agent':'Mozilla/5.0'})

if r.status_code == 200:
 d = {
     'crypto name':   [i['id'] for i in r.json()],
     'symbol': [i['symbol'].upper() for i in r.json()],
     'price_change_percentage_1y_in_currency': [i['price_change_percentage_1y_in_currency'] for i in r.json()]     
   }
 df_year_change = pd.DataFrame(d)
 df_year_change.sort_values('price_change_percentage_1y_in_currency', ascending=False, inplace=True)

Наибольший рост цены за год у валюты Shiba-inu — более 24000 %

plt.rcParams["figure.figsize"] = (20, 5)

# получаем данные по изменению за год
def get_year_charts(name):
 r = requests.get(f"https://api.coingecko.com/api/v3/coins/{name}/market_chart?vs_currency=usd&days=365", headers = {'User-Agent':'Mozilla/5.0'})
 
 if r.status_code == 200:
   d = {
       'datetime': [i[0] for i in r.json()['market_caps']],
       'market_cap':   [i[1] for i in r.json()['market_caps']],
       'price': [i[1] for i in r.json()['prices']]
       #'volume': [i[1] for i in r.json()['total_volumes']]     
     }
   df_ydynamic = pd.DataFrame(d)
 
   df_ydynamic['datetime'] = pd.to_datetime(df_ydynamic['datetime'],unit='ms')
   df_ydynamic.set_index('datetime', inplace=True)
 
   # Рисуем оси - рыночная капитализация (синий цвет по умолчанию) и цена (красный)
   plt.figure()
   ax = df_ydynamic['market_cap'].plot()
   ax.set_ylabel('market_cap')
   ax1 = df_ydynamic['price'].plot(secondary_y=True, style='r')
   ax1.set_ylabel('price')
 
    ax.set_title(f"{name.capitalize()} market cap and price changes")
    h1, l1 = ax.get_legend_handles_labels()
    h2, l2 = ax1.get_legend_handles_labels()
    ax.legend(h1+h2, l1+l2)

Обратите внимание на данные по самой быстро выросшей валюте — shiba-inu (SHIB) Есть интересный момент, когда в мае 2021 года цена дала резкий скачок и затем падение, а капитализация практически стояла на одном уровне. И только с середины мая, когда цена уменьшилась после взлета, капитализация стала расти. Возможно, это было связано с историей с Бутериным.

get_year_charts('shiba-inu')

Поделиться
Отправить
Запинить
 306   2022   api   Binance   coingecko   crypto   cryptocurrency
Популярное