Опционы

  • Ценообразование опциона
  • Перекос опционов
  • Хеджирование опционов

Ценообразование опциона

Определение справедливой цены опциона является широко известной проблемой ценообразования опционов в современных финансах. Здесь вы узнаете, как вы можете запрограммировать эту задачу на Python, с помощью метода Монте-Карло (LSM) наименьших квадратов.

Знакомство:

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

Самые основные формы «ванильных» опционов, торгуемых на финансовых рынках, делятся на два стиля: «Европейский опцион» и «Американский опцион». Полное освещение «Европейского варианта» доступно в этой замечательной статье:

https://towardsdatascience.com/systematically-pricing-financial-options-with-black-scholes-4998c591ccbd

Эта статья посвящена стилю «Американский вариант», который является математически более сложной проблемой¹. Формально «Ameican Option» — это контракт, который:

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

Почему финансовые опционы торгуются на финансовом рынке?

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

  • Первая причина заключается в защите от неблагоприятных движений рынка, которые могут повлиять на портфель (известное как хеджирование). Приведем пример. Представьте, что я «покупаю» опцион колл акций FB по цене 1 доллар США (так называемый премиальный сбор) с ценой исполнения 10 долларов США при сроке погашения 1 год. Теперь, в течение года, даже если акции FB уйдут в «ноль» (в крайнем случае), общий убыток для покупателя будет ограничен, равным $1. Однако в случае увеличения стоимости акций FB у вас есть «неограниченная» прибыль. Вы можете увидеть это на левом участке ниже. Глядя на кривую «Покупателя», убыток ограничен $1.
График прибыли Vs базовая цена оценок. Слева: Колл-опцион с ценой (премиум) 1$. Справа: Опцион Пут с ценой (премией) 1$.
Прибыль против базового актива. Слева: колл-опцион с ценой (премией) 1$. Справа: опцион пут с ценой (премией) 1$. Ссылка: https://youtu.be/K3ZxLELsY2w

Таким образом, опционы являются отличным инструментом для хеджирования, предоставляя:

Ограниченный убыток и неограниченная прибыль.

  • Вторая причина заключается в том, что опционы предоставляют платформу для выражения спекулятивных взглядов на движения рынка. Например, если кто-то думает, что акция вырастет в цене на 50% в течение следующего года, вместо того, чтобы платить, скажем, 100 000 долларов за покупку акций (надеясь заработать 50 000 долларов через год), он может купить опцион колл на 100 000 долларов (заплатив цену опциона, скажем, 5000 долларов). Если цена акций действительно вырастет на 50% в следующем году, то получится $50 000-$5000 = $45 000. Хотя кто-то заработал на 5000 долларов меньше, чем альтернатива простой покупки акций, тот факт, что нужно заплатить 5000 долларов (против 50 000 долларов), чтобы войти в сделку, означает, что потенциальная отдача от инвестиций намного выше. Итак, вкратце:

Опционы предоставляют платформу для выражения спекулятивных взглядов на рынок.

Что означает «Ценообразование опционов»?

В приведенном выше примере (Вторая причина) я сказал (предположил), что «цена опциона, скажем, 5000 долларов». Вопрос в том, какую «справедливую сумму» опцион «Покупатель» должен будет заплатить, чтобы «владеть» опционом?

Определение ценности этой справедливой цены является широко известной проблемой ценообразования опционов в современных финансах.

Как найти справедливую цену опциона?

В этом уроке я расскажу о методе основополагающей статьи (Longstaff & Schwartz, 2001), известной как наименьшие квадраты Монте-Карло (сокращенно LSM), чтобы оценить американский пут-опцион. Я пройдусь по методу шаг за шагом в Python, но общую картину метода можно резюмировать ниже:

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

Пример выполнения метода LSM:

Для согласованности с Paper и проверки репликации я буду использовать «Числовой пример» Paper в качестве бегущего примера. Тем не менее, реализация легко обобщается на более сложные модели цены / продолжения стоимости.

Шаг 1: Построение таблицы траекторий цен на акции:

Здесь мы «жестко кодируем» ценовые пути из Бумаги. У нас есть восемь ценовых путей со зрелостью в третий год.

# required packageimport numpy as np
import pandas as pd
from scipy.stats import norm# generate the pathspath_1 = np.array([1.00, 1.09, 1.08, 1.34])
path_2 = np.array([1.00, 1.16, 1.26, 1.54])
path_3 = np.array([1.00, 1.22, 1.07, 1.03])
path_4 = np.array([1.00, 0.93, 0.97, 0.92])
path_5 = np.array([1.00, 1.11, 1.56, 1.52])
path_6 = np.array([1.00, 0.76, 0.77, 0.90])
path_7 = np.array([1.00, 0.92, 0.84, 1.01])
path_8 = np.array([1.00, 0.88, 1.22, 1.34])

Для большей читабельности я показываю ценовые пути в формате pd.dataframe:

# stacking the paths in the rowsprice_paths = np.array([path_1, path_2, path_3, path_4,path_5, path_6, path_7,path_8])# for more readability, convert numpy data to datframeS = pd.DataFrame(data=price_paths, index=np.arange(1,8+1),
columns=["t=0","t=1", "t=2", "t=3"])S.index.name = "Path"S
  • Шаг 2: Построение матриц стоимости упражнений и денежных потоков:

exercise_payoff — это матрица, которая содержит немедленную отдачу, которую вы можете получить при использовании опциона. В этом примере цена исполнения составляет $1,1. (К=1,1)

# Strike PriceK = 1.10# immediate reward from exercising the Put option at texercise_payoff = np.maximum(K - S, 0)exercise_payoff

Матрица денежных потоков в момент времени t=2:

cf расшифровывается как cash-flow matrix, где, начиная справа, он имеет тот же столбец, что и матрица немедленной выплаты, но через алгоритм (ниже) нам нужно заменить каждый столбец.

# cf is the short version for Cash-flow matrixcf = exercise_payoff.copy()cf[:] = 0cf.loc[:,"t=3"] = exercise_payoff.loc[:, "t=3"]cf
  • Шаг 3: Регрессия в момент времени t=2:

Обратите внимание, что в то время (t = 2) вектор Y является единственным выигрышем в момент времени (t = 3), так как у нас нет никакого значения продолжения за раз (t = 3), поскольку он содержит состояния «Терминал».

# dicount factor based on 6% riskless ratedf = np.exp(-0.06 * 1)# This is a table for all the pathtable_t_2 = pd.DataFrame({"Y":cf["t=3"]*df, "X":S["t=2"]})id_money_t_2 = S[S.iloc[:, 2] < K].indextable_t_2_inmoney=table_t_2.loc[id_money_t_2]table_t_2_inmoney
rg_t_2 = np.polyfit(table_t_2_inmoney["X"], table_t_2_inmoney["Y"], 2)print("The Conditional Expectaion function is %.3f + %.3fX %.3fX^2" %(rg_t_2[2], rg_t_2[1], rg_t_2[0]))

Шаг 4: Оптимальное раннее решение о выполнении упражнений в момент времени t=2:

Найдя функцию ожидания Cćonditional, мы можем найти «Оптимальное решение» по каждой цене.

# Here we use our regression model to predict continutaion value at # time t=2 (c_t_2)C_t_2 = np.polyval(rg_t_2, S.loc[id_money_t_2,"t=2"])# The Exercise payoff is "K- S.loc[id_money_t_2, "t=2"]" while Continutaion C_2_tOpt_dec_org = pd.DataFrame(data={"Exercise":exercise_payoff.loc[id_money_t_2, "t=2"], "Continution":C_t_2})Opt_dec = Opt_dec_org.round(4)Opt_dec

Матрица денежных потоков в момент времени t=2:

# Here is the decision point, if continuation if bigger than exercise payoff, we exercise,# otherwise continuecf.loc[id_money_t_2,"t=2"] = np.where(exercise_payoff.loc[id_money_t_2,"t=2"] > C_t_2, exercise_payoff.loc[id_money_t_2,"t=2"], 0)# When at any time t>>t+1, we execise, cashflow in rest of steps is equal to zerocf.loc[id_money_t_2,"t=3"] = np.where(cf.loc[id_money_t_2,"t=2"] > 0,0, cf.loc[id_money_t_2,"t=3"])cf

Регрессия в момент времени t=1

table_t_1 = pd.DataFrame({"Y":cf["t=2"]*df, "X":S["t=1"]})   # This is a table for all the pathid_money_t_1 = S[S.iloc[:, 1] < K].indextable_t_1_inmoney=table_t_1.loc[id_money_t_1]rg_t_1 = np.polyfit(table_t_1_inmoney["X"], table_t_1_inmoney["Y"], 2)print("The Conditional Expectaion function is %.3f  %.3fX %.3fX^2" %(rg_t_1[2], rg_t_1[1], rg_t_1[0]))
C_t_1 = np.polyval(rg_t_1.round(3), S.loc[id_money_t_1].iloc[:,1])Opt_dec_org_t_1 = pd.DataFrame(data={"Exercise":exercise_payoff.loc[id_money_t_1, "t=1"], "Continution":C_t_1})Opt_dec_t_1 = Opt_dec_org_t_1.round(4)Opt_dec_t_1cf.loc[id_money_t_1,"t=1"] = np.where(exercise_payoff.loc[id_money_t_1,"t=1"] > C_t_1,exercise_payoff.loc[id_money_t_1,"t=1"], 0)cf.loc[id_money_t_2,"t=2"] = np.where(cf.loc[id_money_t_1,"t=1"] > 0, 0, cf.loc[id_money_t_1,"t=2"])cf

Шаг 5: Дисконтируйте время и среднее значение всех путей для получения значения опциона в момент времени t= 0

DCF_all_paths = cf["t=1"]*df + cf["t=2"]*df**2 + cf["t=3"]*df**3Option_Value = sum(DCF_all_paths)/8print("The value of American Put Option is: %.4f" % (Option_Value))

Если вышеуказанный результат (0,1144) согласуется с осуществлением документа.

Выводы

В вышесказанном был введен пошаговый подход к построению интуиции. Ниже я собрал все коды в одну функцию с именем «Val_Ame_Put_Opt».

import numpy as np
import pandas as pd
from scipy.stats import norm

# We generate the prices in eight paths, according to the table of LSM paper
# eight paths

path_1 = np.array([1.00, 1.09, 1.08, 1.34])
path_2 = np.array([1.00, 1.16, 1.26, 1.54])
path_3 = np.array([1.00, 1.22, 1.07, 1.03])
path_4 = np.array([1.00, 0.93, 0.97, 0.92])
path_5 = np.array([1.00, 1.11, 1.56, 1.52])
path_6 = np.array([1.00, 0.76, 0.77, 0.90])
path_7 = np.array([1.00, 0.92, 0.84, 1.01])
path_8 = np.array([1.00, 0.88, 1.22, 1.34])

price_paths = np.array([path_1, path_2, path_3, path_4, 
            path_5, path_6, path_7,path_8])

S_Example = pd.DataFrame(data=price_paths,
                index=np.arange(1,8+1))
S_Example

def Val_Ame_Put_Opt(S, K, Nsteps, paths, r, T):

    dt = T/Nsteps
    df = np.exp(-r * dt)   
    
    exercise_payoff = np.maximum(K - S, 0)             
    
    cf = exercise_payoff.copy()
    cf[:] = 0
    cf.iloc[:,Nsteps] = exercise_payoff.iloc[:, Nsteps]
    

    for t in range(Nsteps-1,0,-1):

        table_t = pd.DataFrame({"Y":cf.iloc[:,t+1]*df, "X":S.iloc[:,t]})
        id_money_t = S[S.iloc[:, t] < K].index
        
        table_t_inmoney=table_t.loc[id_money_t]

    
        rg_t = np.polyfit(table_t_inmoney["X"], table_t_inmoney["Y"], 2)
   
        C_t = np.polyval(rg_t, S.loc[id_money_t].iloc[:,t])
    

        cf.loc[id_money_t,t] = np.where(exercise_payoff.loc[id_money_t,t] > C_t, 
            exercise_payoff.loc[id_money_t,t], 0)

        for tt in range(t, Nsteps):
            
            cf.loc[id_money_t,tt+1] = np.where(cf.loc[id_money_t,t] > 0, 
                0, cf.loc[id_money_t,tt+1])

    Sum_DCF = 0

    for t in range(Nsteps,0,-1):
    
        Sum_DCF = sum(cf.loc[:,t])*np.exp(-dt*r*t) + Sum_DCF

    Option_Value = Sum_DCF/paths

    # return both cashflow and the price of the option
    return cf, Option_Value

S = S_Example

# Strike Price
K_val = 1.1

# Number of exercise times until end of horiozon
Nsteps_val = 3

# Number of path
paths_val = 8

# Riskless Free rate
r_val = 0.06

# End of the Horizon
T_val = 3

CF_example,Value_Example = Val_Ame_Put_Opt(S=S_Example, K=K_val, \
                                           paths=paths_val \
                                           , r=r_val, T=T_val, \
                                           Nsteps=T_val)

print("The Cash Flow matrix resulting from LSM method")
print(CF_example)

print("The Value of American Put Option is:  %.4f" % Value_Example)

Заключение:

Я хотел бы добавить, что я многому научился, читая лекции доктора Ашвина Рао из Стэнфорда. Я настоятельно рекомендую его новую книгу «Основы обучения с подкреплением» всем, кто хочет узнать больше о современном методе ценообразования опционов.

  • В этом посте я представил пошаговый подход к тому, как использовать метод Наименьших квадратов Монте-Карло (LSM) для ценообразования американского пут-опциона.
  • В общей картине американское ценообразование опционов основано на трех основных столпах: построение модели для стоимости продолжения → Используйте модель, чтобы найти оптимальное время остановки дисконтируйте будущую отдачу и найдите справедливую цену.
  • Как описано выше, в методе LSM модель значения Continuation является линейной.
  • Метод LSM, описанный выше, обеспечивает основу для поиска справедливой цены американского опциона пут. Более богатые ценовые модели (например, GBM) и более сложные методы моделирования для построения значения продолжения (например, добавление функции функции функции или использование модели нейронной сети) могут быть легко добавлены в вышеуказанную структуру в качестве расширений.

[1]: Когда дело доходит до американского опциона пут, модель Блэка-Шоулза не учитывает раннее исполнение опциона пут; следовательно, аналитическое решение неприменимо для американского пут-опциона.

Перекос опционов

Часть 1: Паритет пут-колл и волатильность улыбаются

Сначала я объясню, как паритет пут-колл указывает на то, что подразумеваемая волатильность, используемая для ценовых колл-опционов, такая же, как и для ценовых пут-опционов, а затем я определяю волатильность, улыбку и перекос волатильности.

Паритет пут-колл

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

PV(X) может быть представлен в непрерывном времени следующим образом:

