Оценка торговых систем методами Монте-Карло
Основная цель различных стресс-тестов - выявить слабые и наиболее уязвимые места в работе всех звеньев и, в общем смысле, определить вероятность провала. Моделирование методами Монте-Карло позволяет оценить устойчивость системы, чувствительность к входным параметрам и вероятность наступления конкретных сценариев развития. В этой статье я расскажу о нескольких способах применения Монте-Карло при оценке механических торговых систем.
"What is the last thing you do before you climb on a ladder? You shake it. And that is Monte Carlo simulation."
SamSavage, StanfordUniversity.
В последнее время все чаще можно услышать, что финансовые организации и банки периодически подвергаются различным стресс-тестам. Основная цель таких проверок - выявить слабые и наиболее уязвимые места в работе всех структур организации и, в общем смысле, определить вероятность банкротства.
Очень часто при этом применяется параметрический и вероятностный анализ математической модели всего бизнеса. Параметрический подход подразумевает под собой наличие входных параметров, от которых зависят интересующие аудитора показатели. Например, как прибыль кредитного отдела зависит от количества невозвращенных кредитов. Вероятностный анализ можно применять при работе с более сложными многопараметрическими моделями. Прогоняя по очереди большое количество различных параметров и их комбинаций, можно с большой достоверностью определить вероятность наступления событий, вплоть до самых неблагоприятных. Конечно, невозможно абсолютно точно рассчитать все возможные в реальности сценарии, но спрогнозировать вероятность убытков или чувствительность прибыли к входным параметрам можно с достаточно приемлемой достоверностью.
Возвращаясь к аналогии Сэма Сэведжа, скажу еще раз, что моделирование методами Монте-Карло позволяет оценить устойчивость системы, чувствительность к входным параметрам и вероятность наступления конкретных сценариев развития. В этой статье я расскажу о нескольких способах применения Монте-Карло при оценке механических торговых систем. Можно выделить три основных подхода:
1. Статистическая оценка математического ожидания торговой системы;
2. Моделирование линии эквити и последовательностей сделок;
3. Моделирование "истории" котировок.
В качестве примера я выбрал очень простую паттерновую шортовую торговую систему для фьючерса на индекс РТС. В основе этой системы лежит реализация очень краткосрочного стат.преимущества, открытая позиция держится ровно 30 минут. На рисунке можно посмотреть показатели эффективности стратегии на тестовом и вневыборочном интервалах:
При тестировании системы было заложено проскальзывание с хорошим запасом и, тем не менее, показатели средней эффективности сделок и вероятности прибыльного исхода остались на стабильно приемлемом уровне. Теперь перейдем непосредственно к моделированию.
СТАТИСТИЧЕСКАЯ ОЦЕНКА МАТЕМАТИЧЕСКОГО ОЖИДАНИЯ.
При этом подходе нам потребуется всего три показателя из базовой сводной таблицы. Это вероятность получения прибыли, средняя величина прибыльной сделки и средняя величина убытка. Важно, что эти величины нужно брать из столбца, соответствующего вневыборочному тестированию. В этом подходе результаты тестового периода имеют очень малую прогностическую ценность. Итак, имеем первые три входных параметра:
- вероятность прибыли = 57,69%, соответственно вероятность убытка = 1 - прибыль = 42,31%
- средняя прибыль = 0,73%
- средний убыток = -0,29%.
Теперь построим модель по методу Монте-Карло с использованием случайных чисел. Если выпавшее случайное число больше 0,4231 , то мы имеем прибыльную сделку в размере 0,73%. В противном случае мы имеем убыток в размере -0,29%. Сделаем последовательность из 192 сделок, чтобы сравнить результат моделирования с показателями тестового периода. Тут можно применить три варианта моделирования:
- чистое математическое моделирование. Это самый простой и примитивный метод моделирования "в лоб", когда используются фиксированные значения входных параметров математического ожидания сделок;
- "плавающее" моделирование базовых параметров. Этот метод моделирования использует случайные, нормально распределенные значения параметров. При этом среднее значение равно базовому, а стандартное отклонение равно 1/10 от базового. То есть вероятность прибыльного исхода будет "нормально" колебаться вокруг 0,5769 со стандартным отклонением в 0,0576. Этот вариант удобно применять для оценки наихудших сценариев, потому что можно посчитать вероятность события, когда процент и величина средней прибыли упадет, а величина среднего убытка вырастет;
- "плавающее" моделирование сделок. Самый реальный, но и наиболее ресурсоемкий вариант моделирования. Моделируется каждая сделка по отдельности с параметрами, аналогичными предыдущему варианту. То есть вероятность прибыли конкретной сделки является независимой случайной величиной, нормально распределенной вокруг базового значения в 57,69%. Точно так же пересчитывается средняя величина прибыли и убытка для каждой отдельной сделки.
На рисунке можно посмотреть различные варианты линий эквити и показатели тестирования при втором (левый столбик) и третьем (правый столбик) вариантах моделирования.
нажми на график для увелияения
На рисунке показаны распределения математического ожидания, прибыли после 192 сделок, максимальная серия убытков подряд и максимальная просадка. Поскольку это самый простой метод Монте-Карло моделирования, то некоторую предсказательную ценность имеют лишь оценки прибыли и максимальной серии убытков. Так, например, математическое ожидание сделки колеблется вокруг 0,3% , ожидаемая прибыль - 77-78%, максимальная серия убытков - 6. А вот ожидаемая просадка заметно занижена. В реальности прибыльные и убыточные сделки распределены гораздо менее равномерно, чем на этих графиках. Опытным путем можно использовать для первичной оценки удвоенное значение 99% доверительного интервала. Так, в нашем примере существует 1% вероятность того, что максимальная просадка превысит 3,85%. Значит для реальной оценки можно использовать значение в 7,7%.
Очень большое значение имеет число испытаний, которому подвергается модель при испытаниях. Разница в значениях, полученных при 50 и 100 прогонах, достаточно существенна. А вот при переходе от 10000 к 50000 изменяется лишь четвертая цифра после запятой, что уже в пределах статистической погрешности. Поэтому считаю, что 1000 испытаний - это критический минимум для получения достоверных результатов. Оптимально - не меньше 10000. В моем случае было проведено 100000 испытаний. Такое большое число позволяет оценить чувствительность модели к входным параметрам. В правом верхнем углу расположена таблица регрессионных коэффициентов для базовых параметров. Хорошо видно, что между вероятностью выигрыша, средним выигрышем и математическим ожиданием сделок существует прямая зависимость. Что, собственно, и следовало ожидать. Особый интерес вызывает конкретное соотношение этих самых зависимостей. Так, при этих значениях входных параметров, наибольшая зависимость от вероятности выигрыша. Чуть меньше эффективность системы зависит от средней величины выигрыша. И наименьший вес в устойчивости показателей придается средней величине проигрыша.
МОДЕЛИРОВАНИЕ ЛИНИИ ЭКВИТИ И ПОСЛЕДОВАТЕЛЬНОСТЕЙ СДЕЛОК
При этом подходе будет анализироваться последовательность сделок, полученных при тестировании торговой системы. Наиболее верным, опять же, будет использование сделок, полученных на вневыборочном интервале. Сейчас, в качестве образца, я сделаю некоторое упрощение и проведу анализ сделок с тестового периода. Торговая система практически не оптимизировалась, поэтому сделки с тестового периода можно признать в моем случае достаточно репрезентативными. Однако, более корректным и надежным, повторюсь, будет использование вневыборочных показателей. Можно выделить два основных варианта моделирования линий эквити:
- метод "случайная выборка сделок "без возвращения"". В этом случае сделки просто переставляются случайным образом, формируя новые серии. Количество сделок и, следовательно, конечный итог остается всегда одним и тем же. На рисунке этот подход изображен на левом графике и первом столбце;
- метод "случайная выборка сделок "с возвращением"". Более гибкий метод. Необходимо задать число сделок, и каждая сделка в полученной последовательности будет извлекаться случайным образом из базовой последовательности сделок. Сделки могут повторяться, поэтому этот вариант позволяет моделировать линии эквити любой требуемой длины. На рисунке этот подход изображен на правом графике. Второй столбец показывает результаты моделирования серии из 400 сделок, последний столбец - 192 сделки.
нажми на график для увелияения
Результаты моделирования гораздо более реалистичны по сравнению с методом моделирования МО:
- максимальная просадка колеблется от 6,9% при 192 сделках до 8,3% при 400 сделках;
- максимальная серия убытков - от 5 до 6 подряд;
- средняя ожидаемая прибыль - от 90 до 280%.
Примечательно, что ожидаемая прибыль растет с увеличением числа сделок быстрее, чем ожидаемая максимальная просадка. Аналогичные операции по Монте-Карло моделированию линии эквити и последовательностей сделок можно проделать в специальном приложении к программе Вэлс-Лаб. Достаточно загрузить в программу моделирования результаты тестирования стратегии и можно приступать к анализу вероятностей. Программа предоставляет те же два немного усложненных варианта моделирования: Монте-Карло анализ линии эквити и Бутстреп сделок. Основное отличие от моего метода "с возвращением" состоит в том, что программа имеет возможность сохранять допустимые серии и последовательности сделок и автокорреляций. Смотрим на результаты:
Верхняя часть показывает результаты "встряски" линии эквити. Этот метод предполагает случайную выборку «с возвращением», поэтому в последовательность сделки могут включаться несколько раз. Этим объясняется, что при постоянной длине последовательности, итоговая прибыль может варьироваться. Нижняя часть показывает результаты Бутстрепа сделок. Сравним с моими показателями:
- 90% доверительный интервал просадки составляет от 3,32% до 11,2%, по сравнению с моими 3,94-11,3%
- Максимальная серия убытков в программе не считается. Зато можем посмотреть вероятность безубыточности, которая составляет 99,83%.
МОДЕЛИРОВАНИЕ "ИСТОРИИ" КОТИРОВОК.
Самый интересный и наименее изученный метод. В чистом виде не анализирует параметры торговой системы, а моделирует "окружающую среду". Этот метод построен на предположении, что "история повторяется, но в другом виде". Для моделирования потребуется рассчитать приращения каждого бара рабочего таймфрейма, после чего эти бары тщательно перемешать и сгенерировать новую "историю". Главной задачей в этом подходе является выбор алгоритма по расчетам новых баров. Проанализировав несколько подходов, я остановился на достаточно простых способах расчета максимальных и минимальных значений:
- открытие, максимум, минимум и закрытие бара расчитываются по отношению к значению предыдущего закрытия;
- открытие и закрытие бара расчитываются по отношению к предыдущему значению, а максимум и минимум - по отношению к текущему закрытию;
http://www.russian-trader.ru/article...ntekarlo/5.png
Оба метода позволяют генерировать достаточно качественные "истории". Я остановился на втором методе, так как он имхо более правдоподобно отражает волатильность текущего бара. При тестировании будут использованы оба подхода:
- генерация истории "без возвращения", на итоговом рисунке результаты тестирования представлены в верхней части, а сводная таблица помечена как "Монте-Карло".
- генерация истории "с возвращением", на итоговом рисунке снизу, таблица помечена как "Бутстреп". Этот подход позволяет генерировать "истории" любой длины, поэтому было протестирована 1000 различных вариантов длиной от 1/2 до 4 длин базовой истории.
Поскольку генерация "с возвращением" допускает использование одних и тех же баров по нескольку раз, то необходимо проверить распределение приращений, полученных в новой истории:
Приращение вполне рыночное, лапласовское, с длинными хвостами, поэтому можно говорить о приемлемости этого метода генерации "историй". Теоретически, подобное моделирование может в корне изменить структуру рынка и торгуемых паттернов, поэтому требуют дополнительного анализа и пока являются индикативными. С другой стороны, рынок в будущем вполне может принять форму подобных генераций, так как построена она с нормальной логикой и реальными исходными данными. Пока не доказано обратное, результаты такого моделирования при большом количестве проходов вполне могут выявить подгонку параметров торговой системы под конкретный график. Итак, смотрим результаты тестирования системы на новых "историях":
нажми на график для увелияения
Результаты можно признать позитивными. Средняя прибыль на сделку составляет 0,08-0,09%, средняя просадка - 19%, средняя вероятность выигрыша - 48%. Хорошо видно, что метод "с возвращением" дает более широкий разброс значений. Однозначно, это очень перспективный и требующий более тщательного изучения метод моделирования.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Поскольку я уже успел получить вопросы по технике автоматического построения выборок в Экселе, то остановлюсь на этом вопросе более подробно. Сделки извлекаются из общего массива сделок функцией ИНДЕКС(). Основной задачей является определение "случайности" номера строки, из которой будет браться сделка для новой последовательности.
- выборка "с возвращением". Берется случайное число и нормируется в диапазон ( 1 ; исходное число сделок ), после чего берется только целая часть при помощи функции ЦЕЛОЕ(). Получаем случайный номер сделки, которую и подаем в функцию ИНДЕКС().
- выборка "без возвращения". Берется ряд случайных чисел, ранжируется по порядку и каждому числу присваивается порядковый номер. Вся эта операция делается автоматически при помощи функции РАНГ(). Потом из массива сделок извлекается сделка под номером, соответствующим порядковому номеру случайного числа.
Таким образом, мы получили автоматическую генерацию последовательности, которую можно в дальнейшем анализировать при моделировании линии эквити и последовательностей сделок. Эта последовательность будет автоматически перекомбинироваться при каждом пересчете или по нажатиии клавиши F9. На рисунке эти методы представлены более подробно с необходимыми столбцами случайных чисел, требуемыми формулами для автоматических перестановок и графиками полученных линий эквити:
нажми на график для увелияения
В КАЧЕСТВЕ ЗАКЛЮЧЕНИЯ
В качестве первичной оценки можно рекомендовать метод статистического анализа путем "плавающего" моделирования базовых параметров. Это очень простой способ измерить устойчивость торговой системы и чувствительность ко входным параметрам. Вторым этапом в анализе МТС можно рекомендовать моделирование вневыборочных последовательностей сделок методом "с возвращением". Это позволит более качественно оценить величину максимальной просадки. И, наконец, оценить степень подгонки входных параметров торговой системы позволит метод моделирования "историй" котировок.
В этой статье я рассказал о некоторых способах оценки готовой торговой системы. Эти способы моделирования не помогут непосредственно в разработке торговых стратегий, они предназначены для нахождения пределов прочности и устойчивости. Большинство операций проводились в Экселе при помощи программы параметрического моделирования и оценки рисков. Проведя несколько тысяч испытаний можно с некоторой достоверностью оценить потенциальную прибыль, просадку, серию убытков и любые другие нужные пользователю показатели. Очень часто это может понадобиться при принятии таких решений, как отказываться или нет от системы, если она неожиданно дает несколько убытков подряд. Безусловно, Монте-Карло моделирование лишь инструмент для работы с математической моделью. Поэтому качество результатов напрямую зависит от качества анализируемой торговой системы. Использование вневыборочных показателей способно немного нивелировать ошибки плохих или переподогнанных систем, но большое внимание нужно уделять созданию устойчивой системы еще на этапе ее разработки.
Тарас Правдюк
Русский Трейдер