ЭТАПЫ ПОСТРОЕНИЯ И ТЕСТИРОВАНИЯ ТОРГОВОЙ СИСТЕМЫ

1. Получите все данные, необходимые для тестирования. Повто­рюсь еще раз: в высшей степени желательно использовать не­прерывные фьючерсы (не путать с ближайшими фьючерсными контрактами или бессрочными фьючерсами). Это замечание не


728 ЧАСТЬ 4. торговые системы и измерение эффективности торговли

относится к краткосрочным торговым системам, которые могут использовать данные отдельных контрактов.

2. Определите концепцию системы.

3. Запрограммируйте правила, чтобы генерировать сделки в соот­
ветствии с этой концепцией.

4. Выберите небольшое количество рынков и исторических пери­
одов для этих рынков.

5. Сгенерируйте торговые сигналы системы для данных рынков и
исторических периодов при данном наборе параметров.

6. Создайте графики непрерывных фьючерсов для этих рынков и
годов и сделайте несколько их копий.

7. Обозначьте на этих графиках торговые сигналы. (Удостоверь­
тесь, что использовали одни и те же ценовые серии для созда­
ния графиков и тестирования системы.) Этот шаг важен. Я на­
хожу значительно более простым отлаживать систему, визуаль­
но проверяя сигналы на графиках, а не работая лишь с распе­
чатанными данными.

8. Проверьте, что система делает то, что предполагалось. Почти
всегда тщательная проверка обнаружит определенные неполад­
ки, вызванные одной или обеими из причин:

А. ошибки в программе;

Б. правила программы не предвидят некоторых обстоятельств или создают непредвиденные эффекты.

Например: система не генерирует сигнал в ситуациях, когда, со­гласно правилам, сигнал должен поступить; система генериру­ет сигнал, когда его не должно быть; системные правила не­умышленно создают ситуации, в которых не могут быть сгене­рированы новые сигналы или в которых позиция держится бес­конечно. В основном такие типы ситуаций возникают благода­ря мелким ошибкам при формулировании правил или при про­граммировании. При обнаружении ошибок необходимо их ис­править. Следует подчеркнуть, что исправления ошибок перво­го типа касаются только того, чтобы заставить систему действо­вать согласованно с концепцией, и должны делаться без всякой оглядки на то, помогают ли исправления повысить результатив­ность или ухудшают ее в случае ситуаций, использованных в процессе разработки.

9. После того как сделаны необходимые исправления, повторите
шаги 7 и 8. Обратите, в частности, внимание на изменения в
сигналах по сравнению с предыдущим прогоном по двум
причинам:


ГЛАВА 20. тестирование и оптимизация торговых систем 729

А. чтобы проверить, помогли ли изменения в программе устра­нить ошибки;

Б. чтобы убедиться, что изменения не привели к неожиданным эффектам.

10. После того как система заработала в соответствии с вашими
ожиданиями, протестируйте ее на всем заданном списке набо­
ров параметров по всей базе данных. (Предполагаемый торго­
вый портфель должен быть определен до запуска этого теста.)

11. Как детально объяснялось в этой главе, оцените результатив­
ность, основываясь на средней результативности всех тестиру­
емых наборов параметров или на процессе слепого моделиро­
вания. (Первое значительно проще.)

12. Сравните полученные результаты с результатами стандартной
общеизвестной системы (пробой, пересечение скользящих сред­
них) на соответствующем портфеле и тестовом периоде. Чтобы
ваша система имела некую реальную ценность, ее соотношение
прибыль/риск должно быть измеримо лучше, чем у стандартной
системы, или эквивалентно, но при большей диверсификации.

Описанные этапы представляют собой жесткую процедуру, разработан­ную для того, чтобы избежать получения искаженных результатов. Ско­рее всего, большинство систем не смогут пройти тест на этапе 12. Раз­работка систем с действительно высокой результативностью более труд­на, чем думает большинство людей.