April 2

BackPack + Paradex. Автоматизация дельта-нейтральной торговли

Полезные ссылки:

  • Гайд по Backpack-Paradex Delta neutral bot
  • Гайд по Paradex Delta Neutral Bot
  • Заказать VPS сервер на Xorek.cloud
  • Прокси от Travchis (добавили много новых регионов + по ссылке скидка 10%) и Nodemaven (коды BIT50 - на 50% скидку / BF80 - на +80% трафика в любой пакет)
  • Терминал MobaXTerm для работы в Linux
  • Регистрация в Paradex и BackPack



Backpack-Paradex Delta neutral bot Этот софт мы рассмотрим детально в этом гайде, но также можете воспользоваться оригинальным гайдом автора
Софт предназначен для создания параллельных сделок между Paradex и Backpack с поддержкой многопоточности. Можно указать несколько аккаунтов (например, 5 Paradex и 5 Backpack), после чего сделки будут последовательно открываться на всех аккаунтах. Пример: BTC Long 1000$ на Paradex и BTC Short 1000$ на Backpack.

Софт отслеживает LTV для каждой сделки. Если LTV превышает значение из конфигурации, соответствующий поток останавливается. Останавливается только один поток, остальные продолжают работать.

Paradex Delta Neutral Bot Этот софт мы рассмотрим детально в этом гайде
Этот софт предназначен для открытия нейтральных позиций на множестве аккаунтов Paradex. Например, когда 3 аккаунта открыты в лонг и 4 в шорт, общий баланс токенов остаётся нулевым, что создаёт нейтральную позицию. Количество лонг и шорт аккаунтов всегда одинаково или отличается максимум на один, однако объёмы токенов на каждом аккаунте могут различаться.

Бот автоматически анализирует LTV после открытия позиций. При необходимости он закрывает нейтральные позиции и останавливает процесс, предоставляя пользователю возможность корректировать маржу на аккаунтах перед продолжением.

Подготовка инфрастуктуры

Для работы нам потребуется VPS сервер с 2 или 4 vCPU. Можно брать и более слабые, но у меня после суток работы софта CPU полностью забивался. Я беру серверы на Хорьке, сейчас они добавили возможность ежедневной оплаты, поэтому удобно все протестировать перед долгосрочным запуском

Выбираем системы Ubuntu 20.04 и, при необходимости, отключаем автоматическое продление

После оплаты и установки, копируем IP адрес сервера, проваливаемся в параметры и копируем Пароль для входа

Переходим в Mobaxterm терминал, создаем новую сессиию Session >> SSH >> в Remote host указываем выданный IP адрес, ставим галочку у Specify username и пишем root в соседнем поле. Нажимаем OK и наша сессия отобразится в левой части терминала.

В созданной сессии нужно вставить пароль. Для этого копируем его, а в терминале вставляем нажатием Правой Кнопки Мыши и нажимаем Enter

Если все успешно, увидите основную рабочую область

Устанавливаем Python и Pip

Вводим поочередно следующие команды

1. Обновляем список пакетов.
Запустится процесс установки, ждем окончания.

sudo apt update && sudo apt upgrade -y

2. Добавляем репозиторий deadsnakes

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update

3. Установите Python 3.10.
Запустится процесс установки, ждем окончания.

sudo apt install python3.10 python3.10-venv python3.10-dev -y

4. Проверьте установленную версию
Результат покажет вашу установленную версию

python3.10 --version

5. Сделайте Python 3.10 версией по умолчанию

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1

6. Устанавливаем pip - инструмент управления пакетами
Запустится процесс установки, ждем окончания.

sudo apt install python3-pip -y

7. На всякий случай вручную обновляем версию pip
Отобразится установленная версия pip

python3 -m pip install --upgrade pip setuptools wheel
python3 -m ensurepip --upgrade
python3 -m pip install --upgrade pip
pip3 --version

Собираем ключи и необходимые данные с бирж

Proxy: потребуются в формате: ProxyIP:ProxyPort:ProxyLog:ProxyPwd

BackPack:

Переходи в раздел с API ключами. Создаем новый API и сохраняем API Key и API Secret. Также не забудь пополнить аккаунт в USDC на комфортную сумму

Paradex:

Копируем и сохраняем свой Paradex Address и Paradex Private Key (не путать со своим EVM кошельком, через который вы пополняете средства на биржу)

Также не забудьте пополнить биржевой кошелек

Устанавливаем софты

Можете ставить по оригинальным гайдам автора (в закрепе), но сначала надо внимательно изучить Paradex Delta Neutral Bot, а потом уже Paradex + Backpack Delta Neutral Bot [2]

В этом гайде я в большей части все продублирую и оформлю в едином хронологическом порядке запуск самого актуального Paradex + Backpack Delta Neutral Bot [2]. После этого вы без труда запустите софт и только под Paradex если актуально.

1. Заходим в наш терминал и качаем репозиторий:
git clone https://github.com/Pastfin/Paradex-Backpack-delta-neutral-bot

После скачивания, в терминале увидим созданную одноименную папку (возможно придется перезайти в сессию)

Проваливаемся в папку Paradex-Backpack-delta-neutral-bot >> data и далее поочереди будем редактировать файлы с настройками

1. accounts_backpack.xlsx

Excel файл, который содержит ваши аккаунты Backpack. Обязательные колонки к заполнению: api_key, api_secret, proxy, is_active. Остальные колонки софт будет заполнять автоматически!

proxy - требуется обязательно, в формате: ProxyIP:ProxyPort:ProxyLog:ProxyPwd is_active - формат должен быть записан как булевое значение. Если английская версия Excel, то TRUE или FALSE. Если русская версия, то ИСТИНА или ЛОЖЬ. Этот параметр отвечает за то, будет ли данный аккаунт взят в работу или нет.

После заполнения сохраняем (нажимаем CTRL+S) и подтверждаем Yes to all

2. accounts_paradex.xlsx

Excel файл, который содержит ваши аккаунты Paradex. Обязательные колонки к заполнению: private_key, address, proxy, is_active. Остальные колонки софт будет заполнять автоматически!

3. active_pairs.xlsx

Эксель файл с торговыми парами. Вам необходимо просто оставить нужные пары, которые будут случайным образом выбираться и торговаться. Ненужные пары просто удаляем. Для удобства анализа и выбора сделана колонка Tier, которая классифицирует торговые пары в зависимости от торгового объема за последние 24 часа.
После удаления ненужных пар, файл примерно будет выглядеть так

4. config.json

order_value_usd

Средний объём позиции, открываемой одним аккаунтом. Например, если у вас 5 аккаунтов и указаны значения min = 200 USD и max = 300 USD, то могут быть выбраны 2 аккаунта с лонг-позициями по 300 USD и 3 аккаунта с шорт-позициями по 200 USD. Важно учитывать, что софт использует случайные значения в этом диапазоне, поэтому суммы не обязательно будут круглыми и могут быть меньше минимального значения, указанного в конфиге.

order_duration_min

Продолжительность одной позиции в минутах. Paradex начисляет больше очков за более продолжительное удержание позиций. Например, если ты фармишь на протяжении 12-16 часов, то указываешь диапазон 720 - 960 минут.

delay_between_trading_cycles_min

Время (в минутах), которое должно пройти перед началом нового торгового цикла с нейтральными позициями.

delay_between_opening_orders_sec

Задержка (в секундах) между открытием отдельных ордеров в одном нейтральном цикле. Например, если используется 5 аккаунтов, то бот сначала открывает лонг на одном аккаунте, ждёт указанное время, затем открывает шорт и так далее.

ltv_checks_sec

Частота проверки LTV сделки (в секундах). Софт берёт актуальную цену токена с Paradex и сравнивает её с ценой ликвидации для определения уровня риска.

max_leverage

Ограничение на максимальное используемое плечо. Например, при max_leverage = 2 и балансе на аккаунте 200 USD, максимальная позиция будет 400 USD. Реальный размер позиции определяется параметром order_value_usd, а этот параметр используется только для предотвращения превышения допустимого плеча.
То есть, если у вас на аккаунте 200 USD, но вы хотите открывать позы с плечом, то регулируйте это путем настройки order_value_usd, например 400 - 800 USD, а в max_leverage для подстраховки ставьте например х5 (200 USD на балансе и х5 не дадут открыть позицию выше чем на 1000 USD и максимальное используемое плечо будет х5)

max_position_ltv

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

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

  • Если позиция в SELL, LTV вычисляется как current_price / liq_price * 100.
  • Если позиция в BUY, LTV вычисляется как liq_price / current_price * 100.

orders_distribution_noise

Показатель случайности распределения позиций. Чем выше значение, тем больше разница в размерах позиций.

  • Пример: Если orders_distribution_noise = 0, то распределение будет равномерным (1, 1, 1 для лонга и шорта).
  • Если orders_distribution_noise = 0.15, распределение будет более случайным (0.9, 0.8, 1.3).

Этот параметр можно не изменять, если тебя устраивает равномерное распределение.

retries

Максимальное количество попыток выполнения одного действия в случае неудачи. Например, если сделка не открылась или не закрылась с первого раза, софт предпримет дополнительные попытки в пределах указанного числа.

debug_level

Уровень логирования.

  • "INFO" — стандартный режим использования.
  • "DEBUG" — детализированный режим для отладки, когда возникают проблемы с кодом. Логи на уровне DEBUG записываются в потенциально проблемных участках кода для упрощения поиска ошибок.

Запускаем софт

Команды помощники

Создать сессию:
screen -S <имя сессии>

просмотреть активные сессии
screen -ls

перейти в сессию
screen -r <имя сессии>

выйти из сессии не закрывая запущенные в ней процессы
CTRL+A+D

удалить конкретную сессию
screen -X -S 12345 quit   где 12345-номер (id) сессии

удалить все сессии
pkill screen

После настройки и сохранении всех файлов, возвращаемся в терминал и создаем Screen сессию с названием trade (можете использовать любое)

screen -S trade

теперь переходим в папку с нашим софтом

cd /root/Paradex-Backpack-delta-neutral-bot/

устанавливаем зависимости и библиотеки

pip3 install -r requirements.txt
Если произошла ошибка с установлением из requirements,
то попробуйте выйти из сессии (CTRL+A+D) и переустановить pip: 
(или скопируйте ошибку в ChatGPT и следуйте рекомендациям)

apt remove --purge python3-pip -y
rm -rf /usr/lib/python3/dist-packages/pip
rm -rf /usr/lib/python3.10/dist-packages/pip

python3 -m ensurepip --upgrade
python3 -m pip install --upgrade pip

После установки requirements будет примерно следующее:

Запускаем софт

python3 main.py

Выбираем стрелками нужный режим:

Start trading
Открывает позиции на указанных аккаунтах. Перед открытием проверяется, что на аккаунте нет активных позиций — если позиция уже открыта, софт завершает работу. На одном аккаунте может быть только одна активная позиция одновременно.

Fetch market data and update active trading pairs (data/active_pairs.xlsx)
Перезаписывает файл data/active_pairs.xlsx и технический файл data/pairs.json. Обновляет все расчётные колонки, чтобы пользователь мог выбрать подходящие торговые пары для дальнейшей работы.

Update account balances and check for open positions (data/accounts.xlsx)
Обновляет текущий баланс аккаунтов и фиксирует информацию о любых открытых позициях. Результаты записываются в файл data/accounts.xlsx.

Close all currently open positions
Закрывает все активные позиции на всех аккаунтах.

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

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

Если выдаст ошибку, то остановить процесс можно через CTRL+C. Анализируем ошибка по логам, исправляем и запускаем заного.
Если позиции открылись, то можно их все закрыть через меню 4.Close all currently open positions.

Если все работает успешно, то закрываем терминал.