Category: литература

Category was added automatically. Read all entries about "литература".

Новый-старый подход к оптимизации торговых систем

Размышляя над темой оптимизации систем, поймал себя на мысли, что популярная трейдерская парадигма тестирования In-Sample (IIS) и проверка на Out-Of-Sample(OOS) не лишена изъянов. В интервью Джеку Швагеру CIO хедж-фонда QIM Jaffray Woodriff раскритиковал этот подход, сказав что OOS это «cherry picking» результатов оптимизации, и по факту OOS является частью выборки IIS. Он предложил свое решение, которое изложено в его интервью в книге Hedge Fund Market Wizards. Но сегодня я хочу поговорить немного о другом подходе.

В тестировании в рамках парадигмы IIS-OOS, существует множество вопросов, например:

— Какой период отвести под IIS, какой под OOS и в каких пропорциях, 70/30, 50/50, 30/70?

— Какой период должен идти первым: IIS-OOS или OOS-IIS?

— В момент принятия решения, может возникнуть дилемма: а не изменился ли рынок, т.к. IIS и OOS у нас различаются.



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



Конечно во многих случаях проблемы выше можно решить с помощью walk-forward оптимизации, но для определенных типов стратегий/исследований этот подход не будет работать. Как например, для некоторых паттернов, которые либо есть, либо нет, как беременность ©. Такого рода паттерны тоже нужно проверять на прочность.



Больше всего меня лично в IIS-OOS подходе не устраивает, то что этот подход плодит дилемму «а не изменился ли рынок», и особенно в случаях когда IIS — это самые свежие данные, так и хочется подумать: OOS плохой потому-что рынок тогда давным давно был другим. Эта особенность мозга ломает все функции IIS-OOS по отбраковке подгонки.



Теперь к сути моего подхода, идея которого не нова, она знакома многим кто занимается data mining и machine learning как кросс-валидация, такую же идею в свое время выдвигал Kent .



Collapse )

Python для трейдера

Python - кросс-платформенный язык, который обладает очень простым и читаемым синтаксисом. Спасибо druidkgm и Doctor Leo за то, что они обратили мое внимание на этот язык. Раньше я использовал C# для своих прикладных задач, это тоже отличный язык, но в некоторых случаях нужно написать в 3-5 раз больше кода чем на Python или Matlab, чтобы добиться решения одной и той же задачи.

Конечно же я полностью не отказался от C# и Matlab, каждый язык нужен для своих задач. Python я использую в тех случаях когда мне нужно, сделать небольшую утилитку "на коленке" и быстро получить результат.

Этот пост, будет вводным. Дам несколько ссылок на интересные ресурсы.

Collapse )


Продолжение темы Python,в новом коллективном блоге клуба трейдеров http://blog.tradersclub.biz/ . Теперь я буду вести блог и там, вся банда в сборе :) Регистрация открыта для всех, по крайней мере, пока. Если хотите поучаствовать, почитайте сначала Правила выживания, это сэкономит много времени и нервов и вам и нам.

Про стопы

Когда в трейдерских тусовках разговор заходит на тему стопов начинается holly war, ставить не ставить, где ставить и прочая лубудистика. 

Но самая большая ошибка на мой взгляд, в том что люди считают что стоп является неким элементом ММ или Риск Менеджмента. Особенно страдают неокрепшие трейдерские умы от прочтения книг, где им предлагается ставить стоп не более 2%, на минимуме предыдущей свечи и прочие "классические" методы аля "cut your losses, let profit run" 

С позиции кванта, стоп - это такой же способ выхода из позиции как тейк-профит, n-Bar stop, или стандартный системный выход. Но сегодня мы о стопах и ММ тут вообще ни при чем. Да соглашусь, что уровень стопа влияет на риск, но на этапе разработки системы, при чем риск находит объективное отражение в параметрах системы. ММ и РМ это совершенно другой этап System Development Framework, и лучше его оставить на потом чтобы не забивать голову лишней информацией и действовать последовательно.

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

Стоп лосс - ставится не для того, чтобы выйти из рынка когда он пойдет против позиции. Он ставится для того, чтобы выйти когда рынок камнем будет падать, т.е. считаю что стопы ставятся не для того чтобы срабатывать в штатной ситуации. Считаю что приемлемым уровнем выхода по стопу 5-10% от выборки, стоп - это фол последней надежды для системы. В штатной ситуации у системы должно быть правило(а) на выход из позиции, т.н. интеллектуальный стоп, когда система решает, что рынок изменился и пора выходить. Лейтмотив этого поста - стопы надо ставить достаточно далеко от рынка, ибо они последний рубеж нашей обороны, на события как были недавно в Америке например.

Кстати в Амиброкере можно легко выставлять стопы в UnitSize (см. пред посты) Де факто получается адаптивный к волатильности стоп и тейк.

ApplyStop(stopTypeProfit, stopModePoint, 2700 / UnitSize,1);
ApplyStop
(stopTypeLoss, stopModePoint, 1400 / UnitSize,1);



 

Stridsman - Trading Systems That Work

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



Встал вопрос насколько эффективно та или иная система использует возможности которые ей представляет рынок, т.е. насколько хорош тайминг системы. Буквально сразу нашел описание подобной проблематики в книге Stridsman - Trading Systems That Work. Г-н Strindsman описывает несколько путей решения и методик оценки:
1. Относительная эффективность - оценка эффективности сделки в % относительно входа/выхода и максимальных/минимальных движений цены.
Относительная эффективность сделки
Для лонгов:
Общая = (ExitPrice - EntryPrice) / (HighPrice - LowPrice)
Вход = (HighPrice - EntryPrice) / (HighPrice - LowPrice)
Выход = (ExitPrice - LowPrice) / (HighPrice - LowPrice)
Для шортов:
Общая = (EntryPrice - ExitPrice) / (HighPrice - LowPrice)
Вход = ( EntryPrice - LowPrice) / (HighPrice - LowPrice)
Выход = (HighPrice - ExitPrice) / (HighPrice - LowPrice)

Для данного подхода вместо цен актива можно использовать реальный профит полученные при размере позиции равной 1 юниту.
Полученная оценка будет выражена в %. 


 

Collapse )