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

Last updated: August 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