Стабильно зарабатываем на бирже: сеанс черной магии с последующим разоблачением
Операции на бирже почти всегда сопряжены с определенным риском — иногда он больше, иногда меньше, но всегда есть шанс получить «на выходе» денег меньше, чем внесли.
Причины могут быть различные: падение стоимости акций, дефолт эмитента облигаций, снижение синтетических индексов, … — а итог один…
Disclaimer #1:
Большинство хабрачитателей знает меня по рассказам про возможности PostgreSQL и разный энтерпрайзный хайлоад, но сегодня речь пойдет не об этом. Более того, в статье нет ни единой строчки кода. 😱
Disclaimer #2:
Основная часть текста была написана еще летом, поэтому часть цифр может быть уже немного неактуальна. 😁
Disclaimer #3:
Я ни в коей мере не рекомендую даже касаться каких-то биржевых продуктов, пока вы детально не изучили, осознали и приняли возможные риски работы с каждым конкретным из них — иначе случаются неприятные неожиданности. 😈
И есть лишь единственное исключение — фонды денежного рынка (LQDT, SBMM, AKMM, PSMM,…), которые, по сути, сдают вложенные вами деньги «Центробанку в аренду на ночь» под ключевую ставку (напомню, сегодня это пока еще 16.5% годовых, а недавно она доходила и до 21%), а себе берут за это «долю малую» в 0.3-1.2% годовых. Этакий аналог банковского накопительного счета, только на бирже.
Каждую следующую торговую сессию лот такого фонда стоит чуть дороже — сейчас примерно на (16% годовых / 365 дней = ) +0.044%. С учетом выходных дней бывают небольшие аномалии типа «перед пятницей растет за выходные», но, в целом, график будет монотонно растущий за ключевой ставкой:
Практически каждый крупный брокер имеет подобный фонд в собственной УК (ФДР на MOEX), за операции с которым он или не взымает комиссию совсем, или взымает лишь небольшую ее часть.
Поэтому ФДР — это удобный и выгодный способ временно «припарковать» деньги на бирже с пользой, пока вы ждете удачного момента для приобретения активов. Не в смысле «заработать», а «хотя бы не терять на инфляции».
Нельзя сказать, что ФДР — это абсолютно безрисковый актив. Нет, там есть свои риски, но в целом — их надежность на уровне всей банковской системы.
Котировки ФДР
Как правило, маркетмейкер каждую торговую сессию выставляет две огромные «котлеты» на покупку и продажу с минимальным спредом:
Например, LQDT (ВТБ) всегда торгуется на соседних позициях, SBMM (Сбер) — через одну, PSMM (ПСБ) — через 5-7, зато с комиссией 0.25% на продажу.
При покупке лота такого фонда «в рынок» мы получим цену из верхней «котлеты», а лимитная заявка покупки по цене нижней просто никогда не исполнится, поскольку на MOEX заявки выполняются по FIFO (п.1.9 правил).
Можно, конечно дождаться следующего дня и продать «в рынок» уже чуть дороже, но это — не наш метод!
Когда нельзя, но очень хочется
Как в известном мультике, в продолжении этой истории все будет зависеть от единственного символа. Только символ этот — не запятая, а «собака» (@).
Дождаться выполнения лимитной заявки на MOEX крайне сложно, а использовать рыночные нам не особо выгодно.
Но не Москвой единой!.. Ведь у нас есть еще SPbEX (осторожно — Питер! 😁), которая работает по несколько другим правилам. Из всего немалого их объема нас интересует конкретно пункт 15.26, посвященный порядку исполнения лимитных заявок. Весь его смысл сводится примерно к «заявки одной цены выполняются пропорционально указанному количеству лотов„.“»
Осталось найти ФДР, торгующийся на SPbEX — и таки он есть! ЭтоTMON@ — не путать с его двойником TMON (вот она разница всего в один символ!), торгующимся на MOEX.
TMON@
То есть для клиентов брокера T-Банка все операции с этим фондом не облагаются никакой комиссией — ни брокерской, ни биржевой, ни при лимитной заявке, ни при рыночной.
Давайте посмотрим пристально, что у нас там с котировками…
Обычно пн-чт маркетмейкер держит спред 0.01 между своими заявками, а в пт-вс (или в длинные выходные, как было в мае) — «распускает» его, отодвигая верхнюю границу сразу сильно вверх.
Как правило, в рынке находится по 10-30M лотов на покупку/продажу, а среднесуточный оборот составляет 25M — то есть выставленный утром лот с вероятностью около 50% (что явно больше нуля на MOEX) будет куплен/продан к вечеру.
Набрасываем алгоритм
Представьте, что у вас есть кэш на 1M лотов. Сегодня цена на лимитную покупку составляет 134.48 (ага, совсем немного денег надо — всего 135M 😂), а суммарное предложение по этой цене сейчас — всего 25M. То есть каждый 1:25 продаваемый «в рынок» лот будет исполнять часть нашей заявки, и мы сразу можем его продавать — по 134.49.
Очень грубо мы можем оценить, что если у нас оборот 25M/день, то из них половина — покупки, а половина — продажи. То есть за первую половину дня будет продано 6.25M лотов, из которых (6.25M : 25 = ) 250K купили мы. Теперь мы начинаем их продавать «на копейку дороже», и за вторую половину дня сможем реализовать (250K x 0.25 = ) 62.5K лотов, что даст нам прибыль ( x 0.01 = ) 625 рублей! 😭
А если серьезно, то каждый купленный лот можно сразу выставлять на продажу, а выручку от проданного — направлять на покупку еще одного. Такая «карусель» позволяет в разы увеличить оборот.
Чем быстрее с момента покупки мы сможем запустить лот в продажу — тем выше шанс исполнения нашей лимитной заявки. В идеале, мы должны делать это сразу же — и в этом нам может помочь API T-Invest — «мы ж программисты!».
Че-то денег не хватает…
Понятно, что все мы работаем в IT-сфере, а, значит, по мнению обывателей купаемся в деньгах, но вряд ли у кого-то под подушкой заныканы полтораста миллионов…
Но таки тут нам поможет брокер с возможностью маржинальной торговли. Ага-ага…
Вот видите x10 в уголке — это количество лотов, которое брокер готов выдавать нам в долг по этой позиции.
Таким образом, собственных денег надо в 10 раз меньше, а если успеть избавиться от «лишних» лотов до закрытия торговой сессии, то и платить за использование кредитных средств не придется.
Для этого достаточно понять, что мы всегда (если маркетмейкер исполняет обязанности) можем продать лишние лоты «в рынок», без убытка, ровно по цене покупки. А если мы все распродали — стоит докупить «на весь кэш» — ведь на следующий день лот заведомо станет дороже.
Примерно так:
-
у нас есть кэш на 10K лотов
-
с плечом x10 выставляем заявку на покупку — на 100K
-
покупаемое сразу отправляем на продажу, выручку с продажи — снова на покупку
-
если к концу торговли у нас оказалось больше 10K лотов «на руках» — продаем все лишние, если меньше — докупаем
«Не ИИР!»
… как обычно подписывают на одном ресурсе…
В этой модели не учтены многие кейсы, возникающие в реальности (типа торгов выходного дня), которые легко превратят вашу бережно заработанную копеечку во вполне весомый убыток. Так что я вам ничего такого делать не советовал! 😈
Ускоряем исполнение заявок на СПбБирже
У любой лимитной заявки с возможностью частичного исполнения есть два атрибута — запрашиваемое (Requested) количество лотов и уже исполненное (Executed, купленное/проданное) по заявке количество.
Предположим, у вас есть активная заявка (пусть, для определенности, на покупку) на R = 1000 лотов, из которых E = 100 уже исполнилось, и вам надо ее увеличить на объем только что проданных лотов (d). Как эффективно поступить в этом случае?
Есть два варианта:
-
создать новую, вторую, заявку на дополнительное количество
-
отменить существующую заявку и вместо нее выставить новую на другое количество
В первом случае мы получим две заявки — (R, E) + (d, 0), во втором — одну (R - E + d, 0).
Для входящей рыночной заявки исполняемые лимитные на СПбБирже подбираются по приоритету (price [ASC|DESC], rest DESC, timestamp).
То есть сначала по максимальной (при продаже в рынок) или минимальной (при покупке с рынка) цене, затем по убыванию остатка, а среди равных остатков — чья раньше. При этом доля «исполняемых» лотов прямо пропорциональная тому самому остатку с округлением вниз (floor).
То есть если в ценовой позиции вместе с моей заявкой на 1K суммарно стоит предложение на 1M лотов, то хотя бы 1 лот для моей исполнится при рыночной заявке не менее чем на (1M : 1K = ) 1000 лотов. Причем что 1000, что 1001, что 1002, … — дадут один и тот же результат — всего один лот.
Поэтому перевыставлять заявку, когда у вас «в карусели» оказался 1 свободный лот не имеет большого смысла. Но когда все-таки имеет?..
Математика проста: ceil(lotsByPrice / (rest + d)) < ceil(lotsByPrice / rest).
Тут ceil(lotsByPrice / ...) — это ровно то количество входящих на рынок лотов по конкретной цене, с которого мы сможем получить хотя бы 1 при наличии в нашей заявке того или иного остатка. Если с «остаток + дельта» оно становится меньше — выгоднее заявку перевыставить.
«Недолго музыка играла…», или Почему это все больше не актуально
Фонд TMON@ был запущен в начале марта 2025, а уже 21 августа в чатах техподдержки начали рассылаться следующие уведомления:
С 22 августа нельзя будет покупать TMON и LQDT с плечом
При этом мы продолжаем принимать указанные бумаги в обеспечение, и они остаются частью ликвидного портфеля.
Что это значит
Заявку на покупку TMON и LQDT можно будет выставить только на свои рубли. Если в портфеле уже есть рублевая задолженность, то купить TMON или LQDT не получится.
При этом, если в портфеле только TMON и/или LQDT и нет рублей, заявки на покупку или продажу других активов в шорт можно будет выставлять.
Также можно будет выставлять заявки по фьючерсам и выводить деньги с брокерского счета под обеспечение TMON и LQDT.
Важно отметить, что эти изменения никак не повлияют на маржинальные показатели и сами по себе не приведут к маржин‑коллу.
[Обоснование: п. 16.4-1 действующего регламента](https://www.tinkoff.ru/about/documents/disclosure/)
То есть основная идея увеличения объема своей заявки для ее более быстрого исполнения за счет заемных средств — перестала работать.
Но по-прежнему можно быль выставить утром лимитную покупку «на весь свободный кэш» или продажу «на весь объем лотов, независимо от необходимого» и наблюдать как она медленно-медленно пропорционально выполняется, экономя вам копейку относительно рыночной заявки.
Но несколько дней назад по всей этой схеме был нанесен второй удар, что и послужило поводом для широкой публикации этого текста — СПбБиржа изменила правила отработки заявок по TMON@:
СПБ Биржа вводит матчинг time priority по двум биржевым фондам
СПБ Биржа расширяет применение матчинга встречных заявок по принципу временного приоритета (time priority matching) и вводит его дополнительно по двум биржевым паевым фондам рыночных финансовых инструментов.
С 16 декабря 2025 года принцип time priority начнёт применяться по фонду «Т-Капитал — Денежный рынок» (TMON@), а с 17 декабря — по фонду «Т-Капитал — Стратегия вечного портфеля в рублях» (TRUR@).
Матчинг по принципу временного приоритета предполагает, что среди заявок по одинаковой цене в первую очередь исполняется та, что была размещена раньше. С 15 декабря такой тип матчинга действует в отношении биржевого паевого инвестиционного фонда рыночных финансовых инструментов «Т-Капитал — Российские Технологии» (TITR@). По всем остальным российским ценным бумагам и фьючерсам на СПБ Бирже применяется матчинг по принципу пропорционального заключения сделок (pro-rata matching).
То есть теперь лимитные заявки по этому фонду исполняются ровно как на MOEX — то есть примерно никогда, если вы встали вместе с «плитой» маркетмейкера.
Третьим ударом по этой схеме стало начисление материальной выгоды на операции с TMON@, хоть каждая «копеечная», но их в этой схеме получается много:
Это начисление не фигурировало в налоговых отчетах вплоть до второй декады декабря и массово появилось «задним числом», что закономерно вызвало массовый бугурт среди клиентов брокера.
Правда, уже через пару дней после этого позиция брокера поменялась на обратную:
В общем, если вы хотите стабильно зарабатывать на бирже, будьте готовы не только к проигрышу в этом казино, но и к тому, что сами правила игры будут меняться у вас «под ногами» по ходу дела.
Автор: Kilor

