Тестируем на мартовском фьючерсе на индекс ММВБ стратегию, созданную в Wealth-Lab 5.6
В связи с конкурсом торговых стратегий Algoritmus, который сейчас проводится журналом D' совместно с ММВБ, нам пришлось поработать с рядом популярных платформ технического анализа. На сайте Algoritmus.ru выложены примеры стратегий, протестированных нами на мартовском фьючерсе на индекс ММВБ, к которому нужно адаптировать свой торговый алгоритм по условиям конкурса. В качестве примеров мы выбрали прибыльные стратегии. Результаты тестирования одной из них, записанной в Wealth-Lab 5.6, мы публикуем в этой статье. Заодно поговорим о самой программе, которая только набирает популярность среди российских трейдеров. Многие привыкли к четвертому поколению Wealth-Lab с Pascal в качестве встроенного алгоритмического языка, однако эта программа больше не поддерживается разработчиком, поэтому рано или поздно от нее придется отказаться.
В Wealth-Lab 5.6, как и в более ранних версиях, упор сделан на инструменты создания и тестирования торговых стратегий. Wealth-Lab позволяет не только разрабатывать и проверять торговые алгоритмы, но также применять их в торговле. Сделать это можно по традиционной схеме — с помощью программы-посредника, связывающей торговый терминал и программу технического анализа. В то же время не так давно компания «Церих кэпитал менеджмент» представила разработанный на основе Wealth-Lаb 5.6 комплекс продуктов автоматизированной торговли, который сочетает в себе возможности программирования торговых систем, создания торговых роботов и их использования на финансовых рынках (система «три в одном»). Таким образом, российские трейдеры, выбравшие Wealth-Lab и «Церих», могут исключить не всегда надежно работающих посредников из цепочки своих транзакций, что должно прибавить популярности программе.
Язык C#
Сейчас с официального сайта разработчика Wealth-Lab (www.wealth-lab.com) можно скачать бесплатную триал-версию Wealth-Lab 5.6, которая будет работать в течение 30 дней. Wealth-Lab 5.х отличается от своей предшественницы современным интерфейсом и улучшенной эргономикой, но главное новшество связано с интеграцией в пятую версию в качестве языка описания C# (Си-шарп), сменяющего Pascal четвертой версии. Преимущества C# связаны с его практически неограниченными возможностями — это «родной» язык для создания приложений в среде .NET, присутствие которой в Wealth-Lab 5.х делает программу более привлекательной для разработчиков расширений и профессиональных программистов.
С помощью набора блок-схем в Wealth-Lab 5.6 создается простейший торговый алгоритм, использующий простые скользящие средние
Однако создание торговых алгоритмов в программе доступно не только программистам. Стратегию не обязательно записывать на C# вручную: в Wealth-Lab есть возможность визуального конструирования торговой системы. С помощью набора блок-схем, определяя индикаторы, функции, уровни «стопов» и целей, условия открытия и закрытия позиций, можно создавать торговых роботов высокой сложности. После запуска стратегии Wealth-Lab самостоятельно превратит конструкцию в полноценный код. Для новичков в программировании это хорошая возможность изучения синтаксиса C#, матерым же роботоводам, предпочитающим писать код торговой стратегии вручную, использование блок-схем позволяет быстро создавать макет торговой системы.
Инструментарий
Wealth-Lab 5.6 предлагает пользователю большое количество исследовательских инструментов и различных настроек. Удобство доступа к данным обеспечивает древовидная структура Data Panel. В качестве источника исторических данных по умолчанию используется Yahoo! Finance, для получения котировок с российских бирж можно выбрать Finam.ru. Wealth-Lab 5.6 поддерживает несколько известных форматов данных, в том числе историю в формате MetaStock. Диапазоном загружаемых для анализа данных можно управлять, что полезно при тестировании торговых систем на различных участках истории.
Мартовский фьючерс на индекс ММВБ с точками входа в позицию и выхода из нее
Программа содержит мощные инструменты для оценки торговой системы: позволяет тестировать стратегию сразу на портфеле инструментов, имитировать торговлю на исторических данных, обеспечивает полный итог исполнения торговой стратегии и представляет график изменения капитала. Рассчитать характеристики своей стратегии помогают встроенные визуалайзеры. Так, после запуска торговой системы на графике выбранного инструмента появляются точки входа в позицию и выхода из нее. На вкладках можно посмотреть график изменения капитала, гистограмма позволяет наглядно оценить распределение прибылей / убытков в процентах для всех трейдов, сгенерированных системой, также можно ознакомиться с результатами тестирования стратегии по различным параметрам, таким как эффективность восстановления после просадки, прибыльность и др. Мы выделим эти характеристики в результатах тестирования одной из стратегий, выложенных в качестве примера на Algoritmus.ru. Полный код тестируемого алгоритма можно найти на сайте в разделе «Как создать систему».
Ловим тренд
Код торговой стратегии Bow tie variation мы взяли с сайта www.wealth-lab.com, где выложено большое количество алгоритмов для пятой версии. Тестируемая торговая система использует скользящие средние (SMA) с периодами 10, 30 и 50. Сделка совершается при следующих условиях:
- Значение SMA-10 выше, чем на предыдущем баре.
- Скользящие средние располагаются в порядке: SMA-10 выше SMA-30, которая выше SMA-50.
- Разница значений SMA-10 и SMA-50 на трех последовательных барах должна находиться в диапазоне от –2,5 до 2,5%.
- Если все три условия выполняются, совершается длинная сделка по цене максимума предыдущего бара плюс значение одного тика.
- Выход из позиции осуществляется, если цена закрытия очередного бара оказывается ниже значения SMA-50.
Система протестирована на ценовой истории мартовского фьючерса на индекс ММВБ с 16 сентября 2009-го по 15 марта 2010 года с таймфреймом 60 минут. Тестирование проводилось на одном контракте, при нулевом значении комиссии и проскальзывании, принятом за 50 пунктов. Оценить кривую доходности стратегии можно во вкладке Equity Curve, более подробная информация — во вкладке Performance: в результате четырех положительных и трех отрицательных сделок мы получили чистую прибыль в размере 9550 пунктов при доходности стратегии buy & hold 16 490 пунктов. Максимальная просадка составила 4210 пунктов.
На графике выведены две линии капитала. Зеленым цветом для тестируемой стратегии, синим цветом для стратегии buy & hold
Несложная оптимизация стратегии с помощью метода Monte Carlo, в процессе которой мы подбираем лучшие значения периодов скользящих средних и ширину диапазона конвергенции SMA-10 и SMA-50, улучшает показатели системы. Отсортировав результаты по значению Net Profit, мы видим, что при использовании скользящих средних с периодами 16, 20 и 99 и диапазона конвергенции 1,73% можно получить 17 250 пунктов чистой прибыли в результате двух положительных сделок. Оптимизация стратегии по профиту — это подгонка параметров системы к уже известным историческим данным, с тем чтобы прибыль была максимальной. По большому счету именно в этом состоит задача участника конкурса в номинации Algoritmus–. Под мартовский контракт необходимо подогнать стратегию. Естественно, оптимизация по прибыли на известных данных не гарантирует высокой прибыльности в условиях реальной торговли. В нашем примере после оптимизации остается значительная просадка — 5960 пунктов.
График линии капитала после оптимизации стратегии с помощью метода Monte Carlo
В целом оптимизация улучшает ряд показателей системы, например значение отношения чистой прибыли к максимальной просадке (Recovery Factor), которое позволяет оценить, насколько успешно система восстанавливается после просадки. Максимальное значение показателя после оптимизации составляет 2,89, в то время как при стартовых параметрах системы мы имели Recovery Factor, равный 2,27. Считается, что работоспособную систему отличает значение этого показателя выше 2 и он должен быть выше, чем у стратегии buy & hold, которая в нашем случае демонстрирует Recovery Factor, равный 0,82.
Систему можно оптимизировать и по показателю прибыльности Profit Factor , который вычисляется делением валовой прибыли (Gross Profit) на валовой убыток (Gross Loss). Этот показатель также должен быть выше 2. В нашем случае до оптимизации он равен 3,92, а после нее теряет свое значение, потому что алгоритм с оптимизированными параметрами совершает всего две сделки, и обе они положительные, так что валовому убытку взяться неоткуда. Показатель Payoff Ratio рассчитывает абсолютное значение отношения средней прибыли Average Profit (%) к среднему убытку Average Loss (%) на сделку и позволяет оценить функциональность системы в целом — чем выше показатель, тем лучше система. У тестируемого торгового алгоритма значение Profit Factor равно 2,9.
Wealth-Lab позволяет легко проверить стратегию на другом таймфрейме или других исторических данных. График нового инструмента, на котором автоматически тестируется запущенный алгоритм, можно вызвать двойным щелчком с Data Panel. Чтобы изменить таймфрейм, нужно воспользоваться выпадающим списком над источниками данных. По условиям конкурса присланные участниками алгоритмы будут тестироваться на одном контракте — так же был протестирован рассмотренный в статье алгоритм. Однако для получения результатов работы системы в условиях, приближенных к реальной торговле, робота можно заставить работать с начальным капиталом. Научить его генерировать прибыль — это интересная задача, тем более что, по оценке ряда уважаемых специалистов, робовладельческий строй, стремительно развивающийся на западных рынках, недалек до прихода на первобытнообщинные просторы российских площадок.
