Введение

Программа предназначена для прогона на истории опционных стратегий. Торговля волатильностью, дельтахеджирование, роллирование, и многое другое.

В качестве исходных данных используются общедоступные данные с ftp RTS: тики БА и тики улыбки волатильности. По этим данным программа вычисляет теоретическую цену нужных опционов и используя заданное проскальзывание получает цены сделок во время прогона. Кроме этого, есть возможность использовать платную тиковую историю bid-ask для каждого опциона. Это дает большую точность прогона.

При задании портфеля для прогона, отдельно задаются несколько стратегий. Обязательно на открытие позиции. И необязательно на: наращивание/сокращение, дельтахеджирование и роллирование позиции.

В качестве начальной позиции можно задавать произвольную комбинацию опционов. В исходных настройках есть небольшой список стандартных комбинаций (стредл, стренгл, бабочка и т.д.), но его легко расширить самостоятельно.

Есть возможность задавать расписание для прогона: в какое время можно совершать сделки (отдельно для фьючерса и отдельно для опционов), в какое нет; когда делать принудительное дельтахеджирование или полностью закрыть позицию. Расписание можно задавать как для произвольного дня, так и для конкретных дней недели.

После прогона выдаются результаты: графики эквити портфеля и ГО, которое требовалось под позиции. Всевозможные статистические данные: P/L, доходность, просадки, и т.д. Подробные логи: что делала (или не делала) стратегия и почему. Лог всех сделок. Лог всех показателей минипортфеля, включая греки.


Исходные данные

Для прогона используются исходные данные, которые можно скачать с ftp RTS:

  1. Тики БА можно скачать отсюда: ftp://ftp.rts.ru/pub/FORTS/pubstat/
  2. Тики улыбки IV можно скачать отсюда: ftp://ftp.rts.ru/pub/FORTS/volat_coeff/
  3. Если захочется более точного прогона по истории тиков бид-аск опционов, то такую историю нужно покупать на РТС: http://rts.micex.ru/s429 (см. top of book). Есть бесплатный демо-кусочек за июнь 2011: ftp://ftp.rts.ru/pub/info/historical_data/tick_opt.7z

После скачивания все запакованные данные (*.7z) нужно раcпаковать. Все данные нужно подготовить для прогонов с помощью программы PrepareRTSData.exe. После ее запуска нужно будет указать папку, где будут храниться подготовленные для прогонов данные.

При подготовке тиков БА (п1) они объединяются в бары, чтобы можно было быстрее делать прогоны. При первом использовании нужно отметить галочку "Dbf2Txt". Тогда исходные файлы dbf переводятся в txt, и уже их программа считывает и выделяет нужные данные. При повторном запуске (другой БА или таймфрейм) и если исходные данные не пополнялись, то можно уже не отмечать эту галочку.

При подготовке тиков улыбки IV (п2), при первой подготовке, нужно указать файл с улыбкой за любой месяц и отметить галочку "Все файлы из папки". Потом, когда РТС выложит историю улыбки за новый месяц, можно будет указывать только новый файл, галочка сброшена, и программа добавит в подготовленную для прогонов историю только новый месяц.


Прогон

Перед прогоном нужно указать период прогона, таймфрейм (чем больше таймфрейм - тем быстрее прогон). При первом прогоне сначала будут довольно долго грузится данные. При повторном прогоне, если не менялся Старт/Финиш/Таймфрейм/Папка данных, то данные уже не грузятся, и время тратится чисто на прогон.

После этого нужно задать папку для прогона - это папка, где будут хранится настройки прогона, и где после прогона появятся файлы с результатами. Потом нужно задать папку, где лежат подготовленные исходные данные для прогонов. Далее задаются портфели со стратегиями, и галочками отмечаются те, которые нужно будет прогнать.

