КРИПТОИнтел

Углубляясь в криптовалютный мир

Команда: Тушар Чанд Капур, Сайед Икрам, Мехак Парашар

1. Мотивация и предыстория

Экономика неизбежно движется в сторону цифровой экосистемы - новой и самой изменчивой цифровой валютой является криптовалюта, которая продолжает завоевывать мир финансов. Мы проанализировали данные Google о тенденциях за эти годы и цены на различные криптовалюты. Мы выяснили, что оба они резонируют друг с другом, что свидетельствует о множестве факторов, определяющих рост криптовалюты. С ростом интереса людей к рынкам криптовалюты криптовалюта станет следующей известной валютой в мире. Также можно увидеть, что крупные банки, такие как Citibank, финансовые учреждения, такие как JP Morgan, и технические гиганты, такие как Google и IBM, начали инвестировать в технологии блокчейна и криптовалюты. Таким образом, парадигма финансовых транзакций меняется в сторону цифрового реестра, внутреннего по отношению к самой системе. Криптовалюта - это будущее валюты, которая будет использоваться для децентрализованной торговли.

Некоторым людям сложно понять, покупать или продавать криптовалюты из-за сильных колебаний, какую криптовалюту покупать, какова текущая цена криптовалюты, что остальной мир думает о криптовалютах. Согласно нашим выводам, не существует единой веб-панели, которая давала бы все ответы на различные вопросы, связанные с огромным миром криптовалют.

2. Постановка проблемы

Когда мы начали мозговой штурм, чтобы исследовать мир криптовалюты, мы задали себе четыре вопроса:

1) Можем ли мы предсказать будущую цену различных криптовалют, используя исторические данные и полярность настроений в отношении ведущих криптовалют?

2) Как понять поведение цены и транзакций на колеблющемся рынке криптовалют и посмотреть, есть ли корреляция между этими изменениями?

3) Как мы можем визуализировать данные в реальном времени и в потоковом режиме и визуализировать влияние различных параметров, влияющих на цены криптовалюты?

4) Можем ли мы визуализировать обмены криптовалютой по всему миру по объему в режиме реального времени?

Предложение: мы предлагаем ответить на все эти вопросы с помощью интерактивной веб-панели управления, связанной с экосистемой криптовалюты, чтобы люди были хорошо осведомлены о том, что происходит на рынке криптовалют, и тем самым помогли им принять обоснованное решение. о криптовалюте, которую они выбрали в этой современной экономике.

Кроме того, мы также планируем визуализировать следующее, используя библиотеку D3 (не применимую к каждой точке) как часть нашей интерактивной панели инструментов:

  • Динамические колебания цен на криптовалюты.
  • Снимок живого ордера L2.
  • Живой анализ настроений в твиттере при потоковой передаче твитов о ведущих криптовалютах.
  • Рыночная капитализация криптовалют по всему миру.
  • Анализ социальных сетей для каждой криптовалюты.
  • Транслируйте последние новости и проводите анализ настроений в реальном времени.
  • Создавайте и внедряйте прогнозы будущих цен как для числовых исторических данных, так и для полярности новостных настроений.
  • Динамическое мировое облако на веб-сайте для свежих новостных статей, связанных с новостными статьями о криптовалютах

3. Data Science Pipeline

В этом разделе мы описываем наш конвейер обработки данных, показанный на рисунке 1. Мы собираем данные в реальном времени из различных доступных источников, которые связаны с криптовалютами и их информацией из социальных сетей, новостными данными, тенденциями Google и т. Д.

Различные этапы конвейера описаны следующим образом:

3.1 Сбор данных

  • Cryptocompare:
    API Crptocompare.com предоставляет всю информацию, связанную с криптовалютами, что делает его одним из крупнейших источников данных в нашем проекте. Мы создали скрипт python, который автоматически собирает данные из своего API, который дополнительно реализует модуль парсера для извлечения данных из URL-адресов, которые мы получили от Crptocompare. Данные, собранные с сайта cryptocompare.com, связанные с криптовалютами, содержат множество точек данных, например, его цену, объем, обмены, сделки, рыночную капитализацию и т. Д.
  • Twitter Streaming API и Tweepy:
    Тенденции социальных сетей по любой теме можно узнать из Twitter. Люди из разных уголков мира выражают свое мнение в Твиттере, можно сказать, что Твиттер имеет всю информацию о том, что сейчас происходит в любой части мира. Мы создали модуль Python для сбора данных Twitter в реальном времени, связанных с различными криптовалютами, путем доступа к их потоковому API.
  • News API:
    Мы собрали последние новости от NewsAPI, касающиеся рынка криптовалют в целом и конкретных криптовалют. Эти новостные статьи вместе с их заголовками были взяты в прямом эфире для анализа настроений.
  • Данные Google Trends:
    Количество поисков в Google отражает популярность определенной темы в Google. Для этого Google использует показатель, известный как интерес с течением времени, значение 100 в данных пиковая популярность термина и ноль являются противоположностью одного и того же. Кроме того, как видно на рисунке 2, цена биткойна почти соответствует интересам Google в последнее время.

3.2 Очистка и хранение данных

Данные, собранные из различных источников, были очищены путем фильтрации, удаления нулевых и повторяющихся значений, удаления выбросов, выделения корней, удаления стоп-слов, а затем большие объемы данных были сохранены в Cassandra, который, кроме того, служил источником данных для внешнего интерфейса. , часть потоковой передачи была в формате JSON. Существуют сценарии python, работающие как crontask на бэкэнде, который выполняет постоянную фильтрацию данных в реальном времени, которые обслуживаются двумя способами: во-первых, эти данные передаются в модель Keras для прогнозирования цен, а во-вторых, данные, сгенерированные этими файлами Python, передаются в модуль анализа настроений.

3.3 Анализ и визуализация

Чтобы лучше понять рынок криптовалют, мы сделали несколько начальных визуализаций данных, чтобы понять непредвиденные всплески ценовых тенденций различных криптовалют, что в дальнейшем помогает нам создавать модули для пользователей, чтобы они могли лучше понять тенденции криптовалюты. Мы выполнили различные живые и интерактивные визуализации данных, такие как облако слов, тематическое моделирование, корреляционная матрица, живой сентиментальный анализ (рисунок 3) и трехмерное представление Биткойна в глобальном объеме с использованием D3, genism, three.js и plotly. ».

3.4 Машинное обучение

Мы предсказали на следующий день цены на различные криптовалюты. Мы сделали два типа прогнозирования: во-первых, с использованием исторических данных OHLCV с использованием двухуровневого LSTM, а во-вторых, с использованием OHLC и полярности настроения новостей, обе нейронные сети обучаются с помощью Keras.

3.5 Интерактивная панель управления

Все захватывающие идеи, которые мы получили о мире криптовалюты. Мы объединили их в нашей интерактивной приборной панели CRYPTOIntel, которая содержит все выводы и результаты, которые могут быть полезны любым пользователям. Кроме того, эта панель управления распространяется на приложение Android, унаследовавшее все визуализации и функции внешнего интерфейса.

4. Методология

4.1 EDA

Рыночная стоимость криптовалюты быстро меняется каждый день даже для самой старой криптовалюты на рынке биткойнов. Анализ данных по рыночной цене десяти ведущих криптовалют в настоящее время показывает, что, когда биткойн находился на начальных этапах, цена была очень низкой. Биткойн достиг максимальной рыночной стоимости около 19 000 долларов США в 2017 году, как показано на рисунке 4. Другие криптовалюты появились на рынке совсем недавно, и цены не очень низкие по сравнению с биткойном. Биткойн Кэш и Эфириум являются одними из других основных валют, которые показывают быстрый рост за последние пару лет. Также можно увидеть снижение стоимости биткойна после 2017 года, что ставит под вопрос, является ли биткойн пузырем?

На рисунке 5 представлены колебания цен, которые представляют собой разницу между ценой открытия и закрытия для ведущих криптовалют. 2017 год стал прорывом, поскольку в этот период цена биткойна быстро росла.

Графики на рисунке 6 показывают изменение цены десяти ведущих криптовалют за 24 часа, а круговая диаграмма представляет рыночную капитализацию различных криптовалют.

