В каждый момент времени t (на каждом шаге прогонки) у стратегии имеется текущий набор информации I(t). Эта информация разнообразна: история цен торговых инструментов, формализованная фундаментальная информация, значения индикаторов технического анализа, показатели прибыли-убытков текущих позиций, вероятностные сценарии и т. д. Единственное требование к информации I(t) – при ее получении или вычислениях, связанных с ее получением, не должны использоваться данные из будущих моментов времени t + 1, t + 2… Для каждого торгового инструмента алгоритм стратегии вычисляет специальные функционалы Φ(Kj, I(t)), где Kj – j-й торговый инструмент, а I(t) – информация, доступная на шаге t. Интерпретация этих функционалов является элементом алгоритма стратегии.
Например, логические значения false и true могут иметь следующий смысл: Φ(Kj, I(t)) = true означает, что стратегия выработала сигнал совершить определенную сделку с инструментом Kj. Это может быть как сделка покупки, если функционал Φ(Kj, I(t)) отвечает за покупки, так и сделки продажи, если соответствующий функционал отвечает за продажи. В более информативном случае значения функционалов Φ могут принимать любые действительные значения. При этом значение функционала говорит не только о наличии сигнала, но и о его силе.
Допустим, что вычисляется функционал Φ, оценивающий перспективность сделок с определенным набором инструментов. Предположим, что на шаге T получен вектор оценок функционала Φ = {Φ(Kj, I(t)), j = 1…, N}. Следующим этапом алгоритма является интерпретация значений этого вектора с целью генерации вектора сигналов, на основании которых формируются приказы на совершение сделок. Рассмотрим два варианта интерпретации оценок Φ, переводящих их в сигналы купли-продажи инструментов.
Первый вариант основывается на использовании пороговых значений. Предположим, что длинная позиция открывается, если расчетное значение функционала, основанного на критерии доходности, выраженной в процентах от объема инвестиций, превышает порог 3 % (Θbuy = 3). Если значение функционала, основанного на данном критерии, прогнозирует убыток, превышающий 3 % (Θsell = 3), то открывается короткая позиция. В этом случае сигналы на открытие позиций генерируются следующим образом:
• купить инструмент Kj, если Φ(Kj) > Θbuy,
• продать инструмент Kj, если Φ(Kj) < Θsell.
Если данные неравенства не выполняются, то сделки с инструментом Kj не производятся.
Второй вариант использует упорядочение торговых инструментов с помощью упорядочения элементов вектора Упорядочение позволяет из имеющихся инструментов выделить определенное число а лидеров и b аутсайдеров по значениям Top = {Kj1, Kj2…, Kja} и Bottom = {KjN – b + 1, KjN – b + 2…, KjN}. Тогда сигналы стратегии на покупку и продажу генерируются следующим образом:
• купить все инструменты из множества Top,
• продать все инструменты из множества Bottom.
Разумеется, эти способы генерации сигналов выглядят очень упрощенно, и в реальные стратегии закладываются более сложные алгоритмы, как правило, сводящиеся к приведенным выше после определенных преобразований.
5.2.2. Разработка и оценка эффективности функционалов
В качестве функционалов, используемых для выработки сигналов, можно использовать различные критерии оценки, описанные книге «Опционы: системный подход к инвестициям». Эти критерии дают численную оценку привлекательности сделок с определенным торговым инструментом – опционной комбинацией. Если упорядочить весь набор инструментов по такому критерию, то мы получим уже другой функционал – ранговый, принимающий целые значения – номера комбинаций в упорядочении. Независимо от особенностей функционала, его использование в процедуре бэктестинга остается неизменным – оценка перспективности совершения сделки с определенным инструментом.