Блог им. Collapse

RTS: стратегия одностороннего «маркетмейкера»

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

Я приведу результаты бэктеста одной из своих перспективных стратегий, которую считаю отличной возможностью разогнать депозит. Длина тестового периода — 12 лет фьючерса RTS (т.е. склеены 48 квартальных контрактов).

Среднегодовая прибыль — 83%
Среднегодовая max[просадка] — 8.3%
Среднее количество сделок в день — 5.7
Средняя прибыль на сделку — 0.058%
Среднее время в позиции — 1.4 часа

Эффективность использования капитала (т.е. средняя процентная прибыль за 24 торговых часа удержания позиции) — почти 1%. Линейность графика доходности высокая как по шкале сделок, так и по шкале времени (в том числе и в силу хорошей частоты сделок, которая после введения ранних торгов станет ещё выше).

Это результат без плечей и без учёта издержек. Комиссии заберут примерно десятую часть прибыли (т.е. останется 75% годовых и 75 пунктов на сделку в текущих ценах Ri).

Многие скажут, что с учётом проскальзывания и спреда такая стратегия обречена. Но что если стать односторонним «маркетмейкером»? Полезная ликвидность Ri явно нужна. В случае присоединения к заявкам по лучшей цене (без последующего переставления) расходов на спред не будет. А вот закрывать позицию в большинстве случаев придётся всё же «по рынку», поэтому возникнет проскальзывание, зависящее от объёма.

От объёма позиции также будет зависеть и вероятность полного заполнения заявки при попытке открытия сделки. Но вернётся ли для этого цена? В моём случае она возвращается, даже если отодвинуть ордер подальше от спреда [ссылка]. Так что на высокую вероятность хотя бы частичного заполнения можно рассчитывать. И тут как раз весьма кстати то, что у алгоритма высокая доходность и без плеча (т.е. большой объём не требуется в принципе).

В целом, со вторым плечом на 100% годовых, думаю, ориентироваться можно (по крайней мере в пределе). Т.к. хороший программист в Киеве зарабатывает $50K в год, то для сопоставимого дохода мне нужна позиция на 35 контрактов Ri. Но и депозит нужен $50K, чтобы плечо было действительно второе, а средняя max[просадка] — примерно 20% от депозита.

  • жизнеспособна ли такая идея на практике?
  • насколько может отличаться реальный результат?
  • QUIK или MetaTrader лучше подходит для данной задачи?
  • требуется ли именно высокоскоростное подключение (PLAZA II)?
Алготрейдеры, что скажете?
★3
55 комментариев
Среднегодовая max[просадка] — 8.3%

Так среднегодовая или максимальная за 12 лет?
Дмитрий Овчинников, максимальную просадку за всю историю (12.2%) учитывать не имеет никакого смысла, поэтому я привёл именно среднюю из максимальных за каждый год. И эта просадка немного увеличится, если учесть издержки.
avatar
Fractal, максимальную как раз и надо считать.
она повторится 1 раз за следующие 12 лет.
и 1/12 что в этом году.

avatar
Антон Б, в рынке нет таких закономерностей.
avatar
Fractal, вы получили что у вас за 12 лет был как минимум один худший год в 12.2%

далее либо вы
1) предполагаете что рынок остался таким-же и значит шанс 12.2% НЕ НИЖЕ чем 1/12 в год.
2) предполагаете что рынок настолько изменился что предыдущая история ничего не значит и выкидываете бектест в корзинку.
avatar
Антон Б, вы точно понимаете, что такое нестационарный случайный процесс?
avatar
Особенность работы с лимитками на РИ: 

1) Очень слаженно работают алгоритмы на отскоки от крупных лимитных заявок из-за чего даже 50-100 контрактов порой не дают войти по нужно цене; 
2) То же самое с закрытием позиций, а закрытие по рынку лает ощутимое проскальзывание. 
введения ранних торгов станет ещё выше

Ранние торги вообще полный мрак, ликвидности нет от слова совсем. 
avatar
Yan_Vas, у фьючерса RTS есть составной базовый актив, который не позволит уйти цене только лишь из-за появления моей заявки. «Играть» от неё роботы будут, но это для меня высокочастотный «шум».
avatar
Fractal, При позиции в 35 контрактов не уйдет, от 50 уже начинается…
avatar
Среднегодовая прибыль — 83%
Среднегодовая max[просадка] — 8.3%
Среднее количество сделок в день — 5.7
Средняя прибыль на сделку — 0.058%
Среднее время в позиции — 1.4 часа

Средняя сделка в тиках сколько составляет? 
avatar
Yan_Vas, примерно 7.5
avatar
Fractal, 7,5 тиков? или 7 500 тиков? 
avatar
Yan_Vas, 7.5 шагов цены.
avatar
Fractal, 
Как-то маловато или мы не поняли друг друга? 
avatar
Yan_Vas, было бы в разы больше, алгоритм показывал бы не 100% в год, а 100% в квартал. А с такими результатами долго не живут.
avatar
Fractal, долго не живут

Почему?)

avatar
Yan_Vas, потому что в таком случае сложный процент (с учётом ежемесячного реинвестирования) составит 3000% в год.

Обеспечьте 10 процентов, и капитал согласен на всякое применение, при 20 процентах он становится оживлённым, при 50 процентах положительно готов сломать себе голову, при 100 процентах он попирает все человеческие законы, при 300 процентах нет такого преступления, на которое он не рискнул бы, хотя бы под страхом виселицы.

Thomas Joseph Dunning
avatar
  • QUIK или MetaTrader лучше подходит для данной задачи?

Лучше Транзак Коннектор 
avatar
Закрывать позицию в подавляющем большинстве случаев придётся «по рынку», поэтому возникнет проскальзывание, зависящее от объёма.
Вот это вызывает большой вопрос.
А так нормально, вполне сойдет.
avatar
_sg_, «по рынку» тоже можно закрываться «по-разному», но в этом нужно будет разбираться «по ходу» дела )
avatar
Есть какие-то несоответствия в описании, которые нуждаются в пояснениях
.
1. Средняя сделка 75 пунктов (без учета издержек) и среднее время в позиции 1.4 часа. Это как????? Что вы делаете в сделке 1.4 часа с такой средней?
Для примера: у меня в стратегиях с малой сделкой на Ri эти показатели равны соответственно около 30 (с издержками) и менее минуты :)

2. Маркетмейкерская стратегия и 5.7 сделок в день. Это как? Количество сделок должно измерятся тысячами…
Дмитрий Овчинников, что делаю, что делаю… беру кукла измором )

1. Прибыль/убыток у меня почти на порядок больше средней сделки.
2. Могу взять это слово в кавычки, но суть от этого не изменится: я всё равно буду приносить полезную ликвидность на рынок.
avatar
Fractal, попробуйте на 1(2) контракте.
если не взлети — 90% что так и будет, то закроет вопрос с поиском денег.

а если взлетит, с 1 контрактом то деньги предоставит сам брокер.
в том числе пониженным го.
или еще каким делом.

под бектест никто 50к usd не даст и правильно сделает.
а го на 1-2 контракта можно и самому выделить.
avatar
Антон Б, да понятно, что тестить нужно на свои.

Пониженное ГО (т.е. плечо выше 7-го) приведёт к гарантированному маржинколу.
avatar
Fractal, если тестить все равно придется на свои 50к рублей.
то смысл в статье?

Возможно вам выделят эти 50к рублей но на совершенно скотских условиях типа передачи кода.
И выделят не вам а под стратегию.


avatar
Антон Б, свои вопросы в ней я обозначил. Ведь мне небезразлично мнение тех, кто уже давно в этой теме. К тому же если кто-то готов помочь мне в боевом тестировании, то я только «за». Сигналами взамен мне будет делиться не сложно.
avatar
Кто что думает по этому поводу из алготрейдеров? Шпионы, а вы чего молчите?
Возьму смелость и попробую ответить за всех. Пока что видно, что пороху в подобных стратах не понюхали, поэтому лень реагировать. Почему я так подумал? Хотя бы по бектесту (ну или по задаваемым вопросам). Вы тестите в метаке судя по всему, а подобные страты немного далеки от реалий по тестам по тикам. Желательно тестить маркетмейкерские стратежки по лучшему bid/ask. 
 но, похоже, что скоро всё сделаю сам.
это подход нормальный. Пощупайте, что там и как. Когда сделаете выводы и зададите правильные вопросы в топике, наверняка это все будет выглядеть по другому.
avatar
Андрей К, 
маркетмейкерские стратегии по-моему вообще бесполезно тестить.
У меня есть прототип, который на демо-контуре делает 10% в день.
На реале кое-как отбивает затраты.
Дмитрий Овчинников, не раз на конфах слышал, как коллеги по цеху рассказывают, что они такие делают =) В смысли бектестеры. 

Как по мне, чем проще страта, тем она понятнее. Там день-два на бою погонять, посмотреть ленту вокруг себя, ордерлог и тд и предельно становится понятно, где ты, что ты и что со всем эти делать и надо ли =) Но это чисто по опыту.

Другой момент, что бывают аховые дни. Или резкое падение ликвидности или резкий взрыв волы или то и другое одновременно. Сразу на опыте такие дни не выедешь. Если только опыт, накопленный за пару лет. Тут бы конечно бектест помог. Хорошо, что таких нерядовых дней мало в году, знаю, что многие просто отключаются и все.

avatar
Андрей К, программа для бэктеста у меня своя. Тестировал по ценам close минутных свечей.
avatar
Как уже отмечено выше, трейды с коротким тейком должны быть быстрыми, 1-2 мин максимум. Иначе это уже рендом. 1,5 часа в сделке, чтобы взять 8 тиков, это ни в какие ворота…
avatar
Reznor, как раз эти 1.5 часа и дают 10% шанс что это живая стратегия.
потому что если бы он в тестере тестил на секундах то ценности вообще в бектесте было бы 0.

а эта (не очень большая ) альфа может набираться 1.5 часа.

avatar
Антон Б, Лично для меня 1.5 часа в борьбе за 8 тиков, это говорит о контртрендовой составляющей стратегии. Или вход в завершающей стадии движения, где как-бы 100% тренд.

avatar
Yan_Vas, что там что-то теоретически может быть.
avatar
Антон Б, согласен, что время в позиции говорит в пользу надёжности результата.
avatar
Fractal, в пользу того, что тестер, который не умеет тестировать живущих в стакане роботов.
хоть сколько-нибудь что-то оттестил похожее на правду.
avatar
Yan_Vas, а какая разница сколько тиков? На Si их будет более 20-ти, только вот толку меньше.
avatar
Fractal, Руками забирать 7-8 тиков 5-6 раз в день, это норм. Но для робота мне кажется маловато. Ты не подумай, это не камень в твой огород, просто интересно, пост не шибко подробный, про стопы не указано. 

Я не просто докапываюсь, у меня есть люди которые готовы вложиться в хорошие проекты 
avatar
Yan_Vas, я такой результат не планировал, а наоборот представлял его совсем по-другому. Но год программирования эволюционно вывел меня именно на такой вариант. И с этим нужно как-то жить. Здесь нет моей вины )

«Стопы» конечно же есть в каждой сделке (не более 1% от цены), но срабатывают они менее чем в 15% случаев. Впрочем, как и «тейки» (т.е. большая часть сделок закрывается «досрочно»).
avatar
Антон Б, 1,5 часа это целая вечность для страты с коротким тейком. Слишком много случайных факторов и событий может произойти за это время, которые размоют всю альфу, если конечно она там была. 
Для таких страт должно быть все наоборот. Чем меньше время удержания позы — тем лучше.
avatar
Reznor, я полностью с вами согласен.
но проверить такие короткие стратегии технически очень сложно.
и гораздо дешевле и надежнее проверить их на 1-2 живых котрактах.

сам бектест (система эмуляции трогов) который теоретически способен это проверить будет стоить БОЛЬШЕ  50к usd.
avatar
Антон Б, 
сам бектест (система эмуляции трогов) который теоретически способен это проверить будет стоить БОЛЬШЕ  50к usd.

Что то слишком дорого. Я такие тесты под конкретную страту за пару дней писал на С#, хоть я и не проф программист ни разу.
avatar
Reznor, Вы предполагаете что ваши позиции в стакане не изменят поведение других игроков.
что вы можете встать с краю стакана и боты не переставятся в следующем слепке стакана, для примера.
и т.д.
даже если вы собираете стакан,
а Вы это делаете?

Вы алготрейдер эксперт.

ЛЧИ 2012 — №31 в общем зачете;
ЛЧИ 2013 — №5  в общем зачете; №2 в группе лучший активный трейдер;
ЛЧИ 2015 — №14 в группе лучший активный трейдер;

«за пару дней соберу бектест из своего кода и еще у меня 20 лет опыта»

Сколько у Вас стоит год работы?
Как раз эти 50к?
Или это за 6 месяцев всего?
avatar
Reznor, хороший «random» на 17-ти тысячах сделок!
avatar
😂 «Планирую становиться первым в стакане» — Это должен быть заголовок статьи.
avatar
Сергей, так в этом и был вопрос: каким техническим оснащением нужно обладать, чтобы присоединиться к лучшему ордеру? Переставлять свою заявку впоследствии я не буду.
avatar
Fractal, никаким. первый в ликвидном стакане это мм который либо сама биржа.
либо брокер который по факту сама биржа.
и это стоит гораздо дороже ваших мифических 50к (скорее всего 2 ваших годовых зп).

avatar
Fractal, мне трудно сказать я могу только предполагать например поставить достаточно далеко от спреда заявку в 6.59 13.55 итп в ожидании что остальные вас не опередят и ждать весь день как цена к ней подойдет. А практически нужно отдельный  SOC кристалл или на крайний случай ПЛИС со встроенными эзернетами и прочим в датацентре. Настоящий  маркет мейкер пока ваша заявка частично исполнилась — уже обложил остаток по краям бидасками вот такая у него скорость. А вообще спросите у smart-lab.ru/my/uralpro/ — он точно знает. Хотя можно быть и медленным маркетосом для примера посмотрите как работала группа роботов Robot_Slavyan и.т.п на прошлых ЛЧИ.
avatar
Автор за столько лет работы на рынке не заработал себе депо, чтобы тестить систему в реале парой коней? Или проблема в том, что автор в Киеве? Ну так это проблема и для «инвестора».
 А насчёт ликвидности — так есть же брент, без дыр в стакане, и сожрёт любые объёмы, благо его котируют не на моськухне.
avatar
О'Грин,

1) Я нигде не просил денег на 1-2 контракта Ri. Помощь меня интересует прежде всего именно в технических вопросах.

2) Проблема удалённой работы с российскими брокерами действительно есть. «Открытие» требует моего личного присутствия, чтобы обновить анкетные данные. Но всё можно удалённо оформить на Кипре.

3) Проблемы для инвестора нет. Я могу разделить робота на 2 части и не иметь доступа к его счёту.

4) В Brent слишком большой шаг цены, но объёмы действительно приличные. Поэтому я планировал использовать там другую стратегию и открываться «по рынку».
avatar
С первым тезисом не согласен, почти все с точностью наоборот. Нужно стремиться к наибольшему количеству сделок пока позволяет комисс и технологический сетап. Это дает минимизацию просадок, устойчивость эквити при рабочей стратегии и близость результатов бэктеста и реала.
Объем будет перевариваться тем меньше, чем больше частота сделок, но есть способы как с этим справиться, до некоторой степени.  Насчет просадки — будьте уверены, что максимальная просадка на бэктесте будет превышена в реале. Это вообще самый главный показатель. Лучше пожертвовать 10% прибыли, но уменьшить просадку на 3%. Качество эквити возрастет в разы.
Чтобы быть первым в стакане, без колокации и подключения FIX/FAST ничего не получится. И даже с ними не получится, если вы не программировали раньше real-time профессионально. Релевантность теста за 12 лет тоже сомнительна, рынок даже после повышения комиса совсем другой, а это было всего года 2 назад. Ну и тестирование по ценам close минуток, это конечно не для высокочастотной торговли. А любой маркет мейкер, даже если у него 6 сделок в день, это HFT, потому что если вы вовремя не убираете заявки при adverse selection — вы становитесь кормом для остальных HFT
avatar
uralpro, безусловно, с этим сложно не согласиться и

1) бывалые
2) высокочастотные
3) алготрейдеры
4) фондового рынка

привыкли делать именно так. Но для всех остальных (а там много других вариантов) именно крупная средняя сделка является залогом того, что они в реале получат хоть что-то. Именно она стабилизирует график просадки и позволяет масштабировать объёмы.

Об «adverse selection» раньше не слышал. Как часто эта ситуация возникает? Если я тестирую по close минуток, то она уже явно включена в мой результат.

Так на что посоветуете ориентироваться «медленному» алгоритму, чтобы единоразово выбрасывать ордер как можно ближе к границе спреда? Речь как о самой цене, так и о временной метке. По идее (хоть я это и не наблюдаю визуально), активность в стакане должна быть выше именно по завершению свечи (когда у всех срабатывают сигналы). Именно тогда целесообразно выставлять заявку в надежде на высокую вероятность её заполнения. Но если активность в это время выше, то и сложнее будет в границу спреда попасть.
avatar
Fractal, adverse selection это довольно сложное понятие, много академических исследований на эту тему можно найти. Если совсем просто, то это ситуация, когда сбивается ваш ордер, а цена продолжает идти в сторону противоположную вашей возникшей позиции. Adverse selection присутствует на рынке всегда из-за наличия информированных участников. В силах маркет мейкера только уменьшить вероятность такой ситуации. В первую очередь за счет стратегии, во вторую — за счет скорости. В вашем бэктесте по минуткам вряд ли можно эффективно учесть этот факт. Даже в бэктесте на полном ордерлоге это очень не простая задача. Проще говоря, если у вас маркетмейкерская стратегия и нет технологического сетапа, обеспечивающего скорость, ничем иным, кроме корма, на рынке вы не станете. 
Я не совсем понимаю, что значит поставить  ордер ближе к границе спреда. Если вы имеете в виду лучший бид/аск, ну и выставляйте ордер по эти ценам. Только видимые лучшие цены — это не факт, а всего лишь вероятность. Пока вы выставляете ордер, они могут измениться, и происходит это в микросекунды, и в те моменты, когда уже лучше этот ордер не выставлять, а отменить :) И забудьте вы о свечах, если хотите сделать что то более или менее рабочее. Активность на рынке возникает не по свечам, а в любую наносекунду, если этого требует изменившаяся рыночная ситуация
avatar
Фьючерс — он сам по себе плечо)
avatar

теги блога Fractal

....все тэги



UPDONW