Поскольку паритет пут-колл является неарбитражным отношением, он будет иметь значение независимо от того, является ли распределение цены базового актива логнормальным, как того требует модель ценообразования опционов Блэка-Шоулза-Мертона.

Если мы просто переставим паритет пут-колл и обозначим индексы для цен опционов, чтобы указать, являются ли они рыночными ценами или ценами опционов Блэка-Шоулза-Мертона, будут сгенерированы следующие два уравнения:

Вычитая второе уравнение из первого, мы получаем:

Взаимосвязь показывает, что при одинаковой цене исполнения и времени до истечения срока действия цены опционного рынка, которые отклоняются от цен, продиктованных моделью Блэка-Шоулза-Мертона, будут отклоняться в одинаковой степени, независимо от того, относятся ли они к коллу или путу.

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

Улыбка волатильности и перекос волатильности

Фактические цены опционов в сочетании с моделью Блэка-Шоулза-Мертона могут использоваться для генерации подразумеваемой волатильности, которая может отличаться от исторической волатильности. Когда опционные трейдеры позволяют подразумеваемой волатильности зависеть от цены исполнения, генерируются модели подразумеваемой волатильности, которые напоминают «улыбки волатильности».

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

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

Сводка

Паритет пут-колл указывает на то, что отклонение между рыночными ценами и ценами Блэка-Шоулза-Мертона будет эквивалентно для коллов и путов.

Следовательно, подразумеваемая волатильность будет одинаковой для коллов и путов.

Часть 2: Валютные опционы и опционы на акции

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

Валютные опционы

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

Самый простой способ понять, почему подразумеваемая волатильность для опционов «вне денег» выше, чем для опционов «при деньгах», — это рассмотреть следующие примеры колл и плейт. Для коллов валютный опцион окупится только в том случае, если фактический обменный курс выше страйк-курса.

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

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

Опционы на акции

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

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

В качестве причин этой повышенной подразумеваемой волатильности были выдвинуты две причины — кредитное плечо и «крашофобия».

  • Действие рычага- Когда стоимость собственного капитала фирмы уменьшается, размер кредитного плеча увеличивается, что существенно увеличивает рискованность или «волатильность» базового актива. Когда капитал фирмы увеличивается в цене, размер кредитного плеча уменьшается, что, как правило, снижает рискованность фирмы. Это снижает волатильность базового актива. При всем остальном существует обратная зависимость между волатильностью и оценкой базового актива.
  • Крашофобия- Второе объяснение, используемое после краха фондового рынка в 1987 году (когда промышленный индекс Доу-Джонса потерял колоссальные 22%, а S&P 500 потерял 20,4% только в этот день), было придумано Марком Рубинштейном как «крашофобия». Участники рынка просто боятся очередного обвала рынка, поэтому они делают ставку на вероятность резкого падения цены акций. Цены пут будут демонстрировать более высокую премию, чем ниже цена исполнения — глубокие путы без денег обеспечивают защиту от существенного падения цен на акции; Глубокие потребности в деньгах позволяют получить большую отдачу, если цены на акции вырастут. Существует некоторая поддержка гипотезы крашофобии Рубинштейна, потому что перекос волатильности имеет тенденцию увеличиваться, когда фондовые рынки падают, но не так заметен, когда фондовые рынки растут в цене.

Сводка

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

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

Часть 3: Альтернативные методы изучения улыбок волатильности, структуры терминов волатильности и поверхностей волатильности

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

Альтернативные методы изучения волатильности улыбок

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

Один из альтернативных методов включает замену цены исполнения ценой исполнения, деленной на цену акции (X / S0). Этот метод приводит к более стабильной улыбке волатильности.

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

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

Структура терминов волатильности и поверхности волатильности

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

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

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

Стохастический процесс возврата к среднему

Стохастический процесс — это не что иное, как математически определенное уравнение, которое может создать серию результатов с течением времени, результатов, которые не являются детерминированными по своей природе. То есть он не следует какому-либо простому заметному правилу, например, цена будет увеличиваться на X процентов каждый год или доходы будут увеличиваться в плюс процентов.

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

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

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

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

и дисперсия составляет

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

У нас есть условие, при котором

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

Сводка

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

Часть 4: Греки опционов и скачки цен

В этой статье сначала я объясню влияние улыбки волатильности на расчет «греков», а затем объясню влияние скачков цен на активы на улыбки волатильности.

Вариант греков

Греки опционов указывают на ожидаемые изменения цен на опционы, учитывая изменения основных факторов, влияющих на цены опционов.

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

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

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

Скачки цен

Скачки цен могут происходить по ряду причин.

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

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

Скачкообразно-диффузионный стохастический процесс

Стохастический процесс — это не что иное, как математически определенное уравнение, которое может создать серию результатов с течением времени, результатов, которые не являются детерминированными по своей природе. То есть он не следует какому-либо простому заметному правилу, например, цена будет увеличиваться на X процентов каждый год или доходы будут увеличиваться в плюс процентов.

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

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

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

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

где известны функции f и g и где вероятностный процесс равен

Сводка

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

Скачок цены может вызвать волатильность, «хмурые» вместо улыбки.

Часть 5: Альтернативные стохастические процессы и постоянная эластичность дисперсии (CEV)

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

Стохастический процесс броуновского движения

Стохастический процесс — это не что иное, как математически определенное уравнение, которое может создать серию результатов с течением времени, результатов, которые не являются детерминированными по своей природе. То есть он не следует какому-либо простому заметному правилу, например, цена будет увеличиваться на X процентов каждый год или доходы будут увеличиваться в плюс процентов.

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

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

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

Предположим, что процесс X, где

тогда и только тогда, когда Xt непрерывен, где начальная точка равна

где обычно распределен со средним нулем и дисперсией единицей или

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

Затем процесс

следует геометрическому броуновскому движению, где α — параметр дрейфа, σ — мера волатильности, и

такой, что

или X и dX являются логарифмически распределенными. Если в нулевое время,

то математическое ожидание процесса в любой момент времени t таково, что

и дисперсия процесса в момент времени равна

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

Альтернативные стохастические процессы

Большинство формул ценообразования опционов в профессиональной литературе предполагают, что цена базового актива S следует геометрическому броуновскому движению

Где μ — скорость дрейфа [которая в нейтральном к риску мире определяется как безрисковая ставка (r) — дивидендная доходность (D)], σ — волатильность цены акции, а dz — винеровский процесс. Используя модель цены базового актива, мы можем определить, как цена актива меняется со временем, основываясь на приведенных выше параметрах.

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

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

где dz — винеровский процесс со стандартным отклонением 1 и средним значением 0. Рассмотрим его значения на заданных дискретных интервалах времени, на расстоянии Δt друг от друга:

где ΔS — изменение S в выбранном интервале времени Δt, а εt — случайный рисунок из стандартного нормального распределения.

Это, естественно, упрощение реальности.

Наблюдаемые распределения доходности акций обычно имеют более толстые хвосты и более высокие пики, на которые впервые указал Митчелл (1915), чем то, что подразумевает логнормальная модель цены опциона BSM. Существует два основных подхода к решению этой проблемы.

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

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

Мы рассмотрим 3 различные корректировки:

  1. Постоянная эластичность дисперсии (CEV)
  2. BSM с поправкой на чрезмерную асимметрию и эксцесс
  3. Скачкообразные диффузии (JD)

Постоянная эластичность дисперсии (CEV)

Подход постоянной эластичности дисперсии (CEV) предполагает, что в нейтральном к риску мире процесс цены акций составляет:

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

Где μ — скорость дрейфа [которая в нейтральном к риску мире определяется как безрисковая ставка (r) — дивидендная доходность (D)], σ — волатильность цены акций, dz — это процесс Винера, а α — константа, которая принимает значение больше 0.

В соответствии с подходом CEV, когда α дается как 1, то CEV падает до стандартного логарифмического нормального процесса цены акций.

Исходя из приведенного выше процесса, мы можем оценивать европейские опционы аналогично стандартному варианту Блэка-Шоулза-Мертона, но вместо использования кумулятивного нормального распределения используется нецентральное распределение хи-квадрат с переменными, определенными ниже.

Алгоритмы реализации нецентрального распределения хи-квадрат вы можете найти в нашем разделе кода. Стоимость европейского звонка по методу CEV может быть показана в следующих формулах.

Колл-опционы:

Пут опционы:

Переменные a, b и c задаются как:

Некоторые известные частные случаи для этой модели получаются для разных значений выключения.

  • α = 0 дает нормально распределенную цену актива.
  • α = 0,5 приводит к модели постоянной эластичности дисперсии квадратного корня (SRCEV), эквивалентной модели Кокса, Ингерсолла и Росса (1985) без средней обратной части.
  • α =1 дает модель цены акций BSM

Сводка

Все различные версии формулы Блэка-Шоулза-Мертона, представленные в литературе, первоначально выведенные на основе базового актива S, следуют геометрическому броуновскому движению

где μ — ожидаемая мгновенная норма прибыли на базовый актив, σ — мгновенная волатильность нормы доходности, а dz — процесс Винера.

Формула BSM предполагает, что волатильность постоянна в течение всего срока действия опционного контракта. Однако эмпирические данные фондовых рынков показывают, что волатильность часто отрицательно коррелирует с уровнем цен на акции.

Другими словами, волатильность имеет тенденцию увеличиваться по мере снижения цены акций. Кокс (1975) и Кокс и Росс (1976) встроили такой эффект в так называемую модель постоянной эластичности дисперсии.

Часть 6: Асимметрия и эксцесс для логнормальной нормы

В этой статье я сначала дам определение асимметрии и эксцесса, а затем объясню, как вычислить асимметрию и эксцесс для логарифмического нормального распределения.

Понимание статистики прогноза

Большинство распределений могут быть определены с точностью до четырех моментов. Первый момент описывает его местоположение или центральную тенденцию (ожидаемая доходность), второй момент описывает его ширину или разброс (риски), третий момент — его направленный перекос (наиболее вероятные события), а четвертый момент — его пик или толщину в хвосте (катастрофические потери или прибыли). Все четыре момента должны быть рассчитаны на практике и интерпретированы, чтобы обеспечить более полное представление об анализируемом проекте. Risk Simulator предоставляет результаты всех четырех моментов в представлении «Статистика» на графиках прогноза.

Измерение центра распределения — первый момент

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

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

Измерение разброса распределения — второй момент

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

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

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

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

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

Измерение перекоса распределения — третий момент

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

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

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

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

Измерение катастрофических событий хвоста в распределении — четвертый момент

Четвёртый момент, или эксцесс, измеряет пикированность распределения. Этот эффект показан на рисунке ниже.

Фон (обозначается пунктирной линией) представляет собой нормальное распределение с эксцессом 3,0 или избыточным эксцессом 0,0. Результаты Excel показывают избыточное значение эксцесса, используя 0 в качестве нормального уровня эксцесса, что означает, что отрицательный избыточный эксцесс указывает на более плоские хвосты (платикуртические распределения, такие как равномерное распределение), в то время как положительные значения указывают на более толстые хвосты (лептокуртические распределения, такие как T Стьюдента или логнормальные распределения).

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

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

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

Определение асимметрии и эксцесса

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

где

— среднее значение наблюдений, σ — стандартное отклонение, n — количество наблюдений. Нормальное распределение всегда имеет нулевую асимметрию, будучи симметричным распределением.

Эксцесс описывает относительную пикированность распределения. Эксцесс измеряется четвертым моментом о среднем. Чтобы сделать вещи более запутанными, существует более одного определения эксцесса.

Эксцесс Пирсона определяется как

Эксцесс Фишера, с другой стороны, определяется как

Таким образом, эксцесс Фишера — это просто эксцесс Пирсона минус 3.

  • Нормальное распределение имеет эксцесс Пирсона 3 (эксцесс Фишера 0) и называется мезокуртикой.
  • Распределения с эксцессом Пирсона больше 3 (по Фишеру выше 0) называются лептокуртиками, что указывает на более высокие пики и более толстые хвосты, чем нормальное распределение.
  • Эксцесс Пирсона меньше 3 (по Фишеру ниже 0) называется платикуртиком.
  • Эксцесс Пирсона выше 3 также называют избыточным эксцессом, или просто «жировыми хвостами». Прежде чем рассчитывать асимметрию и эксцесс от цен на активы.

Асимметрия и эксцесс для логнормального распределения

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

где

σ — волатильность в годовом исчислении, а T — временной горизонт для нашего анализа (обычно истечение срока действия деривативного контракта). Обратите внимание, что все логарифмические нормальные распределения имеют положительную асимметрию. Другими словами, логарифмическое нормальное распределение всегда смещено вправо.

Например, какова асимметрия и эксцесс цены акций в экономике BSM, где цена акций следует геометрическому броуновскому движению, волатильность доходности активов составляет 30%, а временной горизонт составляет три месяца?

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

Сводка

Вы когда-нибудь задумывались, почему эта статистика рисков называется моментами? На математическом языке момент означает возведенный в степень некоторой величины.

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

Фактически, приведенные ниже уравнения иллюстрируют математические функции и приложения некоторых моментов для выборочной статистики.

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

Часть 7: Джарроу и Радд (1982) и Коррадо и Су (1996) Модели асимметрии и эксцесса

В этой статье я представлю две модели ценообразования опционов, которые непосредственно корректируют модель BSM с учетом третьего и четвертого момента асимметрии распределения и эксцесса: модель Jarrow & Rudd (1982) и модель Corrado & Su (1996).

Модель асимметрии и эксцесса Джарроу и Радда

Модель Jarrow & Rudd (1982) в основном представляет собой модель BSM, скорректированную на асимметрию и эксцесс, которые отличаются от логарифмического нормального распределения.

Таким образом, модель корректирует асимметрию и эксцесс непосредственно в цене актива (а не в распределении доходности):

где CBSM — стандартная формула BSM. Сверх того

γ1(A) и γ2(A) представляют асимметрию и эксцесс из логнормального распределения, в то время как γ1(F) и γ2(F) представляют асимметрию и эксцесс из распределения, которое мы хотим аппроксимировать.

Таким образом, λ1 и λ2 представляют собой избыточную асимметрию и эксцесс.

Пут может быть найден с помощью суперсимметрии put-call или с помощью четности put-call.

Модель асимметрии и эксцесса Коррадо и Су

Corrado & Su (1996) (включая исправление Brown & Robinson, 2002) опубликовали модель, несколько похожую на модель Jarrow & Rudd (1982).

Коррадо и Су расширяют модель BSM для ненормальной асимметрии и эксцесса в распределении доходности акций, а не через цену акций.

Это имеет то преимущество, что параметры, как правило, инвариантны во времени для доходности, но не для ценовых уровней.

Математически Коррадо и Су используют разложение ряда Грама-Шарлье для плотности вероятности, чтобы получить корректировку формулы BSM в замкнутой форме.

Расширение приводит к следующему:

