Feb 03, 2011 16:11
Оптимизация-это настройка торговой системы на рынок. Если взглянуть широко, то по сути весь процесс построения системы-это оптимизация. Однако в настоящей заметке я бы хотел продемонстрировать свои текущие подходы к оптимизации в классическом понимании этого слова.
Если следовать классическому подходу, то процесс построения системы можно условно разбить на следующие этапы:
1) Наблюдения за рынком,
2) Формулировка какого-то количества грубых закономерностей,
3) Выбор некоего множества этих закономерностей и сведение их в единый алгоритм,
4) Подбор параметров (Это оптимизация в общепринятом смысле).
Этапы 1 и 2-это в большей мере искусство, и эта часть определяется, в основном, опытом и знаниями трейдера. Этапы же 3 и 4 поддаются формализации, причем одновременно, нет необходимости разделять 3 и 4. Вот как это может быть выполнено. Допустим, есть две грубых закономерности (Они приведены ниже, но это модельные вещи, а в реальном рынке к поиску закономерностей следует относиться серьезно. Еще раз подчеркну: поиск закономерностей-это искусство):
а) Если цена выше длиннопериодной средней, то рынок настроен на рост,
б) Если короткопериодная средняя ниже среднепериодной, то рынок настроен на разворот вверх.
Задача-слепить из этих закономерностей систему. Зададимся вопросом-сколько здесь параметров? Прежде всего, это периоды средних-их три. Кроме того, можно включать, или не включать саму закономерность-это еще два параметра со значениями 1 или 0 (используем или не используем закономерность). Нам необходимо выбрать из всех возможных вариантов некий один, устраивающий нас. Вопрос-как это сделать?
Первый вариант-перебрать все возможности. К сожалению, экспоненциальный рост числа возможностей от числа параметров делает эту идею при большом числе параметров безнадежной. Это то же самое, что угадать многозначный пароль. Посчитаем общее число вариантов в нашей задаче. Пусть период короткой средней лежит от 1 до 10, среднепериодной-от 11 до 50, длиннопериодной-от 51 до 200. Тогда общее число вариантов составит 10*40*150*2*2=240 000. Даже в нашем небольшом наборе правил четверть миллиона возможностей. Если тестер тратит 0.01 секунды на прогон (что быстро), то даже при этом будет потрачено 2400 секунд, то есть 40 минут. При увеличении числа параметров это время растет экспоненциально и для систем средней сложности может достигать веков и тысячелетий. Поэтому прямой перебор применим лишь для простейших систем.
Как же быть? Для нахождения оптимальных параметров в многокритериальных задачах человечеством давно уже придуманы мощные и быстрые методы. Основный из них-это генетическая оптимизация. Однако, поскольку я ей в настоящее время в трейдинге не пользуюсь, то про нее рассказывать здесь не буду. Опишу то, чем пользуюсь я. Это так называемый метод Монте-Карло (в физике его еще называют методом отжига). Фактически, это весьма усеченная версия генетики. Его суть такова: случайным образом выбирается точка в пространстве параметров. Затем от нее в некоторой окрестности радиуса R1 также случайным образом выбираются другие точки и смотрится, в какой из них целевая функция наилучшая (назовем эту точку A). Затем от точки A в радиусе R1 опять случайно выбираются точки и смотрится наилучшая. И такой процесс повторяется много раз, причем R1-сравним с размером всей области параметров. Назовем все вышеописанное фазой 1. После окончания фазы 1 наступает фаза 2. Она совпадает с первой фазой, единственное отличие-в радиусе. Для фазы 2 радиус R2 меньше R1. После фазы 2 проводится фаза 3 с R3
Вся эта процедура приводит к тому, что точка в пространстве параметров в среднем двигается в направлении максимума целевой функции (но не факт, что глобального, в этом недостаток и Монте-Карло и генетики). При этом число прогонов тестера равно “число фаз*число процессов*число точек в процессе”. Видно, что число прогонов тестера не зависит от числа параметров вообще, и в этом огромное преимущество метода. Хорошей физической моделью метода Монте-Карло является неровная поверхность с песком. Если ее потрясти, то песок скопится в наинизшей точке, то есть найдет оптимальную наинизшую точку неровной поверхности.
Таким образом, пользуясь современными методами поиска экстремумов, можно весьма упростить процесс системостроительства по сравнению с “индикаторной эрой”.
системы