Постов с тегом "бэктестинг": 140

бэктестинг


тестирование системы BWS

Здесь был пост про тестирование системы BWS, к сожалению, расчеты были произведены некорректно, пост удален. Приношу извинения.

 


Вот он мой бэктестер-оптимизатор, моя прееелесть.

У хорошего мастера должны быть хорошие инструменты – у кузнеца – молот, у столяра – рубанок, у алготрейдера… — оптимизатор.


Выкатил новую версию.

 

Настоящий мужской оптимизатор конечно же должен быть консольным. Этот красавчик быстр – 10 лет 5-минуток на простой стратегии вместе с вычислением всяких там PF, RF 0,3 секунды. И это на одном потоке! (с многопоточностью, к слову, пока не смог подружить, но заложил такую возможность).

Бэктестер берет задания из csv файла и пашет. Т.е. на данный момент задания на оптимизацию задаются в момент создания файла с заданиями, решил поменять план оптимизации – меняю файл – меняется дальнейшая оптимизация. Т.е. по факту сейчас план на оптимизацию предустановленный, но легко прикрутить в дальнейшем оптимизацию с обратной связью на результаты предыдущих бэктестов. Меня всегда смущали стандартные оптимизаторы в этой части – где перебирается один параметр, или несколько строго итерационно, но я не мог задать явно другие алгоритмы перебора или в общем случае даже не перебора, а «изменения» значений. А здесь могу: т.е., могу за раз закинуть задания сразу на нужное количество гипотез, хочу посмотреть, как стратегия себя ведет между тикерам – не трогаю ничего, меняю только тикер, хочу проверить как ведет себя между тайм-фреймами – меняю только тайм-фреймы и т.д., т.е. минут за 5-10 во всемогущем экселе можно создать файл с заданиями для нужного набора гипотез. Потом когда бэктестер отработает – берешь эксельку и дата-майнишь данные.

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

Более менее ООПшная прога получилась, так что есть надежда, что можно мяса при необходимости накрутить с контролируемым уровнем сложности и поддерживаемости.

Если вдруг кто-то собирался завидовать – не надо, вам бы не понравился мой оптимизатор. Думаю, он будет нравиться только мне! :)


Как создать тестерный грааль - 2

Классический случай =)
Можно во время бэктеста случайно забыть одно важное обстоятельство, после чего любоваться на красивую эквити. Во время входа в сделку внутри свечи тестер знает только значение фильтра за прошедший бар. Если этого не учесть, система будет радостно входить в каждую сделку, зная о том, как поведет себя фильтр в будущем на протяжении текущего бара и получая его одобрение на вход заранее, что в реальности, естественно, невозможно, и подобная ошибка будет стоить вам денег.
Из этого можно извлечь все ту же истину — слишком красивые результаты — главный сигнал к поиску ошибки =)
Слева пример того, как система себя поведет, если знает как закроется бар, справа — поведение системы, если она этого не знает.
Как создать тестерный грааль - 2


Недостаток итерационного бэктестера - возможность заглядывать в будущее (на самом деле нет).

«Один из недостатков итерационного бэктестера — возможность заглядывать в будущее». 

Серьёзно? А не судьба написать защиту от заглядывания, чтобы код стратегии физически не мог этого сделать.
Мой вот не заглядывает) — запретил)).

Всё-таки свой полностью контролируемый, не переусложненный, с нужным именно тебе набором функциональных возможностей софт — это круто!

Сторонникам и противникам Технического Анализа… Посвящается

Любителям Технического Анализа, посвящается

Наверное, один из самых вечных споров на фондовом рынке, является спор о «Работает Технический анализ (ТА) или нет!»

Уж сколько было сломано копий, сколько исписано бумаги, сколько различных доказательств приводилось в поддержку той и другой точки зрения. Моё личное отношение к ТА менялось несколько раз. От восторженного в самом начале своего обучения, далее — крайне негативного в середине своей инвестиционной деятельности, и к умеренному восприятию в текущих реалиях. Моя ошибка, как и ошибка многих, заключалась в том, что мне очень хотелось найти «грааль», который позволит мне прыгнуть из «грязи в князи», быстро и с минимум трудовых и денежных затрат. Молодо – зелено, как говорится. На самом же деле, как и практически во всём остальном в нашей жизни, всё дело в статистике и в упорном труде. Я не буду здесь писать очередную книгу по техническому анализу, но расскажу о том, что требуется сделать трейдеру или техническому аналитику, чтобы получить своё «статистическое преимущество» (я эту фразу применительно к фондовому рынку прочёл в книге Тимофея Мартынова «Механизм трейдинга» и почему-то подумал, что эти слова принадлежат Александру Горчакову).

Я продемонстрирую важность нахождения «статистического преимущества» на самом простом индикаторе – скользящей средней МА, называемой на биржевом слэнге — Машкой. Принцип проверки полезности индикатора очень прост – когда цена пересекает МА снизу вверх открывается длинная позиция (на покупку), когда цена пересекает МА сверху вниз, то считается открытой короткая позиция. Это неполноценная торговая система, поэтому здесь нет никаких стоп-лосс и т.п. Задача состоит в том, чтобы продемонстрировать как технический аналитик должен подготовить к работе инструментарий, прежде чем делать какие-то прогнозы или выводы.

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

График 1

Индекс Московской биржи и 200 дневная скользящая средняя

