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 — их 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).