Случайные закономерности и скользящий стоп

  • Автор темы DQ_Still
  • Дата начала

DQ_Still

New member
...
...............................................................................................................................................................
Посвящается Конвертору

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

Для целей исследования был создан «Генератор случайных акций» (ГСА) - программа, генерирующая случайный график движения цены, максимально приближенный к реальному.

Краткое описание ГСА и принципов его работы:
Программа создает набор баров, соответствующий определенному таймфрейму.
Цена открытия первого бара задается пользователем, цена закрытия - результат прибавления случайного числа к цене открытия (диапазон задается; значения могут быть как положительными (белая свеча), так и отрицательными (черная свеча)). Максимум и минимум цены (тени) - случайные числа в заданных диапазонах, отсчитываются, соответственно, от верхней и нижней границ тела бара. Кроме того, для более точного соответствия поведению реального биржевого инструмента, генерируется значение объема - случайное число в заданном диапазоне.
Все последующие бары генерируются по тому же принципу, за исключением того, что цена открытия у них равна цене закрытия предыдущего бара. Разница между ценой закрытия последнего бара дня и ценой открытия первого бара следующего дня (гэп) генерируется случайно в заданном диапазоне; гэп может быть как положительным, так и отрицательным относительно цены закрытия дня.
Все диапазоны, кроме диапазона изменения объемов, задаются в процентах.
Для генерации случайных чисел используется Random - стандартный класс среды .NET.

Эксперимент был разделен на 2 части.

Часть 1.

На первом этапе были сгенерированы 1000 графиков СА. Из них, с помощью генератора случайных чисел, были выбраны 30, на которых производилась оптимизация Метода.
Метод – реверсивный скользящий стоп Константина Борисовича Копыркина, или NRTR (авторское наименование).
http://konkop.narod.ru/nrma.htm - здесь Рис.1 ПОЛНОСТЬЮ объясняет работу Метода, применяемого в моей работе (текст до и после не совсем относится к описанию Метода, так что просьба сосредоточиться именно на этом рисунке и пояснениях к нему).

Причины выбора именно этого метода простые: NRTR - это скользящий стоп, идущий за ценой на одном и том же расстоянии (К), сколь угодно долго при движении в нужную сторону, и ограничивающий убытки, заранее определенные величиной K, при неблагоприятном движении цены. Для случайного поведения цены это наиболее адекватный подход, с моей точки зрения. Единственный параметр оптимизации - размер скользящего фильтра К, выражаемый в %.
Отличия от авторского подхода:
1. В своей работе я проводил оптимизацию К в широких диапазонах (0.1%...20%).
2. Оптимизацию К проводил отдельно (но взаимозависимо) по лонгам и шортам. Т.е., в моей вариации Метода, всегда использовалось два значения K – Kl и Ks (для лонгов и шортов, соответственно).

Параметры генерации СА:
1. Кол-во баров – 5445, достаточное для получения в среднем не менее 30 сделок при максимально возможном окне К = 20%. С точки зрения подобия реальности такое количество баров соответствует примерно 7.5 календарным месяцам на 15-ти минутных барах. Для экспериментов «out of sample» (вторая часть работы) использовались графики с кол-вом баров 10890, остальные параметры (см. далее п.п. 2-7), такие же.
2. Начальная цена (цена открытия первого бара) - 176
3. Диапазон для генерации тела свечи -1.7..+1.7 (% от цены открытия)
4. Диапазон размеров верхней «тени» свечки 0..+1.3 (% от цены открытия)
5. Диапазон размеров нижней «тени» свечки 0..-1.3 (% от цены открытия)
6. Максимальный размер гэпа: ± 3 (% от цены открытия последнего дневного бара)
7. Диапазон значений объемов: 350 000 – 12 500 000.

Примеры графика «Случайной акции»(СА) с сигналами на вход и выход из позиции, определяемые Методом :





На графиках можно увидеть точки входа и выхода из позиции, обозначенные синим кружком (цена входа-выхода, соответствует цене закрытия бара) и двумя стрелками – серой (означает вход в позицию) и зеленой или красной (выход из позиции, зеленый цвет – с профитом, красный – с убытком). Светло-розовая зона на графиках – зона шорта, светло-зеленая – зона лонга.
На графиках хорошо заметны межсессионные гэпы – 08.11.2010, 09.11.2010, на верхнем графике и 29.04.2011 и 01.05.2011, на нижнем.

В первой части работы оптимизация К проводилась на 30 случайно отобранных (из 1000) СА, по пяти параметрам – профиту (Profit), профит-фактору (PF), отношению средней профитной сделки к средней убыточной (Payoff Ratio), проценту профитных сделок (Win rate ) и коэффициенту восстановления системы (Recovery Factor). Далее значения Kl и Ks усреднялись (Таблица 1).

Таблица 1


Я специально привел все значения Kl и Ks для того, чтобы показать, насколько велик разброс полученных значений. Например, значения Kl (при оптимизации по профиту) составляют 0.5..15.9, а значения Kl при оптимизации по профит-фактору вообще меняются во всем диапазоне оптимизации – 0.1..19.9. Естественно, при таких разбросах параметров трудно ожидать адекватных результатов при простом усреднении. Однако, эксперимент был продолжен, и, используя усредненные значения Kl и Ks, рассчитывался и суммировался профит по всем 1000 СА, сумма входа в сделку была всегда одинакова и составляла 100 000, комиссия и проскальзывания принимались равными 0. Результаты в Таблице 2.

Таблица 2


Наибольшие значения соответствующих параметров в таблице отмечены серым цветом.
Видно, что при оптимизации практически по любому из параметров (за исключением Payoff Ratio), удалось достичь положительных результатов (МО от 1.26% до 3.25%). Однако, при оптимизации по профит-фактору, получается наибольшее количество максимальных значений параметров (три из пяти - PF, Recovery Factor и Win rate).
А, вообще, получен, с моей точки зрения, интересный результат – несмотря на огромный разброс усредняемых параметров, оптимизация приводит к улучшению именно того параметра, по которому она проводилась (за исключением Recovery Factor’a). Это свидетельствует, как минимум, о неслучайном характере полученных результатов.
Далее, я решил проверить практическую применимость подобного подхода путем введения затрат на совершение сделки (учет комиссии и проскальзывания). По тем же 30 случайно выбранным СА были рассчитаны значения Kl и Ks с учетом затрат на совершение сделки, равных 0.05% (или 0.025% на одну сторону, покупку или продажу), при тех же параметрах оптимизации, с последующим усреднением. Результаты приведены в Таблице 3.

Таблица 3


Величина затрат на сделку 0.05% была определена экспериментально. Это максимальное значение, при котором еще сохраняется положительное МО (при оптимизации по профит-фактору, табл. 3 ). Как видно, преимущество оптимизации по PF с введением затрат на сделку еще возросло – теперь здесь максимальны 4 параметра из 5-ти, и добавился еще один – наименьшее значение суммарных затрат на торговлю (на комиссию и проскальзывание).

Часть 2.

Однако, большой разброс параметров при оптимизации контрольной 30-ки, привел меня к мысли немного изменить эксперимент, вернее дополнить исследованиями «out of sample».
Для этого были сгенерированы 30 СА в два раза большей длины (10890 баров) с теми же параметрами ГСА (см. первую часть). Программное обеспечение изменено таким способом, что на первой половине ценового графика (1..5445 баров) проводится оптимизация Метода, затем с полученными значениями Kl и Ks производится «торговля» на оставшемся участке (5446..10890) с определением основных параметров – Profit и Profit Factor (PF). Оптимизация проводилась так же, как и в первой части по пяти параметрам – Profit, PF, Payoff Ratio, Win Rate, Recovery Factor. Результаты расчетов при нулевых затратах на совершение сделки приведены в Таблице 4.

Таблица 4


Как видно, при оптимизации по трем параметрам (PF, Payoff Ratio и Win rate) удалось получить гораздо большую величину профита (матожидания) и PF. Это связано с отсутствием усреднения оптимальных параметров и, соответственно, с более полным использованием «закономерностей» случайности.
Как и в первой части, при оптимизации по PF были получены одни из самых лучших результатов.
Ну и напоследок, получив столь оптимистичные итоги, я решил повторить расчеты с учетом реальных затрат на совершение сделки – 0.15% на одну сторону (0.3% на сделку). Результаты в Таблице 5.

Таблица 5


И здесь удалось получить весьма солидные показатели при оптимизации по PF и Payoff Ratio (примерно 17.5 и 21.5 % годовых на портфеле из 30 СА, если считать в 15-минутном таймфрейме). Однако при оптимизации по PF значения Kl и Ks после введения комиссии почти не изменились (только 4 значения из 60 – я не приводил их значения, чтобы не загружать статью), в отличие от оптимизации по Payoff Ratio (изменилось 39 значений), что говорит, как мне кажется, о более устойчивом (и, соответственно, более надежном) характере оптимизации по PF.

Краткие выводы.
Как видно из результатов данного небольшого исследования, мне вполне удалось заставить «случайные закономерности» ценовых графиков СА приносить профит и попутно оценить способы оптимизации метода их «укрощения».
Да и вообще, как говорится - sapienti sat ))
 

nxz

New member
Очень хорошее исследование. Спасибо. Уже пытаюсь пристроить скользящий стоп к своему роботу.
 

DQ_Still

New member
А-ХА-ХА-ХА, вот это ты замутил!

Слушай, а для базы в random что брал?
не совсем понял вопроса
если про создание баров, то база - цена закрытия предыдущего бара (она же цена открытия текущего) и от нее в диапазоне: 170 значений вверх и 170 значений вниз случайное число
 

ASFedor

New member
не совсем понял вопроса
если про создание баров, то база - цена закрытия предыдущего бара (она же цена открытия текущего) и от нее в диапазоне: 170 значений вверх и 170 значений вниз случайное число
не, рандом генерирует случайное число в диапазоне от 0 до 1, но для генерации он использует некую базу, так вот, если эта база не меняется, то он выдает более или менее одинаковые результаты, а если базу менять, то да, результаты совсем случайные. рекомендуют использовать в качестве такой базы системное время с милисекундами.
 

DQ_Still

New member
не, рандом генерирует случайное число в диапазоне от 0 до 1, но для генерации он использует некую базу, так вот, если эта база не меняется, то он выдает более или менее одинаковые результаты, а если базу менять, то да, результаты совсем случайные. рекомендуют использовать в качестве такой базы системное время с милисекундами.
из описания класса random: перегруженный метод Next() при каждом вызове возвращает положительное целое, равномерно распределённое в некотором диапазоне. Диапазон задаётся параметрами метода.
 

ASFedor

New member
из описания класса random: перегруженный метод Next() при каждом вызове возвращает положительное целое, равномерно распределённое в некотором диапазоне. Диапазон задаётся параметрами метода.
ну, может я от жизни отстал, когда первые .net-ы выходили, вроде так было.
в принципе, могли и поменять.
 

ASFedor

New member
не не отстал))
для создания начальной точки используются системные часы по умолчанию))
о, додумали :)

раньше надо было при вызове в параметры забивать че-то типа "time", чтобы оно от этого времени работало... эх, ща начну робота писать, вспомню молодость :)

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

Так вот, смотрел код и думал: "Неужели это все я понаписал" :D
 

Bagira

New member
Приветствую, Олег.
Как всегда я твои мысли читаю с большим интересом, что вызывает глубокое уважение!
Статья очень интересная, поэтому добавлю к моему списку статей по теме исследования "случайного рынка". После изучения amibrokera хочу сам произвести некоторые исследования, чтобы понять можно ли извлечь выгоду на любых колебаниях... Может и смешно звучит, но опровержение этой гипотезы для меня тоже будет удовлетворительным ответом...
Хотел дополнить к этой теме ещё статейки, может кому и интересным будут.
http://www.russian-trader.ru/forum/viewtopic.php?t=6186&postdays=0&postorder=asc&start=0
http://www.2stocks.ru/utkin/?p=113
http://www.2stocks.ru/forum/index.php?showtopic=10963
P.S. Хочу отметить, что все авторы перечисленных статьей вызывают у меня глубокое уважение!
 

Jaguar

New member
Интересный разговор, затрагивающий один из самых важных вопросов, какие есть в системном трейдинге.

от нее в диапазоне: 170 значений вверх и 170 значений вниз случайное число
Вот это уже не случайно и на этом можно заработать. То есть, у тебя случайно направление, но неслучайны пределы волатильности. Соответственно, много способов использовать этот факт.
 

DQ_Still

New member
Приветствую, Олег.
Как всегда я твои мысли читаю с большим интересом, что вызывает глубокое уважение!
Статья очень интересная, поэтому добавлю к моему списку статей по теме исследования "случайного рынка". После изучения amibrokera хочу сам произвести некоторые исследования, чтобы понять можно ли извлечь выгоду на любых колебаниях... Может и смешно звучит, но опровержение этой гипотезы для меня тоже будет удовлетворительным ответом...
Хотел дополнить к этой теме ещё статейки, может кому и интересным будут.
http://www.russian-trader.ru/forum/viewtopic.php?t=6186&postdays=0&postorder=asc&start=0
http://www.2stocks.ru/utkin/?p=113
http://www.2stocks.ru/forum/index.php?showtopic=10963
P.S. Хочу отметить, что все авторы перечисленных статьей вызывают у меня глубокое уважение!
О! спасибо за ссылки - то что надо, теперь знаю, что не одинок в своих размышлениях, есть как минимум, один единомышленник, Б.Д. )))
то что постит Б.Д. вполне могло быть моими постами - настолько совпадают взгляды))
только в исследованиях случайных закономерностей я ушел гораздо дальше его

p.s. Баграт, когда начнешь свои изыскания и если тебе понадобится генератор случайных акций, обращайся)
могу либо сгенерировать по твоим требованиям графики, либо просто дать его тебе
 

DQ_Still

New member
Вот это уже не случайно и на этом можно заработать. То есть, у тебя случайно направление, но неслучайны пределы волатильности. Соответственно, много способов использовать этот факт.
абсолютно согласен)) и эта одна из причин, по которой возможно зарабатывать на "случайном" рынке
даже на полностью хаотичное изменение цены накладываются вполне определенные физические рамки - цена не может стать отрицательной, увеличиться моментально во много раз (на ликвидном инструменте с полным стаканом), упасть до нуля и тд
вторую причину я указал в тексте статьи - благодаря обязательному неравномерному распределению равновероятных приращений, образуются "случайные тренды", а при наличии трендов, независимо от их природы, возможно получения профита
и еще один вывод следует из моих экспериментов - те самые неслучайные пределы волатильности приводят, по видимому, к определенной неслучайности в последовательности и размерах трендов - это следует из того, что оптимизация системы по какому-либо параметру на одних графиках, приводит к преобладанию этого же параметра на других графиках (см. Часть 1 статьи)
 

ASFedor

New member
а теперь самый главный вопрос: "как полученные результаты применить к реальной торговле?"

или если проще: "Так, покупать или продавать?"

:)

Имхо, проделанный эксперимент показывает только лишь то, что выбранная стратегия торговли, после некоторой оптимизации ее параметров, позволяет получать некоторую прибыль на сгенерированной последовательности псевдослучайных котировок акций.
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху