Всем привет! Не судите строго, это мой первый пост на смартлабе, да и в принципе в интернете.
Я занимаюсь разработкой и тестированием торговых стратегий довольно продолжительное время. Ну и, собственно, хочу поделиться идеей, может кому-то поможет.
Для корректного бэктеста нужно выполнять ряд условий, чтобы приблизить работу алгоритма к реальной торговле. Эти условия могут отличать в зависимости от типа алгоритма и его особенностей(в плоть до, так называемого, заглядывания в будущее), но есть и общие, как, например, учет склейки исторических данных фьючерсных контрактов. Есть много способов склейки, которые описаны и на смартлабе в том числе, все это легко гуглится. Каждый делает как считает правильным, я ленивый и пользуюсь финамовской склейкой.
Если это не интрадей, то нужно в логике учесть гэпы склейки. Для учета экспираций я закрываю позицию на старом контракте и переоткрываю на новом, но, так как большинство стратегий индикаторных, либо зависящих от ценовых уровней, 1-2-3 сделки на новом контракте происходили некорректно, какие-то в плюс, какие-то в минус,
ну хоть гэп на эквити не влиял и то хорошо) для среднесрочных стратегий это было некритично, даже считал, что это некий дополнительный стресс-тест алгоритма. Но при более быстрых алгоритмах(не hft) это уже были не 1-2-3 сделки, а 5-10, что было неприятно для анализа.
И я решил учесть эти гэпы в самих индикаторах. Алгоритм простой — вычисляется величина разрыва, потом эта разница добавляется к данным, и уже по ним строится индикатор. Вот как теперь выглядят индикаторы на примере полос Боллинджера(красные — без учета склейки, синие — с учетом):
Таким образом, после склейки логика продолжает работать, как работала бы при реальной торговле.
А это пример «экспирации» в алгоритме на 2х скользящих средних:
Конструктивная критика, идеи приветствуются.
Всем добра и профита!