Примеры опционных скриптов
Перечень скриптов
При разработке структуры блоков были подготовлены скрипты для отладки различных аспектов их взаимодействия. Эти скрипты предлагаются вниманию участников тестирования в качестве готового примера работы с опционами и исходного материала для внесения своих изменений. Основная идея состоит в том, что пользователь может разрабатывать какие-то свои блоки или как-то модифицировать параметры предложенных блоков в соответствии со своим взглядом на опционную проблематику.
Например, очень много разногласий вызывают вопросы вычисления времени до экспирации, исторической волатильности и построения улыбки. Не претендуя на истину в последней инстанции (хотя и опираясь на опыт Алексея Каленковича), мы предлагаем референсные реализации блоков для расчета этих величин. В последующем, каждый желающий может использовать или наш готовый алгоритм, или реализовать своё видение. При этом ему будет достаточно заменить в сложном разветвленном скрипте один блок на свой алгоритм расчета – и сразу получить реализацию своей идеи с достаточно богатыми средствами визуализации и управления.
В данном документе будет приведен перечень скриптов в разбивке на логические группы в порядке убывания их важности для повседневной работы.
Важно: все эти скрипты разработаны для запуска в режиме агента. В принципе, они могут как-то функционировать в Редакторе Скриптов, но только в качестве какого-то тестового запуска для проверки формальной правильности собранной блок-схемы.
Волатильности
Историческая волатильность требует для расчета больших объёмов данных, которые оказываются совершенно излишними в торговле. Чтобы разрешить это противоречие реализован механизм повторного использования данных одного индикатора в других скриптах через механизм глобального кеша.
В TSLab реализованы кеши двух уровней. Локальный кеш – набор данных, доступных только внутри агента и сохраняемый между пересчетами скрипта. При перезапуске агента локальные кеши сбрасываются. Глобальный кеш – набор данных, доступный всем агентам одновременно и сохраняемый на жестком диске в папке %APPDATA%\..\Local\TSLab\TSLab 2.0\$Global$Objects$
Эти данные сохраняются в том числе между перезапусками приложения. В итоге возникает возможность выполнять сложный ресурсоёмкий расчет один раз и затем использовать его результаты в неограниченном количестве агентов.
Collect IV (RW)
Это один из самых простых скриптов, который позволяет начать освоение опционных блоков в составе ТСЛаб . Блок вытаскивает из опционного источника отдельные опционные серии и для каждой из них вычисляет волатильность-на-деньгах (в дальнейшем часто будет обозначаться как IV ATM ). Полученные значения записываются в глобальный кеш для использования в других блоках. Для целей визуального контроля полученные значения отображаются на графике в виде индикаторов.
Collect IV (ALL)
Очевидный минус предыдущего решения в том, что под каждый базовый актив (БА) необходимо запускать отдельный агент. В дополнение к этому у разных БА может быть различное количество опционных серий. В итоге мы предлагаем для повседневной работы улучшенную версию. Этот скрипт может обслуживать сразу 4 БА и все без исключения их опционы одновременно. Мы предлагаем ставить либо 4 разных инструмента (например, RIU6, SiU6, GZU6, SRU6), либо включать в анализ очень далекие опционы (например, RIU6, RIZ6, SiU6, SiZ6). В последнем случае Вы получите в своё распоряжение очень длинные серии с историей IV ATM.
Вы можете увеличить количество обрабатываемых данных, если производительность Вашей машины это позволяет. Для этого достаточно в Редакторе скопировать группу блоков, обслуживающих один БА.
HV (RW)
Это один из самых простых алгоритмов, который позволяет начать освоение опционных блоков в составе ТСЛаб . Скрипт предназначен для расчета исторической волатильности с сохранением вычисленных значений в глобальный кеш. Расчет идет по классической формуле расчета исторической волатильности (как дисперсии логарифмов) на минутном таймфрейме (М1). Скрипт опирается на серию только БА. Вычисленная историческая волатильность отображается на отдельном графике в качестве индикатора.
HVIV SRU6
Это один из самых простых алгоритмов, который позволяет начать освоение опционных блоков в составе ТСЛаб . Скрипт использует историческую волатильность из глобального кеша. Для этого используется блок Global HV .
Дополнительно демонстрируется использование блока Global IV ATM . Данный блок извлекает значения подразумеваемой волатильности из глобального кеша и выводит их на график в виде индикатора. То есть демонстрируется техника повторного использования результатов вычислений. С практической точки зрения это даёт возможность анализировать (хотя бы визуально) взаимную динамику исторической и подразумеваемой волатильностей на продолжительных интервалах времени. В данный момент имеется ограничение: в скрипт необходимо самому вписывать даты экспирации опционных серий. Делается это изменением параметров блоков IVATM* .
Дополнительно демонстрируется использование блока Global IV ATM . Данный блок извлекает значения подразумеваемой волатильности из глобального кеша и выводит их на график в виде индикатора. То есть демонстрируется техника повторного использования результатов вычислений. С практической точки зрения это даёт возможность анализировать (хотя бы визуально) взаимную динамику исторической и подразумеваемой волатильностей на продолжительных интервалах времени. В данный момент имеется ограничение: в скрипт необходимо самому вписывать даты экспирации опционных серий. Делается это изменением параметров блоков IVATM* .
Например, 14 июля 2016 года за 4 торговых дня до экспирации июльской серии мы видим, что IV ATM июля меньше IV ATM сентября на 2% волатильности и обе эти волатильности меньше текущей HV ( исторической волатильности ) фьючерса SRU6 на 5% и 2% соответственно . То есть как минимум следует отказаться от продажи волатильности в июльской и сентябрьской серии или даже попробовать аккуратно покупать июль в расчете заработать на дельте.
HV (ALL)
Очевидный минус агента HV (RW) в том, что под каждый базовый актив (БА) необходимо запускать отдельный агент. Для повседневной работы мы предлагаем улучшенную версию. Этот скрипт может обслуживать сразу 4 БА. Разумно, чтобы эти БА соответствовали источникам для скрипта Collect IV (ALL) .
Роботы торговли волатильностью
В качестве примера торгового робота предлагаются скрипты для покупки и продажи волатильности. В общих чертах алгоритм торговли выглядит следующим образом: скрипт определяет текущий центральный страйк, вытаскивает из глобального кеша историческую и подразумеваемую волатильность. В параметрах скрипта задаётся минимальное пороговое расхождение HV и IV (например, 5%). Если подразумеваемая волатильность превышает историческую, скрипт начинает продавать опционы на центральном страйке. Если историческая превышает IV, то осуществляется покупка опционов в центральном страйке.
Параметры котирования опционов задаются в интерфейсе агента. Это в частности: максимальный объём позиции, квант котирования, сдвиг цены относительно улыбки вверх/вниз (в шагах цены инструмента).
Агент выполняет автоматический дельта-хедж в соответствии с выбранными параметрами (используется авторский алгоритм вычисления дельты от Алексея Каленковича). Параметры хеджера задаются в настройках в интерфейсе агента.
В случае, если принимается решение о сокращении позиции, агент начнет котирование в набранных страйках и в итоге может сократить позицию вплоть до 0.
Важно: обязательным условием работы этих агентов является предварительный запуск агентов Collect IV (ALL), HV (ALL).
Для управления агентом необходимо вызвать его интерфейс. При этом станет доступен набор закладок для управления агентом и контроля его состояния.
В главном окне есть график БА, индикаторы волатильностей, величина набранного риска и дельта позиции. В разделе Control Desk находится управлением парамерами котирования и отображением первичной контрольной информации. В разделе Position показывается состав набранной позиции в разбивке по страйкам (фьючерс обозначается строчкой с нулевым страйком).
Вкладка Trades ( трейды) показывает фактические сделки
Log – служебная и отладочная информация для контроля правильности работы агента
Smile – управление параметрами автохеджера и улыбки. В частности, можно отвязать улыбку от рынка и зафиксировать её параметры по своему усмотрению.
Position – графическое представление профиля позиции
Настройки Entry Shift , Exit Shift (задаются в единицах «шаг цены») позволяют управлять степенью агрессивности Ваших действий. Добиваться более выгодной цены, если есть возможность ждать, или агрессивно наступать на рынок, если есть желание поскорее совершить сделку и набрать объём.
Buy Vola
Скрипт покупает опционы в центральном страйке, если историческая волатильность превышает подразумеваемую на заметную величину. Если Вы хотите закрыть позицию, поставьте параметр Max Risk = 0 . Агент начнет котирование с целью закрыть все имеющиеся объёмы.
Sell Vola
Скрипт продаёт опционы в центральном страйке, если подразумеваем ая волатильность превышает историческ ую на заметную величину. Если Вы хотите закрыть позицию, поставьте параметр Max Risk = 0 . Агент начнет котирование с целью закрыть все имеющиеся объёмы
Ручная торговля
Для построения своей улыбки используются уникальные авторские алгоритмы Алексея Каленковича . Это даёт возможность обнаруживать «неадекватные» котировки. Чтобы забрать их, сформировать сложную позицию, перестраивать её структуру и следить за результатом работы предлагаются скрипты для ручной торговли. На график выводятся улыбки и рыночные опционные котировки. Перспективные страйки, в которых идентифицировано сильное отклонение от «справедливой» оценки, подсвечиваются. Трейдер имеет возможность забирать такие котировки, совершая сделки прямо на чарте с помощью мыши. При этом будет сформирована команда на покупку или продажу опциона в указанном страйке. В фоновом режиме осуществляется автоматическое выравнивание дельты суммарной позиции.
Данные скрипты полезны профессиональным трейдерам, которые могут осознанно сформировать сложные позиции и управлять ими. Трейдерам с меньшим уровнем подготовки предлагается полностью идентичное рабочее место с тем ограничением, что все сделки являются виртуальными, то есть не выводятся на рынок. Это позволяет формировать позиции любой сложности и объёма и на практике проверять тонкости их поведения без риска для счета. При этом динамика эквити будет достаточно близко соответствовать тому, что происходило бы в реальности.
Основным рабочим полем этих инструментов, является поле с улыбками на фоне которых разложены рыночные котировки. Идентифицировав отклонение котировок, трейдер совершает сделку с помощь мыши. На соответствующих вкладках показывается также профиль позиции, профиль дельты и гаммы.
Real trading
Скрипт для реальной торговли. Сделки выводятся в рынок. При реальной торговле возможно выставление котировок в терминах волатильности. Например, « купить страйк 14 000 по волатильности 30% ». При этом будет создана Задача Котирования (отображается на графике улыбки горизонтальной черточкой в указанном страйке). После этого в рынке появится лимитная заявка по цене, соответствующей волатильности 30%. По мере движения цены БА лимитная котировка будет переставляться (в терминах абсолютной цены) с тем, чтобы соответствовать своему уровню волатильности. В каждом страйке может существовать только одна Задача Котирования одного направления. Это даёт возможность одновременно покупать и продавать несколько страйков или даже сразу всю опционную серию.
При перезапуске ТСЛаб все задачи котирования автоматически снимаются. Но они могут переноситься через вечерний клиринг и через ночь. Отмена лимитной заявки через Ваш торговый терминал, через таблицу «Свои заявки» или через «Менеджер котировок» не приводит к отмене Задачи Котирования.
Управление Задачами осуществляется с помощью панели «Quote settings». Знак параметра Qty определяет тип операции «КУПИТЬ» или «ПРОДАТЬ». Будьте внимательны.
Simm trading
Полностью идентичный скрипт для виртуальной торговли. Позволяет освоить интерфейс и получить представление об основных приёмах, применяемых в настоящее время при разработке опционных агентов.
Static analysis
Этот скрипт во многом воспроизводит возможности других алгоритмов из этой группы. Но имеет очень серьёзное отличие: «рынок» для него является полностью контроллируемым объектом. Время до экспирации, параметры, улыбки, цена базового актива и т. п. Являются полностью настраиваемыми параметрами. Это позволяет делать сценарное тестирование поведения позиции в различных ситуациях. Можно даже делать дельта хедж по мере движения рынка или доливать в позицию подорожавшие страйки. Естественно, все позиции только виртуальные .
Last updated