XXM ☑️
XXM ☑️ личный блог
12 декабря 2017, 17:16

Тестирование стратегий. На примере индекса Московской биржи.

цены на мед

Программ для тестирования много. Как-то начал считать, дошел до цифры 33 (https://smart-lab.ru/blog/236254.php).
Но, сколько бы их ни было, все равно чего-то не хватает: то танцы с бубном со входными данными, то отсутствие какого-нибудь функционала, то проблемы с установкой самой программы ТА, «то полы кривые» и т.д.

Поэтому создал свой тестер, на c#, назвал Xtest.

Вкратце напишу про то, как он работает на примере индекса Московской биржи (ранее — индекс ММВБ).

Стратегия простая:
Покупаем, когда начался рост. Продаем либо по стопу, либо по тэйк-профиту.
Для шорта — зеркально.
Для входа в позицию выбрал простой индикатор, рассказывать про него не буду, поверьте, он банальный. Одна переменная, назвал Param1.
Выходы: будем подбирать stopLoss, takeProfit и SLforTP (stopLoss для takeProfit), они в блоке «Strategy Parameters» на вкладке Parameters.

запуск программы

Загрузка данных с сайта Финам: идем на вкладку «DownLoad», выбираем даты «с» и «по», нажимаем «загрузить». Для 15-минуток диапазон — 01.01.2010-31.12.2013 (больше может не пройти).
Недостающие данные добавляем до сегодняшней даты на втором этапе.
Спасибо, Финам!

Тестирование проведем в два шага:
1. Тестирование на периоде 01.01.2010 — 31.12.2016, с фильтром Profit > 2000 и Recovery Factor > 3.
На выходе: 4311 вариантов.
Количество прогонов в данном случае 63840, комиссию принимаем за 0.2 (включены биржевые и брокерские, плюс проскальзывание)

Тестирование. Обычное + форвардное.

Форвардный анализ добавляет к традиционной процедуре оптимизации очень важный шаг. Он тестирует
эффективность переменных модели на данных, которые не были включены в оптимизационные данные. Это
также называется тестированием на данных, не вошедших в выборку или форвардным тестированием.
Р. Пардо «Разработка, тестирование и оптимизация торговых систем»

 

 

2. К полученному набору параметров применяем форвардное тестирование на периоде 01.01.2017 — 10.12.2017, с фильтром Profit > 500 и Recovery Factor > 1.0.
Получаем 746 вариантов.

Количество стратегий- 746. И все в плюс!!!   8-O

Эти наборы параметров протестируем на всех имеющихся сейчас барах с 01.01.2010 — 10.12.2017 и из них отберем вручную 5 самых лучших вариантов, следя за тем, чтобы не было корреляции между ними. Процесс творческий, поддающийся автоматизации, но это сейчас несущественно.
Главное — есть у нас 5 вариантов стратегий:

Выберем количество стратегий, равное количеству пальцев на правой руке ;)

которые можно исследовать как поврозь, так и все вместе.
Посмотрим на характеристики одного теста:
Performance, почти по WLD.


Количество сделок Long и Short примерно одинаковы, но Profit по лонгам выше, ведь стратегия «Buy and Hold» = 737.23, значит показатели скорее верны, чем не верны.
Значение комиссии 933.2 — в пунктах, поэтому, теоретически, при количестве сделок 2333*2 = 4666 в рублях комиссия составляет более 9 тысяч.

сделки:
Вкладка Сделки

equity:
Красиво, конечно.

Для построения графика Equity портфеля стратегий сначала выделяем их, затем нажимаем кнопку «Testsel»
Портфель стратегий


и на соответствующей вкладке увидим график:
Красиво, тоже.

До полного расчета результатов вкладки «Performanse» для выбранных стратегий запала не хватило.

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

26 Комментариев
  • ves2010
    12 декабря 2017, 17:27

    сделка 207,215, 217 и тд и тп… время 10.30 — торгует на открытии рынка… что унреал

    т.е у тя идет торговля внутри гэпов
  • Redline
    12 декабря 2017, 20:58
    WLD переизобретаете…
  • Prophetic
    13 декабря 2017, 10:37
    Странный пост. Начали с программ для тестирования, а закончили результатами бэктеста одной стратегии.
    Какой информацией Вы хотели поделиться с читателями?
    Чтобы Вы не подумали, что я просто придраться решил, объясняю:
    Для тестирования своих стратегий, мне тоже пришлось написать свой тестер, но это отдельная программа, которая может тестировать разные стратегии, подключаемые в виде DLL-ок. Писать отдельный тестер под каждую стратегию — не самый оптимальный вариант на мой взгляд.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн