Dmitryy
Dmitryy личный блог
08 мая 2019, 20:10

Паритет опционов Put и Call, моделируем на языке R

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

Зачем нам язык R?


А зачем нам вообще нужен язык R? Строго говоря, он нам не нужен. Но если его освоить, он становится просто еще одним удобным инструментом, как калькулятор или Excel. В прошлой статье были комментарии о том, что лучше использовать C# или Python. Да, я совершенно согласен, именно их и нужно использовать для программирования законченной и оттестированной модели. Но для разработки модели, для экспериментов и для обучения, R подходит как нельзя лучше. Когда строят самолеты, сначала делают деревянный макет, вот для таких макетов и будем использовать R, чтобы убедиться, что взлетит и не тратить силы зря на то, что летать не будет.


Опционы Put и Call, что такое паритет?


Пожалуйста, не читайте это, если вы не знаете, что такое опционы. А если прочтете, не серчайте, если ввёл кого-то в заблуждение.


Сняв с себя ответственность, за неточность дальнейших формулировок, можно теперь сказать, что опцион call — это право покупки актива, по определенной цене. Опцион put — это право продажи актива по определенной цене. Исходя из того, что мы можем покупать и продавать опционы и базовый актив, паритетом опционов называется следующее выражение:


Паритет опционов Put и Call, моделируем на языке R

  • C — опцион Call
  • P — опцион Put
  • S — базовый актив
  • E — страйк, цена исполнения
  • r — процентная ставка
  • T, t — время

Другими словами, когда вы покупаете Call и продаете Put на одном страйке, прибыль от роста или падения, будет точно такой же, как если бы вы просто купили базовый актив. Это и есть паритет, т.е. нельзя сделать прибыль из воздуха, всё привязано к цене базового актива.


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

Моделируем поведение актива


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


Паритет опционов Put и Call, моделируем на языке R
  • μ — drift — дрейф
  • σ — volatility — волатильность
  • δt — timestep — временной шаг
  • Φ — нормально распределенная случайная величина

Это можно записать как (ссылка на код будет в конце статьи):

Паритет опционов Put и Call, моделируем на языке R


На выходе получаем такой вот график поведения базового актива:

Паритет опционов Put и Call, моделируем на языке R

Рассчитываем стоимость опционов


Не будем разжигать споры о применимости формулы Блэка-Шоулза, я знаю, что здесь есть как сторонники, так и противники этой формулы, наша цель просто сделать модель. Для расчета стоимости опционов используем следующие формулы (да, их уже много раз приводили здесь, но я привожу еще раз, для целостности картины):
Паритет опционов Put и Call, моделируем на языке R



Паритет опционов Put и Call, моделируем на языке R



У нас появились дополнительные параметры, которые нам понадобятся:
  • N(d) — функция нормального распределения
  • r — процентная ставка
  • E — страйк
  • T — время экспирации
 

Соединяем всё вместе и строим график


Напишем функции на языке R для этих формул и построим графики.

Паритет опционов Put и Call, моделируем на языке R


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


Выполним и получим следующий график:

Паритет опционов Put и Call, моделируем на языке R


Пояснения к цвету линий:
  • красная — цена базового актива
  • зеленая — цена опциона call с экспирацией T
  • синяя — цена опциона put c экспирацией T
  • оранжевая — график паритета опционов


Как мы видим на графике, паритет соблюдается независимо от поведения базового актива. И важно заметить, что он сохраняет небольшой рост — это рост благодаря безрисковой процентной ставке, которая обычно равна доходности ОФЗ.

Код можно найти здесь github.com/dmitryy/finance/blob/master/RScripts/put-call-parity.R
43 Комментария
  • Дмитрий Новиков
    08 мая 2019, 20:44
    Имей ввиду с фьючерсом такое не пройдёт. И обрати внимание, что стреддл даст.
      • Дмитрий Новиков
        08 мая 2019, 21:17
        Dmitryy, процентную ставку убери. Ты же не вкладываешь деньги которые чего то там стоят. Значит и начислять тебе незачто 
      • Дмитрий Новиков
        08 мая 2019, 21:21
        Dmitryy, цены всюду формульный. Просто волу БА ты задал. Задай теперь волу Опционам. 
  • ch5oh
    08 мая 2019, 20:57

    Тимофей Мартынов  добавьте пожалуйста пост в раздел «Опционы». Спасибо!

  • ch5oh
    08 мая 2019, 20:59

    Клево! Продолжайте пожалуйста, очень интересно следить за ходом мысли. Особенно редко на СЛ встречается готовность поделиться кодом на R.

     

    Успеха!

     

    ПС Примите процентную ставку == 0.

    Оранжевая должна стать строго горизонтальной.

  • Savin
    08 мая 2019, 21:06
    ну наконец то формулы, блть уже ломать начало, ну когда же новые формулы то завезут, спать плохо стал!)
  • vladdidaddi
    08 мая 2019, 21:34
    Поясните нубу, зачем вам паритет стоимости производных на базовый актив? Что эта информация вам даст? Да, я в курсе, что опционный рынок гораздо объёмнее рынка базового актива (акций), но не являются-ли эти гигантские объёмы на опционном рынке так называемыми «глупыми деньгами» — деньгами хомяков, которым не хватает на покупку базового актива? Зная, где больше коллов, чем путов, вы предсказываете движение в этом направлении, или как?  А если эти коллы — хэдж базового актива (шорт по акциям), а не самостоятельная позиция? А если не голый хэдж, а более сложная конструкция? А если хэдж, но банк уже вышел из позиции, и не будет опционы исполнять. Попытки предсказать в какую сторону сдвинется паритет — это как угадать стоимость литра молока, анализируя (только) транспортные тарифы перевозчиков.
  • vladdidaddi
    08 мая 2019, 22:02
    Там зачастую нужно больше денег
    Опцион call на покупку 100 акций Амазона на не очень далёком страйке требует больше денег, чем покупка 100 акций Амазона прямо сейчас? Серъёзно?
    • ch5oh
      08 мая 2019, 22:39

      vladdidaddi, Возможно, дело в следующем (буду писать для рынка ФОРТС, у Вас в Валиноре логика примерно такая же плюс/минус).

       

      Пришел человек с 50 тыр на счете. Торгует 1 лот фьючерса на СИ с ГО порядка 5 тыр. Доволен. "Я — трейдер". Самомнение до небес, девушки интересуются и все такое. Самое главное, что мани-менеджмент паршиво, но выполнен. Будем считать, что ГО/Счет==1-к-10 — годный ММ для внутридневной скальпинга с коротким стопом.

       

      Пришел другой человек. Он видит куда дует ветер и хочет работать от продажи опционов. Продать 1 опцион — не вопрос. ГО те же самые 5 тыр. Только никому нафиг не надо продавать 1 опцион. Ему дельту не выровнять, фактически, позиция не обладает опционными свойствами.

       

      Поэтому он продает минимум 10 опционов. ГО минимум 50 тыр. Чтобы выполнить требования ММ у него должен быть счет уже более 500 тыр.

       

      Отсюда возникает НАБЛЮДЕНИЕ, что для торговли опционами надо больше денег, чем для торговли фьючерсами.

  • vladdidaddi
    08 мая 2019, 22:20
    Да, вам продадут 100 колов,

    Сколько денег с меня за это возьмут, столько же как и за 100 акций?

    Я хочу поставить под сомнение ваше утверждение, что для покупки опциона требуется такая же сумма, а зачастую больше (sic), сколько для приобретения базового актива. 
  • Андрей К
    08 мая 2019, 23:16
    осталось инфраструктуру построить вокруг формул =))
    • ch5oh
      08 мая 2019, 23:26
      Андрей К, зачем? Там денег мало-мало в абсолюте.
      • Андрей К
        08 мая 2019, 23:29
        ch5oh, я так примерно прикинул, если не котировать (не стоять в стакане) с идеальной разработкой лет за 8-10 отобьется =))

        если котировать и брать некий риск на себя, то возможно быстрее
        • ch5oh
          08 мая 2019, 23:43

          Андрей К, расходы на инфраструктуру будут все съедать кмк.


          Это можно работать чисто как вишенку на торте. Если у Вас и так есть сервер в стойке и все очень быстро работает. Тогда почему бы не охотиться за нарушением паритета в дополнение к уже работающему портфелю алгоритмов.

           

          =) Но пользы для рынка больше, если котировать опционы в-деньгах.

          • Андрей К
            08 мая 2019, 23:46
            ch5oh, 
            Но пользы для рынка больше, если котировать опционы в-деньгах.
            а для этого нужна сильная подготовка, потому что когда в деньгах собьют одну ногу, то на второй 100% ликвидности не будет, и чего тогда делать? это уже брать риск и что то придумывать.

            достоверно знаю, кто в таких паритетах берет риск на себя с придумыванием второй ноги, в апреле год назад совсем нехорошо себя чувствовали
            • ch5oh
              09 мая 2019, 00:00
              Андрей К, мы же про ХФТ вроде бы? Если со второй (и третьей) ноги слетает ликвидность — лимитник надо успеть отменить, конечно.
  • Андрей К
    08 мая 2019, 23:49
     
    в дополнение к уже работающему портфелю алгоритмов.
    когда рынок нормальный, квартальная экспира генерит сумму. Либо если рынок не нормальный, но в квартале был трендовый день, который посшибал 2-3 серии страйков, тогда то же кварталка нормальная.
  • Simon Tarsus
    09 мая 2019, 19:36
    Спасибо за статья. А как вы исторические данные в R Studio загоняете?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн