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

что практически любые стратегии, даже самые простейшие,

при их оптимизации на коротком интервале истории,

просто обречены быть прибыльными в бэк-тестах.

Кроме того, не буду вдаваться в подробности,

но будут прибыльными стратегии с использованием индикаторов и приемов заглядывающих  в будущее.

К таким индикаторам, в частности относится fractal ( его реализация в QUIK) и ZigZag(в любой реализации).

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

            Настало время объяснить данное явление.

 

В данной статье я попробую показать причину такой фатальной прибыльности на исторических данных оптимизированных торговых стратегий.

При этом, чем меньше сделок, совершаемых такой стратегией на истории, тем ее прибыльность будет более устойчивой в тестах, но более фиктивной в реальности.

 

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

Любая оптимизация направлена на поиск некоторого экстремума прибыли.

Практически всегда возможно подобрать параметры так, чтобы даже самая простейшая стратегия “откусила” на коротких исторических данных немного прибыли от потенциала рынка.

Поэтому смело можно сказать, что  на бэк-тестах:

Прибыль = стратегия + короткая история + оптимизация параметров

 

 Теперь перейдем к доказательству данного эффекта.

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

 Пусть эти сделки совершаются по наилучшим ценам.

Иначе сказать мы всего то и сделаем, что заглянем в будущее на 1 бар и совершим сделки внутри свечи, продажу на High свечи экстремума, а покупку на Long соответствующей свечи.

В остальном, эксперимент соответствует реальным условиям:

 

Условия эксперимента:

Период истории с 01.01.2007 г по 14.06.2012

Акции Сбербанк обычка

Торговля на фиксированную сумму,

без реинвестирования прибыли,

без плеча.

комиссия 0.035%

 

На рисунках ниже для таймов 1 день, 1 час, 5 минут и 1 минута изображены следующие графики:

Цена акции – зеленый цвет

Прибыль итого – белый цвет

Прибыль за год – желтый цвет

Прибыль за месяц – оранжевый цвет

В таблице представлена прибыль по месяцам и годам, а также средняя прибыль по одноименным месяцам.

В результате получили, что все 65 месяцев на всех таймах являются прибыльными.

Итоговая прибыль:

тайм 1 день 2940%;

тайм 1 час   4745%,

тайм 5 минут 13940%

тайм 1 минута 21690%.

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

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

Остальные выводы делайте сами.

This entry was posted on Суббота, 16 июня, 2012 at 10:29 and is filed under Интеллект, торговые роботы (МТС), Фондовый рынок. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

31 comments so far

amandra
 1 

доброе утро!
Определяет ли ваша система наличие или отсутствие тренда на данный момент?

17 июня, 2012 at 11:37
Kamynin
 2 

Доброе утро,
Система всегда в рынке.
Если сможете дать однозначное определение ТРЕНД, то я смогу ответить на Ваш вопрос.

17 июня, 2012 at 14:28
amandra
 3 

тренд по Доу

17 июня, 2012 at 15:35
Kamynin
 4 

Определение тренда по Доу не является однозначным.
Тренд по Доу — это пример нечеткого множества, как «куча» или «толпа».
Что такое максимум и минимум по Доу?

17 июня, 2012 at 15:46
belko05
 5 

тренд штука спорная- у одного вверх, у другого вниз.. главное — понять что будет дальше.

17 июня, 2012 at 18:28
travek
 6 

Николай, добрый день!
Читая вашу запись я предполагал, что вместо вывода:
Поэтому , когда Вы создаете простые стратегии, при постоянной длине истории, то чем больше тайм, тем проще получить прибыль в бэк-тестах.
Вы напишите:
Поэтому, …. , то чем меньше тайм, тем проще получить прибыль в бэк-тестах.
Ведь потенциал рынка на меньшем тайме больше (21690 против 2940 в вашем примере) и отхватить какую-то прибыль проще. Я ошибаюсь ?

18 июня, 2012 at 11:09
Kamynin
 7 

Добрый день,
Ваш вывод тоже верный. Но на малом интервале простые стратегии плохо работают даже на бек-тестах.
Но я пытался обратить внимание, что для получения реальных результатов
важна большая длина истории и большое число сделок.
Кроме того, пытался объяснить,
почему, простые стратегии, показывающие превосходные результаты на бек-тестах,
практически убыточные в реале.

18 июня, 2012 at 11:16
travek
 8 

Николай,
читая ваши записи и результаты ваших стратегий, читая записи и результаты других авторов на ряде сайтов, много думаю вот о чём. Как можно оценить простоту (сложность) торговой системы (алгоритма)? Если принять, что простые торговые методы не работают, то чем «сложнее» алгоритм (метод), тем лучше будут его результаты. Поэтому интересно сравнить разные методы по их сложности, но как это сделать количественно? Вот хорошо бы было, автор публикует результаты своей системы, и указывает, что сложность системы, о которой идёт речь, = 1.3 (например). Было бы интересно сделать такую классификацию алгоритмов и всем ей пользоваться.

18 июня, 2012 at 11:27
travek
 9 

Николай,

на одном интернет-ресурсе вы выкладывали заметку: Тестирование волновой системы без параметров оптимизации. Вы писали: Алгоритм системы основан на определении многоуровневых поддержек и сопротивлений, которые определяются как экстремальные значения волн цены. Скажите пожалуйста, для определения точек разворота сколько признаков вы используете ? Используется ли объём в данной системе для определения точек разворота ? Используются ли коэффициенты фибоначчи для определения точек разворота ? Можете дать практический совет: какие признаки нужно анализировать для определения экстремума волны (хочется понять-узнать, что вы анализируете для получения точек разворота)

Спасибо

18 июня, 2012 at 12:58
Kamynin
 10 

Добрый день,
Я взял такую систему лишь для примера.
В ней ничего из перечисленных Вами не используется.
Подобная система входит в состав робота Вася.
В Роботе Вася используются и объемы и уровни фибо.
Что касается определения экстремума функции,
то это — в любом справочнике по математике. (например, Корн)

18 июня, 2012 at 13:35
amandra
 11 

Добрый день, говоря про многоуровневые линии поддержки сопротивления, Вы не оговариваете в чем смысл самих уровней. Чем отличается уровень поддержки 2 уровня, от уровня поддержки 3 уровня? Понятно, что одно вычисляется из другого, но на основании каких правил?

18 июня, 2012 at 23:13
Kamynin
 12 

Добрый день,
действительно, не оговариваю.
Я сказал ровно то, что хотел сказать.

19 июня, 2012 at 13:55
amandra
 13 

Какие количественные характеристики вы используете при рассмотрении кол-ва сделок?

21 июня, 2012 at 00:56
Kamynin
 14 

Во-первых,добрый день,
Во-вторых, Внимательнее читайте пост: написано: «Торговля на фиксированную сумму»

21 июня, 2012 at 18:51
amandra
 15 

Добрый вечер, извините, я не верно сформулировал свой вопрос.
Вы писали про стратегию «ловлю кинжалов», согласно которой отслеживаются резкие выбросы объемов сделок, так вот что для Вас означает выброс? последовательное увеличение объема сделок, объем выше среднего и тп?. Спасибо

21 июня, 2012 at 19:35
Kamynin
 16 

Добрый день,
Стратегия «Ловля кинжалов» сводится к попытке встать в лонг при сильном движении рынка вниз, в основном,
в моменты возникновения минимума дня и встать в шорт при сильном движении рынка вверх, в основном,
в момент возникновения максимума дня. Но не только в моменты экстремумов дня.
Это контртрендовая стратегия.
Данная стратегия является очень рискованной, так как нет простого правила входа в позицию.
Однозначно я не могу ответить на Ваш вопрос.
Робот обрабатывает комплекс признаков.
В основном, робот оперирует экстремумами , в том числе и объемов.

22 июня, 2012 at 12:28
travek
 17 

Николай, добрый день!
На сайте Робострой размещена ваша заметка Тестирование волновой системы без параметров оптимизации, ссылка: http://robostroy.ru/community/article.aspx?id=335.
У меня есть вопрос по последнему скрину в записи. На нём показана история и сделки на периоде с 12-05-12 по 21-05-12. Как вы писали, алгоритм анализирует многоуровневые уровни поддержки и сопротивления. Вы можете пояснить (рассказать, намекнуть) по следующим момментам:
1) Почему робот не совершил переворот (с продажи на покупку) 17-05-12 (чуть позднее середины дня) и последующий переворот в 17-05-12 с покупки на продажу ? Визуально хороши видны максимум и минимум в описанных мной точках.
2) На каком основании алгоритм перевернул позицию на Buy в начале дня 18-05-12 ?
3) Можете рассказать ваше видение принятия решения в следующей ситуации. Находимся в короткой позиции, идёт движение вниз с небольшими коррекциями вверх. Что будет являться определяющим для смены направления сделки с sell на buy ? (Вопрос о том, в чём формальные различия примера, описаннго в вопросе №1 и примера из вопроса №2).

Спасибо!

22 июня, 2012 at 10:33
Kamynin
 18 

Добрый день,
Увы,данный пример я написал лишь из любопытства. Поэтому программу не сохранил, так как это лишь фрагмент робота Вася.
1)Робот Вася сигнал Buy 17.05.2012 в 12:35:00, сигнал Sell в 12:50:00.
Также у робота Вася 17:05:00 buy в 15:45 и Sell в 17:30
2) Про переворот позиции 18-05-12 в 11:10. Наглядный пример «ловли кинжалов» Минимум дня.
3) Чтобы ответить надо видеть график примерно на 2-3 дня истории.

22 июня, 2012 at 12:43
travek
 19 

Николай, спасибо! Интересно!
Ранее на некоторых ваших скринах я видел моменты, когда после открытия дня, свечей через 10, возникает максимум дня и ваш робот переворачивался именно на свече, на которой был максимум. Интересно, как он принял такое решение. Можно увидеть увеличение объёмов. Но мне кажется это не может быть определяющим.
Николай, хочу поинтересоваться у вас и у других людей, кто читает ваши записи. Может получится поделиться идеями. Лично у вас прошу совета или некоторой подсказки. Вопрос следующий: какие признаки можно использовать, и это будет результативно (так чтобы отсеять лишнее), для анализа при принятии решения об открытии/закрытии позиции. У меня в голове следующее:
1) новый максимум дня; 2) новый минимум дня; 3) цена ниже цены открытия дня; 4) цена выше цены открытия дня; 5) объём выше среднего значения объёма; 6) образовано n подряд идущих максимумов в предыдущие отрезки времени (свечи); 7) образовано n подряд идущих минимумов в предыдущие отрезки времени (свечи); 8) цена на x% ниже максимума дня; 9) цена на y% минимума дня; 10) цена выше средней цены (пока не уточняю период усреднения) ; 11) цена ниже средней цены; 12) средняя цена растёт/падает; 13) образован новый n-максимум/минимум дня; 14) цена на x% выше/ниже предыдущей поддержки/сопротивления;
Скажите, исходя из вашего опыта, какие указанные мною признаки вы можете признать полезными, а какие бесполезными.
Вы используете более изысканные признаки, или похожие на перечисленные?
Друзья, кто читает эти записи, каково ваше мнение по данному вопросу. Что может оказаться полезным ? Что можно использовать?
Почему я интересуюсь. Николай, моя цель в следующем. Есть стратегия. Она когда-то покупает-продаёт. Я хочу снизить % убыточных сделок и увеличить % прибыльных. Хочу составить вектор-признаков. Планирую составить реестр совершённых сделок на истории обучить перцептрон тому, как не принимать решения в тех случая, где в первом варианте были сильно убыточные сделки. Добавить настроенный вектор признаков как фильтр в правило принятия решения. Каково ваше мнение по такому подходу ?
Спасибо!

22 июня, 2012 at 14:18
Kamynin
 20 

Добрый вечер,
1)Если ответить кратко, то все указанные Вами признаки являются информативными.
Однако, они взаимосвязанные и избыточные.
Все признаки, которые используют мои роботы ( сейчас живой лишь Робот Вася) отображены на рисунках в постах.
Если Вы внимательно прочитаете мои посты по первым моим системам ( это система от 2003 года), то найдете там основы построения моих роботов.
Своих роботов я строю на единых принципах. Разница лишь в обучении.
2) Обучать персептрон — задача познавательная и увлекательная.
Но не следует возлагать больших надежд на результат.
Желаю успехов

22 июня, 2012 at 20:30
amandra
 21 

Добрый день!
«2) Про переворот позиции 18-05-12 в 11:10. Наглядный пример «ловли кинжалов» Минимум дня.»
Не совсем понятно…travek спрашивал про алгоритм, который используется только уровни поддержки/сопротивления. Откуда ловля кинжалов, если в том алгоритме не использовались объемы?

22 июня, 2012 at 19:45
Kamynin
 22 

Добрый вечер,
А почему Вы решили, что в стратегиях на уровнях нельзя ловить кинжалы?
Однако, это не так.

22 июня, 2012 at 20:36
amandra
 23 

просто я думал, что «ловля кинжалов» имеет место только при учете объемов сделок, а при рассмотрении только уровней сопротивления и поддержке используется тактика пробоя.

22 июня, 2012 at 21:19
Kamynin
 24 

Добрый вечер,
Как обычно, вопрос в терминологии.
Что такое тактика пробоя? Почему Вы ее противопоставляете пробой уровня объемам. Уровни есть и в объемах и в цене.
Это разные понятия и они не противопоставляются.
Из своего опыта знаю, что большинство споров часто происходит по причине различного понимания одного и того же понятия.
Поэтому, хорошо бы сначала однозначно определить, то понятие,которое обсуждаем.
Например, в моем понимании — ловля кинжалов — это тоже тактика пробоя.

23 июня, 2012 at 07:19
travek
 25 

Николай, спасибо за ответ.
Вы написали про обучение системы. Вы строите свой алгоритм на основе набора признаков системы. Т.е. как я понимаю у вас есть базовый алгоритм. Вы его тестируете. Далее, по результатам, проводите обучениеь с целью улучшить показатели прибыльных сделок и уменьшить показатели убыточных. Еще раз напишу, положим, что в основе торгового алгоритма — набор анализируемых признаков. Как (на какую величину в среднем, %) обучение улучшает систему. Я понимаю, что вопрос слишком размытый, т.к. если набор признаков плохой, то возможно обучение и позволит его улучшить, а ели прекрасный, то может и обучать его не нужно. Данная мысль появилась после вашей записи о том, что не следует возлагать больших надежд на результат (обучения, как я понял). Расскажите, как (количественно) обучение влияет на результаты базового алгоритма.
Спасибо!

22 июня, 2012 at 23:02
Kamynin
 26 

Добрый вечер,
могу дать конкретный ответ.
Например, перед роботом Вася был робот без имени (его хроники есть на сайте).
Робот применял фильтр КАМА.
Если сигналы от обучения заблокировать, то результат уменьшается примерно в 3 раза и становится равным среднестатистическому результату для простой системы.
У меня есть два рабочих определения простой системы:
1) Простая система — система, сигналы в которой создаются на основе не более трех индикаторов.
2) Простая система — система на основе лишь индикаторов.

23 июня, 2012 at 07:28
amandra
 27 

Добрый день.
1) ваша система построена на четкой или нечеткой логике?
2) если на четкой, то у вас есть вектор логических (как я понимаю) признаков, на основе которого формируется условие для реверса позиции. Как вы даете понять своей системе что такое «хорошо»?

23 июня, 2012 at 13:06
Kamynin
 28 

Добрый день,
Для торговли, «хорошо» — это прибыль.

23 июня, 2012 at 22:28
amandra
 29 

и как при этом изменяете правила формирования сигналов для реверса позиции?

23 июня, 2012 at 17:06
Kamynin
 30 

Не понятен вопрос.
Система реверсивная.
Закрываем лонг,значит открываем шорт, и наоборот.

23 июня, 2012 at 22:30
amandra
 31 

доброе утро, что делать системе — ясно, «Закрываем лонг,значит открываем шорт, и наоборот», вопрос здесь в том что КОГДА, то есть при каком условии. Как вы формулируете это условие? И как видоизменяете условие, когда система ведет себя «плохо»? Спасибо

24 июня, 2012 at 10:19