Строю AI-торговую систему на Python: мой путь длиной 18 месяцев — от нуля до реального капитала

Last updated: April 2026 · AI Trading Ranked

*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 для стратегий, которые мне пока лень кодить с нуля. В гибридном подходе нет ничего зазорного.

Выбор стека: что я реально использую каждый день

Когда я только начинал, я две недели думал об этом больше, чем нужно. Может, Rust? Может, C++ для стакана? Async Python или потоки? Восемнадцать месяцев спустя мой ответ звучит так: скучный стек — правильный стек. Python 3.12, async там, где это важно, Postgres для состояния, Redis для шины сообщений и один VPS во Франкфурте — потому что матчинг-движок Bybit в Азии, и я хочу, чтобы задержка была стабильно предсказуемой.

Вот мой реальный стек на сегодня:

Главный урок: не тянитесь к инструментам, которые вам пока не нужны. Я потратил неделю, настраивая Kafka для шины сигналов, через которую проходит 2 сообщения в секунду. Redis pub/sub делает это тремя строками кода.

Архитектура: микросервисы, не монолит

Первая попытка — 4 000 строк в `main.py`, который делал всё сразу: websocket-подписки, вычисление фичей, генерация сигналов, размещение ордеров, отслеживание позиций, отчёт по P&L. Отлаживать это был кошмар: плохой тик из websocket валил менеджер ордеров. После первого каскада ликвидации (переподключение websocket, которое заняло 90 секунд, пока позиция шла против меня) я разобрал всё на части.

Сейчас у меня работают шесть независимых сервисов, общающихся через Redis:

  1. **`marketdata`** — Подписывается на websocket-потоки сделок и стакана для моего вотч-листа (~30 символов). Пишет тики в Redis streams. При падении автоматически рестартует за <2 секунды и добирает пропущенные данные.
  2. **`features`** — Читает потоки тиков, вычисляет скользящие фичи (окна волатильности, дисбаланс стакана, снэпшоты funding rate, спреды базиса). Пишет в Redis hash, который опрашивают стратегии.
  3. **`signals`** — Размещает саму ML-модель. При старте загружает `lightgbm`-бустер, каждую минуту делает предсказание на последних фичах, публикует сигнал с confidence score и целевым размером позиции.
  4. **`risk`** — Самый важный сервис. Читает сигналы, проверяет против текущего портфеля (макс. размер позиции, макс. корреляция, гейт по макс. просадке, фильтр по времени суток), выдаёт одобренный или отклонённый ордер-интент.
  5. **`execution`** — Берёт одобренные интенты и размещает ордера. Обрабатывает частичные исполнения, ретраи, логирование слиппеджа. Единственный сервис, которому разрешено обращаться к REST-эндпойнтам биржи для размещения ордеров.
  6. **`monitor`** — Маленький FastAPI-дашборд, который показывает позиции, P&L, открытые ордера, последний сигнал и health check для каждого другого сервиса. Я смотрю его с телефона.

Разделение на части поначалу казалось избыточным. Это не так. Когда в `features` баг — ордера продолжают идти по последнему хорошему сигналу. Когда `execution` упирается в rate limit — я вижу ровно, какой сервис является узким местом. Когда хочу протестировать новую модель — деплою `signals_v2` рядом с текущей и две недели сравниваю в shadow mode, прежде чем переключить трафик.

Главная ментальная модель: каждый сервис должен быть killable в любой момент без потери денег. Если вы не можете этого сказать — вы находитесь в одном ungraceful shutdown от зависшей позиции.

Данные: скучный фундамент каждого реального преимущества

Скажу прямо — моделирование это весёлая часть, но не там живёт преимущество. Оно живёт в данных. Лучшие данные, чище данные, больше исторических данных, более детальные данные. Первые три месяца я думал, что мне нужна умнее модель. Потом я потратил четвёртый месяц на чистку данных — и та же модель начала работать.

Вот что я собираю сейчас:

Болезненный урок: качество исторических данных — это всё. Когда я первый раз прогнал бэктест на очищенных данных и увидел, как моя «выигрышная» стратегия схлопывается до безубытка, я по-настоящему понял, что такое survivorship bias. Теперь я отношусь к каждому результату бэктеста с подозрением, пока не откатаю его в shadow-режиме минимум 30 дней.

Тем, кто только начинает: Попробовать CoinGecko даёт щедрый бесплатный тир API для OHLCV — достаточно для первых экспериментов, а публичные эндпойнты Bybit дают бесплатные исторические kline-данные за несколько лет. На старте за данные платить не нужно.

Моя первая рабочая стратегия: кросс-биржевой арбитраж по funding rate

Для любопытных — вот первая стратегия, которая реально принесла мне деньги. Она не проприетарная, хорошо известна, и к 2026-му преимущество сильно сузилось — но она научила меня строить систему от начала до конца.

Идея: когда ставки финансирования по вечному свопу сильно положительные (лонги платят шортам), а спотовая цена не сильно изменилась, можно зашортить перп, купить спот и собирать финансирование, оставаясь рыночно нейтральным. Ставка на то, что funding rate откатится раньше, чем базис взорвётся.

Реализация на Python примерно такая:

  1. Каждую минуту запрашиваю funding rates на Bybit, Binance, OKX, BitGet по топ-50 перпам.
  2. Фильтрую по перпам с funding > +0.04% за 8 часов (в годовом выражении ~43%).
  3. Доп. фильтр по перпам, где базис (перп − спот) < 0.3% — то есть рынок ещё не заложил financing в цену.
  4. Считаю размер позиции на основе доступного капитала, лимитов биржи и максимального кепа на позицию.
  5. Через сервис `execution` открываю шорт на перп, одновременно рыночной покупкой беру спот.
  6. Держу, пока funding не станет отрицательным два периода подряд или базис не взорвётся больше чем на 0.8% — тогда закрываю обе ноги.

В 2024–2025 это работало отлично. К концу 2025 стратегия стала переполненной — у каждой квант-команды была её версия. Реализованная доходность упала с ~20% годовых до ~7% годовых. Я всё ещё гоняю её на меньшем капитале, потому что риск там очень чётко определён, но это больше не мой главный источник преимущества.

Ключевое наблюдение: простые, хорошо понятые стратегии — лучшие учителя. Постройте что-то очевидное, что работает, изучите операционную боль (отказы ордеров, расчёты комиссий, кошмары с биржевой маржой), а потом переходите к чему-то менее очевидному.

Бэктестинг без самообмана

Именно здесь большинство розничных разработчиков сдаются — и здесь выживальщики отделяются от мечтателей. Бэктестинг — это *не* про красивую кривую капитала. Это про то, чтобы получить кривую капитала, которая как можно точнее предскажет вашу живую торговлю. Это разные цели.

Ошибки, которые я лично совершал (чтобы вы не повторяли):

Хороший бэктест в моей системе требует, чтобы стратегия: (a) зарабатывала на 24-месячном in-sample-периоде, (b) зарабатывала на 6-месячном out-of-sample-периоде, который модель никогда не видела, (c) переживала 30%-ное Monte Carlo-возмущение по комиссиям и слиппеджу, и (d) зарабатывала в shadow mode на живых данных минимум 30 дней. Только после этого она касается капитала — и даже тогда первый месяц только 10% от планируемого размера.

Сравнение: строить vs. покупать vs. гибрид

Вот честный расклад, который я хотел бы получить ещё в 2024-м:

ПодходСтоимость запускаВремя до живой торговлиЕжемесячные расходыПотенциал преимуществаПодходит для
**Готовые боты (3Commas, Cryptohopper)**$01 день$29–99Низкий (коммодитизированный)Новички, пассивные пользователи
**Бесплатные грид-боты Pionex**$01 час$0 (только комиссии)Низкий–среднийБоковые рынки, новички
**Алерты TradingView → webhook-бот**$15/мес1 неделя$15–30СреднийДискреционные трейдеры, автоматизирующие сигналы
**Python с нуля (эта статья)**$02–6 месяцев$12–30 (VPS)Высокий (если есть навыки)Инженеры, строители, долгосрочные мыслители
**Гибрид (кастомные сигналы + API биржи)**$01–2 месяца$12 + данныеВысокийПрагматичные строители, которым важна скорость
**Полный кванто-стек (Rust + коло)**$5k+12+ месяцев$500+Очень высокийТолько профи, не розница

Моя личная рекомендация для начинающего или промежуточного разработчика в 2026-м: начните с Бесплатных грид-ботов Pionex, пока строите свою Python-систему в фоне. Вы освоите операционную сторону (депозиты, вывод, комиссии, UX биржи) без единой строки кода, а вашей системе есть время созреть. Когда вы доверяете своему коду — переводите капитал.

Для исполнения я снова и снова возвращаюсь к Bybit для деривативов: единый маржинальный аккаунт, глубокая ликвидность и разумные лимиты API делают разработку кастомной системы по-настоящему приятной. Я также тестировал BitGet для copy-trading-стратегий — добротный вариант, но API пока менее зрелый.

Риск-менеджмент: скучный модуль, который спасает счёт

Если мне нужно выбрать одну вещь, которая отделяет мою прибыльную систему от ранних экспериментов, — это не модель. Это риск-сервис. Каждый ордер проходит серию проверок:

Это не захватывающие фичи. Здесь нет никакого «AI». Это ограничители, написанные человеком, которого ликвидировали раньше. Это самый важный код во всей системе.

Добавлю: всегда торгуйте на капитал, который вы можете полностью потерять. При одновременном отказе всего мой максимальный убыток составляет около 18% от выделенного капитала, и я рассчитал этот размер так, чтобы просадка в 18% не повлияла на мою жизнь. Если вы не можете сказать то же самое — вы ещё не готовы к живой торговле. Продолжайте бумажную.

Что бы я сделал иначе, начав в 2026-м

Восемнадцать месяцев спустя, с преимуществом послезнания, вот мои советы себе в прошлом:

  1. **Не стройте кастомный бэктестер сначала.** Используйте `vectorbt` или `nautilus_trader` первые полгода. Вы придёте к валидированным сигналам в 5 раз быстрее. Пишите свой движок только после того, как поймёте, чего не хватает.
  2. **Пропустите нейронки.** Хорошо настроенный `lightgbm` с продуманными фичами бьёт навороченный LSTM в 90% случаев на данных с таким низким отношением сигнал/шум. Оставьте глубокое обучение на потом — когда исчерпаете gradient boosting.
  3. **Используйте одну биржу первые три месяца.** Сложность работы с несколькими биржами (разные структуры комиссий, разные правила точности, разные системы маржи) съедает месяцы. Выберите Bybit или Binance и освойте одну.
  4. **Купите данные раньше.** Я потратил недели на скрапинг данных, которые мог купить чистыми у вендора за $40/мес. Время — единственный ресурс, который не вернуть.
  5. **Стройте мониторинг-дашборд до стратегии.** Нельзя улучшить то, что не измеряешь. Простая FastAPI-страница с P&L, позицией, последним исполнением и health checks — это первое, что нужно построить, а не последнее.
  6. **Ведите журнал каждого изменения.** Я веду 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).*
Free Cheat Sheet