Этапы построения и тестирования торговой системы
1. Получите все данные, необходимые для тестирования. Повторюсь еще раз: в высшей степени желательно использовать непрерывные фьючерсы (не путать с ближайшими фьючерсными контрактами или бессрочными фьючерсами). Это замечание не
728 ЧАСТЬ 4. торговые системы и измерение эффективности торговли
относится к краткосрочным торговым системам, которые могут использовать данные отдельных контрактов.
2. Определите концепцию системы.
3. Запрограммируйте правила, чтобы генерировать сделки в соот
ветствии с этой концепцией.
4. Выберите небольшое количество рынков и исторических пери
одов для этих рынков.
5. Сгенерируйте торговые сигналы системы для данных рынков и
исторических периодов при данном наборе параметров.
6. Создайте графики непрерывных фьючерсов для этих рынков и
годов и сделайте несколько их копий.
7. Обозначьте на этих графиках торговые сигналы. (Удостоверь
тесь, что использовали одни и те же ценовые серии для созда
ния графиков и тестирования системы.) Этот шаг важен. Я на
хожу значительно более простым отлаживать систему, визуаль
но проверяя сигналы на графиках, а не работая лишь с распе
чатанными данными.
8. Проверьте, что система делает то, что предполагалось. Почти
всегда тщательная проверка обнаружит определенные неполад
ки, вызванные одной или обеими из причин:
А. ошибки в программе;
Б. правила программы не предвидят некоторых обстоятельств или создают непредвиденные эффекты.
Например: система не генерирует сигнал в ситуациях, когда, согласно правилам, сигнал должен поступить; система генерирует сигнал, когда его не должно быть; системные правила неумышленно создают ситуации, в которых не могут быть сгенерированы новые сигналы или в которых позиция держится бесконечно. В основном такие типы ситуаций возникают благодаря мелким ошибкам при формулировании правил или при программировании. При обнаружении ошибок необходимо их исправить. Следует подчеркнуть, что исправления ошибок первого типа касаются только того, чтобы заставить систему действовать согласованно с концепцией, и должны делаться без всякой оглядки на то, помогают ли исправления повысить результативность или ухудшают ее в случае ситуаций, использованных в процессе разработки.
9. После того как сделаны необходимые исправления, повторите
шаги 7 и 8. Обратите, в частности, внимание на изменения в
сигналах по сравнению с предыдущим прогоном по двум
причинам:
ГЛАВА 20. тестирование и оптимизация торговых систем 729
А. чтобы проверить, помогли ли изменения в программе устранить ошибки;
Б. чтобы убедиться, что изменения не привели к неожиданным эффектам.
10. После того как система заработала в соответствии с вашими
ожиданиями, протестируйте ее на всем заданном списке набо
ров параметров по всей базе данных. (Предполагаемый торго
вый портфель должен быть определен до запуска этого теста.)
11. Как детально объяснялось в этой главе, оцените результатив
ность, основываясь на средней результативности всех тестиру
емых наборов параметров или на процессе слепого моделиро
вания. (Первое значительно проще.)
12. Сравните полученные результаты с результатами стандартной
общеизвестной системы (пробой, пересечение скользящих сред
них) на соответствующем портфеле и тестовом периоде. Чтобы
ваша система имела некую реальную ценность, ее соотношение
прибыль/риск должно быть измеримо лучше, чем у стандартной
системы, или эквивалентно, но при большей диверсификации.
Описанные этапы представляют собой жесткую процедуру, разработанную для того, чтобы избежать получения искаженных результатов. Скорее всего, большинство систем не смогут пройти тест на этапе 12. Разработка систем с действительно высокой результативностью более трудна, чем думает большинство людей.