Введение.
Методы оптимизации стратегий

Как вы уже поняли из предыдущей статьи, оптимизация методом перебора не эффективна. Учитывая скорости тестирования, нецелесообразно перебирать все возможные параметры.
Есть, конечно, уже готовые производительные оптимизаторы стратегий в других программных продуктах. Но как в них перевести свои стратегии? Все ли может этот тестировщик, что нам нужно? Будут ли тесты отражать реальность? Как правило, к ним нужны всякие коннекторы, конверторы и др. костыли, не относящиеся к нашим задачам.
К тому же это «черные ящики» и как они там считают на самом деле, никто не знает. А когда дело касается денег не должно быть места всяким случайностям и неопределенностям. На слово производителям такого программного обеспечения я не верю. Сколько раз сталкивался в самых серьезных продуктах с всякими глюками и багами, письмами и звонками в техподдержку. При этом мы становимся зависимыми от совершенно не нужных нам людей. В общем, доверия у меня к ним никакого. Все эти проблемы сильно замедляют реализацию наших алгоритмов, и соответственно отнимают наше время и деньги.
И я задался вопросом: «А почему бы не написать свой оптимизатор? Неужели так сложно?» Как оказалось сложно, но вполне реально. К тому же появляется уверенность в результатах и свобода в настройках и модернизациях и модификациях программы. Собственно с этими мыслями я взялся за работу.
За основу взял стохастическую оптимизацию. Стохастическая оптимизация – это класс алгоритмов оптимизации, использующая случайность в процессе поиска оптимума. Алгоритмы стохастической оптимизации используются в случае, если целевая функция сложная, многоэкстремальная, с разрывами, с помехами и пр. При этом она позволяет исследовать только часть области вариантов стратегий и на основании полученных данных составить представление о пространстве в целом.
Ознакомился с основными применяемыми стохастическими способами оптимизации – генетика, монте-карло их разновидностями и прочими методами.
Вообще разновидностей стохастических методов как оказалось очень много.
Например, метод «Роя частиц».
Или столь популярные «Генетические алгоритмы».
Есть элегантные решения типа алгоритма «Имитации отжига»
Например, последний способ с высокой степенью гарантирует нахождение глобального экстремума. Так как при этом методе он периодически отклоняется от пути и дополнительно изучает соседние области. Но скорость исследования не самая высокая.
Суть методов одна — мы выбираем случайные значения и так или иначе их анализируем. От способа к способу меняются только два параметра – скорость и точность исследования. Причем обратно пропорционально. Чем выше скорость тестирования, тем хуже качество результатов и наоборот. При выборе метода каждый решает сам, чем готов пожертвовать.
Поиск экстремумов
Например, метод «Имитации отжига» позволяет найти глобальный экстремум. Однако, если подумать, то сам глобальный экстремум нам ни к чему, если к нему нет сходимости. То есть если вокруг экстремума соседние условно равномерно не убывают, то очень вероятно, что этот глобальный экстремум носит случайный характер и пользы нам от него будет мало так как он неадекватный, а расчеты нам испортит. Поэтому так важно изучить параметры вокруг экстремума. Если есть сходимость, значит есть система и эту стратегию можно изучать дальше.
Все стохастические методы оптимизации имеют один общий недостаток – могут упереться в какой-то локальный экстремум, а тот самый оптимальный упустить из вида. Чтобы этого избежать, нужно максимально увеличивать области выборок и количество итераций. Но от этого страдает скорость расчетов. Так что нужно всегда искать золотую середину.
Из-за сложности и не очевидности расчетов, методы «Имитации отжиги» и прочие «Рои частиц» я отложил в сторону)
В итоге пришел к выводу, что самый доступный и удобный способ в моем случае это оптимизация методом «Монте-Карло».
Интерфейс тестера-оптимизатора «Монте-Карло»:

Продолжение читайте во второй части.
Хотелось бы поблагодорить ребят из S#, за то что,
помогли мне начать мой путь в алготрейдинг.
Всем восходящего тренда! С уважением, Bond.
Мой ник в Скайпе: bond_algotrade
По себе скажу, что тоже ищу оптимальные параметры системы методом Монте-Карло и к полученным 10-15 лучшим результатам применяю генетические алгоритмы, что-бы выйти к оптимуму. Технически это все не сложно, реализовать можно даже в Excel.
Сложнее выбрать по какому критерию проводить оптимизацию — хочется и доходность повыше, и просадки пониже, и стабильность результата на соседних наборах параметров.
О «Имитации отжига» первый раз слышу, киньте ссылку, где можно больше почитать?