4.2 Нейронные сети (машинное обучение)

Как обсуждалось ранее, для прогнозирования нам нужны нейронные сети, которые подробно обсуждаются ниже.

4.2.1 Числовая модель
Криптовалюты - это будущее валют. С ростом его популярности все больше и больше людей хотят инвестировать в него. Для прогнозирования цены на следующий день на основе исторических данных мы использовали фреймворк Deep Neural Networks. В частности, LSTM Long (кратковременная память), тип рекуррентной нейронной сети от Keras, поскольку было доказано, что они действительно хорошо работают для задач регрессии. Цена криптовалюты зависит от множества факторов: мы использовали закрытие, максимум, минимум, открытие, объем от, объем до, а также OHLC для расчета средней цены за этот день и использовали ее в качестве входных данных для нашей модели. Поскольку мы рассматривали объем рынка как фактор, который будет использоваться в нашей модели, который имел наивысшее значение среди всех переменных. Мы нормализовали данные с помощью модуля нормализации minmax scikit-learn со стандартным отклонением, равным единице. Поскольку прогнозирование цены относится к типу временных рядов, мы сдвинули каждую из рассчитанных нами средних цен на один шаг вперед по времени и удалили значения nan. После того, как данные были готовы, мы разделили данные на набор поездов (80%) и набор тестов (20%). После преобразования данных в трехмерную форму мы использовали фреймворк Keras для построения, обучения прогнозированию средней цены криптовалюты.

В нашем LSTM мы использовали 80 нейронов, 2 слоя и обучили нашу модель для 50 эпох, используя ADAM Optimizer в качестве метода оптимизации, поскольку он адаптирует скорость обучения на основе среднего значения первого момента и среднего значения второго момента при обучении модели и потеря средней абсолютной ошибки как функция потерь, как показано на рисунке 7.

Мы проверили модель на тестовом наборе и рассчитали среднеквадратичную ошибку как по результатам обучения, так и по результатам тестирования.

4.2.2 Числовая модель + модель настроения (только для биткойнов)
Играют ли новостные спекуляции важную роль при повышении или понижении цены на биткойн? И можем ли мы предсказать будущую цену, используя числовые исторические данные вместе с настроением новостей? Чтобы ответить на этот вопрос, мы отказались от новых статей, связанных с биткойном, из 2017 года, применили методы НЛП для очистки заголовка и тела новостных статей и рассчитали полярность настроений с помощью MLib Spark. Мы суммировали настроения по всем новостным статьям за этот день и, наконец, соединили их с историческими данными за 2017 год. Эта полярность настроений была новой функцией, которая была добавлена. Тот же самый процесс использовался для обучения и тестирования модели. Затем мы смогли успешно предсказать цену биткойна, используя OHLCV и полярность новостных настроений.

4.2.3 Тематическое моделирование
Очень важно знать, что люди говорят о криптовалютах, а также понимать их проблемы и мнения. Чтобы ответить на этот вопрос, мы выполнили тематическое моделирование с использованием LDA (Latent Dirichlet Allocation) из пакета Gensim для огромных новостных статей, которые были отброшены, чтобы раскрыть скрытую структуру из коллекции новостных статей, чтобы выявить тенденции в новостях социальных сетей. Очистка данных проводилась для удаления знаков препинания, лишних пробелов и игнорируемых слов [2]. Мы выполнили предварительную обработку текста с использованием spacy (spaCy) и более поздней лемматизации. Наконец, обучил набор данных модели LDA для 10 самых популярных тем. Это было визуализировано с помощью пакета pyLDAvis для интерактивной диаграммы и встроено в веб-интерфейс, как показано на рисунке 8. Наконец, мы визуализировали интерактивное тематическое моделирование различных моделей, где пользователь может заранее определить тему, которую нужно выбрать, а также настроить альфа-значение. .

4.3 Используемые инструменты

  1. Spark - для анализа настроений в новостях
  2. Панды - EDA, предварительная обработка и машинное обучение
  3. D3 - Передняя часть
  4. Three.js и Oimo.js - графика WEBGL
  5. Керас - модели нейронных сетей
  6. Gensim - Тематическое моделирование
  7. Матплотлиб- - EDA
  8. Сюжет - EDA
  9. НЛТК - Анализ новостей и настроений в Twitter
  10. Scikit-learn - нормализация данных
  11. PHP - динамический фреймворк Web Front
  12. Android Studio - Приложение для Android

5. Оценка

5.1 EDA

EDA предоставила хорошее представление о данных. Анализ данных о криптовалюте помог пользователю лучше узнать о данных.

5.2 Машинное обучение

5.2.1 Прогноз
Прогнозирование цен на различные криптовалюты с использованием OHLCV и новостных настроений с помощью LSM дало точность, отзывчивость и оценку f1 следующим образом:
Оценка модели:
• Точность:
0,62
• Вызов: 0,57
• F1Score: 0,60
• MeanSquaredError: 0,05

На рисунке 9 показана прогнозируемая цена различных криптовалют на 31 марта 2019 г. Мы запустили нашу модель 30 марта 2019 г., используя данные за предыдущие 5 дней. Как видно из рисунка, прогнозируемая цена очень близка к трендам, показывающим достоверность модели.

Рисунок 10 - обувь, прогнозы, созданные crontasks модели Кераса, которая запускается каждый день в 00:00 по тихоокеанскому времени, для прогнозирования цены на следующие дни.

5.2.2 Тематическое моделирование
Тематическое моделирование топ-10 в прямых новостях, касающихся криптовалют, которое также является интерактивным в использовании. Мы обучили набор данных на модели LDA с помощью gensim и pyLDAvis.

5.2.3 Глобальные транзакционные узлы Биткойн в реальном времени
Транзакционные узлы криптовалютных бирж по всему миру находятся в реальном времени на карте мира в веб-интерфейсе.

5.2.4 Размер транзакции в реальном времени
Это интересная визуализация в реальном времени глобальных транзакций Биткойн, происходящих в мире. В графике WebGL каждый объем транзакции биткойнов представлен на плоской поверхности с кубом, представляющим последний добытый блок, и шарами, указывающими объем транзакции с цветом, указывающим их размеры. На рисунке 11 показано, как визуализация выглядит в веб-интерфейсе.

Вышеупомянутые модули просты в использовании и интерактивны для пользователя. Пользователь может использовать его для более глубокого понимания рынка криптовалют.

6. Информационный продукт

Наш информационный продукт - это веб-панель управления CRYPTOIntel и приложение для Android, в котором собрана вся информация в интерактивном графическом виде. CRYPTOIntel состоит из всех методов больших данных и машинного обучения, объединенных в приборную панель, которая содержит всю информацию о рынке криптовалют. Панель управления доступна по этой ссылке: http://nml-cloud-20.cs.sfu.ca/cryptointel/. В более широком плане у нас есть 5 основных модулей в нашем информационном продукте, а именно:

  • Визуализация тенденций на рынке в реальном времени
    На рисунке 11 показана целевая страница нашего информационного продукта, на которой показано несколько визуализаций в реальном времени, связанных с различными криптовалютами, которые мы сделали. Пользователь может лучше понять данные с помощью этой визуализации, которая включает в себя 24-часовые рыночные тенденции с помощью различных графиков, рыночные сделки, относящиеся к различным криптовалютам, снимок книги заказов L2, текущие цены на криптовалюту, текущие новости с настроениями и модуль для преобразования цен в реальном времени.

  • Живой сентиментальный анализ
    Это модуль, состоящий из двух частей, который включает живой анализ тональности потоковых твитов, касающихся различных криптовалют, и классификацию тональности новостных статей в реальном времени, как показано на рисунке 12.

  • Прогноз
    Мы использовали LSTM для прогнозирования цен на различные криптовалюты на следующий день, используя анализ настроений и данные OHLCV. Прогноз для Биткойна показан на рисунке 14.

  • Глобальные транзакции биткойнов
    Это также двухчастный модуль, который включает две основные визуализации. В первой части показаны доступные узлы транзакций Биткойн, происходящие в глобальном масштабе в реальном времени, как показано на рисунке 15 [1]. Вторая часть включает живые транзакции, относящиеся к биткойнам в реальном времени, показанные интересным образом, как показано на рисунке 11 выше.

  • Приложение для Android
    Мы расширили нашу информационную панель до приложения для Android, которое обеспечивает тот же уровень графического представления, что и веб-приложение, но предназначено для просмотра на мобильных устройствах, как показано на рисунке 16.

Вот видео, объясняющее наш информационный продукт:

7. Извлеченные уроки

Работа над проектом, посвященным миру криптовалюты, заставила учиться и думать как специалисты по данным, что дало не только понимание многих вещей, но и способы преодоления проблем. Здесь мы будем обсуждать наши выводы относительно этого проекта:

  • Мы узнали, как мы можем использовать возможности обработки естественного языка, чтобы сообщать пользователям последние новости о тенденциях рынка криптовалют.
  • Поскольку мы делали прогноз цен с использованием модуля новостных статей, первоначальная идея заключалась в том, чтобы использовать количество статей в качестве функции нашего модуля. После внедрения оказалось, что это не дает хороших результатов для прогнозирования цен, поэтому мы решили использовать полярность новостных настроений в новостных статьях в качестве одной из наших функций, и это оказалось лучшей моделью, чем раньше.
  • Во время разработки внешнего интерфейса проекта было принято множество важных проектных решений, которые были приняты как часть реализации проекта, наиболее сложной задачей было создание конвейера данных в реальном времени для модуля внешнего интерфейса, особенно для данных трендов Google. . Было много вариантов, которые выполняют удаление через python на бэкэнде и служат в качестве API для внешнего интерфейса, но все методы имеют некоторую задержку, мешающую взаимодействию с пользователем. Решение, которое появилось на картинке, заключалось в использовании javascript для непрерывных вызовов JSON. Во-вторых, для данных трендов Google мы выполняем модуль python через вызовы PHP для получения данных из трендов Google.
  • Было много вариантов, которые можно было использовать для центрального хранилища базы данных, но мы выбрали Cassandra. Сначала мы попробовали MySQL, который был легко настроить и имел прямой драйвер для PHP, но возникли некоторые проблемы с производительностью, с которыми мы столкнулись. Во-первых, поскольку мы используем pyspark, он работал с Cassandra быстрее, чем с MySQL. Во-вторых, он не обеспечивал отказоустойчивость наших данных, учитывая характер проекта, нам нужна отказоустойчивая база данных. Учитывая все это, Cassandra стала лучшим выбором, учитывая ее распределенную природу с надежным сервером Cassandra SFU, мы смогли настроить хороший сервер данных для нашего проекта.

8. Резюме

Таким образом, CyptoIntel - это универсальная панель инструментов, которая отвечает на все запросы пользователя о криптовалютах. Начиная от базовой общей информации о криптовалютах и ​​заканчивая прогнозированием цен на криптовалюты. Пользователи могут получать знания о различных криптовалютах, используя несколько интерактивных визуализаций, управляемых пользователями, чтобы пользователи могли лучше понять тенденции и принять обоснованное решение. Например, несколько графиков, представляющих тенденции цен, стрелка вверх-вниз, обозначающая колебания цен, интерактивное облако слов, где пользователь может выбрать количество слов и перетасовать слова для лучшего обзора. Интерактивное моделирование тем, в котором пользователь может выбрать тему и альфа-значение. С помощью этих нескольких визуализаций мы стремимся создать информационную панель, которая может дать пользователям полное представление о различных криптовалютах, потому что их легче понять с помощью визуализаций, чем с помощью чисел. Данные из нескольких источников были собраны вместе, чтобы сформировать эти интерактивные визуализации.

Ссылки

Панель управления: http://nml-cloud-20.cs.sfu.ca/cryptointel/

Gitlab: https://csil-git1.cs.surrey.sfu.ca/tkapoor/cryptointel

Видео: https://www.youtube.com/watch?v=ouCQtGzxTME

использованная литература

[1] Сканер Bitnodes - https://github.com/ayeowch/bitnodes

[2] Тематическое моделирование с помощью Gensim (Python) - https://www.machinelearningplus.com/nlp/topic-modeling-gensim-python/