Котирование опционной серии

Вопросы по программе Plazer
Ответить
Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Котирование опционной серии

Сообщение Kirill Braulov » Сб 20 май 2017, 19:22

В сборке 418 добавил в опционный портфель министратегию MarketMaker в первом приближении. Позволяет котировать заданную опционную серию на заданном диапазоне страйков. Можно добавить сразу несколько (пробовал две) и тогда будет одновременное котирование нескольких серий.

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

На тестовом полигоне сейчас нет нормальной серии опционов на RTS (на июньской серии только два страйка). Поэтому тестировал на GAZR-6.17. Пробовал министратегию с такими параметрами:

Код: Выделить всё

OptSer:140617,Strikes:11000-15000,BidOffset:20,AskOffset:30,BidVolume:10,AskVolume:10,Range:2
Параллельно, конечно, включил министратегию дельтахеджа. Все котирует как задумано. Даже получилось немного заработать. Вот какую позу за несколько дней набрал робот:
Изображение

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Re: Котирование опционной серии

Сообщение Kirill Braulov » Сб 27 май 2017, 13:12

В сборке 422 сделал отступы котировок динамически меняющимися. В зависимости от текущей гаммы и/или веги. Добавил такие параметры к министратегии:
  • MinBidOffset - начальное смещение вниз от модели для бидов (если текущая гамма и вега позиции = 0);
  • MinAskOffset - начальное смещение вверх от модели для асков, (если текущая гамма и вега позиции = 0);
  • MaxBidOffset - максимальное смещение вниз от модели для бидов; достигается, когда текущая гамма приблизится к MaxLongGamma или вега к MaxLongVega;
  • MaxAskOffset - максимальное смещение вверх от модели для асков; достигается, когда текущая гамма приблизится к MaxShortGamma или вега к MaxShortVega (по модулю);
  • MaxLongGamma - если заданно, то текущая гамма позиции будет использоваться для определения отступов бидов от модели; если гамма становится больше заданного максимума, то биды перестают выставляться;
  • MaxShortGamma - если заданно, то текущая гамма позиции будет использоваться для определения отступов асков от модели; если гамма по модулю становится больше заданного максимума, то аски перестают выставляться;
  • MaxLongVega - если заданно, то текущая вега позиции будет использоваться для определения отступов бидов от модели; если вега становится больше заданного максимума, то биды перестают выставляться;
  • MaxShortVega - если заданно, то текущая вега позиции будет использоваться для определения отступов асков от модели; если вега по модулю становится больше заданного максимума, то аски перестают выставляться;

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Re: Котирование опционной серии

Сообщение Kirill Braulov » Сб 27 май 2017, 13:32

Сейчас привязка к гамме и веге в точке текущей цены БА, т.е. она не зависит от того, на каком страйке выставляется котировка. Но, возможно, надо привязываться к котируемому страйку. Вот пример:
Изображение
Здесь гамма и вега в текущей цене немного отрицательные. И по текущему алгоритму аски на всех страйках будут немного отодвигаться от модели. Т.е. будет повышенная вероятность набирать позу в лонг. Но видно, что на страйке 14250 как раз лучше набирать не в лонг, а в шорт.

Если посмотреть график гаммы у этой позы:
Изображение

то видно, что на страйке 14250 гамма сильно положительная. Возможно, потом алгоритм нужно будет подкорректировать, и учитывать гамму/вегу не в текущей цене БА, а на каждом страйке свою. Но пока в этом не уверен.

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Re: Котирование опционной серии

Сообщение Kirill Braulov » Вт 19 сен 2017, 21:05

Решил все-таки учитывать гамму на каждом страйке свою. Вот пример позы:
Изображение
Если учитывать гамму только в текущей цене БА, то заявки выставляются вот так:
Изображение
Здесь большими треугольниками выделены наши заявки. Поскольку в текущей цене гамма у позиции положительная, то аски стоят ближе к рынку, чем биды. На всех страйках с одинаковым отступом. Но глядя на позу, очевидно, что это неправильный подход. Начиная где-то с 60000 страйка гамма становится отрицательной. И там уже наоборот - нужно отдалять аски и приближать биды (к рынку). Когда это реализовал, то заявки расположились уже так:
Изображение
Видно, что в области отрицательной гаммы (выше 60000 страйка) биды максимально приблизились к рынку, а аски стали отдалятся. И вероятность набирать в лонг стала повышенной, а в шорт - пониженной. Т.е. наша отрицательная гамма должна постепенно возвращаться к нулю. В области положительной гаммы наоборот: биды отдаляются, а аски приближаются. Правда тут им помешала текущая биржевая цена (черная жирная линия). В стратегии был установлен флажок, чтобы не выставлять котировки "хуже" теорцены от биржи (биды не выше теорцены, а аски - не ниже).

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

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Re: Котирование опционной серии

Сообщение Kirill Braulov » Вт 19 сен 2017, 21:36

В сборке 430 убрал параметры: MaxLongVega и MaxShortVega. И добавил два новых:
  • StrikeGamma - если 1, то для каждого страйка используется гамма на этом страйке; если 0, то везде используется текущая гамма (гамма в точке текущей цены БА);
  • CheckTheor - если 1, то цены котировок будут не хуже теорцены от биржи (т.е. биды не будет выше, а аски ниже теорцены); если 0, то теорцена от биржи никак не будет учитываться.
Пример набора параметров для котирования опционной серии Si-9.17M210917:

Код: Выделить всё

OptSer:210917,Strikes:55000-64000,MaxLongGamma:5,MaxShortGamma:2,
MinBidOffset:10,MinAskOffset:10,MaxBidOffset:100,MaxAskOffset:100,
BidVolume:100,AskVolume:100,
Range:5,StrikeGamma:1,CheckTheor:0

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Re: Котирование опционной серии

Сообщение Kirill Braulov » Вс 08 окт 2017, 16:44

В сборке 436 добавил возможность совершать сделки не только котированием, но и просто мониторингом и перехватом выгодных котировок. Поэтому теперь можно совершать сделки не только с OTM/ATM опционами, но и c ITM (глубоко в деньгах). Котировать такие опционы - опасно и накладно. Дельта у них большая и при любом изменении цены БА будет сильно меняться и стоимость опциона. Придется часто переставлять котировки => повышенные транзакционные расходы. К тому же, в какой-то момент можно не успеть переставиться и попасть под более быстрого ММ. Но следить за такими опционами все-таки хочется. Судя по истории, иногда там можно совершать выгодные сделки. Поэтому сделал возможность мониторинга и перехвата котировок.

Добавил два параметра: MaxDeltaQ и MaxDeltaH. Первый задает максимальную дельту у опционов, которые будут котироваться (Quoted). Второй - максимальную дельту опционов для перехвата (Hunted).

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Re: Котирование опционной серии

Сообщение Kirill Braulov » Вс 08 окт 2017, 16:53

Пример. Вот такая министратегия ММ на Si-12.17:

Код: Выделить всё

OptSer:211217,Strikes:56000-65000,MaxLongGamma:1.3,MaxShortGamma:0.1,MinBidOffset:2,MinAskOffset:2,MaxBidOffset:100,
MaxAskOffset:100,BidVolume:10,AskVolume:10,Range:5,StrikeGamma:1,CheckTheor:1,MaxModelError:5000,MaxDeltaQ:0.6,MaxDeltaH:0.9
через несколько дней работы (на тестовом полигоне) набрала вот такую позу:
Изображение

Часть сделок была сделана котированием, часть - перехватом чужих котировок.

У позы сильно выраженная положительная гамма. Это из-за настроек министратегии, в которых заданно предпочтение положительной гамме:
MaxLongGamma:1.3,MaxShortGamma:0.1

Котировальные заявки в данный момент выглядят так:
Изображение

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

Kirill Braulov
Сообщения: 196
Зарегистрирован: Вт 18 апр 2017, 18:31

Отступ котировок с учетом дельты опциона

Сообщение Kirill Braulov » Сб 02 дек 2017, 00:00

В сборке 450 добавил параметр: MulDelta. Чтобы в смещении котировки учитывалась дельта опциона. Формула пока такая:

Код: Выделить всё

  
  BidPrice = BidPrice - Abs(Sqr(MulDelta)*Delta);
  AskPrice = AskPrice + Abs(Sqr(MulDelta)*Delta);
Т.е. чем больше (по модулю) дельта у опциона, тем дальше будет отстоять котировка.

По умолчанию MulDelta=0. Вот как будут выглядеть котировки (если поза еще не набрана):
Изображение

MulDelta=5:
Изображение

MulDelta=10:
Изображение

MulDelta=15:
Изображение

Этот параметр может пригодиться, если отклик до биржи не такой быстрый как хотелось бы. Поскольку цена опциона (с большой дельтой) может слишком быстро меняться, то котировки таких опционов могут быстро стать невыгодными, а программа не успеет их переставить. С помощью MulDelta можно в какой-то мере обезопасить себя от такого.

Ответить