После этого задается источник цен опционов:

  • По истории IV - цены опционов вычисляются по формуле Б-Ш. IV берется либо из тиковой истории улыбки волатильности, либо из тиковой истории БА (там есть информация об IV в дневной и вечерний клиринг).
  • По истории бид-асков - цены опционов берутся из тиковой истории бид-аска. Возможные варианты использования этой истории рассмотрим на примере если стратегии нужно продать опцион:
    • Рынок - в качестве цены сделки будет взят текущий бид на этом опционе;
    • Лимит - в качестве цены сделки будет взят текущий аск на этом опционе;
    • Среднее - в качестве цены сделки будет взято среднее между текущим аском и бидом на этом опционе.
    Если задан Макс.спред и текущий спред между бид-аском превышает это значение, то сделки не будет (невозможно определить ее цену). Либо, если отмечена галочка Использовать IV, цена сделки будет определятся по первому способу (будут посчитаны по формуле Б-Ш).

Можно задать проскальзывание, отдельно для фьючерсов (например, для сделок с БА во время дельтахеджирования) и отдельно для опционов. Проскальзывание может быть как положительным значением (сделки будут проходить по менее выгодным ценам), так и отрицательным (цены сделок будут более выгодными).

Для большей скорости прогона можно временно отключить ведение логов с помощью галочек Общий и Сделок.

Если в прогоне одновременно участвует несколько портфелей, то можно посмотреть общее эквити этих портфелей, отметив галочку Суммарная эквити. Тогда можно будет задать и стартовое значение для такой эквити.

Если отметить галочку "Учитывать комиссию", то при каждой сделке будет высчитываться один рубль.

Все, теперь можно запускать прогон кнопкой Старт и потом смотреть результаты прогона.


Задание портфеля

При задании портфеля можно указать его название, чтобы можно было сразу понять что за портфель и какая в нем стратегия. Если название не задано, то в списке портфелей будет использована строка задания стратегии на открытие.

Начальные средства можно указать 0. Тогда эквити портфеля начнется с нулевого значения. Если используются стратегии, где размер открываемой позы (вернее ГО под эту позицию) зависит от свободных средств, то нужно указать ненулевое значение начальных средств.

Нужно указать одну из стратегий на открытие позиции. Остальные министратегии - по желанию. Порядок выполнения у них такой:

  • Министратегия №1
  • Министратегия №2
  • Сокращение
  • Наращивание (будет выполнятся только если стратегия Сокращения не сработала на текущем баре)
Если в портфеле есть одновременно дельтахедж и роллирование, то лучше распределить так: Министратегия №1 - роллирование, Министратегия №2 - дельтахедж.

Если нужно чтобы торговля в портфеле велась по определенному расписанию, то можно указать файл с расписанием в поле Расписание.


Расписание

При прогоне можно для каждого портфеля задать свое расписание, которое определяет что делать в то или иное время. Задается в настройках портфеля, в поле Расписание указывается ini-файл, со следующими секциями:

  • Monday/Tuesday/Wednesday/Thursday/Friday - задают расписание конкретного дня недели;
  • Common - для дней недели, у которых расписание не задано, будет действовать расписание из этой секции.

Внутри каждой секции расписание задается списком строк, такого вида:

идентификатор=время,действие
Идентификатор каждой строки должен быть уникальным. Если будет две разных строки с одним идентификатором, будет загружена только первая строка.

Время задается в виде HH:MM:SS. Расписание проверяется раз в бар. Т.е. если прогон идет по часовикам, то действие со временем 10:30:00 выполнится только в 11:00.

Действия могут быть следующими:

  • TradeFut_On - разрешается торговля фьючерсами;
  • TradeOpt_On - разрешается торговля опционами;
  • TradeFut_Off - запрещается торговля фьючерсами;
  • TradeOpt_Off - запрещается торговля опционами;
  • CloseAll - принудительное закрытие всей позиции портфеля и после этого запрет торговли фьючерсами и опционами;
  • DeltaHedge - принудительное выравнивание дельты в ноль (всех минипортфелей из портфеля).

Пример расписания:

[Common]
Item1=10:00:00,TradeFut_On
Item2=11:00:00,TradeOpt_On
Item3=22:00:00,TradeOpt_Off
Item4=23:00:00,DeltaHedge
Item5=23:00:00,TradeFut_Off

