Основная цель данного поста--дать инсайт во внутреннюю кухню нормального системостроительства. Поскольку цель эта противоречива--с одной стороны, это можно сделать только на примере, а с другой--работающие примеры в общий доступ выкладывать глупо--то я долго думал, как это примирить. Решение пришло вчера--во время дискуссии с JC-trader возникла хорошая, яркая, четкая и логичная, но слаботоргуемая идея.
Итак, данный пост--это пример того, как правильно подходить к рынку. Пример четкого, логичного рассмотрения, без воды, бреда и мутных неопределенностей. Пример того, как я подхожу к торговле. Сама идея системы не является типичной--ибо она слишком проста, а потому вытоптана. Это выражается в том, что на приводимом этапе разработки система неторгуема. В боевых системах идеи, конечно, обычно посложнее, побогаче, требуют более глубокого понимания--но общий подход как к построению системы, так и к написанию документации совпадает с тем, что описано ниже. Важный момент: я целенаправленно остановился на определенном этапе разработки--чтобы можно было выложить в публичный доступ.
Система «Корреляция индекса со своими акциями»
Введение: корреляция инструментов и ее польза в торговле
На всевозможных рынках торгуются множество всевозможных инструментов. И часто эти инструменты ходят с некоторой синхронностью. То есть если одно пошло вверх, то и другое склонно пойти вверх, и наоборот. Причины такого поведения могут быть самыми разнообразными и требуют, как правило, глубоких исследований для их понимания. Мы это здесь обсуждать не будем. Обсудим пока, какая польза может быть от корреляции. Простейших способов использовать корреляции два:
1) Если один инструмент пошел вверх, то и другой склонен идти вверх. То есть по одному инструменту можно торговать другой—это так называемая торговля по поводырям
2) Если один инструмент пошел вверх, а другой вверх не пошел, то можно шортить первый и покупать второй.
Таким образом, корреляция является полезной штукой и потенциально способна генерировать идеи для систем.
Идея системы
На ФОРТС торгуется как фьючерс на индекс РТС, так и фьючерсы на отдельные акции из этого индекса. При этом, поскольку акции входят в индекс, то фьючерсы на акции будут коррелированы с фьючерсом на индекс. Таким образом, тут есть естественная корреляция.
Для удобства введем обозначения: Пусть I(t)—цена индекса, P1(t)—цена некой акции (назовем ее А1), входящей в индекс. Тогда I(t) скоррелировано с P1(t). Попробуем составить модель, описывающую связь I(t) с P1(t). В первом приближении, для связи индекса и акции можно записать соотношение:
I(t)=k1*P1(t)+delta+D (*) ,
где k1—это доля акции в индексе, D—это влияние всех остальных акций. Обсудим, что такое delta. Предположим, что все остальные акции не меняют своих цен, то есть D—постоянно. Тогда, если бы не было delta, то формула была бы:
I(t)=k1*P1(t)+D,
то есть это была бы однозначная связь между I(t) и P1(t). Но реально индекс и акция—это две разных цены, формируемые на двух различных аукционах (стаканах). Соответственно, в реальности никакой однозначной связи быть не может—и для описания этого и необходимо ввести в модель величину delta. При этом delta по крайней мере, ограничена—ибо торгующие в курсе о связи между акцией и индексом и не дадут им слишком разойтись. Типичный вид delta изображен на рис.1
Рис. 1
Первое слагаемое в соотношении (*) отвечает за корреляцию между ценой акции и индексом. Если бы не было D—влияния остальных акций, то данное соотношение говорило бы нам об огромной, фактически единичной корреляции между акцией и индексом. Но влияние других акций эту корреляцию замыливает.
Итак, корреляция у нас есть. Вопрос—что с ней делать? Мы будем прицеливаться на способ 2) из введения. То есть следим за ценами I(t) и P1(t)—и если они разошлись—то заключаем сделку, направленную в сторону схождения. Для формального исследования такого метода торговли удобно ввести вспомогательную величину
Sint(t)=I(t)-a*P1(t) (**).
Эта величина хороша тем, что:
а) Ее можно напрямую торговать как некий актив—скажем, при а=2 чтобы купить один лот Sint нужно купить один лот индекса и продать два лота акции.
б) На этой величине можно проводить историческое тестирование.
Таким образом, Sint—в приведенном выше смысле неотличима от цен обычных активов (будем называть обычные активы физическими активами).
Подумаем, что входит в величину Sint. Для этого подставим (*) в (**), получим:
Sint(t)=(k1-a)*P1(t)+delta+D (***).
Здесь есть:
а) влияние всех других акций D. Для наших целей можно его считать просто случайным блужданием (что это такое, смотри здесь:
http://www.2stocks.ru/utkin/?p=113 ).
б) слагаемое (k1-a)*P1(t), определяемое ценой акции А1. Для наших целей его также можно считать случайным блужданием.
в) Величина delta—это ограниченная контртрендовая величина (определение контртрендовости смотри здесь:
http://anatoly-utkin.livejournal.com/2114.html ).
Таким образом, торгуемая величина Sint, являющаяся суммой а), б) и в), является контртрендовой. И исходя из этого можно строить логичную и разумную торговую систему.
Итак, мы сумели найти естественную контртрендовую величину. Теперь подумаем, как можно улучшить контртрендовость. Ясно, что нам мешают входящие в Sint случайные блуждания P1(t) и D(t), ибо на их фоне контртрендовость замазывается. Из формулы (***) видно, что в наших силах изничтожить P1(t) просто правильным подбором лота акции А1 в Sint—так, чтобы a равнялось бы k1. Далее, подумаем, что делать с D? D—это влияние других акций. Ясно, что другие акции мы из индекса выкинуть не в силах. Тогда и не будем пытаться это сделать, а поступим наоборот—включим другие акции в наш синтетический инструмент. Для этого обсудим структуру фьючерсного рынка ФОРТС.
Фьючерс РТС—это весьма ликвидный фьючерс, также более или менее ликвидны фьючерсы на акции Газпрома, Сбербанка, Лукойла. Акции Газпрома, Сбербанка и Лукойла имеют вес в индексе каждая в районе 15% и в сумме составляют около 45% индекса. Поэтому логично составить синтетическую величину, включающую в себя в равных долях акции Газпрома, Сбербанка и Лукойла.
Составление синтетического инструмента
В соответствии с выводами предыдущего раздела, составим интересующий нас синтетический инструмент. В общем виде Sint=I-a*P1-b*P2-c*P3. Определим коэффициенты a, b, c. Для этого вспомним характерные цены фьючерсов RI, GZ, SR и LK. Это, соответственно, 100, 15, 10 и 20 тысяч рублей. Стало быть, три акции должны в сумме дать 45% от стоимости индекса в 100 тысяч, то есть 45 тысяч. Далее, в соответствии со структурой индекса эти три акции должны быть в равных долях. Отсюда легко найти коэффициенты, a=15/15=1, b=15/10=1.5, c=15/20=0.75. Таким образом, нас интересует торгуемая величина
S=0.6*RI-1*GZ-1.5*SR-0.75*LK (1)
Здесь цены для RI в пунктах (поэтому коэффициент 0.6=30/50 перед RI), цены фьючерсов на акции в рублях.
Построим минутки этой величины. Поскольку ничего кроме простейшего тестирования в этой документации не предусмотрено, то минутки S будем строить по минуткам отдельных физических инструментов методом простого сопоставления—то есть цена открытия S равна 0.6 цены открытия RI минус 1 цена открытия GZ минус 1.5 цены открытия
SR минус 0.75 цены открытия LK. Точно так же строятся и high, low, close. Конечно, это неправильно, для корректного построения нужны тиковые данные. Но для наших грубых целей сойдет. Вот код на easy language, строящий такую величину:
vars: alpha(1),beta_(1.5),gamma_(0.75);
value1=alpha*open of data2+beta_*open of data3+gamma_*open of data4;
value2=alpha*high of data2+beta_*high of data3+gamma_*high of data4;
value3=alpha*low of data2+beta_*low of data3+gamma_*low of data4;
value4=alpha*close of data2+beta_*close of data3+gamma_*close of data4;
value1=0.6*open of data1-value1;
value2=0.6*high of data1-value2;
value3=0.6*low of data1-value3;
value4=0.6*close of data1-value4;
value5=20000000+date-1000000;
print(File(«C:\1.txt»),Numtostr(value5,0),",",Numtostr(time,0),",",Numtostr(value1,0),",",Numtostr(value2,0),",",Numtostr(value3,0),",",Numtostr(value4,0));
Для его применения надо на одном графике построить минутки RI, GZ, SR и LK. В результате получим в файле 1.txt интересующие нас данные. Типичный график выглядит так:
Рис.2
Первоначальное тестирование
В соответствии с нашей идеей этот график обладает контртрендовыми свойствами. Подумаем, как эту контртрендовость выявить. Если вспомнить формулу (***), то ясно, что мы собираемся торговать delta—отклонения индекса от своего «справедливого значения». Ясно, что слишком долгими и сильными такие отклонения быть не могут. Соответственно, зададим простейшие контртрендовые правила—если цена слишком сильно отклонилась от своей скользящей средней, то играем против этого. Характерные временные масштабы—несколько минут, подразумеваем, что за это время происходит выравнивание цен. Вот простейший код:
if close>average(close,5)*1.001 then sell short next bar 1 share at open;
if close<average(close,5)*0.999 then buy next bar 1 share at open;
if barssinceentry=10 then sell next bar 1 share at open;
if barssinceentry=10 then buy to cover next bar 1 share at open;
Алгоритм этого кода: если цена отклонилась вверх более, чем на 0.1% от пятиминутной простой средней, то шортим. Через 10 минут выходим. Если цена отклонилась вниз более, чем на 0.1% от пятиминутной простой средней, то покупаем. Через 10 минут выходим.
В качестве периода исследования выберем 2011 год. Вот результаты тестирования:
Рис. 3
Параметры: PF=1.1, P=57.5%, MO=5.5.
Видно следующее:
а) Контртрендовость действительно есть
б) Параметры слишком плохи, чтобы систему торговать.
Улучшение и доводка
Что же теперь делать? Есть две альтернативы. Оставить все это просто как хорошую, прозрачную идею или доводить систему до ума. Я выбираю первое по следующим причинам:
а) Я придумал значительное количество систем с малой средней сделкой. Они требуют тщательного тестирования в реале. И даже системы для одного инструмента порой выказывают кучу трудностей. Здесь же—целых четыре инструмента.
б) Время. На такие вещи уйдет много времени—а его можно потратить на более важные вещи.
в) Давно уже хотел запустить в общее пользование что-нибудь простое и логичное, чтобы показать, как вообще надо проектировать торговые системы. Естественно, работающие вещи я выкладывать не буду—а такую вещицу, с непонятными перспективами можно и выложить. Если же продолжить ее улучшать (а тут, похоже, есть куда копать, есть некоторые четкие и внятные принципы, за счет которых можно фильтровать лишние сделки), то в общий доступ уже не выложишь.
Тест OOS
Ну, и поскольку я решаю не копать это направление дальше, то можно и ООС посмотреть прямо сейчас (в случае же дальнешей разработки ООС смотреть строго не рекомендуется). Хотя лично мне в силу опыта понятно, что с большой вероятностью там все в порядке—ибо это система с простой, четкой идеей. Вот результаты 2012-2013:
Рис. 4
Как и ожидалось, тут все в порядке.
Выводы
Удалось подтвердить контртрендовость синтетического инструмента. Фактически, выявлен вклад delta, связанный с наличием сил, которые торгуют акциями и индексом без оглядки на их взаимосвязь. Построить систему, которую можно ставить на реальные торги хотя бы малым лотом, на данном этапе исследования не удалось.
Естественно, пост с боевой системой смотрелся бы ярче. Но выкладывать работающие системы просто глупо. Я и это то двадцать раз подумал, прежде чем выложить :)
1)Вопрос: «Не съедает ли суммарный спред (ask — bid) весь профит при торговле синтетики из 4-х инструментов?»
Ответ: вначале весь профит съедает комиссия. А спред приносит еще больший убыток.
2) Вопрос: «Как можно решить задачу входа в сделку с минимальным спредом?»
Ответ: Ответы на такие вопросы я не могу себе позволить :)
И удивительно мало просмотров и плюсиков и за такой грамотный и полезный пост. Не тянет СЛ. Тут можно и готовую прибыльную систему выкладывать — все равно не поймут что к чему )
Спасибо.
1. Чрезвычайно трудно реализовать синхронизацию входов/выходов — есть риск остаться в направленной позиции, «без одной или без двух ног».
2. ГО увеличивается, комиссия больше.
3. Средняя сделка очень мала. С увеличением к-ва компонентов в Синтетике средняя сделка уменьшается.
4. Из-за пп 2. и 3. для осязаемого выхлопа, если он будет, требуется больше ден.средств для торговли. Что ведет к увеличению рисков в принципе, а из-за п1 особенно.
5. Удивил сигнал на выход — через 10 баров. Почему не через 11-ть или 12-ть?
А так хорошо написано, для тех кто это не пробовал торговать.
По пунктам:
1.-4. согласен. В комментах выше все это раскрыто.
5. Это называется грубость системы. Что 10, что 11 или 12 дадут похожие результаты. Такое поведение--необходимый атрибут хорошей системы.
вот программа, которая это делает
www.yurikon.net/synadapter
1. Да, это статистический арбитраж.
2. Задача оптимизации, конечно, есть, но она проста. Например, умножаем 0.6*RI-1*GZ-1.5*SR-0.75*LK на 8--и получаем практически целые числа.
3. Насколько понял, ваша программа строит настоящие аски и биды для синтетики. Безусловно, это полезная вещь. Но вначале надо понять, как вообще это торговать. Статистический арбитраж бывает разный.
4. Как вы относитесь к реализации арбитража посредством отклонений от скользящих средних? Может, есть более хорошие способы?
3. Торговать так — если уровень спреда в моменте по цене входа, а не по клоузу удовлетворяет — можем входить по маркету. Естественно, таких ситуаций в разы меньше. В идеале, надо начинать котировать слабую ногу и по мере ее исполнения — исполнять ликвидные ноги. Через омегу и мультичартс такое сложно сделать.
4.Сейчас я торгую спред сбер-сбер преф по стратегии отклонения от среднего. Очень даже не плохо получается.
Более хороший способ торговать портфель из пар и корзин. А механизм\стратегия примерно одна и таже — торговать отклонения от тренда.
Главное составить стационарный спред. В частности можно занулять не просто разницу, а подбирать лоты так, чтобы занулялась бета портфеля.
«Малое изменение RI при малом изменении Si и постоянных ценах акций»=-RI/Si*(«малое изменение Si»).
Это следует из того, что RI обратно пропорционально Si.
Ставим скажем на 5минутки RI систему лонг если C<O и наоборот в шорт, смотрим эквити и что объявляем RI контртрендовым таким же макаром как Вы объявляете спреды более контртрендовыми чем базовые активы?
Т е Ваше утверждение что торговать тренды на спредах бессмысленно потому что инструмент по определению контртрендовый выглядит достаточно неаргументированно.
По аргументации. Ваша фраза: «Ставим скажем на 5минутки RI систему лонг если C<O и наоборот в шорт, смотрим эквити и что объявляем RI контртрендовым» взята с потолка. Откуда, что, зачем, почему?
Я же привел последовательное и логичное описание начиная с того факта, что Газпром входит в индекс РТС. Впрочем, если вам это кажется слабой аргументацией--это дело ваше.
Ну как с потолка, вот в посте Вы строите график корзины или спреда, ставите туда контрендовую систему и по итогам делаете вывод о контртрендовости корзины, так? В дискуссии Вы к примеру писали что спред ри газ с чего то по определению контртрендовый хотя с чего бы это так неясно.
Вот я ставлю контртрендову страту на инструмент, получаю ровно растущую еквити и по той же логике можно сделать вывод что ри не менее контртрендовый?
Меня собственно зацепил только тезис о бессмысленности торговли трендов на спредах, это не аргументировано.
Если вспомните, JC, увидев график RI-6*GZ первый раз в своей жизни, сказал, что его можно торговать трендовухами. А я ответил, что это будет безыдейная подгонка. Потому что, имхо, после первого взгляда на график инструмента, в состав которого входит то, у чего JC даже цену не знает, (RI--Юрий не знал, что оно не 145к рублей стоит :) ) вот так сразу что-то заявлять--это ничем иным, кроме подгонки быть не может.
Потому что трендовость--это сложный феномен, это не статистический арбитраж, который описал я, это сложнее. А аргументы Юрия--«не проиграть все во флэте, тяжелые хвосты, итд итп»--это все мантры в стиле Б. Вильямса и прочих. У трендовости имеются вполне четкие причины, их можно логично и последовательно объяснить--так же, как я объяснил контртрендовость на несколькоминутном масштабе в этом посте.
В двух словах, если очень сложно, в чем причины трендовости?
У трендовости несколько причин. Все называть не буду, назову одну. Например, трендовость естественным и логичным образом следует из того простого факта, что крупных участников мало, а мелких--много.
Бывают еще ситуации, когда внешняя общая причина влияет на рынок…
Есть такой человек--Кирилл Ильинский. У него есть лекции на рыночные темы. Есть лекция про психологию. Там неплохо описано то, что я имею в виду.
1) Выбор для теста 2011--2013, конечно, неслучаен. Причины такого выбора:
а) Сейчас сентябрь 2013 года :)
б) На большом периоде эта система даст граальную картинку--а я не хотел тревожить некорепшие умы читателей смартлаба :)
2) Картинка за 5 лет--2008--2012 годы включительно:
А комиссии в картинку сколько заложено?
Вы ведь уже задавали этот вопрос. Ответ то читали?
Итак, специально для вас, после четкого и внятного текста, после 50 комментариев еще раз копирую сюда свой комментарий №2. Изучайте:
«Denoy System, Я все оставил в неторгуемом виде. Средняя сделка--5 рублей--не покрывает даже комиссий. Поэтому о том, чтобы торговать систему в нынешнем виде--не может быть и речи. Цель поста--показать на примере последовательный логичный подход к системостроительству.
Естественно, пост с боевой системой смотрелся бы ярче. Но выкладывать работающие системы просто глупо. Я и это то двадцать раз подумал, прежде чем выложить :)»