Илья .
0
All posts from Илья .
Илья . in Otmetka,

Рецензии на роботов: как проверить МТС?

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

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

Методика проста: МТС в процессе оптимизации генерирует последовательность показателей (ключевых параметров, по которым мы собираемся отбирать значения параметов и оценивать МТС) с разбивкой по единичным периодам (например месяц) для каждой комбинации значений параметров. Для наглядности приведу упрощенный пример. У системы два параметра - периоды скользящих средних МА1 (от 5 до 10) и МА2 (от 8 до 16), и один критерий - годовая доходность. Период оптимизации - один год, единичный период - один месяц. По результатам оптимизации получаем 648 соответствий: 54 комбинации значений параметров (6 х 9) для 12 единичных периодов по одному показателю (доходность). Пользователь может даже не знать смысл конкретных параметров, однако по имеющимся данным может легко проверить оптимальность предложенных параметров, и даже выбрать оптимальные значения параметров по собственному критерию (целевой функции). Есть возможность также проверить работу системы на любом историческом периоде (если разработчик предоставит "производные" данные за весь требуемый период).

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

Можно было бы считать, что вопрос мы прояснили, однако не все так просто. Зачастую выбор параметров сводится к анализу показателей на истории с подтверждением на периоде "тестирования" (так называемый форвард-бэктестинг), но такая методика лишь создает иллюзию "правильности", так как в конечном счете вы выбираете устраивающие вас параметры по результатм работы на известной истории. Проведу аналогию. В 2004 году работал я в небольшой конторе, был свидетелем подхода директора к клиентам. "Вот смотрите (показывает график на мониторе): внизу покупаем, вверху продаем. Просто!". Неискушенные клиенты лишних вопросов не задавали, потому что вопросов у них не возникало (они же не искушенные). Это мы тут все такие умные и знаем, что заранее неизвестно где этот "верх" и где тот "низ".

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

Наш анализ позволяет понять, что большая часть работы над МТС заключается в выработке методики определения перспективных значений параметров по историческим "производным" данным с обязательным моделированием реального процесса. В этой связи, что я могу сказать о предложенной на рассмотрение МТС... Да ничего! У меня нет необходимых данных. Скажу больше - не уверен, что разработчик использовал методику моделирования. А потому показанные результаты очень смахивают на ту песню: внизу покупаем - вверху продаем". Или на новывй лад: в 2009 году включаем трендовую систему, в 2010 - канальную. Кто бы подсказал мне заранее когда какую влючать!

Наступит время, и профессиональный подход придет и в эту область человеческой деятельности. Люди вот только как-то совсем не меняются ))