[Friday]
Item1=10:00:00,TradeFut_On
Item2=11:00:00,TradeOpt_On
Item3=22:00:00,CloseAll


Результаты прогона

После прогона программа переключается на вкладку Результаты, где показывает график эквити и ГО последнего прогона. Там же можно с помощью галочек включать/отключать показ результатов предыдущих прогонов. Т.е. можно графически сравнивать результаты последнего прогона с предыдущими.

Если выделить какой-либо прогон портфеля в правой части окна, то внизу окна показывается краткая информация по этому прогону: используемые стратегии, начальные средства, P/L, доходность, просадки, статистические показатели министратегий (сколько было роллирований, дельтахеджей и т.д.). Чтобы просмотреть более подробную инфу по прогону, нужно вызвать всплывающее меню над прогоном. Через него можно посмотреть:

  • Общий лог - общий лог прогона, все действия с каждым минипортфелем, в конце общая статистика (P/L, просадки), статистика по каждому инструменту (P/L, кол-во сделок), суммарная статистика отдельно по фьючерсам и по опционам; статистика по каждой министратегии; время потраченное на прогон
  • Лог сделок - формализованный лог сделок, легко импортируется в Ексель, колонки: Дата/время, ISIN, цена сделки, объем сделки, направление сделки (B-Buy, S-Sell), краткий комментарий - почему была совершена сделка;
  • Эквити - общее эквити портфеля, легко импортируется в Ексель, колонки: Дата/время, Эквити, ГО;
  • Эквити-бар - эквити портфеля, разбитое на бары OHLC, значение эквити нормированы на 1 лот позиции;
  • Эквити по дням - эквити портфеля, раз в день, в вечерний клиринг;
  • Минипортфели - открывается окно с подробными результатами прогона для выбранного минипортфеля. Можно просматривать наложенные друг на друга графики эквити, суммарного индекса IV, размера позиции в лотах, сделок наращивания и сокращения. Лог состояния минипортфеля на каждый бар, столбцы: эквити, ГО, индекс IV, размер позиции в лотах, направление позиции (лонг/шорт по воле), греки, текущий состав минипортфеля.


Настройки

В файле Settings.ini, который лежит рядом с самой программой, в секции [PASS] хранятся настройки по умолчанию для прогона.

В секции [COMB] перечислены комбинации, которые можно использовать для задания начальной позиции в стратегиях. Можно добавлять свои комбинации. Для этого нужно закрыть тестер, добавить свою комбинацию, сохранить Settings.ini и запустить тестер. При задании комбинации используются следующие правила/обозначения:

  • C - опцион Call
  • P - опцион Put
  • F - базовый фьючерс
Позиция задается так: Vol * Offset;

Примеры комбинаций:

  • C:1*-2 - покупка 1 контракта Call со смещением 2 страйка влево от центрального;
  • P:-2*0 - продажа 2х контрактов Put на центральном страйке;
  • P:2*-1,C:3*1 - покупка двух путов на страйке, соседнем слева от центрального, покупка трех коллов на страйке, соседнем справа от центрального.


Стратегии на открытие позиции

Эти стратегии используются для открытия позиции в портфеле. Они сами могут определить когда открыть тот или иной минипортфель, когда закрыть любой минипортфель из полного портфеля, когда прекратить торговлю.

Задаются такие стратегии в поле Открытие позиции при задании портфеля. На данный момент доступны следующие стратегии на открытие позиции:

  • "Купил и Держи"
  • Торговля волатильностью
  • Money Managment


Стратегия на открытие позиции: "Купил и Держи"

Открывает заданную позицию и за определенное кол-во дней до экспирации перекладывает ее в новый минипортфель.

Параметры:

  • ID:BnH
  • BA - базовый актив
  • Delta - стартовое значение дельты, по нему расчитывается размер начальной позиции
  • Vol - задает фиксированный размер начальной позиции (если не был задан параметр Delta)
  • StartPos/StartPosD - начальная позиция для торговли, название комбинации из файла Settings.ini, секция [COMB]. Если перед названием комбинации указать минус, то будет открыта обратная комбинация. Например: "StartPos:-Straddle0" - будет открыт проданный стреддл. Если начальную позицию задать через StartPosD, то сразу после открытия этой позиции или после полного роллирования, она будет дельтахеджирована.
  • FD - (FinishDays) кол-во дней до экспирации, когда нужно переложится в новый срок
  • Kvartal - задает какие опционные серии можно использовать при открытии минипортфеля. Возможные значения:
    • 0 - можно использовать любую доступную опционную серию
    • 1 - использовать только квартальные (месяц истечения которых совпадает с месяцем истечения базового фьючерса)
    • 2 - использовать любые, кроме квартальных
  • TP - (TakeProfit) тейкпрофит в пунктах. Например, если указано TP:1000, значит как только P/L минипортфеля вырастет на 1000пунктов, то он закрывается
  • SL - (StopLoss) стоплосс в пунктах. Например, если указано SL:1000, значит как только PL минипортфеля упадет более чем на 1000пунктов, то все позиции в минипортфеле закрываются, и до экспирации базового фьюча никакие новые позиции не открываются
  • MiniStrategy - стратегия для минипортфеля

Пример:

ID:BNH,BA:SBRF,Delta:50,StartPos:Call0,FD:0,Kvartal:1,MiniStrategy:(ID:DeltaHedge,Method:2,Left:50,Right:60)
Открывает минипортфель, состоящий из купленного колла на центральном страйке. Объем берется такой, чтобы начальная дельта была 50. Перекладка в новый минипортфель будет в день истечения инструментов. Используются только квартальные серии. В каждом минипортфеле действует стратегия дельтахеджирования: удерживание дельты в диапазоне (50, 60).


Стратегия на открытие позиции: торговля волатильностью

Мониторит IV на центральных страйках, и как только она выходит за указанный диапазон, открывает заданную позицию и за определенное кол-во дней до экспирации перекладывает ее в новый минипортфель.

Параметры:

  • ID:VolaTrade
  • BA - базовый актив
  • Vol - размер начальной позиции
  • StartPos/StartPosD - начальная позиция для торговли, название комбинации из файла Settings.ini, секция [COMB]. Если перед названием комбинации указать минус, то будет открыта обратная комбинация. Например: "StartPos:-Straddle0" - будет открыт проданный стреддл. Если начальную позицию задать через StartPosD, то сразу после открытия этой позиции или после полного роллирования, она будет дельтахеджирована.
  • Min - нижняя граница для IV, если стратегия обнаруживает опцион с IV меньше этого значения, то открывает по нему длинную позицию
  • Max - верхняя граница для IV, если стратегия обнаруживает опцион с IV больше этой границы, то открывает по нему короткую позицию
  • SD - (StartDays) кол-во дней до экспирации, когда разрешается открывать позу
  • FD - (FinishDays) кол-во дней до экспирации, когда нужно переложится в новый срок
  • Kvartal - задает какие опционные серии можно использовать при открытии минипортфеля. Возможные значения:
    • 0 - можно использовать любую доступную опционную серию
    • 1 - использовать только квартальные (месяц истечения которых совпадает с месяцем истечения базового фьючерса)
    • 2 - использовать любые, кроме квартальных
  • TP - (TakeProfit) тейкпрофит в пунктах. Например, если указано TP:1000, значит как только P/L минипортфеля вырастет на 1000пунктов, то он закрывается
  • SL - (StopLoss) стоплосс в пунктах. Например, если указано SL:1000, значит как только PL минипортфеля упадет более чем на 1000пунктов, то все позиции в минипортфеле закрываются, и до экспирации базового фьюча никакие новые позиции не открываются
  • MiniStrategy - стратегия для минипортфеля

Пример:

ID:VolaTrade,BA:RTS,StartPos:Strangle2,Vol:100,Min:30,Max:50,SD:60,FD:3,Kvartal:0,TP:1000,SL:1000,MiniStrategy:(ID:DeltaHedge,Method:1,Left:-3,Right:+3)
Открывает минипортфель, состоящий из купленного стренгла (берутся страйки со смещением +2 и -2 от центрального). Объем стренгла = 100. Новые позиции открывают только для тех опционов, которым остается не более 60 дней до истечения. Перекладка в новый минипортфель будет за три дня до истечения инструментов. Используются любые временные серии (1 месячные, 2х месячные, квартальные и т.д.). Действует тейкпрофит 1000п и такой же стоплосс. В каждом минипортфеле действует стратегия дельтахеджирования: выравнивание дельты после выхода из диапазона (-3, +3).


Стратегия на открытие позиции: ММ

Стратегия на открытие позиции: Money Management

Ориентируясь на сигнальный портфель решает - следовать ему, делать все наоборот, или быть вне позиции. При открытии позиции масштабирует объем позиции сигнального портфеля, чтобы ГО в портфеле занимало заданный процент (параметр StartGO).

Параметры:

  • ID:MM
  • SC - номер сигнального портфеля;
  • StartGO - процент от текущего капитала, задает сумму которую можно взять под ГО для открытия позиции;
  • Mode - задает режим торговли. Возможные значения:
    • Follow - всегда следовать сигнальному портфелю;
    • Contra - всегда антиследовать сигнальному портфелю, делать все наоборот (там где в сигнальном портфеле лонг, открывать шорт, и наоборот);
    • Sma_Trend - при пробое канала заданного SMA, открывать трендовую позицию;
    • Sma_ContrTrend - при пробое канала заданного SMA, открывать контртрендовую позицию.
  • SmaN - задает кол-во баров эквити сигнального портфеля, на которых будет расчитан SMA;
  • SmaO - задает смещение вверх/вниз от SMA, т.е. задает ширину канала, который используется в режимах Sma_Trend/Sma_ContrTrend;
  • Filter - фильтр для сигналов. Возможные значения:
    • Follow - фильтр пропускает только сигналы следовать сигнальному портфелю;
    • Contra - фильтр пропускает только сигналы антиследовать сигнальному портфелю;
    • Both - (по умолчанию) фильтр пропускает оба сигнала.

Пример:

Strategy=ID:MM,SC:1,Mode:Sma_ContraTrend,SmaO:1000,SmaN:10,StartGO:50
Считает SMA эквити первого сигнального портфеля. Берется 10 последних баров эквити, считается SMA. Если текущее значение эквити сигнального портфеля станет меньше SMA-1000, то стратегия подаст сигнал Follow и откроет позицию по составу идентичную составу сигнального портфеля, объем у позиции будет такой, чтобы ГО было примерно 50% от текущего капитала портфеля.


Стратегии для минипортфеля

Эти стратегии управляют только одним конкретным минипортфелем. Могут открывать/закрывать/наращивать/сокращать позиции внутри только этого минипортфеля.

На данный момент доступны следующие стратегии для минипортфеля:

  • Дельтахеджирование
  • Роллирование
  • Перекладка
  • Наращивание
  • Сокращение


Стратегия для минипортфеля: дельтахеджирование

Дельтахеджирует минипортфель путем покупки/продажи базового фьючерса.

Параметры:

  • ID:DeltaHedge
  • MinDelta - нижняя граница для дельты
  • MaxDelta - верхняя граница для дельты
  • Start - условие начала дельтахеджа. Возможные значения:
    • Bounds - начинается когда дельта выходит за [MinDelta,MaxDelta]
    • StepBA - начинается после шага БА StepL/StepR
  • Goal - цель дельтахеджирования. Возможные значения:
    • Zero - выравнивание дельты идет к нулю
    • Bounds - минимальная коррекция дельты, просто чтобы она вернулась в диапазон (MinDelta, MaxDelta)
  • StepL - для Start:StepBA задает шаг БА влево, после которого будет дельтахеджирование
  • StepR - для Start:StepBA задает шаг БА вправо, после которого будет дельтахеджирование
  • TickStep - минимальный шаг рехеджирования для дельтахеджа по тикам (если отмечена галочка "Тики" рядом с таймфреймом)
  • StartDH_L/StartDH_R/FinishDH_L/FinishDH_R - задают допустимый интервал для дельтахеджа

Примеры:

  1. ID:DeltaHedge,Start:Bounds,Goal:Bounds,MinDelta:-3,MaxDelta:+3
    Дельтахеджирует минипортфель, когда суммарная дельта выходит за границы (-3, +3). Например, если дельта станет -3.9, то будет докуплен один базовый фьючерс. Если бы было указано Goal:Zero, то докупалось бы 4 базовых фьючерса.

  2. ID:DeltaHedge,Start:StepBA,Goal:Bounds,MinDelta:-3,MaxDelta:+3,StepL:250,StepR:250
    Дельтахеджирует минипортфель, когда БА проходит 250пп влево или вправо после старта или последнего дельтахеджа. Например, если БА прошел влево 250пп и текущая дельта = -3.9, то будет докуплен один базовый фьючерс. Если текущая дельта останется в диапазоне (-3, +3), то дельтахеджа не будет.


Стратегия для минипортфеля: роллирование

Роллирует минипортфель путем постепенного перевода имеющихся опционов на соседние страйки. При роллировании исходная позиция разбивается на заданное кол-во частей (квантов) и каждый квант роллируется отдельно. Когда все кванты пророллированы - исходная позиция полностью переходит на новые страйки.

Есть два метода роллирования:

  1. RollOnDelta - роллирование позиции, чтобы дельта оставалась в заданном диапазоне;
  2. RollOnStepBA - роллирование позиции через заданный шаг БА.

RollOnDelta

Роллирование начинается, когда дельта минипортфеля выходит за заданные границы. Если при роллировании очередного кванта дельта перестает выходить за границы, то роллирование приостанавливается. Если дельта начинает выходить за противоположную границу (по сравнению с той, с которой начиналось роллирование), то идет обратное роллирование (возврат к исходной позиции).

Параметры:

  • ID:RollOnDelta
  • NQuant - кол-во квантов, на которые разбивается исходная позиция;
  • MinDelta - минимальная граница для дельты, ниже которой начнется роллирование;
  • MaxDelta - максимальная граница для дельты, выше которой начнется роллирование.

Пример:

ID:RollOnDelta,NQuant:10,MinDelta:-3,MaxDelta:3
Разбивает исходную позу на 10 квантов. Роллирование начинается/продолжается, когда дельта минипортфеля выходит за границы (-3, +3).

RollOnStepBA

При старте фиксируется текущий якорь (StartAnchor) - ближайший страйк к текущему значению БА. Когда БА выходит за диапазон [StartAnchor-GapL, StartAnchor+GapR], определяется NewAnchor - ближайший страйк к текущему значению БА. И если NewAnchor не равен StartAnchor - начинается роллирование первого кванта. Каждый последующий роллируется через шаг StepL/StepR. Для успешно роллированного кванта обновляется якорь и границы для нового роллирования становятся такие: [NewAnchor-GapL-(I-1)*StepL, NewAnchor+GapR+(I-1)*StepR], где I - порядковый номер кванта (1 - первый, 2 - второй,..., NQuant - последний). После того как все кванты были успешно роллированы, следующее роллирование начнется при выходе БА за диапазон [NewAnchor-GapL, NewAnchor+GapR]. Если заданы NStrikeL/NStrikeR, то роллирование ограничено таким диапазоном для якоря: [StartAnchor-NStrikeL*StepStrike, StartAnchor+NStrikeR*StepStrike], где StepStrike - шаг между страйками.

Параметры:

  • ID:RollOnStepBA
  • NQuant - кол-во квантов, на которые разбивается исходная позиция;
  • GapL - шаг влево от текущего якоря, левее которого начнется роллирование; Если не задан, или задан нулем - роллирование влево запрещено;
  • GapR - шаг вправо от текущего якоря, правее которого начнется роллирование; Если не задан, или задан нулем - роллирование вправо запрещено;
  • StepL - шаг влево для продолжения роллирования очередного кванта;
  • StepR - шаг вправо для продолжения роллирования очередного кванта;
  • NStrikeL - кол-во страйков, на которое можно роллировать влево (0 - без ограничений);
  • NStrikeR - кол-во страйков, на которое можно роллировать вправо (0 - без ограничений);

Примеры:

  1. ID:RollOnStepBA,NQuant:10,GapL:4000,GapR:4000,StepL:100,StepR:100,NStrikeL:2,NStrikeR:3
    Разбивает исходную позу на 10 квантов. Роллирование начинается, когда БА выходит из диапазона [Текущий якорь-4000, Текущий якорь+4000]. В этот момент роллируется первый квант. Каждый последующий роллируется через 100пп. Влево разрешено до двух полных роллирований, вправо - до 3х.
  2. ID:RollOnStepBA,NQuant:1,GapL:5000,GapR:5000
    Роллирует всю позу целиком за раз через каждые 5000пп.


Стратегия для минипортфеля: перекладка

Перекладывает инструмент из минипортфеля когда до истечения инструмента остается меньше чем заданное кол-во дней. Если базовый фьючерс минипортфеля еще не истекает, а истекает только опцион, то ищется новый срок для этого опциона, и перекладка идет внутри минипортфеля. Если истекает базовый фьючерс, то создается новый минипортфель, и все инструменты из старого минипортфеля перекладываются в новый, и стратегии тоже.

Примечание: эта стратегия уже устарела и почти не используется. Нужна была, когда не было стратегий для полного портфеля. Но в принципе может быть использована, если нужно посмотреть, что будет с заданным минипортфелем на протяжении всей истории.

Параметры:

  • ID:Transpose
  • Days - Кол-во дней до истечения, после которого инструмент из минипортфеля будет перекладываться на новый срок
  • Center - Задает на какой страйк перекладывать опцион. Если задан Center:1, то при перекладке опциона, позиция по новому опциону открывается на текущем центральном страйке.
  • DeltaHedge - Если задан параметр DeltaHedge со значением 1, то во время перекладки базового фьючерса, позиция по нему целиком закрывается, а после перекладки всех опционов - выравнивается дельта новым базовым фьючерсом.
  • Kvartal - Задает в какую опционную серию перекладывать опционы. Возможные значения:
    • 0 - перекладка может быть в любую доступную опционную серию
    • 1 - перекладка опционов идет только в квартальные (месяц истечения которых совпадает с месяцем истечения базового фьючерса)
    • 2 - перекладка может быть в любые, кроме квартальных

Пример:

ID:Transpose,Days:30,Center:1,DeltaHedge:1,Kvartal:0
Перекладка инструмента в минипортфеле, когда этот инструмент истекает меньше чем через 30 дней. При перекладке опциона, новая позиция будет открываться на текущем центральном страйке. Перекладка будет в любую опционную серию (месячные, 2х месячные, квартальные), в зависимости от того, что будет доступно в момент перекладки.


Стратегия для минипортфеля: наращивание

Наращивает объем позиции в минипортфеле. Если на текущем баре сработала стратегия сокращения, то на этом баре стратегия наращивания вызываться не будет.

Параметры:

  • ID:IncreaseOnIVAndPL
  • StepIV - шаг для индекса IV позиции, когда индекс ухудшится на такой шаг (упадет для лонга по воле, или вырастет для шорта по воле), то будет один шаг наращивания позиции;
  • StepPL - шаг для убытков в пересчете на один лот. Когда эквити в пересчете на один лот упадет на такой шаг, то будет один шаг наращивания позиции;
  • VolStep - объем наращивания в лотах, на каждый шаг наращивания;
  • MaxVol - максимальный объем в лотах, после которого наращивание останавливается;
  • StepBoth - указывает как объединять шаги StepIV и StepPL. Например, если на очередном баре выяснилось, что через StepPL надо сделать два шага наращивания, а через StepIV - три, то:
    • StepBoth=0 - Будет взято 3 шага наращивания (т.е. берется максимум).
    • StepBoth=1 - Будет взято 2 шага наращивания (т.е. берется минимум).

Пример:

ID:IncreaseOnIVAndPL,StepPL:50,StepIV:1,VolStep:10,MaxVol:400,StepBoth:0
Наращивание позиции будет либо при падении эквити на 50п (в пересчете на один лот позиции), либо при росте/падении индекса IV позиции на 1%. При каждом шаге наращивания позиция увеличивается на 10 лотов, вплоть до 400 лотов.


Стратегия для минипортфеля: сокращение

Сокращает объем позиции в минипортфеле. Если на текущем баре сработала стратегия сокращения, то на этом баре стратегия наращивания вызываться не будет.

Параметры:

  • ID:DecreaseOnIVAndPL
  • GapIV - отступ для индекса IV позиции, начиная с которого начнется сокращение;
  • GapPL - отступ для P/L, начиная с которого начнется сокращение;
  • StepIV - шаг для индекса IV позиции, когда такой индекс станет лучше на такой шаг (вырастет для лонга по воле, или упадет для шорта по воле), то будет один шаг сокращения позиции;
  • StepPL - шаг для P/L в пересчете на один лот. Когда эквити в пересчете на один лот вырастет на такой шаг, то будет один шаг сокращения позиции;
  • NStep - кол-во шагов, за которое позиция должна сократиться до MinVol;
  • MinVol - минимальный объем в лотах, меньше которого позиция не сокращается;
  • StepBoth - указывает как объединять шаги StepIV и StepPL. Например, если на очередном баре выяснилось, что через StepPL надо сделать два шага сокращения, а через StepIV - три, то:
    • StepBoth=0 - Будет взято 3 шага сокращения (т.е. берется максимум);
    • StepBoth=1 - Будет взято 2 шага сокращения (т.е. берется минимум).
  • UpdateZeroPL - задает обновлять или нет нулевой уровень эквити для наращивания:
    • UpdateZeroPL=0 - нулевой уровень обновляться не будет;
    • UpdateZeroPL=1 - нулевой уровень будет обновляться, т.е. в следующий раз когда эквити начнет падать, наращивание позы будет не от прежнего нулевого уровня, а от более высокого.

Пример:

ID:DecreaseOnIVAndPL,GapIV:5,GapPL:100,StepIV:1,StepPL:50,NStep:10,MinVol:20,StepBoth:0,UpdateZeroPL:1
Сокращение позиции начнется, когда либо эквити вырастет на 100п (в пересчете на один лот), либо индекс IV станет лучше на 5% (вырастет для лонга, или упадет для шорта). Далее, каждый шаг сокращения будет либо при росте эквити на 50п (в пересчете на один лот), либо при улучшении индекса IV позиции на 1%. Объем сокращения на каждом шаге будет такой, чтобы сократится до 20 лотов за 10 шагов.


Контакты

Все контакты можно найти на странице: http://novationz.ru/


Допустимый интервал для дельтахеджирования


Минипортфель

Полный портфель при прогоне разбивается на минипортфели, которые объединяют опционы на один и тот же базовый фьючерс. Опционы могут быть на разные сроки. Базовый фьючерс также может входить в минипортфель.

Например, полный портфель состоящий из следующих инструментов:

RTS-6.08
RTS-6.08_140508CA 210000
RTS-6.08_110608CA 210000
RTS-9.08
RTS-9.08_140708CA 215000
RTS-9.08_120908CA 210000
GAZR-6.08
GAZR-6.08_120508CA 30000
GAZR-6.08_090608CA 30000
будет разбит на три отдельных минипортфеля:
  • Минипортфель №1:
    RTS-6.08
RTS-6.08_140508CA 210000
RTS-6.08_110608CA 210000
  • Минипортфель №2:
    RTS-9.08
RTS-9.08_140708CA 215000
RTS-9.08_120908CA 210000
  • Минипортфель №3:
    GAZR-6.08
GAZR-6.08_120508CA 30000
GAZR-6.08_090608CA 30000

Для каждого минипортфеля могут быть посчитаны суммарные греки. При прогоне для каждого открытого минипортфеля ведется отдельный лог, в котором записывается эквити минипортфеля, используемое ГО, греки, текущий состав, с текущими ценами каждого инструмента, и текущей IV для опционной позиции.