|
Итак, механическая торговая стратегия (МТС). Что же это такое, как ее разработать и использовать? В этой статье я освещу некоторые вопросы, важные для усвоения и понимания процесса.
МТС - это алгоритм, который совершает сделки без участия человека. Совершение любой сделки состоит из двух частей - открытия позиции и закрытия позиции. От одновременного качества обеих частей зависит получение конечного результата; в первой части есть важнейшая составляющая управления капиталом (широко известный термин money management). Сразу оговорюсь, что в этой статье я не буду затрагивать варианты управления позицией.
Инструменты исследованияИсторически сложилось так, что мы работаем с рынком Forex. Основная причина - высокая ликвидность, возможность применять технический анализ на графиках низких периодов, возможность круглосуточной торговли. Многие для настройки и проверки своих "торговых идей" используют тестеры, встроенные в торговые терминалы. Замечу, что мы (тоже исторически) работаем с терминалом MetaTrader 4, который позволяет писать пользовательские индикаторы, скрипты и советники. Подробности Вы можете узнать в документации к MetaTrader 4. Со временем появилась необходимость использования дополнительных функций - непрерывного слежения за параметры позиции, статистики и ряда других. Это привело к тому, что стандартный тестер стратегий MetaTrader, и так не отличающийся высокими качеством и удобством, начал работать из рук вон плохо - его данные не имели абсолютно ничего общего с реальным положением дел. В этот момент я принял решение использовать мощнейший Matlab. Для замены тестера было необходимо сделать ряд несложных программ - определение результата заданной позиции, вывод отчетности, вывод итоговых характеристик МТС, поддержку использования разных периодов тестирования и др. В результате появилась система с внутренним названием MT, обладающая рядом особенностей и недостатков. После ряда выполненных исследований появилась вторая версия системы с названием MK, которая объединяет около полутора десятков модулей и позволяет решать любые исследовательские задачи. Преимуществами использования Matlab являются: - корректность тестирования (обеспечена самостоятельно, полностью подконтрольна) - масса готовых реализаций сложных алгоритмов - мощные средства визуализации - самодостаточность системы Проблема настройки МТСИтак, у Вас есть какой-то торговый алгоритм, открывающий и закрывающий позиции. Естественно, перед использованием он подлежит настройке, ведь даже незначительное изменение параметров алгоритма может сделать его из прибыльного убыточным. Как же настраивать алгоритм? Очевидно, есть два способа. Эмпирический способ подразумевает, что алгоритм использует заложенные в него заранее рассчитанные теоретически эффекты. В этом случае настройка может производиться без проверки результатов МТС по теоретическим допущениям. Другой способ, напротив, подразумевает, что эффекты не рассчитаны с достаточной точностью, и параметры необходимо подобрать ("какие же параметры работают наилучшим образом?"). Первая проблема, с которой сталкивается подбирающий - подгонка параметров под тестируемую выборку данных. Вторая проблема - длительность поиска среди большого числа параметров. Третья - само существование "оптимальных" параметров. Рассмотрим по очереди все эти проблемы и определим правила их решения. Подгонка параметров под тестируемую выборку данныхЛюбую идею, даже бредовую, можно сделать прибыльной на определенном временном промежутке. Естественно, смысл от этого нулевой - на следующем промежутке времени все станет кристально ясно. Залог того, что поиск параметров не ведет к самообману - адекватная выборка, точнее выборки. При подборе параметров необходимо иметь несколько выборок данных, принципиально отличающихся друг от друга. "Степень отличия" выборок должна быть сформулирована и вычислена математически - в этом случае степень подгонки снижается. Тестирование параметров должно быть выполнено на каждой из выборок - и параметры могут быть признаны удачными, только если все выборки показали прибыль. При подборе необходим контроль не только за итоговой ценовой информацией (сколько прибыли наколотила МТС). Эта информация лишь щекочет нервы, заставляя забывать о важной особенности - адекватности тестирования. Может статься, десять удачных позиций подряд были вызваны лишь стечением обстоятельств, и такое в будущем повторяться не будет - фактически при этом осуществилась подгонка под тестируемые выборки. Во избежание таких ошибок следует вводить дополнительный контроль - как ручной, так и автоматический. Удобным и качественным показателем является величина среднего времени между позициями. Например, слишком большая дисперсия среди этих времён служит сигналом к дополнительной проверке найденных параметров. Поиск таких показателей должен быть проведет тщательно - это гарантирует качество всех дальнейших расчетов. При большом числе таких показателей удобно сводить их к единой оценке качества - например, нормированием до области значений [0;1] и перемножением. При этом более низкие значения должны соответствовать лучшим значениям показателя, более высокие - худшим; результирующий показатель автоматически можно использовать как минимизируемую функцию. В среде Matlab реализована масса алгоритмов минимизации функций нескольких переменных, и все они оказываются к Вашим услугам. Если показателей качества оказывается несколько, и они разноплановы по своей физической природе (время, цена, безразмерные величины), то оказывается весьма удобным ввести нормирование параметров до привычной всем со школы балльной оценки. При этом для каждого показателя необходимо задать две величины, отвечающие за "плохо" и "отлично" - и нормировать показатель по этим пределам. В результате получается весьма наглядная прикидка каждого найденного набора параметров, которая может быть оценена одним взглядом. Посмотрите, например, на эту таблицу: | Прибыль | 4,01
| | Убыток | 5
| Прибыльность
| 4,09
| Число позиций
| 2,25 | | Средний интервал | 3,4
| Общая
| 3,75 |
Наглядно, не правда ли? Прибыль "на четверочку", убыток "на пятерочку, а вот число позиций "плохо" - в результате не дотянули даже до четверки. В данном случае подсчет общей оценки выполнен простым усреднением, но на практике следует значительно занижать общую оценку даже от одной "двойки" или "тройки". Подобная система оценки может быть даже непосредственно использована для минимизации, однако целесообразно давать оценку ПОСЛЕ минимизации, потому что область значений здесь имеет две зоны насыщения: {2} и {5}, что значительно мешает. Длительность поиска параметровВыбор способа поиска так же важен, как и задание показателей качества. Если параметров много, и их значения имеют большую область определения, то полный перебор всех параметров легко занимает триллионы итераций. Естественно, действовать "в лоб" не следует, а следует использовать алгоритмы минимизации. Для их использования следует предварительно изучить характер минимизируемой функции. При правильном подходе поиск параметров на домашнем компьютере занимает время порядка минут. Существование "оптимальных" параметров Начиная поиск параметров какого-то торгового алгоритма, нельзя заранее сказать, есть ли они в теории - то есть стоит ли игра свеч. Поэтому не следует биться над поиском слишком долгое время; если Вы все делаете правильно, то параметры должны найтись с приятной легкостью и уверенностью. Если же, вопреки ожиданиям, результаты все время на "двойку", а в алгоритмах тестирования ошибка не находится, значит торговать по этому алгоритму не следует. Самопроверка Рано или поздно наступает момент, когда параметры найдены. В голове начинает крутиться мысль "да, вот оно!" - и в этот момент следует проверить себя лишний раз. Существует важный показатель качества системы (в общем смысле этого слова) - робастность. Робастность означает степень нечувствительности системы к изменениям параметров. Надо твердо отдавать себе отчет в том, что любые найденные параметры в какой-то степени подогнаны под выборку, важна лишь степень этой подгонки. Формулы для вычисления робастности Вы можете найти и выписать самостоятельно - замечу только, что мы используем собственную их адаптацию. При этом робастность параметров так же может быть пронормирована и включена в функцию минимизации. При этом несколько увеличиваются сложность алгоритмов тестирования и время поиска - но и автоматически отбрасывается масса наборов параметров, которые не представляют из себя ничего, кроме случайности. Итак, напомню все слагаемые успеха: 1) тестирование на разных выборках данных 2) качественный набор показателей качества 3) правильный метод оценки качества параметров 4) правильный выбор метода поиска 5) контроль за процессом поиска 6) обязательная самопроверка Заключение
В заключение выскажу несколько мыслей, касающихся относительно трех составных частей качественной МТС. Как Вы помните, это открытие позиции, закрытие позиции и управление капиталом. Опыт общения показывает, что люди при торговле на Forex обычно недопустимо рискуют. Прибыльная сделка может за короткое время стать убыточной - это происходит из-за торговли с большим кредитным плечом на непредсказуемых микроколебаниях цены. При этом потенциально хорошая сделка может в итоге при тестировании показать объективно плохой результат, хотя субъективно момент открытия был выбран удачно (оценка удачности производится в этом случае на глаз). В результате этот момент открытия позиции будет несправедливо забракован - возможно, даже в пользу позиции, открывшейся в явно неудачный момент, но случайно реабилитировавшейся. Опытный спекулянт учится и стремится к тому, чтобы и открытие, и закрытие позиции были сделаны в правильный момент. Одновременно с тем опытный спекулянт оценивает риски каждой позиции и решает, какую же сумму ему поставить на кон. Мы уже некоторое время работаем над субъективной оценкой "качества" момента открытия, которая позволяет отличать хорошие позиции от плохих и случайности от закономерностей - и добились в этом определенных успехов. Работа над субъективной системой оценки позволяет чуть шире смотреть на проблему управления капиталом и рисками - мы рассчитываем, что она позволит нам в итоге представить систему непрерывного слежения за позицией, которая позволит лично нам выйти на качественно новый уровень механической торговли. |