Skip to content

Dn-Sn22/RegimeLab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RegimeLab

Исследовательская торговая система BTC/USDT с асинхронной инфраструктурой, риск-менеджментом и ML-планом развития

Python Binance Claude Status License

Проект на Python — исследование торговых сигналов BTC/USDT в условиях меняющихся рыночных режимов.


Проект начинался как автономный торговый бот BTC/USDT, объединяющий:

  • сканирование рынка Binance в реальном времени
  • AI-анализ новостей и настроений
  • многоуровневый риск-менеджмент
  • исполнение и мониторинг в режиме paper trading

После перехода сканера с сырых тиков на закрытые 3-минутные свечи и добавления фильтров RSI, EMA-тренда и подтверждения по объёму, был проведён walk-forward backtest — проверка устойчивости основного Z-score сигнала.

Сигнал не показал стабильного преимущества на out-of-sample данных.

Этот результат изменил направление проекта: следующий этап — ML-пайплайн на основе размеченного датасета Binance и моделей последовательностей, таких как LSTM.


Что это за проект

Текущее состояние репозитория:

  • исследовательский проект алгоритмической торговли
  • кастомная торговая система на Python без использования готовых trading-фреймворков
  • переход от rule-based сигналов к поиску сигналов через ML
  • основа для будущего продуктового слоя: дашборды, сигналы, подписочная доставка

Текущие результаты исследования

Выполнено за последний период:

  • сканер переведён с тиковых данных на закрытые 3-минутные свечи
  • шумное определение микро-движений заменено на Z-score логику на основе свечей
  • добавлены фильтры RSI, EMA-тренда и подтверждения по объёму
  • добавлен мгновенный прогрев истории после переподключения — сканеру больше не нужно "разогреваться" 60 минут заново
  • построен walk-forward backtest на исторических свечах Binance
  • создан первый размеченный датасет для ML-этапа
  • подтверждено, что текущий Z-score сигнал не показывает стабильного преимущества на out-of-sample данных

Главный вывод:

Инфраструктура уже устойчива, но текущий основной торговый сигнал пока недостаточно робастен в разных рыночных режимах.

Поэтому проект движется в сторону ML-моделирования сигналов.


Как это работает

Перед открытием позиции должны совпасть два независимых сигнала:

[Scanner]   Сигнал по закрытой 3-минутной свече:
            Z-score аномалия
            фильтр RSI
            фильтр EMA-тренда
            подтверждение по объёму

[Research]  Уверенность AI-сентимента > 0.70
            Направление совпадает с сигналом сканера

         оба условия совпадают

[Risk]    Размер позиции по Kelly Criterion
          проверки защиты капитала пройдены

         вход разрешён

[Executor]  Исполнение ордера в paper-trading
[Monitor]   Отслеживание TP / SL / таймаута / обратного сигнала

Такая схема отсеивает слабые входы. Одной аномалии недостаточно — фильтры сканера и направление от research-модуля должны совпасть, прежде чем риск-менеджмент разрешит исполнение.


Архитектура

