суббота, 5 февраля 2022 г.

Зачем тестировать торговые стратегии на истории?



Итак, в обсуждении одной из моих прошлых публикаций справедливо заметили, что «зарабатывать можно только в будущем, а в прошлом уже нельзя, оно уже прошло», поставив тем самым под сомнение полезность того, чем занимаюсь я, и тестированием торговых стратегий на истории в частности. 
Мы уже обсудили вопрос, зачем нужно учиться. Теперь поговорим собственно о тестировании.

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

Что такое формализуемые алгоритмы? Это алгоритмы, которые могут быть записаны в виде некоторых математических выражений. В результате формализации получаем математическую модель торговой стратегии, в рамках которой полностью определен процесс принятия торговых решений и которая доступна объективному исследованию без всякой примеси субъективных факторов и предпочтений. Такая торговая стратегия может тестироваться совершенно объективным образом, без вмешательства человека, но она должна содержать точные правила для входов и для выходов из рынка:
- когда и по какой цене входить в рынок;
- когда и по какой цене выходить из рынка с убытком;
- когда и по какой цене выходить из рынка с прибылью.

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

Но как все это сделать, каким образом? Очень просто - запрограммировать и посчитать.

При слове «запрограммировать» у 90% аудитории делается кислое выражение лица. Я отчасти вхожу в эти 90%, поэтому долой программирование в традиционном понимании этого термина. Есть почти забытая программа Метасток, ориентированная на пользователей-непрограммистов и требующая минимума специальных навыков, не выходящих по сложности за выполнение элементарных расчетов с помощью EXEL, а если быть более точным, то еще проще. Ну или все-таки программировать в более сложных системах.
Отмечу правда, что я все-таки начал программировать. Сильно, в десятки раз, ускоряет процесс от стадии идеи до стадии реализации в работающем железе. Даже работая в паре с квалифицированным программистом такого не добьешься.

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

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

Чем полезен тест?
Тест, отличие от субъективной интуитивной уверенности в правильности выбранной торговой стратегии дает объективный результат от ее использования. Пусть и на истории.
Вы сразу можете проверить, разработан у вас «священный грааль» торговых систем или все преимущества стратегии существуют только в воспаленном мозгу разработчика.
Хорошая система должна работать при всех типах трендов, поскольку заранее никогда не известно, когда рынок поменяет направление тренда. Ценами на рынке управляют человеческие ожидания, и нереально, чтобы механическая система последовательно прогнозировала изменения в этих ожиданиях.

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

Ведь как чаще всего появляется метод?
Трейдер смотрит на график, и в мозгу у него зажигается лампочка: а что если так?
На графике он видит, что все должно быть отлично. И видит потому, что подсознательно выделяет только те моменты.где стратегия должна давать прибыль. И на уровне того же подсознания отбрасывает другие. те где прибыли не было бы.
Тест объективен. Он просчитает правила на всем отрезке исследуемой истории и покажет истинную цену торговой стратегии.

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

Для примера рассмотрим, как это делается в простейшем случае в Метасток.

Откроем в Метасток график какого либо инструмента, для определенности EURUSD дневного масштаба, и настроим отображение элементов графика в виде японских свечей.



График EURUSD с отображением в виде японских свечей

С чего начинается построение торговой системы? Как мы помним, с торговой идеи, с того, что мы начинаем отвечать на вопрос: «А что если…?».
График у нас чист, никаких аналитических линий и индикаторов на нем нет, глазу не за что зацепиться, кроме самого графика. С графика и начнем.

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



Отображение результатов сделок - график эквити.

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

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

Какие факторы нам могут помочь в этом?
Первое, что приходит на ум, это тот факт, что при тренде цена в среднем, несмотря на откаты, возрастает. Поэтому, чтобы устранить влияние откатов, можно сравнивать текущую цену закрытия не с ценой закрытия предыдущего интервала, а с ценой, которая была N интервалов назад (фактически эту операцию выполняет классический индикатор Момент (momentum) ). В этом случае незначительные по уровню откаты не будут приводить к выходу из позиции.

Запускаем тест, и получаем результат, в котором данные упорядочены по размеру  задержки N - переменная opt1.



Итак, наша интуитивная стратегия со сравнением цен закрытия двух соседних свечей дала наихудший результат, несмотря на то, что на графике мы "видели" победу.
В причины вдаваться не будем, это предмет других публикаций. Просто примем как факт, что при N=2 прибыльность системы резко возрастает.
И вот результирующий тест

Выбираем верхнюю строчку в списке и нажимаем клавишу «Plot on Chart».
Получаем график эквити с обозначенными сигналами входов и выходов из рынка, который приведен на рисунке.



Результат явно лучше, чем у предыдущей системы.

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

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

Комментариев нет:

Отправить комментарий