Блог им. anatolyutkin

Осознанность при построении систем

Рассмотрим вот такой инструмент:

1
Видно, что за несколько месяцев акция очень существенно выросла. Значит, это волатильная и достаточно трендовая вещь. Поэтому логично ее торговать при помощи трендовой системы. Нетрудно построить простейшую трендовуху. По классике будем входить на пересечении скользящих средних, а выходить по трейлинг-стопу--вариации люстры Чака Лебо. Путем небольшой оптимизации легко получить следующую систему:

//////////////////////////////////////////////////////////////////////
if MarketPosition=0 and average(close,3)>average(close,30) then buy next bar 1 share at open;
if MarketPosition=1 then sell next bar 1 share at Highest(high,barssinceentry)*0.92 stop;

////////////////////////////////////////////////////////////////////////////////



Эквити и параметры:
2


3

Это типичные для трендовух параметры--меньше половины прибыльных сделок (42.2%), но большое (3.15) отношение средней прибыльной к средней убыточной. Как обычно, система отдает понемногу во флэте, но отлично берет трендовые движения. Теперь можно сделать следующее:
1) Отшлифовать входы--возможно, простая средняя не вполне улавливает особенности инструмента, может быть, нужна экспоненциальная средняя.
2) Отработать выходы. Например, попробовать в качестве выхода параболик, так как видно, что акция иногда резко ускоряется, а параболик хорошо заточен под получение максимально возможной прибыли в этом случае.
В общем, надо поработать.


Все, на этом прикол заканчивается. Теперь внимание, правильный ответ. Этот инструмент--искусственный. Он получен при помощи генератора случайных чисел следующим кодом:

////////////////////////////////////////////////////
var: s(10),x(0);
x=2*Random(1)-1;
if s[1]-s[2]<-0.9 then x=x+0.8;
if s[1]-s[2]>0.9 then x=x-0.8;
s=s[1]+x;
print(File(«D:\1.txt»), NumtoStr(20000000-1000000+date,0)+","+Numtostr(time,0)+","+Numtostr(s,2)+","+Numtostr(s,2)+","+Numtostr(s,2)+","+Numtostr(s,2));

//////////////////////////////////////////////////////

Если бы не было блока

if s[1]-s[2]<-0.9 then x=x+0.8;
if s[1]-s[2]>0.9 then x=x-0.8;
 
то это было бы просто броуновское движение, на котором заработать нельзя. Поэтому все средние, люстры, итд итп являются просто подгоночным бредом, не имеющим никакого отношения к делу. За счет же этого блока процесс является контртрендовым, поэтому правильная, осознанная, основанная на нормальном понимании процесса стратегия такова--покупай, если упало больше, чем на 0.9 и продавай, если выросло больше, чем на 0.9. Код:

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if marketposition=0 and close-close[1]<-0.9 then buy this bar 1 share at close;
if barssinceentry=1 then sell this bar 1 share at close;
if marketposition=0 and close-close[1]>0.9 then sell short this bar 1 share at close;
if barssinceentry=1 then buy to cover this bar 1 share at close;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Эквити и параметры:

4


5

Обратим внимание на среднюю сделку--она равна 0.8, как и должно быть из формулы генерации процесса.

На реальном рынке ситуация во многом похожа. Существует значительное число людей, бродящих в потемках со средними и боллинджерами. Они не понимают, что делают, химича со всякой дурью. Поскольку рынок--это не броуновское движение, то иногда некоторым удается чисто случайно найти что-то рабочее, которое торгуется и в будущем. Но не имея понимания, торгуется некая производная. Что такое торговать производную? Это, на примере нашего инструмента, следующий код, который взялся из блуждания в темноте:

//////////////////////////////////////////////
if marketposition=0 and average(close,3)<average(close,30) then buy this bar 1 share at close;
if barssinceentry=7 then sell this bar 1 share at close;
///////////////////////////////////////////////////

Эквити:
6
7

Вроде, работает, и будет и в будущем работать на радость изобретателю (в отличие от трендилки из начала поста, которая есть просто переподгонка). Но это лишь жалкое подобие того, что должно быть. А поскольку на реальном рынке к таким сильнейшим неэффективностям, как в этом примере, не подступишься, то в реале работать будет еще хуже.

Какие выводы?
1) В реале никакой формулы типа

////////////////////////////////
var: s(10),x(0);
x=2*Random(1)-1;
if s[1]-s[2]<-0.9 then x=x+0.8;
if s[1]-s[2]>0.9 then x=x-0.8;
s=s[1]+x;
////////////////////////////////

не существует. Поэтому реально ситуация значительно сложней этого примера. В реале все, что у нас есть, это лишь история.

2) Однако, неэффективности существуют и имеют вполне конкретную природу. В значительном числе случаев можно довести понимание природы неэффективности практически до формульного уровня. Но для этого нужны труд и время.

3) Основное в системостроении--это именно понимание, а не жонглирование параболиками. А математика, тестирование, статистика--это лишь инструменты для приобретения понимания.

Файл котировок инструмента: http://www.fayloobmennik.net/3839838
★36
55 комментариев
++++
а ещё интересно было бы почитать про анализ реальной ленты сделок (нашего всего — фртс), например, на трендовость или антитрендовость (а то у самого всё руки никак не дойдут ))))
avatar
Swan, Да, там есть интересные вещи. Старченко в помощь.
avatar
anatolyutkin, вы имели ввиду вот этого Старченко
avatar
anvil, Нет. Николай Старченко, он придумал неплохой способ измерять фрактальную размерность биржевых графиков при помощи разбиений по хай минус лоу элементам. 
avatar
anatolyutkin, спасибо
avatar
ГуД)
Если значение волы прикрутить к работе тренд/флет?
как будет?)
avatar
Иосич, по моему опыту — не влияет, будут те же яйца, вид в профиль. даже бывает и хуже, нормируешь на волу и получаешь распределение ещё более «нормализованое», а это есть ухудшение ситуации.
avatar
Swan, Понял, не буду тратить время тады… хотя, есть мне кажется там изюм)
avatar
Отличный пост!++++
криво скопипастил
Тимофей Мартынов, он вроде алгоритмист.
или не?)
avatar
Тимофей Мартынов, Это моя статья, оригинал в жж.
avatar
Тимофей Мартынов, почитай про него в журнале FO
avatar
Тимофей Мартынов, вот после таких комментов ты теряешь хороших авторов
avatar
Тимофей Мартынов, по сайту — в разделе «Мой счет» появился вывод изменения счета по дням в рублях — в результате стало сильно тормозить. Пните Вашего программера, пожалуйста.
Тимофей Мартынов, зря я на Вашего программера наехал, извините — я смотрел «Мой счет» в IE8, там жутко тормозит, а вот в Хроме все ок.
1 хы хы… а насколько случаен генератор случайных чисел??? кто-нибудь проверял по критериям Колмагорова или Котельникова???
2 мало сделок для осмысленной статистики… надо взять стату по 10000 сделкам…
3 и блин доча кричит мультики включай…
avatar
ves2010,
1) ГСЧ, думаю, не особо. Вот здесь это обсуждали в применении к ГСЧ экселя: utkin.2stocks.ru/?p=113 в комментах.
2) Про 10000 сделок мы уже с вами говорили :)
3) Не понял
avatar
anatolyutkin, 3) доча мне дописать не дала… мутики требовала… с мысли сбила
avatar
ves2010, Дети это супер!
avatar
Кто же против понимания? Отлично, если оно есть. Но если его нет, то это не повод отказываться от паттернов, которые работают на разных активах в разные периоды времени.
А параболик в омеге, кстати, косячно выполняется, и его использовать там нельзя.
avatar
broker25, Без понимания--это последняя кривулька поста. Работать будет, но не у всех и не всегда.
avatar
Анатолий пытается доказать, что на рынке стабильно не будут работать средние скользящие и болинджер. По-моему при желании можно доказать что угодно. Анатолий пользуется еще тем, что здесь очень мало людей, которые могут спорить на его уровне. был karapuz, да больше нет его тут
avatar
главное -риск-менеджмент и мани-менеджмент. и при желании кривая будет хотя бы горизонтальная, а может даже вверх
avatar
Идущий по воде, Это необходимые вещи. Но не главные. Это технические подробности. Главное--это переиграть кого-то. Ты что-то знаешь, а твой контрагент--нет. И он платит за свое незнание деньгами. Это вообще везде так, не только на рынке.
avatar
Идущий по воде, Что ж мне теперь, молчать, если мало людей могут разговаривать на моем уровне? :) Да и уровень то тут обычный--простейшее программирование и человеческая логика.

Средние я использую в своих системах--почему нет? Это неплохой инструмент. Боллинджер, думаю, тоже в правильных местах будет нормально работать, хотя не пробовал--просто не люблю на рынке применять вещи, связанные с нормальным распределением (это чисто мое, стиль у меня такой).

Куда делся Карапуз?
avatar
anatolyutkin, про Карапуза 2 варианта.
1) слился. И решил уйти с фонды навсегда
2)устроился на хорошую работу, где не приветствуются публичные люди, как он.
avatar
Идущий по воде, Ну слился это вряд ли. Насколько помню, человек он грамотный.
avatar
я по средней стально торгую много лет, за всю историю форекса всегда работают.
avatar
kos2929, Хорошо.
avatar
kos2929, как-то все тут серьёзно, а сегодня — пятница! Астрая позвать, что ли :-)?

Посмотрел Ваш профиль — 19 лет на рынке, это ж Вы с 14-ти лет в теме!

Потом почитал Ваш блог: «То есть, вот за плечами много лет трейдинга, ну с 92 года меня ставили у банка скупать валюту уже…» Тогда, по-моему, ещё статья была за валюту? Круто Вы начинали :-)
Тоесть черепашки — это подгонка и заработать на тренде нельзя без понимания прцесса?
ФСБ рулит, 1) По черепашкам. Рашке пытается объяснить, откуда берется взрывная трендовость, являющаяся основой черепах. Но на мой взгляд, лучше это объясняет Всемирнов, исходя просто из того, что мелочи много, а крупняка мало.

2) На тренде без понимания процесса заработать нельзя. Собственно, статья про это. На графике инструмента тренды есть, но принципиально невозможно построить зарабатывающий на них алгоритм--ибо лежащий в основе графика процесс ни в каких ситуациях не обладает трендовостью.
avatar
Если взять 10 очень похожмх пробитий уровня за n период, то один чел который понимает процесс — отфильтрует несколько пробитий, согласно своему пониманию, а другой будет торговать тупо их все. И Первый заработает больше?
ФСБ рулит, Не знаю.
avatar
anatolyutkin, такого ответа я не ожидал. Тогда как нам поможет понимание процесса, если мы не можем переиграть первый уровень понимания- пробило, значит кто то вложил миллиарды, значит теперь этот актив будут брать.?
Во всех своих рассуждениях я оперирую таймфреймом не ниже дневок.
ФСБ рулит, Ну откуда же я могу знать, что будет с абстрактными персонажами.

Имхо, для торговли пробоев надо:
а) Прикинуть, торговать ли их вообще. Есть искусственно сжатые инструменты, например, доллар-рубль раньше торговался в жестком коридоре. Какие тут пробои? ЦБ задавит любую истерику.
б) Понять, что служит причинами взрывной неустойчивости. Точнее даже не понять, а придумать модель, а потом пытаться ее опровергнуть. Плохие модели опровергаются легко, хорошие опровергаются сложно. В идеале в итоге будет модель, которая не опровергается вообще, то есть правильная модель. В реале все не так радужно, но хорошую модель найти можно. Хорошая--это значит, что маловероятно (но возможно!), что она неправильная.
в) Исходя из б) найти ситуации и рынки, наиболее склонные к образованию такой неустойчивости. Скажем, корнер типа PZLT мая 2008 года вряд ли будет возможен на Si. Такой же корнер вряд ли будет на теперешнем PZLT, который исключен из шорт-листа. Это простейшие вещи, есть и более глубокие. Вот так, потихонечку, и рождаются системы.
avatar
anatolyutkin, Ну скорее имел ввиду, что один персонаж торгует не заботясь- это пробойный инструмент или нет, а другой пытается понять применим ли данный метод для торгуемого актива и т.д.(скажем то что вы написали выше). Не обязательно пробой. Можно и ложный пробой использовать: например нефть сейчас — ложные пробои сплошные, а, когда была Ливия — был тренд. Я хотел услышать подтверждение от Вас, что если метод любой применять тупо — то результат если будет — будет посредственный, а если с умом, то он будет намного лучше рынка, ну или шансы на это выше. А что касается пробоев и так далее, имел виду, что в книжках и статьях методы все более менее известны и народ по ним торгует, так применим ли подход с умом к этим популярным методам или надо выдумывать принципиально новое, свое?
Игорь (ФСБ рулит), Я не могу подтвердить или опровергнуть такие вещи--для этого нужна статистика. Ситуация такая:
1) Я пишу то, как торгую я. Этот пост, хотя он и чисто математический--это часть моего видения модели рынка.
2) Я знаю, существует некоторое число не особо успешных людей, тупо торгующих графики, индикаторы итд.
3) Из успешных (а их я знаю единицы) никто тупо ничего не делает. Условно, есть два типа успешных (названия условны):
а) Майнеры. Роют рынок, находят устойчивые правила. Примеры--JC, Механизатор, некоторые другие.
б) Физики. Пытаются вникнуть в суть дела, если это получается--то устойчивый алгоритм рисуется сам собой.
В действительности, все известные мне успешные--это смесь а) и б), пропорции разные только.
avatar
По сути это два метода индуктивный и дедуктивный.Дедуктивный-это когда мы как бы понимаем, что происходит на рынке и подбираем под это необходимые паттерны, а индуктивный, это когда мы не знаем что происходит, но подбираем паттерны которые ведут нас к «победе».И то и другое под вопросом, сейчас мода на дедукцию…
Машковский Евгений, В реале осуществляется синтез этих подходов.

1) Вначале индукция--по реализации процесса пытаемся его объяснить. Строим модели. Причем объяснять весь рынок не надо, достаточно объяснить какие-то отдельные ситуации. Пытаемся модель опровергнуть. Плохие опровергаются сразу, хорошие остаются.

2) Затем, уже имея модель в голове--дедукция. Это как выигрывающий код в этой статье--тупо пишем правила, которые для хороших моделей оказываются очень неплохие (конечно, не такие граали, как в примере этой статьи, но все же...).

Причем 1) и 2) зачастую идут параллельно. Модель придумал, если грааля она не дает--плохая модель, роем дальше.
avatar
anatolyutkin,
А по-моему, не надо ничего понимать на рынке — надо суметь принять его таким как есть, а не тем, каким он кажется
avatar
dmbes, А каким является рынок?
avatar
anatolyutkin, например, у рынка нет направления. Иногда бывает, но куда и сколько продлится заранее неизвестно. Это скорее такой булькающий густой бульон.
avatar
dmbes, И как из этого бульона извлечь пищу?
avatar
anatolyutkin, можно поставить ловушки на случай выплескивания пузыря из бульона:)
avatar
dmbes, Ну так это и будет правильным построением системы. Приняли, что рынок--это бульон. Изучили свойства бульона, поняли, что иногда из него выплескиваются пузыри. Изучили предпосылки и причины выплескивания, поставили капкан. Если модель бульона и пузырей верная, то это будет работать. Все, это и называется торговая система.
avatar
anatolyutkin, я не спорю а обсуждаю. Я бы по-своему расшифровал понимание — скорее в филосовском смысле
avatar
dmbes, Мне кажется, мы про одно и то же говорим. Можно назвать «пониманием», можно «принять рынок такой, какой он есть». Суть, имхо, одинакова.
avatar
Хороший пост! Поднял бы рейтинг, но увы не позволяет мне карма.
Мысль понятная всем — входите против рынка, фиксирутесь по профиту (или не фиксируйтесь) и огранивайте позицию во времени. Все! Всем медаль и грааль :)
avatar
ELab, Мысль не в этом.
avatar
Люблю Вас читать. Такой ностальгией веет… Вспоминается родная лаборатория лет… цать тому назад. Первая жизнь, в которой я, тогда еще МНС, нудил перед каждым экспериментом маститым мужикам: -«Нет, не надо включать. Давайте сначала обсудим и напишем на бумажке, что именно мы ожидаем от этого эксперимента, а только потом запустим эту шарманку» :)
А нынче вот майнингом совершенно не стесняюсь заниматься. Чтобы не закиснуть, майнингую попеременно. То модели (идеи), то тупо рынки в рамках модели.
avatar
bocha, Майнинг нормальная вещь. Я вот здесь пытался описать свои подходы: anatoly-utkin.livejournal.com/14058.html, и майнинг в них занимает почетное место.

А вообще системостроительство--это искусство. Некоторые вещи чистой силой ума получаются. Например, эта: anatoly-utkin.livejournal.com/17248.html. Иногда это полумайнинг--вначале находишь что-нибудь мутное, затем начинаешь вычленять эдж--и на тебе, все ж просто. Пример--вот эта: anatoly-utkin.livejournal.com/19625.html. Иногда--вообще не пойми что. К примеру, вот это smart-lab.ru/blog/142195.php я написал просто как ответ JC, который начал говорить какую-то муть про парный трейдинг. Дальше, по сути чисто случайно, я кое-что сделал--и увидел совсем неожиданный результат. Имея понимание того, кто вообще есть на рынке и что он делает, я этот результат быстро объяснил--и вуаля, система готова. И что приятно, она вполне торгуемая оказалась.

Но чистой силой ума получать результат приятней всего. Это кайф--думаешь, что да как, пишешь код--и он с первого раза оказывается рабочим. Чистое здоровье!
avatar

теги блога anatolyutkin

....все тэги



UPDONW
Новый дизайн