Versions Compared

Key

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

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

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

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

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

Column
width400px
Panel
bgColor#F5F5F5
borderStyledotted

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

Table of Contents

Работа

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

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

Рисунок 1 – форма работы с маркет-мэйкеромМаркет-мэйкер

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

Image Added

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

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

  • открыть окно настройки;
  • запустить;
  • остановить;
  • удалить.

    выбранного маркет-мейкера. 

    Image Added

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

    Создание маркет-мейкера

    Создать нового маркет-мэйкера мэйкер можно по схеме, представленной ниже.

    Рисунок 1 – 4 – схема создания маркет-мэйкера

    Info

    Если стратегия с указанным именем не существует, она будет создана.

    Запуск и остановка

    Способы запуска/остановки маркет-мейкера:

    1. нажать на название правой кнопкой мыши и выбрать команду Start/Stop;
    2. нажать кнопку Image Removed/Image Removed в окне настроек и управления или в форме Market Makers.

    Удаление

    ...

    .

    ...

    Выбор контрактов

    ...

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

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

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

    Рисунок 3 – 6 – выбор контрактов

    В таблице появятся контракты по выбранным инструментам.

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

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

    Info

    Котировать сразу все контракты не рекомендуется. Таблица будет перегруженной и неудобной для навигации. Рекомендуется добавить только необходимые контракты.

    ...

    создать несколько маркет-мейкеров.

    Запуск и остановка

    Способы запуска/остановки маркет-мейкера:

    1. нажать на название правой кнопкой мыши и выбрать команду Start/Stop;
    2. нажать кнопку Image Added/Image Added в окне настроек и управления или в форме Market Makers.

    Удаление

    Для удаления модуля следует нажать кнопку Image Added в форме Market Makers

    Anchor
    Настройка ММ
    Настройка ММ
    Настройка маркет-мейкера

    Параметры контракта

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

    Таблица 1 – Параметры контракта

    Параметр
    Описание
    NameТип договора и символКод инструмента
    PriceТекущая теоретическая цена (теоретическая цена опционаформируется только для опционов?)
    Enable

    Определяет, разрешено ли выставление заявок по данному опциону, когда

    маркет-мейкер запущен
    Bid

    Условие: выставлять ли по данному контракту бид в систему. Опция нужна для возможности выставлять односторонние котировки.

    Если флажки bid и ask робот (котирование всей серии. А разве мы всю серию котируем, или только этот контракт из серии) запущен

    Если флажки Bid и Ask не установлены, заявки не будут выставляться

    Bid

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

    Ask

    Условие: выставлять ли по данному контракту бид в систему. Опция нужна для возможности выставлять односторонние котировки.

    Если флажки bid и ask не установлены, заявки не будут выставляться

    ShooterЗадает режим "Стрелок" по данному контракту. Подробнее о режиме "Стрелок" - ниже
    Join

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

    ShooterВыбор режима Стрелок (кратко, о чем он? суть режима.)
    Join

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

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

    позиций. Подробнее в разделе Режим связанных маркет-мейкеров

    позиций 

    Bid Quantity

    Размер заявок

    бида

    на продажу.

    Данный параметр можно задавать как

    Параметр можно задать:

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

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

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

    то робот уменьшит количество контрактов в

    выставляемой

    заявке на продажу до 20.


    Параметр может

    Upper Limit

    Нижний лимит размера позиции. Может быть задан со знаком "минус"

    Upper LimitРобот

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

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

    то робот уменьшит количество контрактов в

    выставляемой

    заявке на покупку до 20.


    Параметр может быть задан со знаком "минус"

    Bid Spread

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

    Если вводится с окончанием 'p' или без окончания, например 100p или 100, то спрэд задаётся в единицах цены.

    Если вводится с окончанием 'v', то спрэд задаётся в единицах волатильности, например 2v означает спрэд между бидом и теоретической ценой в 2 процента волатильности.Параметр может быть задан в единицах цены (например, 100p или 100) или в единицах волатильности (например, 2v)

    Параметр может быть задан со знаком "минус"

    Ask Spread

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

    Если вводится с окончанием 'p'или без окончания, например 100p или 100, то спрэд задаётся в единицах цены.

    Если вводится с окончанием 'v', то спрэд задаётся в единицах волатильности, например 2v означает спрэд между оффером и теоретической ценой в 2 процента волатильности.Параметр может быть задан в единицах цены (например, 100p или 100) или в единицах волатильности (например, 2v)

    Параметр может быть задан со знаком "минус"

    SensitivityУправляет чувствительностью робота Чувствительность к изменению рынкацены. Например, если мы выставили котировки в момент, когда теоретическая цена равнялась 4000, при этом чувствительность равна 10, то при котировка выставлялась при теоретической цене  4000, чувствительность – 10. При изменении цены более чем на 10 пунктов (<3990 или>4010) робот маркет-мейкер перевыставит заявки по текущей теоретической цене. Данный параметр также можно задавать в единицах волатильности (например, 1v или 3v)
    Shift per contractИспользуется для корректировки Корректировки мидмаркета при совершении сделок. ДопустимНапример, если параметр задан равным равен 5, то при совершении сделки на продажу объёмом три контракта, следующая пара заявок будет выставляться не по теоретической цене, а по теор. цена + 5*3, то есть заявки . Заявки оттянутся вверх для уменьшения вероятности совершения дополнительных продаж. Данный параметр также можно задавать в единицах волатильности (например, 1v или 3v)
    Curr. Pos.Показывает текущую набранную позицию

    ...

    Общие параметры

    На вкладке задаются Settings задаются настройки для всех контрактов. Если хотя бы один маркет-мейкер запущен, то для того чтобы эти настройки вступили в силу, нужно нажать кнопку Apply changes.

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

    ...

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

    Рисунок 6 9 – настроенная форма маркет-мэйкера

    ...

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

      Panel

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

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

      Panel

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

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

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

    Info

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

    Детальное отображение

    Для дельного просмотра параметров необходимо раскрыть контракт.

    Image Removed

    Рисунок 7 – детальное отображение

    В дополнительном поле отображаются:

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

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

    Для того чтобы теоретическая цена рассчитывалась по заданной пользователем волатильности, нужно перейти к настройкам модели ценообразования текущей серии, нажав на кнопку Select model в правом верхнем углу. При этом появится форма, в которой можно задать волатильность для каждого страйка (рис. 8).

    Image Removed

    Рисунок 8 – котирование по волатильности 

    Чтобы вернуть биржевую волатильность, нужно ввести значение 0 и нажать Enter.

    Подробнее о настройках моделей ценообразования.

    ...

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

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

    Anchor
    Режим Стрелок
    Режим Стрелок
    Режим Стрелок (общие положения)

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

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

    ...

    Info

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

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

    ...

    По контрактам,

    ...

    объединенным в одну группу,

    ...

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

    Tip

    Например, необходимо купить стрэддл

    ...

    в объёме 100 путов и 100 колов. В

    ...

    настоящий момент в стакане таких объёмов нет

    ...

    . Объединив

    ...

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

    ...

    ,

    ...

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

    Включить

    ...

    ММ в группу или исключить из нее можно при помощи галочки Join. Объединять маркет-мейкеров можно только внутри одной серии.

    Image Modified

    Рисунок

    ...

    10 – работа с маркет-мейкерами

    В целом алгоритм работы связанных маркет-мейкеров выглядит следующим образом:

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

    ...

      • – плюс при положительной позиции, минус при отрицательной;
      • для

    ...

      • Ask – плюс при отрицательной позиции, минус при положительной.
      Например, для контракта с Quantity=5, направлением торговли Bid и Curr. pos.=20 текущий уровень позиций Cur. joint level=4.
    1. при каждой сделке или смене количества контрактов в заявке текущий уровень позиций пересчитывается;
    2. для всей группы рассчитывается максимальный уровень позиций Max. joint level;
    3. маркет-мейкер выставляет заявку с заданным в параметре Quantity количеством, если его текущий уровень позиций меньше максимального уровня позиций в группе или, если все маркет-мейкеры достигли одинакового уровня. При этом выполняется правило, по которому объем в заявке не должен превысить текущие лимиты Lower limitUpper limit.

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

    Режим связанных маркет-мейкеров работает и для режима Стрелок.

    Просмотра дополнительных параметров контракта

    Для детального просмотра параметров необходимо раскрыть контракт, нажав значок Image Added.

    Image Added

    Рисунок 11 – детальное отображение

    В дополнительном поле отображаются:

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

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

    Для того чтобы теоретическая цена рассчитывалась по заданной пользователем волатильности, нужно перейти к настройкам модели ценообразования текущей серии, нажав на кнопку Select model в правом верхнем углу. При этом появится форма, в которой можно задать волатильность для каждого страйка (рис. 12).

    Image Added

    Рисунок 12 – котирование по волатильности 

    Чтобы вернуть биржевую волатильность, нужно ввести значение 0 и нажать Enter.

    Подробнее о настройках моделей ценообразования.