Binance_trading_bot/
|-- main.py                 # Асинхронный оркестратор - запускает параллельные задачи
|-- config.py               # Все параметры в одном месте
|-- requirements.txt
|-- .env.example
|-- backtest_wf.py          # Скрипт walk-forward валидации
|-- lstm_dataset.py         # Подготовка датасета для ML-этапа
|-- risk_state.json         # Сохранённое состояние риск-менеджера
|
|-- src/
|   |-- scanner.py          # Сканер Binance WebSocket на закрытых 3-минутных свечах
|   |-- research.py         # Агрегация новостей + анализ сентимента через Claude
|   |-- risk.py             # Kelly Criterion + защита капитала
|   |-- executor.py         # Исполнение ордеров в paper-trading режиме Binance
|   |-- position_monitor.py # Логика выхода TP / SL / таймаут / обратный сигнал
|   `-- telegram_bot.py     # Уведомления в Telegram в реальном времени
|
`-- logs/
    |-- main.log
    |-- scanner.log
    |-- research.log
    `-- trades.xlsx         # Полная история сделок с таймстампами

Описание модулей

Модуль Функция Ключевая технология
scanner.py Сигнальный движок на закрытых свечах с Z-score, RSI, EMA и фильтром объёма Binance WebSocket API
research.py Новости каждые 5 минут, AI-оценка сентимента Claude Haiku, CryptoPanic, RSS, Fear & Greed
risk.py Сайзинг позиций и защита капитала Kelly Criterion, персистентное состояние
executor.py Размещение ордеров в paper-trading Binance REST API
position_monitor.py Проверки выхода TP / SL / таймаут / реверс asyncio task
telegram_bot.py Алерты по сделкам и статус Telegram Bot API

Сигнальный движок

Scanner Engine (scanner.py)

  • стримит закрытые 3-минутные свечи BTC/USDT с Binance
  • считает Z-score логарифмических доходностей на скользящем окне
  • считает RSI, EMA-тренд и подтверждение объёма на каждой закрытой свече
  • генерирует бычий или медвежий сигнал только когда все фильтры совпадают
  • блокирует слабые аномалии и логирует причину отказа

AI Sentiment Engine (research.py)

Агрегация из 4 независимых источников каждые 5 минут:

Источник Тип Обработка лимитов
CryptoPanic API Агрегатор новостей + голоса сообщества Авто-отключение при лимите 600/мес
CoinTelegraph RSS Крипто-медиа Без лимита
CoinDesk RSS Крипто-медиа Без лимита
Fear & Greed Index Индекс настроения рынка (0-100) Без лимита

Все источники передаются в Claude Haiku для единой классификации сентимента: bullish / bearish / neutral с оценкой уверенности. Дальше пропускаются только сигналы с confidence >= 0.70.


Риск-менеджмент

Многоуровневая система защиты капитала, состояние сохраняется в risk_state.json:

Параметр Значение Описание
Размер позиции макс. 5% на сделку Скорректировано по Kelly Criterion
Stop-loss 8% Жёсткий предел по позиции
Take-profit 5% Фиксированная цель выхода
Макс. открытых позиций 10 (paper) / 3 (live) Лимит концентрации
Дневной лимит убытка 10% Останавливает торговлю на день
Макс. просадка 25% Полная остановка системы
Кулдаун входа 20 мин Защита от overtrading
Мин. уверенность 0.70 Фильтр качества сигнала
Kelly fraction 0.25 Консервативная доля Kelly

Логика выхода (position_monitor.py) проверяется каждые 3 секунды:

  1. Достигнут take-profit -> закрытие
  2. Достигнут stop-loss -> закрытие
  3. Обратный сигнал от research -> досрочное закрытие
  4. Истёк таймаут -> закрытие

Технологический стек

Core          Python 3.11, asyncio, Anaconda (botenv)
Exchange      Binance WebSocket API, Binance REST API (testnet)
AI / NLP      Anthropic Claude API (Haiku) для анализа сентимента
Data          CryptoPanic API, CoinTelegraph RSS, CoinDesk RSS
              Alternative.me Fear & Greed Index
Research      Walk-forward backtesting, генерация размеченного ML-датасета
Alerts        Telegram Bot API
Logging       Excel trade log (openpyxl), файловые логи
Environment   Anaconda, python-dotenv

Установка

Требуется Anaconda.

git clone https://github.com/Dn-Sn22/Binance_trading_bot.git
cd Binance_trading_bot

conda create -n botenv python=3.11 -y
conda activate botenv
conda install pandas numpy -y
pip install -r requirements.txt

cp .env.example .env
# Заполните свои API-ключи: Binance Testnet, Anthropic, CryptoPanic, Telegram

Необходимые API-ключи:

  • Binance Testnet API key + secret
  • Anthropic API key
  • CryptoPanic API token
  • Telegram Bot token + chat ID

Использование

conda activate botenv
cd Binance_trading_bot

# Удалить устаревшее состояние перед каждой сессией
del risk_state.json   # Windows
# rm risk_state.json  # Linux/Mac

python main.py

Бот запускает параллельные задачи для сканера, research-модуля и мониторинга позиций. Активность логируется локально, важные события отправляются в Telegram.


Статус исследования

  • инфраструктура paper-trading: работает
  • переход сканера на 3-минутные свечи: завершён
  • walk-forward валидация: завершена
  • текущий Z-score сигнал: нестабилен на out-of-sample
  • подготовка ML-датасета: завершена
  • baseline ML-модели: в планах
  • первая модель LSTM: в планах

Roadmap

Сейчас

  • Асинхронная архитектура торгового бота
  • Сканер Binance на 3-минутных свечах
  • Фильтры RSI / EMA / объём
  • Прогрев истории после переподключения
  • Walk-forward backtest
  • Доказано отсутствие стабильного преимущества текущего сигнала
  • Подготовка ML-датасета из свечей Binance
  • Бенчмарк baseline-моделей
  • Обучение первой модели LSTM
  • Интеграция ML-инференса в paper trading

Далее

  • Определение рыночного режима
  • Более реалистичное исполнение: комиссии, slippage, задержки
  • Расширенное управление через Telegram
  • TUI / дашборд
  • Веб-фронтенд для доставки сигналов

Позже

  • Поддержка нескольких активов
  • Несколько стратегий
  • Продуктовый слой и подписочная доставка
  • Публичный релиз ML-модели / датасета

Целевые показатели

Основной критерий — стабильный, риск-осознанный сигнальный движок, а не разовый результат бэктеста.

Метрика Цель
Win rate > 55%
Sharpe Ratio > 1.5
Max Drawdown < 15%
Месячная доходность > 8%
Среднее R:R > 1 : 1.5

Безопасность

  • TRADING_MODE = testnet — исполнение остаётся на Binance Testnet
  • API-ключи хранятся в .env и никогда не коммитятся
  • .env.example содержит только placeholder-значения

Лицензия

MIT License — подробности в LICENSE.


Создано на Python, asyncio и с долгосрочным исследовательским подходом. Сейчас в исследовательской фазе — не является финансовой рекомендацией.

About

Research-driven BTC/USDT trading bot with async infrastructure, ML pipeline, and risk management

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages