Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Section
Column

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

  • классический маркет-мейкинг с обязательствами перед биржей по величине спрэда, объёму заявки и продолжительности котирования;
  • набор или уменьшение позиции по заданной волатильности.

Для решения этих задач в Option Workshop реализован модуль Маркет-мейкер (далее ММ). Модуль привязывается к одному торговому счету, к одной стратегии. Все сделки, совершенные по заявкам ММ, будут попадать в выбранную стратегию. Это позволяет локализовать позиции ММ и хеджировать отдельно от других позиций. Одновременно могут котироваться несколько контрактов контракты по разным инструментам. Заявки ММ выставляются :

  • опционы call. put;
  • фьючерсы;
  • акции.

ММ выставляет заявки по контракту на определенном уровне от текущей рыночной цены. Если цена изменяется, заявки снимаются и создаются новые. 

Column
width400px
Panel
bgColor#F5F5F5
borderStyledotted

Содержание страницы:

Table of Contents

Основные операции с маркет-мейкером

Форма Market Makers открывается нажатием кнопки  (рис. 1).

Рисунок 1 – форма Маркет-мейкерформа Market Makers

При нажатии правой кнопки нам на ММ откроется меню с командами (рис. 2).

Рисунок 2 – форма команды Market Makers

Чтобы настроить или запустить ММ, необходимо его активировать, нажав дважды на название или выбрав команду Open. В результате откроется окно настроек и управления выбранного ММ. 

Рисунок 3 – окно настроек

...

По умолчанию окно настройки ММ не содержит записейконтрактов. Для выбора контрактов добавления нужно нажать кнопку Select contracts

Рисунок 5 – маркет-мейкер5 – окно настройки ММ

В открывшемся окне выбрать инструмент (рис. 6[1]), нажать кнопку  (рис. 6[2]), нажать кнопку ОК (рис. 6[3]).

...

Рисунок 7 – список контрактов

Красным цветом выделены опцион опционы PUT, зеленым – CALL, синим – фьючерсы и акции. Перед запуском ММ , следует задать параметры котирования (см. раздел Настройка маркет-мейкера).

...

Для каждого контракта отдельно можно задавать задаются параметры, описанные в таблице 1. 

...

Параметр
Описание
NameКод инструмента
PriceТекущая теоретическая цена
Enable

Определяет, разрешено ли выставление заявок по контракту, когда ММ запущенЕсли . Также должны быть установлены флажки Bid и Ask не установлены, заявки не будут выставляться/или Ask

Bid

Выставлять заявки на продажу (одностороннее котирование)

Ask

Выставлять заявки на покупку (одностороннее котирование)

ShooterВыбор режима Стрелок
Join

Выбор режима Связанных маркет-мейкеровПараметр позволяет объединять маркет-мейкеры в группу для согласованного набора позиций  связанных ММ

Bid Quantity

Размер заявок на продажу. Параметр можно задать:

  • в контрактах (например, 1 или 5);
  • в суммарной дельте (например, 1d или 2 1d или 2.5d). Маркет-мейкер ММ подберёт минимальное количество контрактов, у которого суммарная дельта (по модулю) будет больше или равна указанному значению
Ask QuantityРазмер заявок на покупку. Аналогично Аналогичен предыдущему параметру принимает значения как в контрактах, так и в дельте
Replace at QuantityКоличество контрактов в заявкеРазмер заявки, при котором она снимается с торгов
Lower Limit

Нижний лимит размера позиции. Может быть задан со знаком "минус". ММ не будет набирать позицию меньше указанного значения. Например, если:

  • лимит = 100
  • количество контрактов в заявке 30,
  • набранная позиция = 120,

то робот ММ уменьшит количество контрактов в заявке на продажу до 20.

Upper Limit

Нижний лимит размера позиции. Может быть задан со знаком "минус". ММ не будет набирать позицию больше заданного значения. Например, если:

  • лимит = 100
  • количество контрактов в заявке = 30
  • набранная позиция = 80

то робот уменьшит количество контрактов в заявке на покупку до 20.

Bid Spread

Размер спрэда между заявками bid и теоретической ценой. Параметр может быть задан:

  • в единицах цены (например, 100p или 100)
или
  • ;
  • в единицах волатильности (например, 2v);
Параметр может быть задан
  • со знаком "
минус
  • "
Ask Spread

Размер спрэда между заявками ask и теоретической ценой. Параметр может быть задан:

  • в единицах цены (например,
 100p или 100) или
  •  100p или 100);
  • в единицах волатильности (например,
 2v
  •  2v);
Параметр может быть задан
  • со знаком "
минус
  • "
Sensitivity

Чувствительность к изменению цены. Может быть задана в единицах цены или волатильности. Например, если

  • котировка выставлялась при теоретической цене
 
  • = 4000, 
  • чувствительность
10. При
  • = 10,

то при изменении цены более чем на 10 пунктов (<3990 или >4010), ММ перевыставит заявки по текущей теоретической цене

. Данный параметр также можно задавать в единицах волатильности (например, 1v или 3v)

Shift per contract

Корректировки мидлКорректировка миддл-маркета при совершении сделок. Может быть задана в единицах цены или волатильности.

Например, если параметр равен 5, то при совершении сделки на продажу объёмом три контракта, следующая пара заявок будет выставляться не по теоретической цене, а по теор. цене: Теоретическая цена + 5*3. Заявки оттянутся вверх для уменьшения вероятности совершения дополнительных продаж. Данный параметр также можно задавать в единицах волатильности (например, 1v или 3v)

Curr. Pos.Показывает текущую набранную позицию

...

Параметры для всех контрактов

В блоке настроек Settings задаются параметры котирования для всех контрактов. Если один ММ запущен, то для применения настроек нужно нажать всплывающую кнопку Apply changes.

Рисунок 8 – настройки ММобщие параметры для всех контрактов

Таблица 2 – Параметры настройки всех ММ

Параметр
Описание
Check price deviationУказывает на необходимость проверки отклонения теоретической цены опциона от текущего мидлмиддл-маркета. В случае отклонения на величину, задаваемую параметром Deviation threshold, работа ММ останавливается
Deviation thresholdЗадает порог отклонения теоретической цены опциона от текущего мидлмиддл-маркета в процентах
Shift all contractsУстанавливает Shift per contract на все контракты текущего ММ
Confirmation on start Вывод окна подтверждения на запуск ММ

Anchor
Логика работы
Логика работы
Логика работы

На рисунке 6 показана форма ММ, настроенного на котирование двух опционов call и трех – put.

...

  1. к текущей теоретической цене контракта будет прибавлено значение AskSpread. Если не превышены лимиты и разрешено выставление заявок Ask – выставит аsk, ММ выставит заявку с получившейся ценой и объёмом AskQuantity;

    Panel

    Pask = T + Sask + Qposition * Sshift, где:

    • Sask – AskdSpread, размер спрэда между заявками ask и теоретической ценой;
    • Qposition – Curr. Pos, текущая позиция;
    • Sshift – Shift per Contract, корректировка мидмаркетамиддл-маркета.
  2. от теоретической цены будет вычтено значение параметра BidSpread. Если не превышены лимиты и разрешено выставление заявок Bid bid – выставится заявка с получившейся ценой и объёмом BidQuantity;

    Panel

    Pbid  = T - Sbid  + Qposition * Sshift, где:

    • Sbid – AskdSpread,   размер спрэда между заявками bid и теоретической ценой;
    • QpositionCurr. Pos, текущая позиция;
    • Sshift – Shift per Contract, корректировка мидмидlk-маркета.
  3. ММ зафиксирует значение теоретической цены, относительно которой были выставлены заявки;
  4. ММ перейдёт в состояние ожидания. Как только разница между текущей теоретической ценой и сохранённым значением превысит параметр Sensitivity, заявки будут сняты;
  5. ММ повторит выставление.

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

Info

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

Котирование контракта может производится в двух режимахрежиме:

  • режим Стрелок;
  • связанных ММ – объединение контрактов в группу для согласованного набора позиций.

Anchor
Режим Стрелок
Режим Стрелок
Режим Стрелок

Для применения режима следует установить переключать переключатель Shooter. После запуска : 

  1. к текущей теоретической цене контракта прибавляется значение AskSpread. Если полученное значение не превышает текущую цену лучшего бида, то ММ выставит заявку по данной цене. 
    Объем ММ рассчитает цену заявок ask и bid (см. первый и второй пункт в разделе Логика работы);
  2. будет выставлена заявка ask, если рассчитанная цена больше или равна цене лучшей заявки bid. Объем заявки рассчитывается как наименьшее из текущего объема лучшего бида и значения параметра Quantity;
  3. от текущей теоретической цены вычитается значение BidSpread. Если полученное значение не превышает текущую цену лучшей заявки ask, то выставляется заявка выставится по данной ценебудет выставлена заявка bid, если рассчитанная цена меньше или равна цене лучшей заявки ask
    Объем бида заявки рассчитывается как наименьшее из текущего объема лучшей заявки ask и значения параметра Quantity;
  4. выставленная заявка заявки снимается, если не была исполнена исполняются немедленно.

Возможно задавать отрицательные

...

спрэды. В этом случае соответствующие цены будут отсчитываться в

...

обратном направлении от теоретической цены.

Info

Если одновременно необходимо задать оба спрэда заданы по цене или по /волатильности одновременно, то их сумма обязательно должна быть положительна. 
Задание одного из спрэдов по цене, а другого по волатильности не рекомендуется.

Режим связанных маркет-мейкеров

По Позиции по контрактам, объединенным в одну группу, позиция будет будут набираться постепенно, в зависимости от размера позиций других роботов контрактов в группе.

Tip

Например, необходимо купить стрэддл в объёме 100 путов и 100 колов. В настоящий момент в стакане таких объёмов заявок нет. Объединив Следует объединить контракты в группу , и выставив им одинаковый и задать параметры:

  • верхний лимит (Upper limit=100)
и
  • ;
  • количество контрактов в заявке (Quantity=5)
, при

При исполнении заявки на 5 контрактов по одному из контрактов соответствующий контракту, ММ прекратит выставление новых заявок до тех пор, пока не исполнится такой же объём по второму контракту.

Включить ММ контракт в группу или исключить из нее можно при помощи галочки переключателя Join.

Рисунок 10 – работа с ММ

Порядок работы связанных ММ следующий:

  1. для каждого

    робота высчитывается его текущий

    контракта высчитывается значение Cur. joint level – текущий уровень позиций относительно нуля

    (Cur. joint level), который равен частному от деления текущей позиции Curr. pos. на количество контрактов в заявке Quantity. Знак берется в зависимости

    .  

    Panel

    Li = Qcurrent / Qorder, где:

    • Qcurrent – Bid Quantity или Ask Quantity, размер заявок;
    • Qorder – Curr. Pos, текущая позиция.


    Знак зависит от направления торговли и знака

    текущей позиции:
    • для Bid – плюс при положительной позиции, минус при отрицательной;
    • для Ask – плюс при отрицательной позиции, минус при положительной.
    Например, для контракта с Quantity=5, направлением торговли Bid и 

    позиции (табл. 3).
    Таблица 3 – знак параметра Cur. joint level

     BidAsk
    Current position ≥ 0+-
    Current position < 0+-
    Tip

    Например, если Quantity=5, Curr. pos.=20

     текущий уровень позиций 

    , направление торговли Bid, то Cur. joint level=4.

  2. при каждой сделке или смене количества контрактов в заявке совершении сделки или изменении объема заявки текущий уровень позиций пересчитывается;
  3. для всей группы рассчитывается максимальный уровень позиций Max. joint level;

    Panel

    Lmax = max(Li)

  4. ММ выставляет заявку с заданным в параметре Quantity количеством, если его текущий при условии:
    1.  текущий уровень позиций (Current joint level) меньше максимального уровня позиций в группе
    или, если все ММ достигли одинакового уровня. При этом выполняется правило, по которому объем в заявке не должен превысить текущие
    1. (Max joint level);
    2.  все ММ достигли одинакового уровня Current joint level
    При этом учитываются лимиты Lower limitUpper limit.

В интерфейсе отображаются текущие лимиты, больше которых робот ММ не набирает - Cur. upper limit для Bidзаявок bid, и Cur. lower limit для Askзаявок askЕсли при работе у одного или нескольких маркет-мейкеров ММ возникнут ошибки, то вся группа останавливается, заявки снимаются.

...

  1. пункт 1 – рассчитанные значения заявок bid и ask, по которым маркет-мейкер будет выставлять заявки, а также мидмиддл-маркет. Значения приводятся в единицах цены и единицах волатильности; 
  2. пункт 2 – рыночные значения по инструменту;
  3. пункт 3 – параметр Accumulated shift показывает величину накопленного сдвига позиции (текущее значение позиции, умноженное на значение параметра Shift per contract).
  4. пункт 4 – текущие параметры, относящиеся к связанным маркет-мейкерам:
    • Cur. joint level – текущий уровень позиций относительно нуля;
    • Max. joint level – максимальный среди связанных маркет-мейкеров ММ уровень позиций;
    • Cur. upper limit – текущий верхний лимит позиций для Bidbid, больше которого робот ММ не набирает;
    • Cur. lower limit – текущий нижний лимит позиций для Offerask, меньше которого робот ММ не набирает.

Котирование по волатильности

...

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

Настройка вида таблицы

Для настройки таблицы используются кнопки на верхней панели:

...