Skip to content

Trade360Lab/Trade360Lab-SpreadBot

Repository files navigation

PullbackTrader

Trade360Lab-SpreadBot

Практический market making / spread-capture бот для Bybit linear perpetual с хранением данных в parquet, event-driven бэктестом, rolling WFA, Optuna-оптимизацией, dry-run/live runtime и Telegram-мониторингом.

Статус

Исходный workspace для этой сборки был пустым, поэтому текущий репозиторий представляет собой полноценную рабочую baseline-реализацию, а не буквальный рефактор уже существующего локального кода стратегии. Архитектура намеренно оставлена компактной, а стратегическая логика собрана в одном файле.

Структура

repo/
  pyproject.toml
  README.md
  .env.example
  Dockerfile
  docker-compose.yml
  Makefile
  configs/
  data/
  logs/
  src/
  scripts/
  tests/

Установка

python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
cp .env.example .env

Переменные Окружения

Ключевые переменные:

  • APP_ENV
  • LOG_LEVEL
  • EXCHANGE
  • SYMBOL
  • MARKET_TYPE
  • DRY_RUN
  • LIVE_TRADING_ENABLED
  • BYBIT_API_KEY
  • BYBIT_API_SECRET
  • BYBIT_TESTNET
  • TELEGRAM_BOT_TOKEN
  • TELEGRAM_CHAT_ID
  • ENABLE_TELEGRAM
  • ENABLE_TELEGRAM_TRADE_CONTROL
  • DATA_DIR
  • LOG_DIR
  • CONFIG_PATH
  • APP_NAME
  • MAKER_FEE_BPS
  • TAKER_FEE_BPS
  • MAX_INVENTORY
  • HARD_INVENTORY_LIMIT
  • ORDER_SIZE
  • MIN_SPREAD_BPS
  • MAX_SPREAD_BPS
  • VOLATILITY_MULTIPLIER
  • INVENTORY_SKEW_COEFFICIENT
  • TOXICITY_THRESHOLD
  • CANCEL_EDGE_BPS
  • MAX_QUOTE_AGE_SECONDS
  • MAX_DATA_STALENESS_SECONDS
  • MAX_VOLATILITY_BPS
  • EMERGENCY_FLATTEN_PNL
  • EMERGENCY_FLATTEN_INVENTORY
  • HISTORICAL_LOOKBACK_DAYS
  • LIVE_LOOP_INTERVAL_MS
  • LATENCY_MS

Локальные Команды

make install
make test
make download
make record
make backtest
make wfa
make optuna
make live
make telegram

Прямые entrypoints:

python scripts/download_data.py
python scripts/record_data.py
python scripts/run_backtest.py
python scripts/run_wfa.py
python scripts/run_optuna.py
python scripts/run_live.py
python scripts/run_telegram_bot.py

Работа С Данными

Загрузка исторических данных:

python scripts/download_data.py

Запись live-потока:

python scripts/record_data.py

Формат хранения:

  • parquet
  • партиционирование: data/raw/exchange=.../symbol=.../channel=.../date=...
  • нормализованная схема: timestamp, exchange, symbol, channel, side, price, size, payload

Бэктест

python scripts/run_backtest.py

Артефакты:

  • reports/backtest/backtest_summary.json
  • reports/backtest/backtest_fills.csv
  • reports/backtest/backtest_equity.csv
  • reports/backtest/backtest_report.md

Модель бэктеста включает:

  • replay рыночных событий по trades/orderbook/mark price
  • приближение maker-fill логики
  • post-only quoting
  • approximation очереди исполнения
  • latency-aware cancel logic
  • realized/unrealized inventory PnL
  • adverse selection diagnostics

WFA И Оптимизация

Rolling WFA:

python scripts/run_wfa.py

Optuna:

python scripts/run_optuna.py

Целевая функция:

score = net_pnl - a * max_drawdown - b * inventory_variance - c * taker_ratio

Live Runtime

Dry-run по умолчанию:

python scripts/run_live.py

Реальная торговля возможна только если одновременно выполнены все условия:

  • LIVE_TRADING_ENABLED=true
  • DRY_RUN=false
  • заданы BYBIT_API_KEY и BYBIT_API_SECRET

Защитные механизмы:

  • защита от stale data
  • защита от экстремальной волатильности
  • жёсткий лимит inventory
  • kill switch при аварийных условиях
  • cancel-all при shutdown
  • post-only выставление заявок

Telegram

Запуск бота:

python scripts/run_telegram_bot.py

Поддерживаемые команды:

  • /status
  • /position
  • /pnl
  • /orders
  • /risk
  • /lastfills
  • /health

Команды, меняющие торговое состояние, отключены, пока ENABLE_TELEGRAM_TRADE_CONTROL=true не включён явно.

Docker

Сборка и запуск:

docker compose up --build

Сервисы:

  • live_bot
  • telegram_bot
  • recorder

Тесты

pytest

Покрытие сфокусировано на:

  • загрузке конфигов
  • сигналах и quoting math
  • inventory skew
  • smoke-сценарии бэктеста
  • live risk checks

Предупреждение О Рисках

Live trading связан с риском реальных убытков. Репозиторий по умолчанию запускается в safe mode, но ошибки конфигурации, поведение биржи, сетевые сбои и ошибки модели всё равно могут привести к потерям. Перед любым live-запуском обязательно проверьте всё на testnet и в dry-run режиме.

About

Maker-biased бот для маркет-мейкинга на крипто-перпетуалах: сбор данных, event-driven бэктестинг, rolling WFA, оптимизация параметров, Telegram-мониторинг и безопасный live/dry-run режим. Проект ориентирован на практические исследования и реальный запуск через Docker.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors