• История фундаментальных показателей. Фундаментальные финансовые показатели, такие как P/E, PEG, ROE, EPS и многие другие «мультипликаторы», получаемые из корпоративной отчетности и экспертных оценок, являются основой фундаментального анализа. В настоящее время использование фундаментальных показателей при построении опционных торговых стратегий не имеет широкого распространения. Однако разработка подобных стратегий представляется нам весьма перспективным направлением развития (особенно в сочетании с использованием элементов технического анализа). Основная задача состоит в накоплении данных, публикуемых в квартальных отчетах, и параллельное взаимосвязанное накопление для этих же данных их прогнозных значений (существовавших до публикации отчета).
Многие поставщики данных и информационных сервисов сопровождают биржевые данные о ценах и объемах целым спектром расчетных показателей – различными вариантами волатильностей (исторической и подразумеваемой), «греками», поверхностями волатильности и т. п. Эту информацию можно также поддерживать в исторической базе. С другой стороны, разработчик торговой системы может использовать свои модели и алгоритмы расчета данных показателей.
5.1.3. Оперативный доступ к данным
Данные имеют весьма внушительный объем. Доступ к ним требует заметных временных затрат. Имитация торговли подразумевает последовательную обработку данных за несколько сотен и даже тысяч торговых дней. Многочисленные исторические симуляции необходимо проводить не только при бэктестинге, но и при оптимизации стратегий, статистическом исследовании параметров или элементов алгоритмов.
Для бэктестинга опционных стратегий необходимо оперировать одновременно большим количеством торговых инструментов. Причем в качестве инструмента может выступать как отдельный опцион, так и их комбинация (можно создавать практически неограниченное количество опционных комбинаций, играющих роль самостоятельных инструментов). Поэтому, помимо стандартного движения по истории, то есть во времени, необходимо обеспечить быструю навигацию по структуре опционных серий. В частности, алгоритм тестируемой стратегии может требовать создания на каждый день прогонки следующих наборов данных:
• опцион заданного базового актива заданного типа (пут или колл) с заданным страйком и датой экспирации;
• все страйки и даты экспирации для данного базового актива;
• все активно торгуемые опционы (со среднедневным объемом торговли выше заданной пороговой величины) для заданного базового актива;
• опционы, имеющие страйки «около денег», «вне денег» или «в деньгах» для заданной даты экспирации;
• опционы с заданным страйком, имеющие даты экспирации в пределах заданного интервала времени от текущей даты;
• многие другие более сложные наборы.
Необходимо также оперативно определять истинность или ложность высказываний типа: предполагается ли для данной компании корпоративный отчет между текущим днем и датой экспирации?
Для решения таких многомерных задач, требующих навигации как во времени, так и по структуре комбинаций, необходимо обеспечить такую скорость доступа к данным, которую позволяет только объект, содержащий в оперативной памяти все данные, необходимые во время прогонки стратегии. Это значит, что, помимо большой базы данных, предназначенной для хранения и накопления исторических данных, необходима оперативная история – встроенный в программный код системы бэктестинга объект, осуществляющий быстрый доступ к определенным данным на каждом шаге прогонки.
На практике оперативная история представляет собой подгружаемый при запуске системы бэктестинга объект, содержащий всю необходимую историю, которая может потребоваться для конкретной стратегии. Это существенно снижает проблему объемности данных и скорости обращения к ним. Например, возможно строить стратегии, использующие только индексы или ETF в качестве базовых активов (при этом отпадает потребность в использовании истории предполагаемых квартальных отчетов). Другой пример – стратегия, торгующая опционами только на акции из состава S&P 500. Также можно ограничить спектр серий двумя ближайшими датами экспирации и страйками, отстоящими не далее 10 % от текущей цены базовых активов. Вместе с тем, даже несмотря на подобные ограничения, для размещения оперативной истории в оперативной памяти приходится применять алгоритмы сжатия данных.
5.1.4. Рекуррентные вычисления
В традиционном бэктестинге стратегий, ориентированных на торговлю акциями или фьючерсами, реализуется доступ к историческим значениям различных функций – индикаторов технического и фундаментального анализа. В бэктестинге опционных стратегий сюда добавляются еще и другие специфические расчетные величины. Стандартными для многих систем бэктестинга являются расчетные значения подразумеваемой и исторической волатильности, «греки», относящиеся ко всему спектру инструментов и всему горизонту истории. Объемы исторических данных не всегда позволяют хранить эти показатели рассчитанными заранее. Поэтому приходится каждый раз вычислять их значения по мере необходимости. Это приводит к возникновению другой проблемы, выражающейся в непомерно больших затратах времени и вычислительных ресурсов. Для решения этой проблемы требуется применение специальных технологий ускорения и упрощения текущих вычислительных операций. Одной из таких технологий являются рекуррентные вычисления, когда значение некой функции вычисляется на основе ее предыдущего значения.
Примером применения технологии рекуррентных вычислений служит вычисление исторической волатильности. Текущее значение исторической волатильности используется при вычислении критериев с интегрированием платежной функции по функции плотности вероятности распределения цены базового актива. Типичными критериями такого типа являются математическое ожидание прибыли и вероятность получения прибыли, рассчитываемые на основе логнормального распределения. В процессе бэктестинга стратегий критерии вычисляются для каждого момента времени t. Следовательно, необходимо на каждый момент времени иметь соответствующее значение исторической волатильности НV(t). Наиболее эффективным представляется вариант, когда все значения исторических волатильностей вычисляются до старта прогонки для всех базовых активов и всех моментов времени. При этом в силу простоты формулы исторической волатильности расчеты можно производить рекуррентно по времени. Если ненормированная по времени историческая волатильность задается выражением:
где С(t) – цена закрытия t-го дня истории, N – длина периода истории, используемого для расчета волатильности, то историческая волатильность, соответствующая следующему дню истории, вычисляется как:
При этом нетрудно видеть, что объем вычислений при достаточной длине исторической базы практически не зависит от N. Аналогичные рассуждения справедливы для любой формулы волатильности вида с обратимой функцией F. Применение рекуррентных вычислений позволяет рассчитывать значение функции для каждого следующего дня на основе предыдущего значения этой же функции. Это существенно сокращает количество вычислений.
5.1.5. Проверка достоверности данных
Данные, поступающие даже из самых надежных источников, могут оказаться искаженными. Помимо примитивных ошибок, связанных с программными сбоями или техническими проблемами (например, десятичная точка перепутана с запятой, неучтенное переименование тиккера, пропущенная информация о сплите, и т. п.), встречаются систематические ошибки, связанные с неверными и пропущенными котировками. Серьезную проблему представляет несинхронность данных о цене базового актива и соответствующих ему опционов. Эта проблема может быть обусловлена, к примеру, тем, что многие инструменты торгуются на разных биржевых площадках и электронных системах. Моделировать торговлю на основе таких данных чревато серьезными искажениями результатов.
Проблему недостоверных данных необходимо решать путем их выявления и дальнейшего исправления либо фильтрации. Процедуры выявления необходимо применять ко всем поступающим в базу новым ценам и котировкам спроса и предложения. Существуют два подхода к выявлению искаженных данных: тесты на наличие арбитражных ситуаций и исследование поверхностей подразумеваемой волатильности.
В основе