Версия pdr-backend v0.2 имеет интерфейс командной строки и файл YAML для установки параметров, что упрощает запуск ботов.
Краткое содержание
С помощью Predictoor вы можете запускать ботов-прогнозов #AI-powered или торговых ботов на ценовых каналах #crypto , чтобы заработать доллары США. Интерфейс для использования ботов-предсказателей и ботов-трейдеров стал намного проще: через CLI и использование файла YAML для параметров. Он также реорганизует внутренний код, чтобы мы могли проводить более мощные эксперименты по созданию $.
1. Введение: Predictoor и боты
#oceanprotocol Predictoor предоставляет внутрисетевые «каналы прогнозов» о том, вырастет ли #ETH #BTC🔥🔥 и т. д. в следующие 5 минут или 60 минут. «Продикторы» предоставляют прогнозы и делают ставки на них; прогнозы агрегируются и продаются трейдерам как альфа. Predictoor работает на OassisSapphire, единственной действующей конфиденциальной цепочке EVM. Мы запустили Predictoor и его программы стимулирования сбора данных в сентябре и ноябре 2023 года соответственно.
В репозитории pdr-backend на GitHub есть код Python для всех ботов: ботов Predictoor, ботов Trader и ботов поддержки (отправка истинных значений, покупка от имени DF и т. д.).
Как предиктор, вы запускаете бот-предиктор с помощью README бота-предсказателя в репозитории pdr-backend на GitHub. Прохождение занимает 1–2 часа, включая получение ОКЕАНА и РОЗА в Сапфире. Репозиторий предоставляет начальные прогнозирующие боты, которые собирают исторические данные о ценах CEX и создают модели AI/ML. Вы можете получить свое преимущество — заработать больше долларов — изменяя бота по своему усмотрению: больше данных, лучшие векторы признаков, разные подходы к моделированию и многое другое.
Точно так же, как трейдер, вы можете запустить бота трейдера с помощью README бота трейдера. Репо предоставляет стартовые трейдерские боты, которые используют потоки цен Predictoor в качестве альфа-версии для торговли. Вы можете получить свое преимущество — заработать больше долларов — изменив бота по своему усмотрению на более сложные торговые стратегии.
Predictoor имеет многообещающую динамику: за предыдущие 30 дней было совершено 1,86 млн транзакций и объем 1,86 млн долларов США [Ссылка на DappRadar] [1].
Наша главная внутренняя цель в целом — заработать на торговле, а затем передать эти знания сообществу в виде обновлений продуктов и связанных с ними коммуникаций. Для этого мы едим свою собственную собачью пищу: запускаем собственных ботов-предсказателей и ботов-трейдеров и улучшаем ситуацию на основе собственного опыта. Большинство этих улучшений относится к серверной части Predictoor: репозиторию pdr-backend.
В последнее время мы его сильно усовершенствовали! Где он требует первого большого релиза с момента запуска (но все еще до версии 1). Вот что описывает этот пост в блоге.
Остальная часть этого поста организована следующим образом. В разделе 2 описан предыдущий выпуск (pdr-backend v0.1), а в разделе 3 — его проблемы. В разделе 4 описана новая версия (pdr-backend v0.2) с упором на ее ключевые функции CLI и файла YAML, которые повышают удобство использования при запуске ботов. В разделе 5 описывается, как версия 0.2 решает проблемы версии 0.1. Раздел 6 завершается.
2. О потоках pdr-backend v0.1
Мы выпустили pdr-backend при запуске Predictoor в сентябре 2023 года и с тех пор постоянно совершенствуем его: исправляем ошибки, уменьшаем сложность адаптации и добавляем дополнительные возможности (например, поток моделирования).
Первый официальный выпуск v0.1.0 от 20 ноября 2023 г.; с последующими выпусками v0.1.x. Он распространяется под лицензией Apache V2, строгой лицензией с открытым исходным кодом.
В последнем файле README бота-предсказателя v0.1 последовательность действий заключалась в том, чтобы выполнить симуляцию, затем запустить бота в тестовой сети, а затем запустить бота в основной сети. Давайте уточним.
Моделирование. Вы можете начать симуляцию с вызова типа: python pdr_backend/simulation/runtrade.py. Он собирает исторические данные, строит модели, прогнозирует, моделирует сделки, а затем повторяет все действия на основе исторических данных. Он регистрирует и отображает прогресс в режиме реального времени. Он будет работать в соответствии с настройками по умолчанию: какие каналы цен использовать для входных данных модели ИИ, сколько обучающих данных и т. д. Эти настройки были жестко запрограммированы в скрипте runtrade.py . Чтобы изменить настройки, вам придется изменить сам скрипт или код поддержки.
Запустите бота в тестовой сети. Сначала вы должны указать переменные окружения через терминал: ваш закрытый ключ, переменные окружения для сети (например, RPC_URL) и переменные окружения для указания каналов (PAIR_FILTER, TIMEFRAME_FILTER, SOURCE_FILTER). Затем вы запускаете бота с помощью вызова типа:python pdr_backend/predictoor/main.py 3. Он будет работать в соответствии с настройками по умолчанию. 3означал прогностический подход №3: построение динамической модели. Чтобы изменить настройки прогнозирования, вам придется изменить код.
Запустите бота в основной сети. Это было похоже на тестовую сеть, за исключением указания разных переменных окружения для сети и, возможно, закрытого ключа.
Любые дальнейшие настройки, например, какие источники данных CEX использовать при моделировании, будут жестко запрограммированы в скрипте. Чтобы использовать другие значения, вам придется изменить их в локальной копии кода.
Последний README бота-трейдера v0.1 имел тот же порядок действий, что и README бота-предсказателя v0.1.
3. Проблемы в потоках pdr-backend v0.1
Мы гордились — и гордимся — потоками ботов-предсказателей и трейдерских ботов v0.1. Мы их довольно хорошо упорядочили: можно было быстро приступить к делу и выполнить то, что нужно. Чтобы пойти дальше и изменить параметры, придется сразу перейти к коду Python. На первый взгляд это могло показаться проблемой; однако целевыми пользователями (и реальными пользователями) являются специалисты по данным или разработчики, у которых нет проблем с изменением кода.
И все же было несколько проблем. Во-первых, было неприятно вручную менять код для изменения параметров.
Мы могли бы написать код более высокого уровня, который зацикливается, и изменять код параметров на каждой итерации цикла; однако код, который меняет код, подвержен ошибкам и может быть опасным.
У ботов-трейдеров и ботов-предсказателей была та же проблема, но даже хуже: код py для изменения параметров был разбросан в нескольких местах. Даже если разброс будет исправлен, основная проблема останется.
Во-вторых, окружениям не хватало точности, и добавление большего количества окружений привело бы к неприемлемо большому количеству окружений.
Напомним, что мы использовали envvars для указания каналов (PAIR_FILTER и т. д.). Этого было недостаточно для всех наших нужд. Например, при запуске бота-предсказателя нельзя использовать envvars для указания выходного потока модели (какой поток прогнозировать) и входных цен модели, не говоря уже о неценовых потоках для входных данных модели.
И помещать его в envvars было бы неряшливо и подвержено ошибкам; если бы мы не были осторожны, у нас было бы сумасшедшее количество окружений.
В-третьих, органично возник беспорядочный интерфейс командной строки.
Напомним, что можно было бы запустить бот-предиктор с пользовательским вызовом непосредственно к сценарию, например: python pdr_backend/predictoor/main.py 3, где 3 означал подход 3. Аналогично для моделирования или торговых потоков.
Поддержка параметров уровня CLI была довольно простой, лишь слегка протестированной и реализовывалась для каждого сценария. Затем, используя наши собственные боты-предсказатели, мы начали проводить базовую аналитику, и появился новый каталог ./scripts/, в котором каждый скрипт имел свой собственный вызов CLI. Дела становились еще хуже.
Наконец, мы хотели расширить функциональность pdr-backend, но реализация этого в коде версии 0.1 значительно усложнила бы работу.
У нас большие планы на эксперименты «заработай $», и для них мы увидели необходимость значительно расширить функциональность.
Мы хотели создать полноценное аналитическое приложение. Мы хотели сделать конвейер данных профессиональным и ввести его в эксплуатацию для использования в симуляциях, ботах и аналитических приложениях.
Мы хотели расширить симуляцию до потока, поддерживающего эксперименты с данными в реальном времени и с возможностью торговли в реальном времени. Это означало бы еще больше параметров и потоков; если бы мы сохранили настройку параметров версии 0.1 и беспорядочный интерфейс командной строки, сложность стала бы громоздкой. Прежде чем продолжить, нам нужна была более чистая база.
4. Представляем pdr-backend v0.2.
Мы рады сообщить о выпуске pdr-backend v0.2. Он решает описанные выше проблемы 🎉 с помощью хорошего CLI и файла YAML для установки параметров. Сейчас он доступен в репозитории pdr-backend.
Оставшаяся часть этого раздела описывает сильно обновленный интерфейс командной строки, файл YAML и изменения в архитектуре серверной части pdr для обеспечения хорошего конвейера данных и аналитики.
4.1 Обновленный интерфейс командной строки
Вы начинаете работу с Predictoor, как и раньше:
Затем вы можете ввести pdr , чтобы увидеть интерфейс командной строки:
Существуют команды для запуска экспериментов/симуляции (pdr xpmt), бота-предсказателя (pdr-предсказателя), бота-трейдера (pdr trader), а также для людей, использующих ботов-предсказателей для получения вознаграждений (pdrclaim_OCEAN, pdrclaim_ROSE).
Появилась новая команда для заполнения озера данных (pdr Lake) и несколько новых команд, связанных с аналитикой (pdr get_predictoors_info , …, pdr check_network ). Остальные команды обычно предназначены для использования основной командой.
Чтобы получить справку по конкретной команде, просто введите команду без каких-либо значений аргументов.
4.2 Новое: файл YAML
Файл по умолчанию — ppss.yaml. Большинство команд CLI принимают PPSS_FILE (файл YAML) в качестве входного аргумента. Таким образом, пользователи могут создавать собственные копии файла ppss.yaml по умолчанию и изменять их по своему усмотрению.
Файл YAML содержит большинство параметров; CLI указывает файл YAML и сеть, а иногда и часто обновляемые параметры.
Чтобы свести к минимуму путаницу, здесь нет envvar. Все параметры находятся в файле YAML или CLI. Единственное исключение: PRIVATE_KEY envvar сохраняется, поскольку помещение его в файл снизило бы безопасность.
В файле YAML есть подраздел для каждого бота: раздел predictoor_ss, раздел trader_ss и т. д. Раздел web3_pp содержит информацию обо всех сетях.
Ниже приведен пример раздела predictoor_ss в файле YAML. Обратите внимание, как он определяет канал для прогнозирования (predict_feed), а также входные каналы для моделирования ИИ (aimodel_ss.input_feeds).
Большинство команд CLI принимают NETWORK в качестве входного аргумента. Файл YAML содержит RPC_URL и другие сетевые параметры для каждой сети. В сочетании с этим аргумент NETWORK CLI выбирает из них. Поэтому, если вы хотите использовать другую сеть (например, testnet → mainnet), вам нужно только изменить имя сети в CLI. Сравните это с версией 0.1, где потребовалось изменить несколько envvar. Бонус: новая настройка позволяет удобно хранить множество различных сетевых конфигураций (в файле YAML).
Когда весь файл YAML считывается, создается объект PPSS. Этот объект имеет атрибуты, соответствующие каждому боту: объект predictoor_ss (класса PredictoorSS), объект trader_ss (класса TraderSS) и т. д. Он также содержит информацию о сети в своем объекте web3_pp (класса Web3PP).
4.3 Новое: Хороший конвейер данных
Мы усовершенствовали архитектуру pdr-backend, чтобы обеспечить правильный конвейер данных в новом каталоге /lake/. Он сосредоточен вокруг озера данных с уровнями от «сырого» до «очищенного». Мы перешли от хранения необработанных данных о ценах в виде файлов CSV к файлам паркета, поскольку паркет поддерживает запросы без необходимости иметь специальный слой базы данных поверх (!), а также другие преимущества.
В связи с этим мы перешли от фреймов данных Pandas к фреймам данных Polars, поскольку Polars лучше масштабируется и хорошо работает с паркетом. (Мы уже наблюдаем интенсивное управление данными и ожидаем, что объем наших данных должен вырасти на несколько порядков.)
4.4 Новое: пространство для развития аналитики
Мы также обновили поддержку аналитики pdr-backend в новом каталоге /analytics/. Во-первых, то, что раньше было специальными сценариями для инструментов аналитики, теперь имеет правильную поддержку CLI: pdr get_predictoors_info, …, pdr check_network. Эти аналитические инструменты теперь используют данные из озера и продолжают развиваться. Кроме того, мы разрабатываем более мощное аналитическое приложение, которое использует построение графиков в стиле Python в браузере черезstreamlit.
5. Как pdr-backend v0.2 исправляет проблемы v0.1
Вот как версия 0.2 устраняет каждую из четырех проблем, поднятых выше.
Проблема: раздражает необходимость вручную изменять код для изменения параметров.
Исправление v0.2: используйте файл YAML и CLI для всех параметров. Файл YAML содержит большинство параметров; CLI указывает файл YAML и сеть, а иногда и часто обновляемые параметры. Файл YAML содержит параметры, которые ранее были envvar или где-то в коде. Вот файл YAML по умолчанию.
Проблема: envvars не хватало точности.
Исправление v0.2: используйте файл YAML и CLI для всех параметров. В YAML-файле каждый бот получает свой подраздел, в котором указывается, с какими каналами работать. YAML имеет гораздо большую точность, поскольку он также включает переменные, которые ранее были в коде.
Проблема: органично возник беспорядочный интерфейс командной строки.
Исправление v0.2: теперь у нас есть чистый CLI. Предыдущие вызовы сценариев для моделирования, бота-предсказателя, бота-трейдера и различной аналитики теперь объединены в CLI. Интерфейс командной строки реализован в новом каталоге /cli/; его основные модули cli_arguments.py и cli_module.py используют argparse, лучшую библиотеку CLI для Python. В CLI есть модульные и системные тесты.
Проблема: мы хотели расширить функциональность pdr-backend, но реализация этого в коде версии 0.1 привела бы к резкому усложнению.
Исправление версии 0.2: YAML и чистый интерфейс командной строки создают менее сложную и более гибкую основу для построения. И сейчас мы успешно продвигаемся вперед: пока мы создавали версию 0.2, мы также усовершенствовали ее архитектуру, чтобы иметь правильный конвейер данных (в /lake/), начало более мощного аналитического приложения (в /analytics /) и собираемся обновить механизм моделирования для более гибких и мощных экспериментов.
6. Заключение
С помощью Ocean Predictoor вы можете запускать ботов-прогнозистов на базе искусственного интеллекта или торговых ботов в потоках цен на криптовалюту, чтобы зарабатывать доллары. С pdr-backend v0.2 интерфейс для использования ботов-предсказателей и ботов-трейдеров стал намного проще: через CLI и с использованием файла YAML в качестве параметров. Он также реорганизует внутренний код, чтобы мы могли проводить более мощные эксперименты по созданию $.
Начните работу со страницы https://github.com/oceanprotocol/pdr-backend pdr-backend.
Примечания
[1] Два значения 1,86M — совпадение. Обычно значения не идентичны, хотя обычно они отличаются друг от друга в пределах 0,5–2 раз.
О океанском протоколе
Ocean была основана, чтобы создать равные условия для искусственного интеллекта и данных. Инструменты Ocean позволяют людям конфиденциально и безопасно публиковать, обмениваться и использовать данные.
Следите за Ocean на https://twitter.com/oceanprotocol, чтобы быть в курсе событий. Общайтесь напрямую с сообществом Ocean на https://discord.gg/kwWmXxwBDY. Или отслеживайте прогресс Ocean непосредственно на https://github.com/oceanprotocol.