Если мы возьмём, например, индекс Московской биржи (история которого доступна с 2003 года), и посмотрим какое математическое ожидание нам дало использование простой 200 дневной МА, то увидим, что историческая доходность индикатора составила 4.6% годовых, ожидаемая доходность равна 7.5 % годовых, а волатильность результатов индикатора составляет 24.6 % годовых!

И всё бы ничего, если бы не два «ужаснейших» обстоятельства:

  • Первое. Не применяя индикатор (так называемый вариант Buy&Hold) мы имели историческую доходность 13,57 % годовых, ожидаемую – 16% при практически той же волатильности в 24%.
  • Второе. Форма графика доходности индикатора повергает в шок любого здравомыслящего человека (График 2 – синяя линяя).
График 2
Доходность 200 дневной скользящей средней на IMOEX

В книге «Малая энциклопедия трейдера» Эрик Нейман предлагает нам использовать Экспоненциальную скользящую среднею для дневных графиков со следующими периодами усреднения 21, 55, 89, 144, 200

Давайте ради интереса сравним результаты для всех этих вариантов.

Таблица 1
Сторонникам и противникам Технического Анализа… Посвящается

Из таблицы видно, что практической пользой может обладать только параметр в 21, потому что даёт преимущество примерно в 1% над B&H, однако если наложить налоги и транзакционные издержки, с очень большой вероятностью всё преимущество исчезнет, а скорее всего приведёт к худшему результату. К тому же профиль графика доходности индикатора тоже оставляет желать лучшего (смотрите график 3 и таблицу со значениями по годам)

График 3

результаты 21 дневной EMA на IMOEX
Таблица 2
Значение доходности 21 дневной по годам
Что же тогда делать техническому аналитику? Как минимум, постараться найти те параметры Машки, которые бы давали наибольшую доходность.

Оказывается, для случая EMAи по отношению к Индексу Московской биржи таким будет «18», оно даст 18,8% годовых против 13.6 на B&H, однако несмотря на конечный неплохой результат индикатор давал кучу ложных сигналов в период с 2014 по 2019 год.

График 4

Доходность 18-дневной EMA на IMOEX

Этот аспект подталкивает к рассуждениям на тему, что искать лучшие показатели, только на основании расхождения конечных результатов – не есть получение рабочего устойчивого значения. Хотелось бы найти такой показатель МА, который бы приводил линии доходности индикатора к более прямой линии, уменьшал его колебания и был, конечно лучше или равен конечному результату B&H. То есть нужна уже целевая функция, по который мы бы искали наш параметр.  

Написав такую функцию и присвоив каждому из её элементов одинаковый вес, мы получим следующие показатели.

Таблица 3
Различные МА

График 5
Результат простой 14 дневной скользящей средней
Получили ли мы сейчас значения, которые помогли бы нам строить надежные прогнозы? Нет, мы только начали. Хотя уже существенно продвинулись вперед. По крайней мере мы уже понимаем, что далеко недостаточно взять какой-то индикатор с его стандартными показателями и строить на нём прогнозы или искать подтверждения на нём своим выводам. 

 

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

 

И это только один индикатор! А представьте себе если мы решили построить торговую систему, которая будет включать в себя несколько индикаторов, элементы управления позицией, риск-менеджмент. Там вероятности могут перемножаться, вычитаться, ошибки могут плодиться с огромной скоростью, потому что они напрямую зависят от количества параметров, которые использует аналитик/трейдер.

 

На этом я пока, пожалуй, остановлюсь. Если меня посетить вдохновение, может я двинусь дальше в своём рассказе.

 

Надеюсь, Вам было интересно! Удачи на фондовом рынке и в приумножении Вашего капитала.


Есть ли здесь противоречие?

Возьмём 2 распространённых утверждения:

1. Рынок меняется.

2. Историческое тестирование алгоритмов возможно.

Не противоречат ли эти утверждения друг другу? Если нет, то почему?

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


Маркет-нейтральная стратегия на производных VIX

Маркет-нейтральная стратегия на производных VIX


В этой статье рассмотрим простейшую маркет-нейтральную стратегию из производных инструментов на индекса страха для S&P 500 (VIX). В основу положим контанго фьючерсов на VIX. Будем опережать SPY.

Использовать будем ETF на фьючерсы разных сроков. Всё это мы приготовим в Quantopian. Поехали!



( Читать дальше )

Простая стратегия с фундаменталом для Quantopian

Простая стратегия с фундаменталом для Quantopian
Данный алгоритм появился из стороннего примера, найденного на Quantopian. Я его оптимизировал и сопроводил обильными комментариями на русском. Это не лучшее использование воронок (Pipeline). Но зато использует произвольные факторы (CustomFactor).

Всё это появилось по просьбе автора MindSpace.ru, Оксаны Гафаити. Поехали!



( Читать дальше )

Простой event-driven бэктестер, или как быстро потерять деньги на бинарных опционах

В этот раз сделаем простой бэктестер. Начнём с бинарных опционов, так как у них примитивный принцип работы. Мы делаем ставку, а она на следующей свече выиграет или проиграет.

Также посмотрим на работу стратегии с Мартингейлом и опасность, которую она несёт. Часто, есть периоды, когда подобные стратегии рисуют красивый график с прибылью. Но заканчиваются чудеса молниеносно быстро, несколькими ставками в максимальный убыток.

Для проверки, проведём тесты на минутном таймфрейме за июль 2018 года на паре EUR/USD. Поможет нам в этом Jupyter и Python 3.6.



( Читать дальше )

....все тэги
UPDONW
Новый дизайн