Что лучше всего предсказывает, пойдет ли цена биткойна вверх или вниз? Что, если бы существовал алгоритм, который мог бы предсказать это по крайней мере на день вперед? Это то, что мы создаем в проекте AlgoHive и будем рассказывать, как шаг за шагом.

Просто напомню, что этот проект начался с моей первоначальной публикации о том, как я создал алгоритм прогнозирования биткойнов, который дает 29% положительной отдачи:



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

Первый проект, над которым мы работаем, - это создание алгоритма прогнозирования биткойнов, который подает сигнал на покупку / продажу на заданную дату с намерением максимизировать прибыль. Один из членов нашего сообщества специалистов по анализу данных, Лаура Варгас, выпускница CodingNomads, возглавляет усилия и создает версию этого сигнального бота BTC на GitHub с открытым исходным кодом.

Далее следует наша дорожная карта, основанная на этом репозитории кода.

Дорожная карта Bitcoin Signal API

Вот краткий обзор нашей дорожной карты:

Что под капотом

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

Наш технический стек построен на технологии с открытым исходным кодом, которая хорошо работает с базовым языком программирования Python:

Pandas: библиотека с открытым исходным кодом под лицензией BSD, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных для языка программирования Python:



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



PyTrends: предоставляет простой интерфейс для автоматизации загрузки отчетов из Google Trends. Основная функция - разрешить скрипту войти в Google от вашего имени, чтобы включить более высокий предел скорости:



Tableau Public: для визуализации данных наших диаграмм в настоящее время используется Tableau Public - отличный бесплатный способ визуализации и обмена данными:



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



Есть много других компонентов, о которых вы можете узнать подробнее. Полные спецификации см. В документации с требованиями в нашем репозитории на Github.

Как мы создавали выпуск v1

Давайте пройдемся по этапам настройки, как указано в нашей дорожной карте:

Получение исторических данных о транзакциях для биткойнов
Есть много способов получить исторические данные для биткойнов (BTC). В моем первоначальном эксперименте я вручную загрузил данные криптобиржи. В v1 мы автоматизируем процесс, получая данные о ценах на BTC из Nomics API. Это REST и WebSocket JSON API, который работает молниеносно, не имеет ограничений по скорости и полностью бесплатен! Вот часть этого в нашей реализации:

Получение данных Google Trends
Для данных Google Trends я изначально вручную загрузил CSV-файл с сайта Google Trends. Здесь, в v1, мы автоматизируем с помощью PyTrends, неофициального API Google Trends. PyTrends - это библиотека Python, которая анализирует Google Trends с помощью специальных параметров:

Импорт данных в базу данных
Первоначально проект использовал PostgreSQL в качестве базы данных, но был изменен на SQLite, автономную, высоконадежную, встроенную, полнофункциональную, общедоступную, Ядро базы данных SQL. SQLite также является наиболее часто используемым механизмом баз данных в мире. Теперь, когда вычисления обрабатываются в Python, больше нет необходимости использовать PostgreSQL. Другими словами, мы можем просто использовать файл SQLite вместо запуска сервера базы данных.

Определение покупки / продажи на основе параметров, указанных в статье
В моей исходной статье представлен сигнал покупки / продажи биткойнов, основанный на сочетании соотношения ключевых слов Google Trends и движения цены BTC: USD. Это будет дополнительно протестировано на истории с дополнительными данными из PyTrends API.

Цель состоит в том, чтобы найти, какое соотношение и дельта цен лучше всего предсказывают цену биткойнов. Прошлые показатели, конечно, не обязательно предсказывают будущие показатели, однако было бы полезно протестировать несколько методов. В версии 1 мы просто тестируем фиксированное соотношение и дельту цен (а позже конвертируем в более динамические переменные):

Используйте Django для создания API
Django, как упоминалось ранее, занимается интерфейсной веб-разработкой. Эта служба в настоящее время используется для обслуживания базового JSON API, работающего в службе Apache httpd.

Напишите документы API и опубликуйте

Одна из последних основных целей v1 - написать документацию по API, а затем опубликовать ее в репозитории GitHub. Это предоставит подробные инструкции о том, как вы можете подключиться к нашему API, чтобы получать сигналы покупки / продажи BTC. Этот API будет служить сигнальным ботом Биткойн, который вы можете включить в свой собственный торговый алгоритм или формулу инвестирования. Хотя у нас есть большинство опубликованных основ, они будут регулярно обновляться с учетом улучшений и новых функций.

Осмысление данных посредством визуализации

Хотя большая часть того, что происходит в алгоритме, скрыто в коде, многие из этих элементов и источников данных можно визуализировать. Например, вот график Google Trends Ratio, Цена закрытия периода и Инвестиционная стоимость, основанный на моей исходной формуле - для дальнейшего улучшения в v2:

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

Следующие шаги и предстоящие функции

Несмотря на то, что нам предстоит пройти долгий путь, мы сейчас только начинаем работу над версией 2, и, поскольку ее исходный код открыт, мы приглашаем всех, хотя и заинтересованных, внести свой вклад в проект. Хорошая новость в том, что вам не обязательно быть программистом, чтобы внести свой вклад. Мы также начинаем составлять список других идей и источников данных, которые мы можем в конечном итоге использовать для более разумного прогнозирования цен. В этой первой итерации в основном используются оценки индексации ключевых слов из Google Trends, однако есть несколько других источников, которые мы могли бы включить, в том числе:

  • Большой набор ключевых слов Google Trends
  • Анализ настроений из Twitter
  • Активность на форуме Reddit
  • Активность репо на Github
  • Данные BitMex (короткие и длинные объемы)

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

Как принять участие

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

Если что-то из этого вас заинтересует, предстоит проделать массу работы, и мы, безусловно, сможем воспользоваться вашей помощью! Вот несколько способов принять участие и присоединиться к нам в нашем эпическом приключении на Луну 🌕:

  • Разработчики: помогите улучшить код, участвуя в нашем проекте Bitcoin Signal на GitHub.
  • Машинное обучение / специалисты по обработке данных: мы начинаем изучать дополнительные наборы данных, и нам потребуется выполнить множество тестов на исторических данных, регрессионного анализа и моделирования данных. Помогите нам изучить различные модели данных, чтобы усовершенствовать наш алгоритм. Присоединяйтесь к нашей растущей группе Discord здесь, где творится все волшебство!
  • Криптоэнтузиасты / инвесторы: есть ли какие-нибудь новые идеи или торговые стратегии, которые мы могли бы протестировать? Хотя работа над этим проектом все еще продолжается, мы хотели бы услышать, какие функции вы хотели бы увидеть.

А пока, пожалуйста, поделитесь нашим проектом со всеми, кто, по вашему мнению, может найти в нем ценность. Чтобы получать последние новости о нашем прогрессе, следите за мной здесь, на Medium, и я шаг за шагом расскажу, как мы строим это вместе. 🚀

Любые отзывы приветствуются!