*Last Updated: April 2026*
*Дисклеймер: Эта статья носит исключительно информационный характер и не является финансовым советом. Торговля криптовалютой сопряжена со значительным риском потери средств. Никогда не торгуйте на деньги, которые вы не можете позволить себе потерять. Всегда проводите собственное исследование (DYOR).*
Я начал строить свою AI-торговую систему в конце 2024 года. Стартовый капитал — около $2 000, стопка arxiv-статей, которые я едва понимал, и упрямое нежелание платить $99 в месяц за чёрный ящик, который я не могу проверить изнутри. Восемнадцать месяцев спустя у меня работает система на Python, которая торгует одновременно на двух биржах, управляет риском по каждой позиции и переживает просадки без того, чтобы я пялился в экран в три часа ночи. Это не печатный станок. Она не «делает x10 каждый квартал». Зато она даёт доходность выше моего пассивного крипто-портфеля — и, что важнее, научила меня о рынках больше, чем любой курс.
Эта статья — мой честный дневник. Ошибки, архитектурные решения, библиотеки, которые я полюбил, и те, что я тихо убрал в два ночи после бага, который снёс половину позиции. Если вы думаете о том, чтобы построить свою систему в 2026-м, я хочу, чтобы вы избежали тех восьми месяцев боли, через которые прошёл я.
Почему я решил строить, а не покупать
В начале 2025 года я использовал платного грид-бота и терял деньги на рынке, который шёл боком, а потом резко вниз. Бот продолжал усредняться в BTC на $96K, $93K, $88K, а когда цена упала до $76K, мой «грид» превратился в гроб. Риск-контроль платформы был уровня «вкл/выкл» — никакой тонкости, никакого определения рыночного режима, никакого учёта ставок финансирования. Просто «покупай, когда линия идёт вниз». Я понял, что плачу месячную подписку за то, чтобы меня ликвидировали эффективнее, чем я мог бы ликвидировать себя сам.
Строить собственную систему — значит получить три вещи. Во-первых, прозрачность: каждый сигнал, каждый ордер, каждое исполнение логируется в SQLite, по которому можно делать запросы. Когда что-то идёт не так, я могу отследить причину до конкретного тика. Во-вторых, гибкость: я меняю стратегию за пятнадцать минут вместо того, чтобы ждать обновления SaaS-роадмапа. В-третьих, стоимость: VPS за $12 в месяц, пара API-ключей и бесплатные open-source-библиотеки заменили то, за что я платил $89 в месяц за функции, которые мне были не нужны.
Обратная сторона — вы меняете деньги на время. Готовые боты вроде 3Commas или Cryptohopper доведут вас до «живой торговли» за 20 минут. Построить своё — значит потратить недели до первого реального ордера и месяцы до момента, когда вы начнёте доверять системе. Если ваш час стоит дороже $50 и инжиниринг не приносит вам удовольствия — просто купите бота. Если вы воспринимаете разработку как хобби, учёбу и долгосрочный актив — читайте дальше.
Разумный средний путь, который я порекомендую сразу: совмещайте надёжную торговую площадку с вашим кастомным кодом. Я запускаю живую систему против Попробовать Bybit для деривативов — потому что документация к их API действительно хорошая, — и держу спотовую лестницу на Попробовать Pionex для стратегий, которые мне пока лень кодить с нуля. В гибридном подходе нет ничего зазорного.
Free: Crypto Trading Platform Cheat Sheet
Side-by-side fee comparison, ratings, and quick-pick recommendations for every major exchange and trading bot. Save hours of research.
No spam. Instant download on the next page.
Выбор стека: что я реально использую каждый день
Когда я только начинал, я две недели думал об этом больше, чем нужно. Может, Rust? Может, C++ для стакана? Async Python или потоки? Восемнадцать месяцев спустя мой ответ звучит так: скучный стек — правильный стек. Python 3.12, async там, где это важно, Postgres для состояния, Redis для шины сообщений и один VPS во Франкфурте — потому что матчинг-движок Bybit в Азии, и я хочу, чтобы задержка была стабильно предсказуемой.
Вот мой реальный стек на сегодня:
- **Язык:** Python 3.12. Я тестировал Rust для потребителя стакана — он был в 8 раз быстрее и в 80 раз тяжелее в сопровождении. Для моего объёма не стоит того.
- **Приём данных:** `ccxt.pro` для унифицированных websocket-фидов с разных бирж, плюс `aiohttp` для REST. Нормализация CCXT сэкономила мне сотни часов на написании парсеров под каждую биржу.
- **Хранилище:** Postgres 16 для истории сделок и позиций, Redis 7 для живого состояния и pub/sub между сервисами, файлы Parquet для исторических OHLCV (быстрое колоночное чтение для бэктестов).
- **Моделирование:** `scikit-learn` для скучного, но рабочего (gradient boosting, логистическая регрессия как baseline), `lightgbm` для продакшн-моделей, `pytorch` — только когда нейронка реально нужна, что случается редко. Большая часть моего преимущества — в feature engineering, не в сложности модели.
- **Бэктестинг:** я написал своё. Сначала пробовал `vectorbt`, `backtrader` и `zipline` — все хороши для акций, но неудобны для круглосуточной крипты с funding rates и частичными исполнениями. Мой движок — 600 строк и точно соответствует семантике живого исполнения.
- **Оркестрация:** `systemd`-юниты на одном VPS Hetzner CCX13. Никакого Kubernetes, никакого Docker Swarm. Деплой через `git pull && systemctl restart`.
- **Графики / анализ:** весь визуальный анализ я делаю на [Попробовать TradingView](/go/tradingview/python-ai-trading-system-18-month-journey?lang=ru) — их UI вне конкуренции, и можно выгружать сохранённые разметки через JSON-экспорт для проверки логики.
Главный урок: не тянитесь к инструментам, которые вам пока не нужны. Я потратил неделю, настраивая Kafka для шины сигналов, через которую проходит 2 сообщения в секунду. Redis pub/sub делает это тремя строками кода.
Архитектура: микросервисы, не монолит
Первая попытка — 4 000 строк в `main.py`, который делал всё сразу: websocket-подписки, вычисление фичей, генерация сигналов, размещение ордеров, отслеживание позиций, отчёт по P&L. Отлаживать это был кошмар: плохой тик из websocket валил менеджер ордеров. После первого каскада ликвидации (переподключение websocket, которое заняло 90 секунд, пока позиция шла против меня) я разобрал всё на части.
Сейчас у меня работают шесть независимых сервисов, общающихся через Redis:
- **`marketdata`** — Подписывается на websocket-потоки сделок и стакана для моего вотч-листа (~30 символов). Пишет тики в Redis streams. При падении автоматически рестартует за <2 секунды и добирает пропущенные данные.
- **`features`** — Читает потоки тиков, вычисляет скользящие фичи (окна волатильности, дисбаланс стакана, снэпшоты funding rate, спреды базиса). Пишет в Redis hash, который опрашивают стратегии.
- **`signals`** — Размещает саму ML-модель. При старте загружает `lightgbm`-бустер, каждую минуту делает предсказание на последних фичах, публикует сигнал с confidence score и целевым размером позиции.
- **`risk`** — Самый важный сервис. Читает сигналы, проверяет против текущего портфеля (макс. размер позиции, макс. корреляция, гейт по макс. просадке, фильтр по времени суток), выдаёт одобренный или отклонённый ордер-интент.
- **`execution`** — Берёт одобренные интенты и размещает ордера. Обрабатывает частичные исполнения, ретраи, логирование слиппеджа. Единственный сервис, которому разрешено обращаться к REST-эндпойнтам биржи для размещения ордеров.
- **`monitor`** — Маленький FastAPI-дашборд, который показывает позиции, P&L, открытые ордера, последний сигнал и health check для каждого другого сервиса. Я смотрю его с телефона.
Разделение на части поначалу казалось избыточным. Это не так. Когда в `features` баг — ордера продолжают идти по последнему хорошему сигналу. Когда `execution` упирается в rate limit — я вижу ровно, какой сервис является узким местом. Когда хочу протестировать новую модель — деплою `signals_v2` рядом с текущей и две недели сравниваю в shadow mode, прежде чем переключить трафик.
Главная ментальная модель: каждый сервис должен быть killable в любой момент без потери денег. Если вы не можете этого сказать — вы находитесь в одном ungraceful shutdown от зависшей позиции.
Данные: скучный фундамент каждого реального преимущества
Скажу прямо — моделирование это весёлая часть, но не там живёт преимущество. Оно живёт в данных. Лучшие данные, чище данные, больше исторических данных, более детальные данные. Первые три месяца я думал, что мне нужна умнее модель. Потом я потратил четвёртый месяц на чистку данных — и та же модель начала работать.
Вот что я собираю сейчас:
- **Тиковые данные** за последние 18 месяцев по топ-30 символам, хранятся в Parquet с партиционированием по символу и месяцу. Примерно 240 ГБ.
- **Снэпшоты L2-стакана** каждые 250 мс по топ-10 символам. Объём огромный (≈80 ГБ/месяц), агрессивно чищу, но фича дисбаланса стакана — один из моих сильнейших предикторов.
- **История funding rate** каждые 8 часов, скрапится с публичных API бирж. Бесплатно.
- **Ончейн-данные** через бесплатный тир Glassnode (ограничен, но полезен для BTC/ETH).
- **Сентимент** — скрапю Reddit `/r/cryptocurrency` и крипто-Twitter через бесплатные API, прогоняю через классификатор сентимента, сохраняю скользящие оценки. Маргинальный вклад, но добавляет.
- **Спреды funding/basis** — вычисляю базис перп-спот в режиме реального времени и использую как фичу режима рынка. Для моей mean-reversion-стратегии это стало переломным моментом.
Болезненный урок: качество исторических данных — это всё. Когда я первый раз прогнал бэктест на очищенных данных и увидел, как моя «выигрышная» стратегия схлопывается до безубытка, я по-настоящему понял, что такое survivorship bias. Теперь я отношусь к каждому результату бэктеста с подозрением, пока не откатаю его в shadow-режиме минимум 30 дней.
Тем, кто только начинает: Попробовать CoinGecko даёт щедрый бесплатный тир API для OHLCV — достаточно для первых экспериментов, а публичные эндпойнты Bybit дают бесплатные исторические kline-данные за несколько лет. На старте за данные платить не нужно.
Моя первая рабочая стратегия: кросс-биржевой арбитраж по funding rate
Для любопытных — вот первая стратегия, которая реально принесла мне деньги. Она не проприетарная, хорошо известна, и к 2026-му преимущество сильно сузилось — но она научила меня строить систему от начала до конца.
Идея: когда ставки финансирования по вечному свопу сильно положительные (лонги платят шортам), а спотовая цена не сильно изменилась, можно зашортить перп, купить спот и собирать финансирование, оставаясь рыночно нейтральным. Ставка на то, что funding rate откатится раньше, чем базис взорвётся.
Реализация на Python примерно такая:
- Каждую минуту запрашиваю funding rates на Bybit, Binance, OKX, BitGet по топ-50 перпам.
- Фильтрую по перпам с funding > +0.04% за 8 часов (в годовом выражении ~43%).
- Доп. фильтр по перпам, где базис (перп − спот) < 0.3% — то есть рынок ещё не заложил financing в цену.
- Считаю размер позиции на основе доступного капитала, лимитов биржи и максимального кепа на позицию.
- Через сервис `execution` открываю шорт на перп, одновременно рыночной покупкой беру спот.
- Держу, пока funding не станет отрицательным два периода подряд или базис не взорвётся больше чем на 0.8% — тогда закрываю обе ноги.
В 2024–2025 это работало отлично. К концу 2025 стратегия стала переполненной — у каждой квант-команды была её версия. Реализованная доходность упала с ~20% годовых до ~7% годовых. Я всё ещё гоняю её на меньшем капитале, потому что риск там очень чётко определён, но это больше не мой главный источник преимущества.
Ключевое наблюдение: простые, хорошо понятые стратегии — лучшие учителя. Постройте что-то очевидное, что работает, изучите операционную боль (отказы ордеров, расчёты комиссий, кошмары с биржевой маржой), а потом переходите к чему-то менее очевидному.
Бэктестинг без самообмана
Именно здесь большинство розничных разработчиков сдаются — и здесь выживальщики отделяются от мечтателей. Бэктестинг — это *не* про красивую кривую капитала. Это про то, чтобы получить кривую капитала, которая как можно точнее предскажет вашу живую торговлю. Это разные цели.
Ошибки, которые я лично совершал (чтобы вы не повторяли):
- **Look-ahead bias.** В первом бэктесте я использовал цену закрытия свечи для вычисления фичи, а потом торговал «на» этом закрытии. Естественно, всё работало — я торговал на данных, которых у меня не было бы в реальности. Фикс: торгуйте только на открытии *следующего* бара.
- **Слиппедж в ноль.** Я считал, что буду исполняться по средней цене. На деле на альтах я теряю 5–15 базисных пунктов за круговую поездку. Теперь я явно моделирую слиппедж, используя глубину стакана на момент сделки.
- **Игнорирование комиссий.** В ранних бэктестах я забыл про taker fees. Taker-комиссия 0.06% с каждой стороны — это 0.12% за сделку. При стратегии, нацеленной на 0.4% за сделку, это треть вашего преимущества. Всегда моделируйте комиссии, включая maker-рибейт для post-only-ордеров.
- **Survivorship bias.** Я бэктестировал на текущем топ-30 монет. Те, что умерли (LUNA, всё связанное с FTT), не входили в мою вселенную. Поэтому «стратегия работает на малых капах» на самом деле означала «стратегия работает на малых капах, которые выжили». Всегда бэктестируйте на вселенной, которая существовала в каждый конкретный момент времени.
- **Оверфиттинг через перебор параметров.** Однажды я запустил grid search по 12 параметрам и нашёл «идеальную» стратегию. В живой торговле она дала 0.0%. Теперь я ограничиваюсь 2–3 гиперпараметрами и использую walk-forward-анализ со строгим out-of-sample-окном.
Хороший бэктест в моей системе требует, чтобы стратегия: (a) зарабатывала на 24-месячном in-sample-периоде, (b) зарабатывала на 6-месячном out-of-sample-периоде, который модель никогда не видела, (c) переживала 30%-ное Monte Carlo-возмущение по комиссиям и слиппеджу, и (d) зарабатывала в shadow mode на живых данных минимум 30 дней. Только после этого она касается капитала — и даже тогда первый месяц только 10% от планируемого размера.
Сравнение: строить vs. покупать vs. гибрид
Вот честный расклад, который я хотел бы получить ещё в 2024-м:
| Подход | Стоимость запуска | Время до живой торговли | Ежемесячные расходы | Потенциал преимущества | Подходит для |
|---|---|---|---|---|---|
| **Готовые боты (3Commas, Cryptohopper)** | $0 | 1 день | $29–99 | Низкий (коммодитизированный) | Новички, пассивные пользователи |
| **Бесплатные грид-боты Pionex** | $0 | 1 час | $0 (только комиссии) | Низкий–средний | Боковые рынки, новички |
| **Алерты TradingView → webhook-бот** | $15/мес | 1 неделя | $15–30 | Средний | Дискреционные трейдеры, автоматизирующие сигналы |
| **Python с нуля (эта статья)** | $0 | 2–6 месяцев | $12–30 (VPS) | Высокий (если есть навыки) | Инженеры, строители, долгосрочные мыслители |
| **Гибрид (кастомные сигналы + API биржи)** | $0 | 1–2 месяца | $12 + данные | Высокий | Прагматичные строители, которым важна скорость |
| **Полный кванто-стек (Rust + коло)** | $5k+ | 12+ месяцев | $500+ | Очень высокий | Только профи, не розница |
Моя личная рекомендация для начинающего или промежуточного разработчика в 2026-м: начните с Бесплатных грид-ботов Pionex, пока строите свою Python-систему в фоне. Вы освоите операционную сторону (депозиты, вывод, комиссии, UX биржи) без единой строки кода, а вашей системе есть время созреть. Когда вы доверяете своему коду — переводите капитал.
Для исполнения я снова и снова возвращаюсь к Bybit для деривативов: единый маржинальный аккаунт, глубокая ликвидность и разумные лимиты API делают разработку кастомной системы по-настоящему приятной. Я также тестировал BitGet для copy-trading-стратегий — добротный вариант, но API пока менее зрелый.
Риск-менеджмент: скучный модуль, который спасает счёт
Если мне нужно выбрать одну вещь, которая отделяет мою прибыльную систему от ранних экспериментов, — это не модель. Это риск-сервис. Каждый ордер проходит серию проверок:
- **Макс. размер позиции на символ** (сейчас 8% от капитала).
- **Макс. валовая экспозиция** по всем позициям (сейчас 200% — я запускаю плечевые перп-позиции).
- **Макс. корреляционная экспозиция** — если я уже в лонге по 5 высокобетным альтам, система отклоняет новый лонг по 6-му.
- **Дневной лимит убытков** — если я теряю больше 4% за скользящие 24 часа, система переходит в режим «нет новых сделок» на 12 часов. Это спасало меня дважды.
- **Фильтр по времени суток** — я не торгую в 30 минут вокруг крупных макро-событий (CPI, FOMC). В риск-сервисе есть календарь.
- **Гард по funding rate** — если funding резко вырастает выше порога, никаких новых перп-лонгов. Это защищает от классической ловушки «открыть лонг прямо перед funding flush».
- **Гейт по связи** — если websocket был отключён больше 5 секунд, никаких новых ордеров до подтверждения свежих данных.
Это не захватывающие фичи. Здесь нет никакого «AI». Это ограничители, написанные человеком, которого ликвидировали раньше. Это самый важный код во всей системе.
Добавлю: всегда торгуйте на капитал, который вы можете полностью потерять. При одновременном отказе всего мой максимальный убыток составляет около 18% от выделенного капитала, и я рассчитал этот размер так, чтобы просадка в 18% не повлияла на мою жизнь. Если вы не можете сказать то же самое — вы ещё не готовы к живой торговле. Продолжайте бумажную.
Что бы я сделал иначе, начав в 2026-м
Восемнадцать месяцев спустя, с преимуществом послезнания, вот мои советы себе в прошлом:
- **Не стройте кастомный бэктестер сначала.** Используйте `vectorbt` или `nautilus_trader` первые полгода. Вы придёте к валидированным сигналам в 5 раз быстрее. Пишите свой движок только после того, как поймёте, чего не хватает.
- **Пропустите нейронки.** Хорошо настроенный `lightgbm` с продуманными фичами бьёт навороченный LSTM в 90% случаев на данных с таким низким отношением сигнал/шум. Оставьте глубокое обучение на потом — когда исчерпаете gradient boosting.
- **Используйте одну биржу первые три месяца.** Сложность работы с несколькими биржами (разные структуры комиссий, разные правила точности, разные системы маржи) съедает месяцы. Выберите Bybit или Binance и освойте одну.
- **Купите данные раньше.** Я потратил недели на скрапинг данных, которые мог купить чистыми у вендора за $40/мес. Время — единственный ресурс, который не вернуть.
- **Стройте мониторинг-дашборд до стратегии.** Нельзя улучшить то, что не измеряешь. Простая FastAPI-страница с P&L, позицией, последним исполнением и health checks — это первое, что нужно построить, а не последнее.
- **Ведите журнал каждого изменения.** Я веду markdown-файл, где логирую каждое изменение кода, каждую правку параметра, каждый «мне кажется, это должно работать» с датой. Через полгода, когда что-то перестаёт работать, я могу отследить, что изменилось и когда.
Часто задаваемые вопросы
Сколько капитала нужно, чтобы Python AI-торговля была оправдана?
Реально — минимум $5 000, чтобы инженерные затраты времени окупились, $15 000+ для запуска нескольких стратегий с нормальной диверсификацией. Ниже $1 000 комиссии съедают слишком большую часть преимущества, и лучше использовать бесплатные грид-боты Pionex пока учитесь. Не берите в долг для финансирования торговой системы, которую ещё строите.
Нужно ли знать машинное обучение, чтобы строить такое?
Нет, но нужно знать анализ данных. Моя самая прибыльная стратегия — это rule-based арбитраж по funding без единой строки ML. ML помогает, когда у вас есть датасет, где простые правила уже арбитражированы. Начните с правил, добавляйте ML только когда упёрлись в потолок.
Сколько времени до того, как система станет прибыльной?
Честно: 6–18 месяцев с нуля. Первые 3 месяца вы будете терять в бумажной торговле из-за багов. Месяцы 3–6 обнаружите оверфиттинг. Месяцы 6–12 построите нормальный риск-менеджмент. После 12 месяцев непрерывной работы у вас есть реальный шанс.
Какой самый большой риск, о котором я не думаю?
Биржевой риск. Ваш код может быть идеальным, стратегия приносить деньги — а потом биржа замораживает вывод средств (FTX, Mt. Gox, Celsius и т.д.). Диверсифицируйтесь как минимум по двум биржам, выводите прибыль еженедельно и никогда не держите больше 30% торгового капитала на одной площадке.
Можно ли запустить это на Raspberry Pi или нужен нормальный сервер?
Pi 4 с 4 ГБ RAM справляется с одностратегийной односбиржевой системой. Для моей шестисервисной архитектуры я использую Hetzner CCX13 ($12/мес, 4 выделенных vCPU, 16 ГБ RAM). Не запускайте ничего серьёзного с ноутбука — однажды закроете крышку и проснётесь с проблемой.
Заключение
Строить AI-торговую систему на Python — один из самых полезных проектов, которые я когда-либо брался. Он заставил меня изучить статистику, сети, распределённые системы, микроструктуру рынка — и, что важнее всего, мою собственную психологию в условиях потерь. Это не быстрый путь к богатству. Это долгий, смиряющий, прекрасный проект, который сделает вас лучше как инженера и лучше как трейдера — именно в таком порядке.
Если вы возьмёте из этой статьи только одно: начинайте маленько, логируйте всё, не доверяйте ничему. Ваша модель ошибается. Ваш бэктест оптимистичен. Ваши допущения ошибочны. Выживает тот трейдер, который строит системы, достаточно крепкие, чтобы зарабатывать *несмотря* на то, что ошибается в большинстве вещей.
Я продолжу обновлять этот дневник по мере развития системы. Следующая запись будет о переносе сервиса фичей на feature store и болезненных уроках версионирования моделей в продакшне.
*Партнёрское раскрытие: Эта статья содержит партнёрские ссылки. Если вы зарегистрируетесь по этим ссылкам, я могу получить комиссию без дополнительных затрат для вас. Я рекомендую только те инструменты и биржи, которые лично использую или тщательно тестировал. Мнения, ошибки и сомнительные архитектурные решения — исключительно мои собственные.*
*Дисклеймер: Эта статья носит исключительно информационный характер и не является финансовым советом. Торговля криптовалютой сопряжена со значительным риском потери средств. Никогда не торгуйте на деньги, которые вы не можете позволить себе потерять. Всегда проводите собственное исследование (DYOR).*