Этапы арбитражной системы: проектируем бота

Урок 3 курса по арбитражу. Зачем боту нужны этапы, что делает каждый из них и как попросить ИИ-агента составить понятный и проверяемый проект.

Урок 3 курса "Создай собственного арбитражного бота". В уроке 2 вы выбрали тип бота. Сегодня разберемся, как он устроен, и составим проект на одной странице.

Зачем нужны этапы?

Представьте, что вы ищете потерянный ключ в большом доме. Вы же не станете с лупой проверять каждый ящик. Сначала быстро посмотрите на стол, крючок у двери и карман пальто. Если ключа там нет, тогда уже начнете открывать ящики.

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

Этапы

Этап 1: отбор. Для каждого рынка смотрим только на два числа: лучший bid и лучший ask (урок 1). Это очень быстро. Этап отвечает на вопрос: "Есть ли что-нибудь интересное?" На выходе получаем короткий список вариантов для проверки.

Этап 2: симуляция исполнения. Для каждого варианта смотрим весь стакан заявок и проходим по нему, как будто покупаем и продаем. Цена "100.10" действует только для небольшого объема. Если нужно купить тысячу монет, придется пройти по многим предложениям, и средняя цена станет хуже. Этот этап отвечает на вопрос: "Если торговать сейчас, сколько денег пройдет через сделку и какая прибыль останется после комиссий?"

Этап 3: исполнение. Отправляем заявки. В этом курсе бот работает в бумажном режиме: он имитирует сделки и записывает результат в журнал. Вы ничем не рискуете, но точно узнаете, что увидел бы настоящий бот.

Проверки риска работают на всех трех этапах: ограничивают сумму одной сделки, останавливают работу, если бумажный баланс сильно снизился, и ставят бота на паузу, если данные выглядят неправильными.

prices  ->  stage 1 (screen)  ->  candidates  ->  stage 2 (walk the book)  ->  trade list  ->  stage 3 (execute / paper)
                                                                                     ^
                                                                          risk checks everywhere

Как устроены уроки курса

УрокиЭтап
4Этап 1: сравнение лучших цен на разных площадках
5 по 8Этап 1 для циклов: курсы как граф и алгоритмы поиска циклов
9 и 10Этап 2: стакан заявок и реальная прибыль
11Почему результаты этапов 1 и 2 расходятся с реальностью
12Этап 3 в бумажном режиме и ограничения риска

Небольшой пример с числами: зачем нужен этап 2

В прямом варианте одна функция находит разрыв и сразу покупает и продает. Такая программа короткая — именно так устроены многие первые боты. Следующий пример показывает, чего в ней не хватает, и объясняет, зачем делить бота на этапы.

На этапе 1 видим: лучший ask — 100.00 на бирже A, лучший bid — 100.30 на бирже B. Разница — 0.30.

На этапе 2 открываем стаканы. На бирже A на стороне ask есть 2 монеты по 100.00, затем 3 монеты по 100.20. На бирже B на стороне bid есть 1 монета по 100.30, затем 5 монет по 99.90.

Вы хотите торговать 3 монетами. На бирже A вы платите 2 × 100.00 + 1 × 100.20 = 300.20. На бирже B получаете 1 × 100.30 + 2 × 99.90 = 300.10. Вы теряете 0.10, хотя этап 1 обещал +0.30 за монету. На уроках 9 и 10 вы научитесь проходить по стакану.

Как выглядят файлы бота

Для начала хватит такой структуры:

  • config.py: все числа, которые могут понадобиться для изменений (комиссии, минимальная прибыль, размер сделки).
  • prices.py: получает лучший bid и лучший ask, а позже — весь стакан заявок.
  • screen.py: этап 1.
  • simulate.py: этап 2.
  • paper.py: этап 3 и журнал сделок.
  • risk.py: ограничения риска.
  • main.py: соединяет все части в цикл.

Сегодня писать все это не нужно. Попросите подготовить проект и прочитайте его.

Попросите ИИ-агента составить проект

Расплывчатая просьба:

Спроектируй арбитражного бота.

Просьба, в которой задана структура и требуется проверяемый результат:

Я создаю арбитражного бота на Python для бумажной торговли. Тип: циклический арбитраж на одной бирже (используй тип, который я записал в idea.md). У бота три этапа: быстрый отбор по лучшим bid и ask, симуляция исполнения с проходом по стакану заявок и бумажное исполнение с журналом. Напиши DESIGN.md на одну страницу: перечисли файлы, в двух предложениях опиши назначение каждого, укажи, какие данные передаются между файлами, и перечисли ограничения риска. Пока не пиши код. Все числа вынеси в config.py.

Затем прочитайте эту страницу как редактор. Можете ли вы объяснить назначение каждого файла одним предложением? Совпадает ли порядок этапов со схемой выше? Если агент добавил этап или файл, смысл которого вам непонятен, попросите его убрать.

Практическое задание

  1. Попросите агента подготовить DESIGN.md по приведенной выше просьбе.
  2. Отметьте в проекте один файл, который можно удалить, и бот при этом продолжит работать (например, панель мониторинга). Затем отметьте файл, без которого бот работать не сможет.
  3. Запишите на бумаге ожидаемый результат этапа 2 для примера с тремя монетами: уплачено 300.20, получено 300.10, итог −0.10. На уроке 9 вы проверите, дает ли ваш код то же число.

Что дальше

На уроке 4 мы реализуем этап 1: бот сравнит лучшие цены на пяти биржах и посчитает, сколько разница остается положительной после вычета комиссий.