где μ3 — асимметрия, а μ4 — эксцесс Пирсона доходности активов, CBSM — простое ванильное значение BSM, и

Например, рассмотрим европейский колл-опцион на акцию с трехмесячным сроком действия. Текущая цена акций составляет 100, цена исполнения — 125, безрисковая ставка — 7%, волатильность — 35%, асимметрия — 0,1, а эксцесс Пирсона — 5,5 ожидаемой доходности.

значение Блэка-Шоулза составляет CBSM = 1,1419, что дает нам значение вызова с поправкой на асимметрию и эксцесс

Очевидно, что асимметрия и эксцесс могут оказать существенное влияние на стоимость опциона, в данном случае 1,5776 против 1,1419 по формуле BSM.

Часть 8: Модифицированные модели Коррадо и Су (2004) и суперсимметрии асимметрии асимметрии-эксцесса Хауга (2002)

В этой статье я представлю еще две модели ценообразования опционов, которые напрямую корректируют модель BSM с учетом третьего и четвертого момента асимметрии распределения и эксцесса: модифицированная модель Corrado & Su (2004) и модель Хауга Skewness-Kurtosis Put-Call Supersymmetry (2002).

Модифицированная модель асимметрии-эксцесса Коррадо и Су

Для того, чтобы опционная модель была свободной от арбитража, она должна удовлетворять ограничению мартингейла (см., например, Longstaff, 1995).

Юрченко, Майе и Негреа (2004) показывают, что формула Коррадо-Су не удовлетворяет ограничению мартингейла, и соответствующим образом модифицируют его.

Это дает значение вызова

где μ3 — асимметрия, а μ4 — эксцесс Пирсона доходности активов, CBSM — простое ванильное значение BSM, и

где, как и раньше, n(.) — нормальная функция плотности, μ3 — асимметрия, а μ4 — эксцесс Пирсона обратного распределения.

Значение put можно найти с помощью суперсимметрии put-call или четности put-call.

Например, рассмотрим европейский колл-опцион на акцию с трехмесячным сроком действия. Текущая цена акций составляет 100, цена исполнения — 125, безрисковая ставка — 7%, волатильность — 35%, асимметрия — 0,1, а эксцесс Пирсона — 5,5 ожидаемой доходности.

значение Блэка-Шоулза составляет CBSM = 1,1419, что дает нам значение вызова с поправкой на асимметрию и эксцесс

Очевидно, что асимметрия и эксцесс могут оказать существенное влияние на стоимость опциона, в данном случае 1,5761 против 1,1419 по формуле BSM.

Суперсимметрия асимметрии асимметрии и эксцесса Хауга (2002)

Еще одна полезная симметрия между опционами колл и пут определяется выражением

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

что вместе с приведенной выше симметрией подразумевает суперсимметрию put-call

и естественно

Таким образом, значение колла равно значению минус пут с отрицательной волатильностью, и наоборот. Результат упрощает кодирование и реализацию многих расчетов опционов. Больше нет необходимости разрабатывать или кодировать отдельные формулы для опционов пут и колл.

Суперсимметрия пут-колл может быть распространена на многие экзотические опционы и справедлива также для американских опционов. См. Адамчук (1998), Пескир и Ширяев (2001), Хауг (2002) и Асе (2004) для получения более подробной информации о суперсимметрии, а также обсуждения отрицательной волатильности.

Хауг (2002) расширяет стандартную суперсимметрию, представленную выше, чтобы также удерживать путы и вызовы с учетом асимметрии и эксцесса:

и, естественно, также

где μ3 — асимметрия, а μ4 — эксцесс. Этот результат справедлив для разложений формулы BSM Эджворта и Грэма-Чарли, а также для многих дискретных реализаций.

Часть 9: Backus, Foresi, & Wu (1997) и Knight & Satchell (2001) Модели асимметрии и эксцесса

В этой статье я представлю еще две модели ценообразования опционов, которые непосредственно корректируют модель BSM с учетом третьего и четвертого момента асимметрии распределения и эксцесса: модель Backus, Foresi, & Wu (1997) и модель Knight & Satchell (2001).

Бэкус, Форези и Ву (1997) Модель асимметрии и эксцесса

Backus, Foresi, and Wu (1997) показывают, как можно регулировать волатильность в модели BSM, чтобы учесть асимметрию и эксцесс:

где

Чтобы оценить опцион, просто введите волатильность с поправкой на асимметрию и эксцесс и в формулу BSM.

Корректировка, по-видимому, вполне согласуется с моделью Corrado & Su (1996) до тех пор, пока опцион является форвардом по деньгам (или, по крайней мере, близким к форварду по деньгам). Для опционов «вне денег» такой подход кажется не очень точным.

Найт и Сэтчелл (2001) Модель асимметрии и эксцесса

Найт и Сэтчелл (2001) показывают, как повернуть нормальную функцию плотности

в функцию плотности, учитывающую ненормальную асимметрию и эксцесс:

где μ3 — асимметрия, а μ4 — эксцесс Пирсона.

Часть 10: Модели скачкообразной диффузии

Модели скачкообразной диффузии

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

Модель диффузии Мертона (1976)

Примером такой модели является модель скачкообразной диффузии Мертона (1976).

Модель предполагает, что цена базового актива следует процессу скачкообразной диффузии:

где dz — броуновское движение, как и раньше, а dq — скачкообразная составляющая.

Предполагается, что два стохастических процесса dz и dq не коррелируют.

Теперь модель требует оценки двух дополнительных параметров, помимо модели BSM: ожидаемое количество скачков в год 0 и процент общей волатильности, объясняемой скачками γ.

Затем Мертон показывает, что

где

Где υ — общая волатильность с учетом скачков.

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

Бейтс (1991) Обобщенная модель прыжка-диффузии

Вслед за моделью Мертона-76 Бейтс (1991) опубликовал более общую модель скачкообразной диффузии (подробнее о ценообразовании опционов в соответствии с предположениями о скачкообразной диффузии см. также Болл и Тороус (1983), Болл и Тороус (1985), Асе (1988) и Амин (1993)).

Работа Бейтса отличается от моделей скачкообразной диффузии Мертона (1976), Болла и Торуса (1983) и Болла и Тороуса (1985) несколькими важными аспектами:

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

Модель скачкообразной диффузии Бейтса (1991) согласуется с асимметричной улыбкой волатильности (сгенерированной из модели типа BSM). Это часто то, что мы наблюдаем на практике.

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

Это, кажется, гораздо ближе к реальности, чем модель Мертона (1976), особенно для опционов на фондовые индексы во время обвала рынка. Бейтс (1991) предписывает следующий процесс диффузии скачков при нейтральной по риску вероятностной мере:

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

Исходя из этого процесса, Бейтс разрабатывает следующие формулы для европейских опционов колл и пут:

где

где

и δ — это стандартное отклонение скачков цен на логарифмические активы.

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

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

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

где

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

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

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

Методы разложения Эджворта и Грама-Шарлье имеют ограниченную способность сопоставлять распределения с высоким эксцессом и большой асимметрией.

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

Тогда мы часто увидим, что модели асимметрии-эксцесса имеют проблемы с соответствием модели скачкообразной диффузии.

Итог

Стохастический процесс — это не что иное, как математически определенное уравнение, которое может создать серию результатов с течением времени, результатов, которые не являются детерминированными по своей природе. То есть он не следует какому-либо простому заметному правилу, например, цена будет увеличиваться на X процентов каждый год или доходы будут увеличиваться в плюс процентов.

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

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

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

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

где известны функции f и g и где вероятностный процесс равен

Хеджирование опционов

Это изображение имеет пустой атрибут alt; его имя файла - image-7-1024x518.png
Это изображение имеет пустой атрибут alt; его имя файла - image-1.png

Часть I: Интуиция, основы и немного больше интуиции

Изучая основы торговли деривативами, не будет преувеличением сказать, что большую часть 6–12 месяцев я был довольно бесполезен. Такие фразы, как «нейтральная мера риска» и «исчисление Ито», за которыми последовали обращения к книгам со страницами, заваленными стохастическими дифференциальными уравнениями, странным образом не прояснили основные идеи дельта- и гамма-хеджирования в моей голове.

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

  • Моя постоянная путаница между оценкой деривативов, основанной на статистических аргументах, и аргументами репликации
  • Лучше всего я учусь на конкретных примерах, используя графики или симуляции, а не теоретические идеи

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

Что такое опцион?

Ради всего нижеперечисленного, «опцион» будет относиться к «ванильному опциону колл». Существуют также «опционы пут», но нам пока не нужно беспокоиться о них — паритет пут-колл гарантирует, что почти все пункты, высказанные о колл-опционах, применимы к опционам пут. Чтобы использовать классическое определение, произнесенное почти 100100/100, когда кого-то просят определить колл-опцион:

«Колл-опцион дает вам право, но не обязательство покупать акции по фиксированной страйк-цене на момент истечения срока действия».

Жирным шрифтом обычно выделяется бит, в котором люди меняют тон голоса. Для меня это определение, которое имеет непосредственный смысл, если вы уже знаете, что такое колл-опцион; А если нет, то в нем просто много жаргона. Это означает, что это не очень поучительное определение. Чтобы понять это простыми словами, нам сначала нужно понять, почему вы покупаете или продаете акции.

Зачем мне покупать акции?

Потому что вы думаете, что он растет (забудьте пока о divs/праве голоса). Если акция растет на 1, то вы делаете 1. Если акция растет на 2, то вы делаете 2 (это может довольно быстро надоесть). Однако, чтобы получить шанс заработать «линейно», как только что описано, если акции вырастут, вы также проиграете, если акции упадут. Если он упадет на 1, то вы потеряете 1 и т. д. и т. д. Чтобы действительно перепроектировать суть, но для ясности мы можем нарисовать это на графике ниже.# import the usual suspects
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy.stats as stats
import seaborn as sns
import warnings

# some config
%config Completer.use_jedi = False
warnings.filterwarnings(‘ignore’)
sns.set()

pxs = np.linspace(80, 120, 41)
pnls = pxs — 100

fig, ax = plt.subplots(figsize=(20,12))
ax.axhline(0, color=’black’)
ax.axvline(100, color=’black’)
ax.plot(pxs, pnls, lw=5)

ax.set_title(‘Pnl of buying a stock at P=100’, fontsize=22)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Pnl, \$’, fontsize=22);

png
Изображение автора

На приведенном выше графике цена акций находится по оси x, а на оси y — «PnL» («Прибыль и убыток» — сколько денег вы зарабатываете или теряете). Таким образом, мы видим, что если цена акции S поднимется до 105, то мы сделаем 5. Точно так же, учитывая, что он «линейный», то, 5 если он снизится на 5 до 95, мы потеряем 5. Пока все просто.

Зачем мне покупать опцион (колл)?

Таким образом, очевидно, что на приведенном выше графике у нас есть симметричный выигрыш — если он идет вверх, мы делаем, а если он падает, мы проигрываем поровну. Колл-опцион позволяет нам сбежать из этого мира (ура!!). Если акции растут, мы можем сохранить эти сочные доходы, но если они упадут, нам не нужно об этом беспокоиться. Магия.

Опять же, чтобы сделать вещи наглядными, мы можем отобразить эту взаимосвязь между PnL колл-опциона и «базовой» ценой акций на графике.pxs = np.linspace(80, 120, 41)
pnls = [max(0, s — 100) for s in pxs]

fig, ax = plt.subplots(figsize=(20,12))
ax.axhline(0, color=’black’)
ax.axvline(100, color=’black’)
ax.plot(pxs, pnls, lw=5)

ax.set_title(‘Pnl of buying a call option, strike K=100’, fontsize=22)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Pnl, \$’, fontsize=22);

png
Изображение автора

Таким образом, на приведенном выше графике показана выплата колл-опциона со «страйком» 100 (обычно этому присваивается буква K). Это просто цена, по которой, если акции поднимутся выше, мы сможем удержать деньги. Вышеизложенное показывает, что для колл-опциона, как и раньше5, если акция вырастет на 5 до 105, мы сделаем 5, однако теперь, если она упадет на аналогичную величину, мы «защищены» — мы ничего не теряем.

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

В чем подвох?

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

К сожалению, чтобы получить вышеуказанную выплату, вам нужно заплатить за нее «премию». Если мы заплатим за это премию, P, то мы переведем график немного ниже и получим:K = 100
p = 5
pxs = np.linspace(80, 120, 41)
pnls = [max(0, s — K) — p for s in pxs]

fig, ax = plt.subplots(figsize=(20,12))
ax.axhline(0, color=’black’)
ax.axvline(100, color=’black’)
ax.plot(pxs, pnls, lw=5)

ax.set_title(‘Pnl of buying a call option, strike K={}, premium P={}’.format(K, p), fontsize=22)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Pnl, \$’, fontsize=22);

png
Изображение автора

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

  • Убедитесь, что мы все еще делаем, если акции вырастут (достаточно)
  • потерять фиксированную сумму, если акции упадут, независимо от того, насколько они упадут (вместо того, чтобы терять линейно с падением цены акций)

То, насколько мы готовы затем купить приведенный выше «график выплат», явно зависит от следующего компромисса:

  • сколько стоит опцион (на сколько мы должны сдвинуть приведенный выше график ниже)
  • Если мы ожидаем, что акция окажется на графике — если мы думаем, что она окажется далеко вправо (или даже вероятность этого) — тогда мы все равно можем быть готовы заплатить много за опцион

В связи с этим возникает центральный вопрос:

Как вы рассчитываете, сколько должна стоить вышеуказанная выплата?

Это центральная идея торговли деривативами — выяснить, насколько справедливо смещать график вниз, когда вы покупаете или продаете опцион. Ниже приведены несколько довольно простых подходов.

Заряжайте максимум

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

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

Заряд немного больше, чем исторически

Другой подход может заключаться в том, чтобы посмотреть, сколько точно такой же колл-опцион окупился бы исторически, а затем взимать столько-то плюс немного больше, так что, если вы сделаете это много-много раз, вы должны «усреднить» и заработать это немного. Итак, если исторически вы видите, что он выплатил 3, 4837, давая в среднем 5, то как насчет того, чтобы взимать 63 Таким образом, если вы будете делать это снова и снова, вы «ожидаете», что сделаете 1.

Что-то еще

К сожалению для нашей первой стратегии, кажется, что если мы посмотрим на график, на самом деле нет предела тому, что мы можем потерять, если продадим его. Цена акций (теоретически) может расти и расти, и подниматься до огромного числа, и нам придется выплатить huge_number — 100 в качестве выплаты по колл-опциону. В идеале мы хотим каким-то образом преобразовать вышеуказанную выплату, чтобы она больше не зависела от конечной цены акций. Один из способов попробовать это — заметить, что окончательная цена колл-опциона положительно зависит от конечной цены акций.

Наивные сначала идут на дельта-хеджирование

Если мы признаем это, то можем сделать следующее наблюдение. Если я покупаю колл-опцион и если «базовая» цена акций растет, то окончательная стоимость колл-опциона растет. Точно так же, если он падает, то окончательная стоимость колл-опциона снижается. Один из способов, которым я могу «компенсировать» (или хеджировать) эти «колебания», — это продать часть акций. Если я покупаю колл-опцион, то продаю акции:

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

Мы снова можем показать это графически. Ниже показана выплата, если мы объединим процесс покупки колл-опциона со страйком K=100 100, когда базовая цена акции также находится на 100, но затем мы также продадим 0.5 акции (давайте проигнорируем тот факт, что мы пока говорим о продаже половины акции). Как и выше, предположим, что мы платим премию P=5 за колл-опцион.K = 100
S = 100
p = 5

delta = -0.5
pxs = np.linspace(80, 120, 41)
call_pnls = [max(0, s — K) — p for s in pxs]
stock_pnls = delta * (pxs — S)

fig, axes = plt.subplots(ncols = 2, figsize=(34,12))
axes = axes.reshape(-1)

axes[0].axhline(0, color=’black’)
axes[0].axvline(100, color=’black’)
axes[0].plot(pxs, call_pnls, lw=5)
axes[0].plot(pxs, stock_pnls, lw=5, color=’orange’)

axes[0].set_title(‘Pnl of long call option, short {} stock, strike K={}, premium P={}’.format(delta, K, p), fontsize=30)
axes[0].set_xlabel(‘Stock Price, S’, fontsize=24)
axes[0].set_ylabel(‘Pnl, \$’, fontsize=24);

axes[1].axhline(0, color=’black’)
axes[1].axvline(100, color=’black’)
axes[1].plot(pxs, call_pnls + stock_pnls, lw=5)

axes[1].set_title(‘Combined Pnl of long call option, short {} stock, strike K={}, premium P={}’.format(delta, K, p), fontsize=30)
axes[1].set_xlabel(‘Stock Price, S’, fontsize=24)
axes[1].set_ylabel(‘Pnl, \$’, fontsize=24);

png
Изображение автора

Начнем с графика слева. У нас есть та же синяя линия «хоккейная клюшка», которая относится к выплате колл-опциона по истечении срока действия, предполагая, что мы заплатили за него 5, и он имеет страйк-цену K=100. Затем у нас есть отрицательная наклонная оранжевая линия — это представляет собой акции, которые мы продаем. Мы не продаем 1 акцию, а вместо этого продаем только 0.5, так что, например, если акция растет на 20 и заканчивается на 120, мы теряем только 10, а не 20, и наоборот при снижении.20 Этот выбор продать 0.5 пока является произвольным, но будет объяснен позже.

График справа показывает, что произойдет, если мы объединим эти две линии (или выплаты). Если акции упадут, мы заработаем немного денег на акциях, которые мы продали (так называемая «короткая продажа» акций), а если акции вырастут, у нас будет 2 компенсирующих эффекта:

  • Мы теряем немного денег на тех же акциях, которые мы продали
  • Мы зарабатываем на росте стоимости нашего колл-опциона

В целом, теперь, продав некоторые акции, мы превратили наш график в стиле «хоккейной клюшки» обратно во что-то симметричное. Это похоже на то, что нам все равно, растут акции или падают — мы просто хотим, чтобы они двигались. Насколько? Ну, нам нужно, чтобы он сдвинулся как минимум на 10 (где объединенная линия пересекает ось x), чтобы мы зарабатывали деньги. Если бы премия P=5, которую мы заплатили за опцион, была меньше, нам не понадобилось бы так много двигаться, чтобы мы могли заработать на этой комбинированной выплате.

Откуда взялись 0.5?

Я просто как бы придумал это (вроде). Но в приведенном выше примере это хорошо работает при преобразовании нашего графика. Если бы мы были далеко справа от графика, то 0.5 выглядело бы плохим выбором. Почему? Ну, потому что, если мы намного выше нашего страйка (излом на графике), то стоимость колл-опциона движется «линейно» вместе с ценой акций. Если цена акций вырастет со 130 до 140, то, похоже, наш колл-опцион также вырастет на 10 — с 30 до 40.

Точно так же, если мы находимся намного ниже нашей страйк-цены, то кажется, что цена колл-опциона не реагирует на стоимость акции — падение на 10 с 70 до 60, вероятно, все еще оставляет колл-опцион равным 0. А затем где-то посередине мы сидим посередине — возможно, с «чувствительностью» колл-опциона к цене акций около 0.5.

Отход от «терминальных выплат»

Чтобы развить эту идею, нам нужно отойти от терминальных выплат. В приведенном выше объяснении всего подразумевается идея о том, что все «ценится» в определенный момент времени. В какой-то момент времени, T, мы собираемся проверить цену акции, S, сравнить ее с нашей ценой исполнения K, а затем вычислить окончательную стоимость нашего опциона. S > K, то опцион будет чего-то стоить, в противном случае он будет стоить 0.

Однако как насчет этого конечного момента времени (называемого «истечением срока действия» или «истечением срока действия»)? До истечения срока действия мы все еще хотим знать, сколько стоит опцион — может быть, потому, что мы не хотим ждать истечения срока действия, чтобы продать его. Если у нас еще t t дней до истечения срока действия, нам нужно выяснить, сколько стоят эти t дней. Выгодно ли иметь больше времени до истечения срока действия или меньше?

Значение времени всегда положительно

Это значение времени очень просто называется «временным значением», и для ванильного (европейского — пока игнорируйте) колл-опциона это всегда положительно — всегда лучше иметь больше времени до истечения срока действия, чем меньше. В этом можно убедиться на простом итеративном примере. Допустим, у вас есть колл-опцион со следующими деталями:

  • t=1 день до истечения срока действия
  • K=100 как страйк-цена
  • S=99 как цена акции

Таким образом, у нас остался 1 день до истечения срока действия, и цена акций чуть ниже цены исполнения. Я прихожу и говорю, что куплю у вас твой колл-опцион за 0 — ты его продашь? Надеюсь, что нет. Почему? Ну, потому что, несмотря на то, что мы ниже цены исполнения 100, у нас еще есть время. У нас остался 1 день, когда цена акций может вырасти выше 100, и в этот момент ваш колл-опцион будет чего-то стоить. Конечно, он также может упасть, и в этом случае он будет бесполезен, но он уже будет бесполезен при текущей цене 99.

Другими словами, поскольку время приносит с собой возможность того, что опцион чего-то стоит, вам придется за него заплатить — это «временная стоимость». Как насчет того, если мы возьмем предыдущий пример, но вместо этого цена наших акций будет 60 ниже страйка при S=40. Имеет ли этот сценарий одинаковое значение времени?

Скорее всего, нет. Почему? Потому что мы предполагаем, что гораздо более вероятно, что цена акций вырастет на 2 или 3 в нашем предыдущем примере, чтобы «пересечь страйк» и будет чего-то стоить, чем если она взлетит на 60 (увеличится на 150% за 1 день). Поскольку мы предполагаем, что акции с большей вероятностью совершат небольшие движения, чем большие, то временная стоимость опциона с ценой акций значительно ниже цены исполнения намного меньше.

Рекапитуляция

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

  • Цены колл-опционов положительно связаны с базовой ценой акций
  • Эта чувствительность варьируется — от 0, когда мы находимся намного ниже удара, и 1, когда мы намного выше удара
  • Время имеет ценность — мы предпочитаем иметь колл-опцион с большим временем до истечения срока действия, потому что это дает нам шанс, что, если мы окажемся ниже страйка, мы все равно сможем подняться выше страйка до истечения срока действия, и поэтому колл-опцион будет иметь ценность

И имея это в виду, давайте продолжим смотреть, как значения опционов выглядят до истечения срока действия, и рассмотрим интуитивно понятный пример того, как временная стоимость является результатом возможности дельта-хеджирования — по сути, это две стороны одной медали.

Часть II: Как дельта хеджировать опцион

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

Мы остановились в предыдущей статье, только что придя к тому факту, что время имеет ценность — учитывая выбор, мы бы предпочли иметь опцион с большим временем до истечения срока действия, а не с меньшим временем до истечения срока действия (при прочих равных условиях).

Можем ли мы визуализировать эти отношения?

Другими словами, по сравнению с нашими предыдущими графиками «хоккейной клюшки», которые просто показывают конечную стоимость опциона, как значения опционов выглядят до истечения срока действия? Точная форма приведенных ниже графиков пока не важна, но будет объяснена позже — все, что важно, это то, что приведенные выше идеи представлены в различных линиях на графике.# functions to compute Black-Scholes option prices
def bs_d_one(S, K, sigma, delta_T):

return (1 / (sigma * delta_T**0.5)) * (np.log(S / K) + (sigma**2)/2 * delta_T)

def compute_prices(pxs, K, sigma, T, call=True):

# calculate d1 and d2
d_one = bs_d_one(pxs, K, sigma, T)
d_two = d_one — sigma * T**0.5
# compute deltas and prices
if call:
deltas = stats.norm.cdf(d_one)
prices = pxs * deltas — stats.norm.cdf(d_two) * K
else:
deltas = stats.norm.cdf(d_one) — 1
prices = stats.norm.cdf(-d_two) * K + deltas * pxs

return prices, deltas

# inputs
K = 100
sigma = 0.16
pxs = np.linspace(80, 120, 41)
times = [0.05, 0.1, 0.25, 0.5]
res = {}

# compute terminal payoof
call_pnls = [max(0, s — K) for s in pxs]

# compute option prices
for t in times:
op_pxs = compute_prices(pxs, K, sigma, t, call=True)
res[t] = op_pxs[0]

# plot
fig, ax = plt.subplots(figsize=(20,12))

ax.plot(pxs, call_pnls, lw=2.5, label=’0′)
for l, ps in res.items():
ax.plot(pxs, ps, lw=2.5, label=l)

# label
ax.set_title(‘Value of a call option with differing times remaining, strike K={}’.format(K), fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Option Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

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

  • Все они находятся выше синей линии — это подтверждает идею о том, что время имеет строго положительное значение
  • Они сохраняют грубый наклон синей линии — у нас почти нулевая чувствительность к базовой цене акций намного ниже страйка и чувствительность, близкая к 1 пути выше

Однако есть ключевое отличие от синей линии «хоккейной клюшки»: наши новые линии, которые представляют стоимость нашего колл-опциона, приятны и гладки по сравнению с ценой акций. Мы утратили этот характерный излом. И когда мы видим плавные линии, на ум должна прийти одна идея.

Введите дифференциацию

Сейчас мы имеем ситуацию, когда мы:

  • забота о том, как цена колл-опциона соотносится с ценой базовой акции;
  • Похоже, что эта взаимосвязь гладкая при всех различных ценах на акции (нет никаких перегибов в линиях выплат до истечения срока действия)

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

  • Когда мы находимся намного ниже цены исполнения, наклон должен быть около 0
  • Когда мы намного выше, он должен быть около 1
  • когда мы находимся между ними, он должен плавно двигаться от нуля к 1 с наибольшим изменением, происходящим вокруг страйка K (потому что именно здесь линия «наиболее изогнута» выше)

# inputs
K = 100
sigma = 0.16
pxs = np.linspace(60, 140, 81)

# compute terminal payoff
call_exp = [max(0, s — K) for s in pxs]
# compute call prices
call_pxs = compute_prices(pxs, K, sigma, 0.25, call=True)

# plot
fig, axes = plt.subplots(ncols=2, figsize=(30,12))
axes = axes.reshape(-1)

axes[0].plot(pxs, call_pxs[0], lw=5)
axes[0].plot(pxs, call_exp, lw=2, color=’black’)

axes[0].set_title(‘Valie of long call option, strike K={}’.format(K), fontsize=30)
axes[0].set_xlabel(‘Stock Price, S’, fontsize=22)
axes[0].set_ylabel(‘Option Value (TV)’, fontsize=22);

axes[1].plot(pxs, call_pxs[1], lw=5)

axes[1].set_title(‘Option delta, strike K={}’.format(K), fontsize=30)
axes[1].set_xlabel(‘Stock Price, S’, fontsize=22)
axes[1].set_ylabel(‘Delta’, fontsize=22);

png
Изображение автора

Таким образом, график слева не является чем-то новым — это всего лишь одна из приведенных выше линий, построенных против терминальной выплаты «хоккейной клюшки», которую мы имели все это время. Затем на графике слева показано, как наклон этой линии изменяется на разных уровнях базовой цены акций, S. И опять-таки, как мы уже установили, этот наклон можно интерпретировать как чувствительность цены опциона к базовой цене.

Теперь у нас наконец-то есть ответ на вопрос, почему я вытащил 0,5 из воздуха для приведенного выше простого примера хеджирования (когда мы купили колл-опцион и продали 0.5 акции0.5 чтобы «хеджировать» его). Потому что похоже, что чувствительность для опционов, когда наша базовая цена акций S близка к цене K составляет примерно 0.5. На словах это означает, что при небольшом движении вверх базовой цены S, если бы мы продали 0.5 акции, то:

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

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

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

В приведенном выше примере владения опционом, где базовая цена акции, S, находится на уровне страйка K, почему бы нам просто не держать 0.5 если это идеально отражает поведение колл-опциона? Таким образом, мы можем избежать уплаты премии P.

«Маленькие» ходы

Потому что приведенный выше случай основан на «небольших» движениях базовой цены акций. Насколько маленький? Ну, теоретически настолько маленький, что чувствительность не меняется (например, она была 0,5 до того, как цена акций двигалась, и даже после того, как она двигалась, она все еще была 0.5).0.5 В дальнейшем мы будем называть эту «чувствительность к базовой цене акций» «дельтой», а этот процесс торговли соответствующим количеством акций нейтрализовать изменение стоимости опциона на небольшие движения — дельта-хеджированием.

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

  • ‘at the money’ (ATM): когда цена акции S находится по цене исполнения K
  • «в деньгах» (ITM): когда цена акции S выше цены исполнения K
  • «вне денег» (OTM): когда цена акций S ниже цены исполнения K

Итак, давайте возьмем пример, где у нас есть:

  • цена акции S=100
  • купил 100 колл-опционов со страйком K=100, т.е. это ‘ATM’
  • у нас осталось t=0.25 года до истечения срока действия (3 месяца)

Учитывая, что это банкомат, мы знаем, что дельта будет около 0.5, и поэтому для того, чтобы хеджировать дельту, у нас будет «портфель» из:

  • Длинные колл-опционы
  • 50 акций — так как каждый опцион имеет дельту около 0.5, а у нас их 100

Графически это представлено как:K = 100
sigma = 0.16
pxs = np.linspace(80, 120, 41)

call_pnls = [max(0, s — K) for s in pxs]
op_pxs = compute_prices(pxs, K, sigma, 0.25, call=True)
delta_hedge = [op_pxs[0][20] + op_pxs[1][20]* (p — 100) for p in np.linspace(90, 110, 21)]

fig, ax = plt.subplots(figsize=(20,12))

ax.plot(pxs, call_pnls, lw=2.5, color=’black’, label=’Terminal payoff’)
ax.plot(np.linspace(90, 110, 21), delta_hedge, lw=2.5, color=’orange’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][20]))
ax.plot(pxs, op_pxs[0], lw=2.5, label=’Option value’)

ax.set_title(‘Call option with delta hedge, strike K={}’.format(K), fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Option Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

где мы видим, что мы отметили дельту как 51.6% для этого примера в легенде. Теперь давайте посмотрим, что произойдет, если мы начнем перемещать акции — но вместо «небольших движений», чтобы доказать свою точку зрения, давайте сделаем несколько больших преувеличенных движений и каждый раз повторно хеджируем наш колл-опцион.

Акции растут до 105

Таким образом, в этом случае у нас есть ралли акций на 5%, прежде чем мы сможем скорректировать наше хеджирование. Давайте рассчитаем, какой должна быть наша подходящая дельта-изгородь. Для простоты предположим, что время не прошло (переезд был мгновенным), и поэтому у нас все еще t=0.25 года (т.е. 3 месяца).K = 100
sigma = 0.16
pxs = np.linspace(90, 110, 41)

call_pnls = [max(0, s — K) for s in pxs]
op_pxs = compute_prices(pxs, K, sigma, 0.25, call=True)

delta_hedge = [op_pxs[0][20] + op_pxs[1][20]* (p — 100) for p in np.linspace(95, 105, 11)]
delta_hedge_two = [op_pxs[0][30] + op_pxs[1][30] * (p — 105) for p in np.linspace(100, 110, 11)]

fig, ax = plt.subplots(figsize=(20,12))

ax.plot(pxs, call_pnls, lw=2.5, color=’black’, label=’Terminal payoff’)
ax.plot(pxs, op_pxs[0], lw=2.5, label=’Option value’)

ax.plot(np.linspace(95, 105, 11), delta_hedge, lw=2.5, color=’orange’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][20]))
ax.plot(np.linspace(100, 110, 11), delta_hedge_two, lw=2.5, color=’red’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][30]))

ax.set_title(‘Call option with delta hedge, strike K={}’.format(K), fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Option Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

Таким образом, у нас тот же график, что и раньше, но сейчас мы находимся на S=105, и нашим подходящим дельта-хеджированием является красная линия, а не оранжевая линия. Как видно из легенды графика, от которого мы пошли:

  • Необходимо было продать около 50 акций в качестве хеджирования Delta, чтобы…
  • Необходимо было продать около 75 акций в качестве хеджирования Delta

Не беспокойтесь — давайте просто продадим эти дополнительные 25 акций по 105 и пойдем дальше. Сейчас у нас не хватает 75 акций.

Сейчас акции распродаются до 95

В результате событий акции упали на 10 пунктов со 105 до 95 — опять же, у нас не было возможности скорректировать нашу дельту, поскольку мы «распродали». Но давайте сделаем то же самое, что мы сделали выше — давайте пересчитаем нашу дельту, перерисуем график, а затем соответственно купим или продадим акции, чтобы сбалансировать нашу дельту до соответствующей величины.delta_hedge_three = [op_pxs[0][10] + op_pxs[1][10] * (p — 95) for p in np.linspace(90, 100, 11)]

fig, ax = plt.subplots(figsize=(20,12))

ax.plot(pxs, call_pnls, lw=2.5, color=’black’, label=’Terminal payoff’)
ax.plot(pxs, op_pxs[0], lw=2.5, label=’Option value’)

ax.plot(np.linspace(95, 105, 11), delta_hedge, lw=2.5, color=’orange’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][20]))
ax.plot(np.linspace(100, 110, 11), delta_hedge_two, lw=2.5, color=’red’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][30]))
ax.plot(np.linspace(90, 100, 11), delta_hedge_three, lw=2.5, color=’purple’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][10]))

ax.set_title(‘Call option with delta hedge, strike K={}’.format(K), fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Option Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

Итак, снова тот же график, но на этот раз мы находимся на фиолетовой линии, и, как показывает легенда, наша дельта теперь составляет примерно 25% Однако, согласно нашему дельта-хеджированию на S=105, мы продали 75 акций. Это слишком много, так как сейчас нам нужно всего лишь 25 лет. В итоге выкупим 50 акций по 95, чтобы мы все снова были сбалансированы.

Наконец, цена возвращается к 100

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

Какой в этом был смысл?

Предполагая, что все это произошло мгновенно и больше ничего не изменилось, тогда мы вернулись к тому, с чего начали, и:

  • У нас есть точно такие же колл-опционы, которые стоят столько же, сколько мы начали
  • у нас такое же дельта-хеджирование (шорт 50 акций) с акциями, с которых мы начинали с S=100

На первый взгляд, все, что мы сделали, это купили и продали некоторые акции в соответствии с тем, что наклон графика сказал нам, чтобы «локально нейтрализовать» влияние движения базовой цены акций на цену нашего опциона. Когда базовая цена акций выросла, выросла и цена нашего опциона, однако мы проиграли на дельта-хеджировании (потому что мы продали акции). Однако, поскольку движение не было «маленьким», наша дельта изменилась, и в результате нам пришлось изменить наше хеджирование дельты, продав больше акций. Обратное произошло, когда цена базовых акций пошла вниз — нам пришлось выкупить те акции, которые мы продали, потому что дельта опциона уменьшилась (наклон был ближе к 25% при S=95).

Если вы посмотрите внимательно, мы только что заработали немного денег.

Почему? Потому что, просто следуя стратегии «минимизации рисков», чтобы убедиться, что в каждый момент времени у нас есть правильное количество акций в соответствии с нашей дельтой, мы покупали дешево и продавали дорого. Мы можем доказать это, посмотрев на денежные средства, которые мы получили, перебалансировав нашу дельту. Мы начинаем и заканчиваем с 50 акциями, однако по пути мы:

  • 25 по 105
  • Выкуп 50 по 95
  • 25 по 100

Таким образом, в процессе мы фактически купили 50 по 95 и продали половину по 100, а другую половину по 100 — так что мы должны были сделать 125 + 250 = 375.105 Почему? Потому что, когда дело доходит до движений, которые не являются «маленькими», наша дельта меняется, и процесс корректировки в соответствии с этой дельтой означает, что мы покупаем дешево и продаем дорого.

Какие факторы влияют на то, сколько денег мы зарабатываем на этом процессе?

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

  • Больше времени для этого: чем больше движений вверх и вниз мы должны покупать и продавать, тем больше мы можем сделать
  • Чем больше движения, тем больше разница между ценами, которые мы покупаем (низкие) и продаем (высокие)
  • Большие изменения в Delta: Это означает, что нам нужно покупать и продавать больше акций, чтобы сбалансировать нашу Delta

Если мы просто сосредоточимся на последнем пункте, то теперь сможем понять, почему на приведенных выше графиках временная стоимость опционов (разница между изогнутой линией и линией «хоккейной клюшки» выигрыша терминала) максимизируется вокруг страйка, K. Потому что дельта здесь меняется больше всего, поэтому, если базовый элемент остается здесь и движется вверх / вниз / вверх / вниз, то время, проведенное здесь, более ценно, чем время, проведенное намного выше (ITM) или намного ниже (OTM). Это связано с тем, что большие изменения в дельте означают, что при том же движении базовой цены акций мы будем вынуждены покупать и продавать большее количество акций, чтобы хеджировать нашу дельту. Это генерирует больше денежных средств.

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

Почему не все так делают? Почему бы нам всем просто не купить опционы?

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

Давайте перепечатаем график, показывающий, как «затухает» временная стоимость опциона по мере того, как у нас все меньше и меньше времени до истечения срока действия.# functions to compute Black-Scholes option prices
def bs_d_one(S, K, sigma, delta_T):

return (1 / (sigma * delta_T**0.5)) * (np.log(S / K) + (sigma**2)/2 * delta_T)

def compute_prices(pxs, K, sigma, T, call=True):

# calculate d1 and d2
d_one = bs_d_one(pxs, K, sigma, T)
d_two = d_one — sigma * T**0.5
# compute deltas and prices
if call:
deltas = stats.norm.cdf(d_one)
prices = pxs * deltas — stats.norm.cdf(d_two) * K
else:
deltas = stats.norm.cdf(d_one) — 1
prices = stats.norm.cdf(-d_two) * K + deltas * pxs

return prices, deltas

K = 100
sigma = 0.16
pxs = np.linspace(80, 120, 41)
times = [0.05, 0.1, 0.25, 0.5]
res = {}

for t in times:
op_pxs = compute_prices(pxs, K, sigma, t, call=True)
res[t] = op_pxs[0]

fig, ax = plt.subplots(figsize=(20,12))

call_pnls = [max(0, s — K) for s in pxs]
ax.plot(pxs, call_pnls, lw=2.5, label=’0′)

for l, ps in res.items():
ax.plot(pxs, ps, lw=2.5, label=l)

ax.set_title(‘Value of a call option with differing times remasining, strike K={}’.format(K), fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Option Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

Таким образом, со временем опцион теряет ценность. Возьмем, к примеру, если мы купим колл-опцион ATM в приведенном выше примере с t = t=1 годом до истечения срока действия, а затем продадим его обратно с t=0.25 года (при условии, что больше ничего не изменится, т.е. цена акций вернется к S=100 и т. д.), то мы перейдем от его стоимости 6.38 к 3,19 и потеряем 3.19 (эта симметрия потерянной стоимости и оставшейся стоимости не является случайностью3.19 но из-за того, что значение времени затухает с квадратным корнем из времени).

Как мы можем вернуть эти деньги? Путем дельта-хеджирования. В соответствии с предположениями, которые мы использовали для оценки опциона, подразумевается сумма денег, которую мы должны были заработать на этом поведении: покупать дешево, продавать дорого, покупать дешево, продавать дорого. Мы говорим, что есть определенная сумма денег, которую мы ожидаем заработать на этом поведении, которая компенсирует снижение стоимости опциона с течением времени (известное как «распад» опциона).

Как вы рассчитываете, сколько это должно быть?

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

  • они просто путают
  • Большинство из них неверны (нормально распределенные возвраты, лол)

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

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

«Волатильность» — вот что имеет значение

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

Для меня это гораздо более интуитивный способ объяснить, как идея покупки опционов является синонимом «покупки волатильности», а не обычный аргумент о том, что:

«Большая волатильность означает, что есть больше шансов, что акции в конечном итоге вырастут, и поэтому это делает опцион более ценным»

Опять же, это апеллирует к предположениям о распределении (что окончательное распределение цен на акции шире, и нам нужно заботиться только о росте, потому что мы ничего не теряем на стороне снижения), которые:

  • не очень легко визуализировать
  • На самом деле не объясняйте, как все это связано с повседневной деятельностью по управлению рисками в отделе торговли деривативами

Концы

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

Однако не все так просто. Мы вообще не обсуждали, как мы рассчитали это дельта-число, а также какие-либо другие тонкости с ценообразованием опционов (например, мы сосредоточились только на S, а не на форвардной цене F, потому что мы предположили нулевую процентную ставку и дивиденды), но основные моменты остаются, даже когда эти вещи снова вводятся.

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

Чтобы посмотреть на это, мы будем:

  • построить симулятор цен на акции в Монте-Карло (звучит более причудливо, чем есть на самом деле)
  • Используйте это, чтобы построить генератор хеджированного портфеля Delta по цене опциона
  • Сравните, как приведенная выше стратегия репликации Delta Hedged на самом деле сравнивается с конечной выплатой опциона

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

Часть III: Моделирование Монте-Карло и точечные диаграммы репликации

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

Здесь цель состоит в том, чтобы продолжить в том же духе, но с немного более практическими вещами. Вывод предыдущей статьи заключался в том, что благодаря постоянному перебалансировке нашего дельта-хеджирования мы можем превратить колл-опцион из чего-то, что зависит от того, где заканчивается базовая цена акций («в деньгах» (ITM) против «вне денег» (OTM)), во что-то, что нас действительно волнует, это то, насколько цена акций движется (вверх или вниз) в течение срока действия опциона — волатильность цены акции.

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

  • Откуда мы взяли это число «дельта» — чувствительность цены опциона к базовой цене акций?
  • Когда мы говорим о перебалансировке, как часто мы должны это делать и имеет ли это значение?
  • Что, если мы постоянно используем неправильное дельта-число? Что влияет на то, имеет ли это значение?

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

Монте-Карло

Это просто (во всяком случае, для меня) причудливый способ сказать «симулятор». Я уверен, что есть более технически правильные определения, но это работает для меня. Перво-наперво, если мы хотим смоделировать нагрузку цен опционов во времени, нам нужно смоделировать нагрузку цен на акции во времени. Для этого мы будем использовать python и, в частности, NumPy, так как мы будем много делать с векторами.

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

26cc0fd0-897f-44ab-8360-364f821d43ac.png
Изображение автора

Проще говоря, «логарифмическая доходность» определяется некоторой константной составляющей, r/T, плюс некоторой случайной составляющей, epsilon, где случайный компонент имеет шкалу перед ним, чтобы решить, насколько изменчивым мы хотим, чтобы наш процесс возврата акций был.

Исходя из вышеизложенного, мы видим, что у нас действительно есть 2 «параметра» для управления нашими ценовыми рядами акций — компонент систематической доходности (или «дрейф»), r и волатильность доходности, даваемой sigma. Оба эти числа мы определим как годовые количества, а затем соответствующим образом масштабируем их, если нам нужна не годовая доходность, а, например, ежедневная доходность. Природа масштабирования — вот почему у нас есть T, появляющаяся в нашем уравнении.

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

Напишите python

Итак, вот как мы определим доходность заданной цены акций в данный день — теперь давайте создадим что-то более полезное для изучения наших целей дельта-хеджирования. Чтобы изучить эффективность дельта-хеджирования, мы, вероятно, хотели бы:

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

Учитывая, что в году насчитывается примерно 252 деловых (торговых) дня, мы определим каждую серию цен на акции как «годовую» серию, состоящую из 252 шагов (или дней).252 Затем у нас есть 252 дня, чтобы сбалансировать наше дельта-хеджирование, а затем сравнить в конце, как работала наша репликация, с теоретической терминальной выплатой — графиками «хоккейной клюшки».# import the usual suspects
import datetime as dt
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy.stats as stats
import seaborn as sns
import warnings

# some config
%config Completer.use_jedi = False
warnings.filterwarnings(‘ignore’)
sns.set()

# function to generate the stock price series
def generate_paths(spot, drift, sigma, years, points, sims):

# create numpy PCG PRNG
rng = np.random.default_rng(seed=123)
# create random numbers
dW = rng.normal(size=(sims, points * years))
# get our scaled random deviations
scaled_dW = dW * (sigma / points**0.5)
# add on the drift
daily_devs = (drift / points) + scaled_dW
# cumsum them as log returns additive
cum_rets = np.cumsum(daily_devs, axis=1)
# add in 0 at start for starting price
cum_rets = np.insert(cum_rets, 0, 0, axis=1)
# create price series
pxs = spot * np.exp(cum_rets)

return daily_devs, pxs

# determine our process parameters
px = 100
sigma = 0.16
risk_free = 0.05
divs = 0.00

# determine our sim settings
# i.e. we want 10,000 sets of 252 random numbers
sims = 10000
points = 252
years = 1

# churn out sims
rets, pxs = generate_paths(px, risk_free — divs, sigma, years, points, sims)

# plot them
fig, ax = plt.subplots(figsize=(25,12))

for p in pxs[:500]:
ax.plot([z for z in range(0, points*years+1)], p, linewidth=0.5)

ax.set_title(‘Log Return Paths’, fontsize=26)
ax.set_xlabel(‘Days’, fontsize=20)
ax.set_ylabel(‘Final Price’, fontsize=20);

png
Изображение автора

Хорошо, здорово — выше показана подборка серий 10,000, которые мы смоделировали с ценой акций по оси Y и 253 днями (253 дня плюс 1 начальный день) по оси X.252 Теперь у нас есть множество базовых ценовых рядов акций, которые мы можем использовать для:

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

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

Откуда взялось это дельта-число?

Пора, наконец, объяснить, откуда взялось это магическое число. В предыдущей статье было указано, что это просто наклон графика выплат опциона (колл), как показано ниже:# functions to compute Black-Scholes option prices
def bs_d_one_simple(S, K, sigma, delta_T):

return (1 / (sigma * delta_T**0.5)) * (np.log(S / K) + (sigma**2)/2 * delta_T)

def compute_prices_simple(pxs, K, sigma, T, call=True):

# calculate d1 and d2
d_one = bs_d_one_simple(pxs, K, sigma, T)
d_two = d_one — sigma * T**0.5
# compute deltas and prices
if call:
deltas = stats.norm.cdf(d_one)
prices = pxs * deltas — stats.norm.cdf(d_two) * K
else:
deltas = stats.norm.cdf(d_one) — 1
prices = stats.norm.cdf(-d_two) * K + deltas * pxs

return prices, deltas

K = 100
sigma = 0.16
demo_pxs = np.linspace(80, 120, 41)

call_pnls = [max(0, s — K) for s in demo_pxs]
op_pxs = compute_prices_simple(demo_pxs, K, sigma, 0.25, call=True)
delta_hedge = [op_pxs[0][20] + op_pxs[1][20]* (p — 100) for p in np.linspace(90, 110, 21)]

fig, ax = plt.subplots(figsize=(20,12))

ax.plot(demo_pxs, call_pnls, lw=2.5, color=’black’, label=’Terminal payoff’)
ax.plot(np.linspace(90, 110, 21), delta_hedge, lw=2.5, color=’orange’, label=’Delta hedge: {:.1%}’.format(op_pxs[1][20]))
ax.plot(demo_pxs, op_pxs[0], lw=2.5, label=’Option value’)

ax.set_title(‘Call option with delta hedge, strike K={}’.format(K), fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Option Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

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

  • он должен сходиться к графику терминала «хоккейная клюшка» в крайних точках и, таким образом, иметь дельту 0 пути OTM и 1 пути ITM
  • Он должен плавно вытекать из этих крайностей
  • По прошествии времени он должен «затухать» в сторону конечной выплаты и стать более извращенным при ударе опциона K

Но тогда многое остается для объяснения — небольшие различия в этом дельта-числе могут иметь огромные различия в заработанных деньгах («PnL» — прибыль и убыток) с течением времени для крупных торговых площадок. Чтобы сгенерировать это число, нам нужна модель — модель, которую мы помещаем в некоторые предположения, чтобы сгенерировать ответ на фундаментальный вопрос о том, что такое дельта:

«Что происходит со стоимостью нашего опциона, когда цена акций движется?»

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

  • Изменяется ли он симметрично при движении вверх и вниз?
  • Какие размеры ходов мы должны использовать для вычисления изменения, если мы используем первые различия для его вычисления? 0.5% в одну сторону? 1% в одну сторону?
  • Существуют ли другие факторы, влияющие на цену опциона, которые изменятся при движении цены акций? Если цена акций изменится, ожидаем ли мы, что «подразумеваемая волатильность» также изменится? Можем ли мы включить это «ожидаемое» изменение в нашу модель?

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

Что такое Блэк-Скоулз?

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

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

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

Отличный вопрос. Но ответ модели прост — нет, не беспокойтесь об этом; Волатильность цены акций в модели постоянна. Как будто это какой-то известный фактор, который мы вводим. На практике мы не используем какую-то модель прогнозирования волатильности, чтобы получить входные данные волатильности, а вместо этого выводим их из рыночных цен — вот почему это называется «подразумеваемой волатильностью». Потому что дано:

  • другие входные данные формулы Блэка-Шоулза, выведенные из других финансовых инструментов (процентные ставки по казначейским облигациям, div с рынков свопов div и т. д.)
  • Цены опционов на рынке

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

Формула

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

d4c8bddc-7c31-401e-a037-7571cc111f83.png
Изображение автора

где мы определяем:

e7f5df88-f1d6-4a3c-bbae-6048ffbd203a.png
Изображение автора

И потом:

e73df0b6-4a01-4dc3-a449-5174a8cb65c9.png
Изображение автора

Дельта

Используя эту формулу, мы можем затем взять первую производную от нее, чтобы получить чувствительность цены опциона при движении базовой цены акций — дельту (хороший вывод здесь, если вам это нравится):

b28260f1-5f93-442a-b0f0-bfc1508b9f99.png
Изображение автора

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

Цены на опционы

Итак, теперь у нас есть формула для каждого из:

  • Стоимость опциона в каждый момент времени
  • дельта этого варианта в каждый момент времени

Давайте введем наши смоделированные цены на акции и выплюнем для каждого ценового ряда в каждый момент времени эти вычисленные величины. Получив их, мы можем построить график сравнения нескольких из них с ценами в разные моменты года (наши 252 дня) и посмотреть, совпадают ли они с тем, что мы нарисовали ранее.def bs_d_one(S, K, rf, div, sigma, delta_T):

return (1 / (sigma * delta_T**0.5)) * (np.log(S / K) + (rf — div + (sigma**2)/2) * delta_T)

def compute_prices(pxs, K, rf, div, sigma, points, years, call=True, hedge_vol=None):

# create time vector
times = np.linspace(0, years, (points*years) + 1)[::-1]
# calculate d1 and d2
d_one = bs_d_one(pxs, K, rf, div, sigma, times)
d_two = d_one — sigma * times**0.5
# compute deltas and prices
if call:
deltas = stats.norm.cdf(d_one)
prices = pxs * np.exp(-div * times) * deltas — stats.norm.cdf(d_two) * K * np.exp(-rf * times)
gammas = stats.norm.pdf(d_one) / (pxs * sigma * np.sqrt(times))

if hedge_vol:
d_one = bs_d_one(pxs, K, rf, div, hedge_vol, times)
deltas = stats.norm.cdf(d_one)
gammas = stats.norm.pdf(d_one) / (pxs * hedge_vol * np.sqrt(times))
else:
deltas = stats.norm.cdf(d_one) — 1
prices = stats.norm.cdf(-d_two) * K * np.exp(-drift * times) + deltas * pxs * np.exp(-div * times)
gammas = stats.norm.pdf(d_one) / (pxs * sigma * np.sqrt(times))
if hedge_vol:
d_one = bs_d_one(pxs, K, rf, div, hedge_vol, times)
deltas = stats.norm.cdf(d_one) — 1
gammas = stats.norm.pdf(d_one) / (pxs * hedge_vol * np.sqrt(times))

return prices, deltas, gammas

risk_free = 0.05
divs = 0.00
sigma = 0.16
K = 100
call=True

# churn out sims
rets, pxs = generate_paths(px, risk_free — divs, sigma, years, points, sims)
# cvhurn out option tvs, deltas and gammas
call_pxs, deltas, gammas = compute_prices(pxs, K, risk_free, divs, sigma, points, years, call=call)fig, axes = plt.subplots(ncols=2, figsize=(25, 12))
axes = axes.reshape(-1)

ts = [-253, -101, -21, -1]

for t in ts:

prices = pxs[:,t]
call_prices = call_pxs[:,t]
call_deltas = deltas[:,t]

sns.scatterplot(prices, call_prices, ax=axes[0], label=»{} Days».format(-t-1))
sns.scatterplot(prices, call_deltas, ax=axes[1], label=»{} Days».format(-t-1))

axes[0].set_title(‘Simulated Call Option Prices vs Underlying Stock Price’, fontsize=24)
axes[0].set_xlabel(‘Stock Price, S’, fontsize=22)
axes[0].set_ylabel(‘Option Value (TV)’, fontsize=22)
axes[0].legend(fontsize=22)

axes[1].set_title(‘Simulated Call Option Deltas vs Underlying Stock Price’, fontsize=24)
axes[1].set_xlabel(‘Stock Price, S’, fontsize=22)
axes[1].set_ylabel(‘Option Delta’, fontsize=22)
axes[1].legend(fontsize=22);

png
Изображение автора

Так что дела идут хорошо. У нас есть график слева, показывающий смоделированные цены опционов в разные моменты времени по сравнению с смоделированной ценой акций. Красные пятна показывают, как это выглядит по истечении срока действия, когда у нас осталось ноль времени. Синяя точка показывает, что все смоделированные цены акций начинаются со 100, и поэтому все они имеют одинаковую цену колл-опциона, а затем другие линии показывают нам что-то посередине.

С правой стороны у нас есть дельта опциона в те же самые разные моменты времени, и это также совпадает с тем, что у нас было раньше — значения плавно перемещаются от 0 до 1, за исключением случаев, когда у нас нет времени до истечения срока действия0, когда он прыгает от 0 до 1.1 Но это ожидаемо и согласуется с тем, что мы видим на графике цены колл-опциона — у нас есть излом на страйке K, который ведет нас от плоской линии к линии с наклоном 1, когда до истечения срока действия не осталось. Пока всё в порядке.

Значения опционов (или «телевизоры» — теоретические значения) будут служить нашим ориентиром, чтобы увидеть, работают ли репликации с дельта-хеджированием, и мы создадим эти портфели с дельта-хеджированием, используя дельты, которые мы создали, чтобы сформировать график справа.

Приступим к хеджированию

Довольно часто просто говорят: «Да, вы знаете, что способ хеджирования опциона по Блэку-Шоулзу — это просто держать некоторое количество акций и немного наличных денег». Звучит просто. Хотя на самом деле именно этот последний бит становится неудобным. Идея состоит в том, что в каждый момент времени у нас будет стоимость опциона, выплюнутая из приведенной выше формулы, и мы хотим получить «портфель» из:

  • запас
  • наличные

С.Т. мы совпадаем с этим значением (или, может быть, в среднем совпадаем с этим значением). Стоимость акций очень проста — мы просто берем акции, которыми владеем (продиктованная нам приведенной выше дельта-формулой), и умножаем ее на стоимость каждой из этих акций — только текущую цену акции S. Код очень и очень простой:# compute stock values at each point in time
stock_values = pxs * deltas

Но денежную составляющую сложнее отследить. Если мы возьмем пример, когда мы продаем колл-опцион и поэтому нам нужно воспроизвести его с помощью дельта-хеджирования, наши первые шаги:

  • Продаем опцион: мы получаем за это немного денег (ура!!)
  • Купить Delta Hedge: Мы, вероятно, не получили достаточно денег от премии, чтобы покрыть это, поэтому нам нужно занять немного денег, чтобы купить все акции, которые нам нужны

Но затем, с течением времени, все становится немного сложнее — после нашего первого дня хеджирования нам придется:

  • Ребалансировка дельта-хеджирования: Это может потребовать от нас занять больше, чтобы купить больше акций или продать часть акций и заработать немного денег
  • Если мы взяли кредит для финансирования нашего хеджирования Delta, то нам, вероятно, придется заплатить некоторые проценты по этому поводу — это еще один денежный поток
  • Получение дивидендов: Мы пока проигнорируем это, но это будет еще одним источником денежных средств

И все это должно управляться во времени, предполагая, что какой бы денежный остаток у нас ни был в каждый момент, мы либо инвестируем и получаем безрисковую ставку r, либо заимствуем и таким образом платим эту безрисковую ставку. Ниже приведена реализация этого с использованием как можно большего количества NumPy для предотвращения ненужных циклов.# compute cash flows from various activities
# at each point we will add on cash flows to the future valued version
# of last period’s cash balance — this gives us our new cash balance

# cash flow from delta hedging
# compute cash generated from delta re-hedging
delta_chgs = np.diff(deltas, axis=1)
delta_rehedge_cfs = -delta_chgs * pxs[:,1:]

# compute dividend income
div_cfs = deltas[:,:-1] * pxs[:,:-1] * divs / points

# compute starting premium and delta cfs
start_cbs = call_pxs[:,0] — deltas[:,0] * pxs[:,0]

# init our cash balance and cashflow arrays
cbs = [start_cbs]
cfs = [np.zeros(sims)]

for drh, dcf in zip(delta_rehedge_cfs.T, div_cfs.T):

# get previous cash balance
prev_cash = cbs[-1]
# future value it
new_cash = prev_cash * (1 + risk_free / points)
# add on new cash flows
cf = drh + dcf
cb = new_cash + cf
cfs.append(cf)
cbs.append(cb)

cfs = np.array(cfs).T
cbs = np.array(cbs).T

Теперь, когда мы должны иметь для каждой симуляции в каждый момент времени:

  • Стоимость нашего дельта-хеджирования (доля акций в портфеле)
  • стоимость нашего остатка денежных средств на текущий период

Мы можем делать то, что делали раньше — на различных снимках суммировать эти значения и смотреть, как это выглядит — особенно по сравнению с теоретическим значением колл-опциона, которое мы должны воспроизводить.fig, ax = plt.subplots(figsize=(25, 12))

ts = [-253, -101, -21, -1]

for t in ts:

prices = pxs[:500, t]
repl_pxs = cbs[:500, t] + stock_values[:500, t]

sns.scatterplot(prices, repl_pxs, ax=ax, label=»{} Days».format(-t-1))

ax.set_title(‘Simulated Call Option Replication vs Underlying Stock Price’, fontsize=24)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Replication Value (TV)’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

Довольно сексуально. Так что, похоже, это работает!! Сумма компонентов репликации, по-видимому, довольно хорошо согласуется с теоретическим значением опции. Конечно, это немного шумнее, чем репликация (точки немного разбросаны вокруг), но в целом это выглядит довольно здорово.

Рекапитуляция

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

  • Держа портфель только из денежных средств и базовых акций, мы можем воспроизвести выплату колл-опциона
  • количество акций, которые мы должны держать, продиктовано нам дельтой модели Блэка-Шоулза
  • В процессе хеджирования есть некоторый шум, но в среднем кажется, что он выстраивается в линию

Часть IV: Частота хеджирования и более красивые диаграммы рассеяния

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

  • наличные
  • Запасы

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

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

Ошибка хеджирования

Чтобы немного поближе познакомиться, давайте объединим два графика. Другими словами, давайте представим, что мы продаем колл-опцион и делаем эту репликацию, чтобы по истечении срока действия мы использовали наши реплицирующие деньги портфеля для выплаты выплаты колл-опциона (если он есть — если ITM). Комбинируя их, мы можем выделить «ошибку хеджирования», с которой мы сталкиваемся.fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(30, 20))
axes = axes.reshape(-1)

ts = [-201, -101, -21, -1]

for t, ax in zip(ts, axes):

prices = pxs[:, t]
call_prices = call_pxs[:, t]
repl_pxs = cbs[:, t] + stock_values[:, t]

sns.scatterplot(prices, repl_pxs — call_prices, ax=ax)
ax.axhline(np.mean(repl_pxs — call_prices), color=’orange’)

ax.set_title(«{} Days Left».format(-t-1), fontsize=28)
ax.set_xlabel(‘Stock Price, S’, fontsize=24)
ax.set_ylabel(‘Hedging Error’, fontsize=24)

ax.set_xlim(60, 180)
ax.set_ylim(-2, 2)

fig.suptitle(‘Hedging Error vs Underlying Stock Price’, fontsize=36)
fig.tight_layout();

png
Изображение автора

Здесь довольно много, но давайте пойдем шаг за шагом. У нас есть 4 графика в сетке, показывающих диаграммы рассеяния комбинированной стоимости нашего короткого колл-опциона и реплицирующейся позиции портфеля — каждый из них показывает объединенный портфель с n днями, оставшимися до истечения срока действия. Я стандартизировал оси, чтобы мы могли легко сравнивать. Что мы видим?

  • Оранжевая горизонтальная линия застряла для средней ошибки хеджирования, и это подтверждает визуальный осмотр, что в среднем дельта-репликация выполняет свою работу
  • Со временем цена базовой акции распространяется (у нее есть больше времени), и это приводит к расширению графиков
  • по мере того, как время до истечения срока действия уменьшается, мы начинаем получать более широкую дисперсию общего PNL вокруг страйка K=100

Но в целом это работает. Или по-другому, в среднем это работает. Не умаляя слишком многого, он работает, потому что мы построили его для работы — мы создали симуляцию в идеальных условиях для модели Блэка-Шоулза, а затем с помощью моделирования показали, что она жизнеспособна. В частности, у нас есть:

  • Смоделировали цены на акции, используя известную волатильность, sigma, затем использовали ту же волатильность для вычисления наших дельт, чтобы хеджировать ее (что произойдет, если мы этого не знаем или это изменится?)
  • Разбейте время на ежедневные приращения для хеджирования — почему мы выбрали это и что произойдет с распределением PNL, если мы изменим это?

Различная частота хеджирования

Давайте теперь рассмотрим предположение в начале, что мы будем ежедневно хеджировать дельту — что произойдет, если мы будем хеджировать ежемесячно? Или еженедельно? Или как насчет двух раз в день? Давайте упакуем код, который мы написали выше, чтобы мы могли хорошо развернуть его для различных временных интервалов.# this will run our complete replciation with stock price simulation
def run_delta_hedge_sim(px, strike, risk_free, divs, sigma, years, points, sims):

# churn out sims
rets, pxs = generate_paths(px, risk_free — divs, sigma, years, points, sims)
# churn out option tvs, deltas and gammas
call_pxs, deltas, gammas = compute_prices(pxs, K, risk_free, divs, sigma, points, years, call=True)
# create replication values
stock_values, cbs, cfs = generate_replications(pxs, deltas, call_pxs, risk_free, divs, points)

return pxs, rets, call_pxs, stock_values + cbs, deltas, gammas

# package up code to create simulated replication portfolio
def generate_replications(pxs, deltas, call_pxs, risk_free, divs, points):

# compute stock values at each point in time
stock_values = pxs * deltas

# compute cash flows from various activities
# at each point we will add on cash flows to the future valued version
# of last period’s cash balance — this gives us our new cash balance

# cash flow from delta hedging
# compute cash generated from delta re-hedging
delta_chgs = np.diff(deltas, axis=1)
delta_rehedge_cfs = -delta_chgs * pxs[:,1:]

# compute dividend income
div_cfs = deltas[:,:-1] * pxs[:,:-1] * divs / points

# compute starting premium and delta cfs
start_cbs = call_pxs[:,0] — deltas[:,0] * pxs[:,0]

# init our cash balance and cashflow arrays
cbs = [start_cbs]
cfs = [np.zeros(sims)]

for drh, dcf in zip(delta_rehedge_cfs.T, div_cfs.T):

# get previous cash balance
prev_cash = cbs[-1]
# future value it
new_cash = prev_cash * (1 + risk_free / points)
# add on new cash flows
cf = drh + dcf
cb = new_cash + cf
cfs.append(cf)
cbs.append(cb)

cfs = np.array(cfs).T
cbs = np.array(cbs).T

return stock_values, cbs, cfs

Теперь давайте проверим, как работает наша репликация, когда мы хеджируем на разных временных горизонтах. Для этого мы по-прежнему будем моделировать цену акций в течение года, однако мы будем моделировать с различными временными разбиениями, например, для ежедневных, как и раньше, мы будем разбиваться на 252 шага, для двух раз в день — на 504 шага и ежемесячно только 12. Так же, как и раньше, при каждом временном разделении мы будем вычислять нашу дельту, повторно хеджировать по мере необходимости и продолжать.px = 100
K = 100
rf = 0.05
divs = 0.00
sigma = 0.16

years = 1
pts = [12, 52, 252, 504]
sims = 10000
perfs = {}

fig, axes = plt.subplots(ncols=2, nrows=2, figsize=(30, 20))
axes = axes.reshape(-1)

for t, ax in zip(pts, axes):

pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, K, rf, divs, sigma, years, t, sims)

prices = pxs[:, -1]
call_prices = call_pxs[:, -1]
repl_pxs = repls[:, -1]

perfs[t] = repl_pxs — call_prices

sns.scatterplot(prices, repl_pxs — call_prices, ax=ax)
ax.axhline(np.mean(repl_pxs — call_prices), color=’orange’)

ax.set_title(«{} re-hedges».format(t), fontsize=28)
ax.set_xlabel(‘Stock Price, S’, fontsize=24)
ax.set_ylabel(‘Hedging Error’, fontsize=24)

ax.set_xlim(60, 180)
ax.set_ylim(-10, 10)

fig.suptitle(‘Hedging Error vs Underlying Stock Price’, fontsize=36)
fig.tight_layout();

png
Изображение автора

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

Этот последний бит, возможно, нуждается в объяснении. Теоретически у нас может быть складской процесс с годовой логарифмической доходностью со стандартным отклонением 16% (как и во всех приведенных выше симуляциях). Однако на практике, если мы хеджируем 12x, т.е. ежемесячно, мы можем оказаться в счастливом случае, когда каждый раз, когда мы приходим к хеджированию базовой цены акций, она возвращается к S=100. В этом примере, несмотря на то, что у нас есть ежедневные колебания, если бы мы рассчитали стандартное отклонение доходности на основе 12 раз, когда мы хеджировали, оно было бы 0 — потому что мы остаемся на S=100, и поэтому каждый доход одинаков (0% 0).

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

Существует ли связь между частотой хеджирования и стандартным отклонением pnl?

Другими словами, существует ли более тесная математическая связь, которую мы можем провести между ними, а не просто расплывчатое «хеджирование чаще снижает волатильность pnl». Оказывается, в мире, который мы построили выше (гауссовы возвраты и т. д.), есть. Доказательство слишком математическое для этого, но есть потрясающее объяснение этого в начале знаменитой книги Бергоми «Моделирование стохастической волатильности». Получается, что наша ошибка хеджирования должна уменьшаться с квадратным корнем из частоты наших хеджирований, т.е. хеджирование в 4 раза чаще должно сбить нашу ошибку хеджирования вдвое.

Давайте попробуем — мы сделаем то же самое, что и выше, но для еще нескольких временных горизонтов хеджирования и построим график соответствующего стандартного отклонения ошибки хеджирования.pts = np.linspace(25, 250, 11)
sims = 10000
hedge_errors = []

for t in pts:
# generate replications
pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, K, rf, divs, sigma, years, int(t), sims)
# compute hedge error
hedge_error = [repls[:, -1] — call_pxs[:, -1]]
# append to hedge errors list
hedge_errors.append(hedge_error)

# plot
fig, ax = plt.subplots(figsize=(20,8))

# plot hedge errors by hedge frequency
ax.plot(pts, [np.std(e) for e in hedge_errors], label=’Std Dev Hedge Errors’)
# plot 5 / sqrt(N) for comparison
ax.plot(pts, [(5 / (x**0.5)) for x in pts], label=’Comparison’)

# label
ax.set_title(‘Std Dev of Delta Hedge Replication with Hedge Frequency’, fontsize=24)
ax.set_xlabel(‘Hedge Frequency’, fontsize=22)
ax.set_ylabel(‘Std Deviation’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

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

Почему мы зарабатываем деньги на одних путях и проигрываем на других?

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

Вернемся к волатильности

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

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

Реализованная волатильность

Чтобы вычислить реализованную волатильность, мы делаем следующее с возвратами журнала:

  • квадрат, а затем суммировать их
  • Ежегодные их
  • Берем квадратный корень

Математически это выглядит следующим образом для реализованной волатильности, rv:

5f92f9ad-39f5-4a7c-a2ae-de1bd3906125.png
Изображение автора

Имея это в виду, мы теперь можем вычислить реализованную волатильность на траекторию, объединить наши 10,000 симуляций в группы и использовать эти группы в качестве оттенка, накладывающего наш график ошибок хеджирования репликации. Отметим, что причина, по которой у нас есть дисперсия в нашей волатильности, заключается в том, что каждый путь можно рассматривать как «выборку», и поэтому стандартное отклонение выборки будет иметь распределение вокруг введенного нами параметра «совокупность».years = 1
points = 252
sims = 10000

pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, K, rf, divs, sigma, years, points, sims)
rvs = np.insert(np.sqrt(np.divide(np.cumsum(rets**2, axis=1) * 252, np.arange(1, points+1))), 0, np.nan, axis=1)

bins = np.linspace(0.08, 0.30, 23)
bins = np.append(bins, 1)
bins = np.array([round(x, 2) for x in bins])

bin_inds = np.digitize(rvs[:, 1:], bins, right=True)
bin_rvs = bins[bin_inds]

fig, ax = plt.subplots(figsize=(25, 12))

sns.scatterplot(pxs[:, -1], (repls — call_pxs)[:, -1], hue=bin_rvs[:, -1], ax=ax, palette=’bright’)

ax.set_title(‘Hedging Error vs Underlying Stock Price’, fontsize=28)
ax.set_xlabel(‘Stock Price, S’, fontsize=22)
ax.set_ylabel(‘Hedging Error’, fontsize=22)
ax.legend(fontsize=22);

png
Изображение автора

Милая. Теперь мы можем совершенно ясно видеть, что траектории, которые испытывали более высокую волатильность, чем наша дельта была хеджирована (16% с большей вероятностью вызывали отрицательные ошибки репликации, а пути с более низкой волатильностью — положительные. На самом деле мы сталкиваемся не совсем с реализованной волатильностью, а скорее с «гамма-взвешенной» реализованной волатильностью. Проще говоря, нас не волнует, будет ли очень волатильное движение, если наша дельта не изменится, потому что это означает, что нам не нужно покупать/продавать какие-либо акции на ее основе.

Когда мы продаем опционы, это постоянное поведение рехеджирования обходится нам дорого (так называемая «короткая гамма»), но если у нас очень мало гаммы, то размер хода для нас не имеет значения — большой или маленький. Так что на самом деле мы должны смотреть на какую-то схему взвешивания доходности, где мы применяем большие веса к движениям, которые мы испытываем с большим количеством гаммы, по сравнению с движениями, которые мы испытываем только с небольшой гаммой; а не расчет стандартного отклонения, который представляет собой просто прямое среднее значение (каждый квадратный ход имеет одинаковый вес).

Выводы

Итак, теперь мы пошли на один шаг глубже, чтобы понять, как именно работает дельта-хеджирование, используя моделирование, чтобы добавить красок в логику, обсуждавшуюся ранее. Мы до сих пор не затронули многие темы — в первую очередь, приемлемо ли приведенное выше распределение ошибок хеджирования. Это может быть хорошо, что мы усредняем нулевые ошибки хеджирования, но если мы не выполним тысячи и тысячи сделок, мы не сможем достичь этого среднего значения.

Насколько велико стандартное отклонение ошибок хеджирования по сравнению с тем, что обычно взимается торговыми отделами за управление этими позициями? Это, очевидно, переменная, но, если взять простой пример, мы могли бы взимать «0,5 об.» за управление риском, т.е. продать вышеуказанный колл-опцион и дельта-хеджировать его для достижения репликации.

В случае приведенного выше варианта T=1K=100 это будет означать, что мы взимаем 0,2, потому что «вега» (чувствительность к подразумеваемому объему) составляет около 0.2.0.4 Как видно из приведенного выше графика, это почти ничто по сравнению с реализованными ошибками хеджирования, которые мы ожидали бы, если бы все, что мы сделали, это дельта-хеджирование позиции — вернемся к выражению в конце последней статьи: «опционы хеджируют опционы».

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

Часть V: Какую волатильность я использую: подразумеваемую или реализованную?

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

  • Он немного дрейфует
  • имеет приятное, простое, нормально распределенное изменение каждый день

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

Затем мы показали, что с помощью Python мы можем смоделировать 10,000 репликаций, чтобы увидеть, что:

  • Как правило, репликация Delta Hedged работает с некоторой ошибкой хеджирования
  • Эта ошибка хеджирования, по-видимому, пропорциональна тому, как часто мы хеджируем
  • Эта ошибка хеджирования, по-видимому, является самой большой для траекторий цен на акции, которые заканчиваются вокруг страйка нашего опциона

Как упоминалось ранее, единственная ошеломляющая вещь в его работе, возможно, заключается в том, что мне удалось закодировать его на python без ошибок. Это связано с тем, что мы намеренно установили наш мир цен на акции в точном соответствии с предположениями, высказанными Блэк-Скоулзом. Единственное предположение, которое мы нарушили, — это предположение о непрерывном хеджировании; Однако мы показали, что если мы увеличим частоту хеджирования, то ошибка хеджирования стремится к нулю, и мы действительно создали безрисковую репликацию ванильного опциона.

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

«Какую волатильность я должен использовать для дельта-хеджирования моего опциона и что произойдет, если это число будет отличаться от реализованной волатильности, которая фактически материализуется?»

Гамма против Тета

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

Предполагая, что вы купили опцион и хеджируете его дельта, то, если ежедневное наблюдение реализованной волатильности выше, чем подразумеваемая волатильность опциона, то вы заработаете деньги в этот день. И наоборот, если реализованное «не оправдало» подразумеваемого, то вы проиграете.

Обычно это называется «гамма/тета-компромисс» и является заявлением о безубыточности — на длинной позиции опциона вы теряете деньги на ежедневном снижении временной стоимости опциона (на основе подразумеваемой волатильности) и зарабатываете деньги на дельта-хеджировании опциона через дельта-изменение (гамма), когда базовая акция движется (на основе реализованной волатильности). Чем больше движутся акции, тем больше денег вы зарабатываете на дельта-хеджировании, и пока это относительно большое движение по сравнению с подразумеваемой волатильностью, вы не будете платить столько же падения по сравнению с ним.

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

Сколько денег я заработаю?

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

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

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

Установите сцену

Для начала предположим следующее. Мы видим вариант, который нам нравится, который имеет подразумеваемый объем 20. Мы думаем, что это «дешево», потому что мы ожидаем, что реализованный объем с этого момента и до истечения срока действия опциона будет сочным 30 томов выше!!). Оба эти числа являются волатильностью в годовом исчислении. Что произойдет, если мы купим опцион, захеджируем его дельта и:

  • Использовать подразумеваемую волатильность, равную 20, для расчета нашего дельта-хеджирования каждый день?
  • Использовать реализованную волатильность, равную 30, для расчета нашего дельта-хеджирования каждый день?

Здесь мы делаем еще одно героическое предположение, что мы знаем реализованную волатильность, которая будет разыгрываться в течение жизни опциона, но пока это нормально. Для простоты мы предположим, что это опцион T=1 год со страйком K = 100 и начальной ценой акций S=100 K=100.

Чтобы попытаться свести к минимуму вклад ошибки хеджирования (потому что мы не хеджируем постоянно), мы будем хеджировать 4 раза в день. Сгенерируем пути акций и покажем их для полноты картины.# usual suspects
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import warnings

# packaged up replication code
from opcoes.replication import run_delta_hedge_sim

# some config
%config Completer.use_jedi = False
warnings.filterwarnings(‘ignore’)
sns.set()

# set our simulation settings
sims = 10000

px = 100
strike = 100
risk_free = 0.00
divs = 0.00
sigma = 0.30
years = 1
points = 252*4

# set implied vol and use that as vol to compute hedge
iv = 0.20
hedge_vol = 0.20

# compute all replication data
pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, strike, risk_free, divs, sigma, years, points, sims, iv=iv, hedge_vol=hedge_vol)

# plot them
fig, ax = plt.subplots(figsize=(25,12))

for p in pxs[:500]:
ax.plot([z for z in range(0, points*years+1)], p, linewidth=0.5)

ax.set_title(‘Log Return Paths’, fontsize=26)
ax.set_xlabel(‘Time Step’, fontsize=20)
ax.set_ylabel(‘Final Price’, fontsize=20);

png
Изображение автора

Пока всё в порядке. У нас есть стандартная нормально распределенная настройка журнала, в которой у нас такое же количество путей, удваивающихся (до 200), как и у нас есть халвинг (до 50).

Хеджирование с использованием подразумеваемой волатильности

Теперь, как и в случае с графиками «ошибки хеджирования» в части IV, давайте посмотрим, как репликация, рассчитанная с использованием подразумеваемой волатильности, сравнивается с конечной выплатой опциона. Мы оба вычислим диаграмму рассеяния pnl в соответствии с окончательной базовой ценой, а также отобразим несколько примеров путей того, как этот pnl развивался с течением времени.prices = pxs[:, -1]
call_prices = call_pxs[:, -1]
repl_pxs = repls[:, -1]

fig, axes = plt.subplots(ncols=2, figsize=(32,12))
axes = axes.reshape(-1)

sns.scatterplot(prices, call_prices — repl_pxs, ax=axes[0])

axes[0].axhline(np.mean(call_prices — repl_pxs), color=’orange’)
axes[0].set_title(‘Pnl vs Final Spot when hedging using implied volatility’, fontsize=32)
axes[0].set_xlabel(‘Final Stock Price, S’, fontsize=24)
axes[0].set_ylabel(‘Pnl’, fontsize=24)
axes[0].set_xlim(20, 270)
axes[0].set_ylim(0, 11)

pd.DataFrame(call_pxs[:100, :] — repls[:100, :]).T.plot(ax=axes[1], legend=False, lw=0.7)
axes[1].set_title(‘Pnl Evolution when hedging using implied volatility’, fontsize=32)
axes[1].set_xlabel(‘Time Step’, fontsize=24)
axes[1].set_ylabel(‘Pnl’, fontsize=24)
axes[1].set_ylim(-1, 11);

png
Изображение автора

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

  • Несмотря на то, что реализованная волатильность одинакова для каждой симуляции, окончательный PNL явно не является таковым
  • Распределение PNL, по-видимому, достигает пика вокруг страйка опциона: те пути, которые закончились на страйке, похоже, генерировали больше всего PNL
  • По крайней мере, все симуляции генерировали положительный PnL

Справа мы видим для 100 симуляций путь, пройденный pnl, чтобы оказаться на левой диаграмме рассеяния. Для каждого из 252*4 временных моментов, где мы хеджировали дельту, мы выплюнули текущую стоимость портфеля. Опять же, мы можем сделать несколько наблюдений:

  • То, насколько разбросаны линии в конце года, совпадает с распределением на диаграмме рассеяния — некоторые пути сделали гораздо больше PNL, чем другие
  • Все пути не только заканчиваются выше нуля, но и, кажется, никогда не теряют деньги на протяжении всего путешествия — они в значительной степени монотонно увеличиваются на протяжении всего путешествия
  • Некоторые пути, кажется, выравниваются через некоторое время

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

Прежде чем перейти к причине, по которой наш pnl имеет эту «зависимость от пути», давайте сравним ее с другим вариантом (простите за каламбур) — хеджированием с реализованной волатильностью.

Хеджирование с использованием реализованной волатильности

Итак, как и раньше, давайте создадим наши репликации для каждой симуляции, но на этот раз мы будем ежедневно хеджировать дельту, используя дельту, вычисленную с использованием реализованной волатильности, равной 30, вместо того, чтобы ранее с подразумеваемой волатильностью 20.hedge_vol = 0.30

# compute all replication data
pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, strike, risk_free, divs, sigma, years, points, sims, iv=iv, hedge_vol=hedge_vol)

prices = pxs[:, -1]
call_prices = call_pxs[:, -1]
repl_pxs = repls[:, -1]

fig, axes = plt.subplots(ncols=2, figsize=(32,12))
axes = axes.reshape(-1)

sns.scatterplot(prices, call_prices — repl_pxs, ax=axes[0])

axes[0].axhline(np.mean(call_prices — repl_pxs), color=’orange’)
axes[0].set_title(‘Pnl vs Final Spot when hedging using realised volatility’, fontsize=32)
axes[0].set_xlabel(‘Final Stock Price, S’, fontsize=24)
axes[0].set_ylabel(‘Pnl’, fontsize=24)
axes[0].set_xlim(20, 270)
axes[0].set_ylim(0, 11)

pd.DataFrame(call_pxs[:100, :] — repls[:100, :]).T.plot(ax=axes[1], legend=False, lw=0.7)
axes[1].set_title(‘Pnl Evolution when hedging using realised volatility’, fontsize=32)
axes[1].set_xlabel(‘Time Step’, fontsize=24)
axes[1].set_ylabel(‘Pnl’, fontsize=24)
axes[1].set_ylim(-1, 11);

png
Изображение автора

Как это соотносится с двумя графиками, которые у нас были раньше? Я нормализовал шкалы, чтобы мы могли легко сравнивать, и сразу же пришло несколько наблюдений:

  • Диаграмма рассеяния, по-видимому, показывает, что помимо ошибки хеджирования, которую мы имеем от дискретного хеджирования (вместо непрерывного), у нас есть постоянный PNL, равный около 4
  • Наша эволюция PNL гораздо более неустойчива и вовсе не монотонно увеличивается, как это было для подразумеваемой волатильности

Таким образом, кажется, что когда мы используем реализованный вместо подразумеваемого, мы генерируем 2 очень разных набора:

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

Что тогда напрашивается вопрос:

Что лучше?

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

Однако это только в идеализированном мире, который мы построили, где мы знаем, какой будет окончательная реализованная волатильность в течение срока действия опциона. На практике это не так, поскольку у нас нет хрустального шара, и никакое моделирование ARCH или GARCH не сможет последовательно предсказать это правильно. На самом деле мы не знаем заранее, будет ли реализованная волатильность выше, чем предполагалось. В этих ситуациях использование реализованной волатильности имеет очень явный недостаток — волатильность эволюций pnl.

Переход к рынку (MTM)

Торговые столы не могут просто:

  • Покупайте вещи
  • говорят, что они поднялись
  • Говорят, что они заработали много денег

Хотя это звучит довольно забавно. На самом деле существуют проверки, чтобы убедиться, что книги «помечаются правильно». На практике это реализация фразы «что-то стоит только того, что кто-то другой готов за это заплатить» и означает, что ежедневный pnl позиции рассчитывается на основе того, что мы наблюдаем за ее ценой на рынке. Вы не можете сказать, что что-то стоит 100, если люди готовы платить за это только 50 прямо сейчас.

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

Выше приведено то, что порождает неустойчивую эволюцию pnl для случая, когда мы вычислили дельту с использованием реализованной волатильности. Это связано с тем, что:

  • Стоимость опциона изменяется в соответствии с подразумеваемой волатильностью, вычисленной дельтой (от отметки к рынку)
  • Значение репликации изменяется в соответствии с рассчитанной дельтой реализованной волатильности

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

Почему подразумеваемое распределение pnl достигает пика вокруг забастовки?

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

Как упоминалось в начале, мы зарабатываем деньги, когда осознаем это выше, чем предполагалось, потому что мы зарабатываем больше денег на непрерывной перебалансировке нашего дельта-хеджирования, чем теряем от того, что опцион теряет свою временную стоимость. Учитывая фиксированную реализованную волатильность, равную 30 (которая контролирует, насколько движется спот) и фиксированную подразумеваемую величину, равную 20 (которая контролирует, насколько наше временное значение уменьшается каждый день), у нас остается следующий вопрос:

«Что контролирует, сколько денег мы зарабатываем в данный день из-за того, что осознание этого выше, чем предполагалось?»

Ответом на это является гамма. Гамма определяется как то, насколько изменяется наша дельта при данном движении базовой цены акций — это утверждение о том, насколько изменчива наша дельта, и, как мы рассмотрели в части II — когда мы купили опционы, чем больше меняется наша дельта, тем лучше, потому что это означает, что для данного движения цены акций нам нужно торговать большим количеством акций для повторного хеджирования. И чем большим количеством акций мы торгуем по мере непрерывной ребалансировки, тем больше мы заработаем на дельта-ребалансировке «покупай дешево/продавай» по высокой цене.

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

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

Где гамма самая высокая?

Вокруг забастовки и когда у нас осталось мало времени до истечения срока действия. В результате, те пути, где мы заканчиваем близко к страйку, приближающемуся к истечению, генерируют самый высокий pnl, потому что у нас много гаммы, когда мы испытываем реализованную волатильность выше, чем предполагалось. Чтобы показать это, мы можем взять нашу предыдущую диаграмму рассеяния и разделить ее на основе средней гаммы на путь, где мы ожидаем, что те, у кого много гамма, будут сосредоточены вокруг удара.# reset to hedge using implied vol
hedge_vol = 0.20

# compute all replication data
pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, strike, risk_free, divs, sigma, years, points, sims, iv=iv, hedge_vol=hedge_vol)

# get quantities for plotting
prices = pxs[:, -1]
call_prices = call_pxs[:, -1]
repl_pxs = repls[:, -1]
gamma_hue = np.mean(gammas[:,:-1], axis=1)

# plot
fig, ax = plt.subplots(figsize=(32,16))
sns.scatterplot(prices, call_prices — repl_pxs, ax=ax, hue=gamma_hue)

# label
ax.axhline(np.mean(call_prices — repl_pxs), color=’orange’)
ax.set_title(‘Pnl vs Final Spot when hedging using implied volatility’, fontsize=32)
ax.set_xlabel(‘Final Stock Price, S’, fontsize=24)
ax.set_ylabel(‘Pnl’, fontsize=24);

png
Изображение автора

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

Качается ли он в обе стороны?

Прежде чем подвести итоги, давайте просто убедимся, что это работает в обе стороны — если мы покупаем опцион, а реализованная волатильность ниже, чем подразумеваемая волатильность, достигает ли распределение убытков пика (или минимума??) вокруг страйка?# set implied vol and use that as vol to compute hedge
sigma = 0.20
iv = 0.30
hedge_vol = 0.30

# compute all replication data
pxs, rets, call_pxs, repls, deltas, gammas = run_delta_hedge_sim(px, strike, risk_free, divs, sigma, years, points, sims, iv=iv, hedge_vol=hedge_vol)

# get quantities for plotting
prices = pxs[:, -1]
call_prices = call_pxs[:, -1]
repl_pxs = repls[:, -1]
gamma_hue = np.mean(gammas[:,:-1], axis=1)

# plot
fig, ax = plt.subplots(figsize=(32,16))
sns.scatterplot(prices, call_prices — repl_pxs, ax=ax, hue=gamma_hue)

# label
ax.axhline(np.mean(call_prices — repl_pxs), color=’orange’)
ax.set_title(‘Pnl vs Final Spot when hedging using implied volatility’, fontsize=32)
ax.set_xlabel(‘Final Stock Price, S’, fontsize=24)
ax.set_ylabel(‘Pnl’, fontsize=24);

png
Изображение автора

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

Заключение

Как показано выше, вычисление и хеджирование результирующих дельт на основе подразумеваемой волатильности и реализованной волатильности приводит к 2 очень разным распределениям и эволюциям pnl. Из-за необходимости отмечать рынок (а не маркировать модель) подразумеваемая волатильность обычно выбирается для хеджирования опционов. Хотя это приводит к более плавной эволюции pnl, это приводит к проблеме, связанной с невозможностью узнать, каким будет ваш окончательный pnl, даже если вы сделаете правильный выбор по сравнению с реализованным или подразумеваемым.

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

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

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

Источник

Источник

Источник