Фінанси в Excel+VBA. Калькулятор опціонів за моделлю Блека-Шоулза

Стаття адресована і буде корисна в першу чергу тим, хто почав вивчати опціони і хоче розібратися в їх ціноутворення. Ну і в другу чергу тим, хто ще не використовує інструмент VBA у своїх розрахунках в екселі, але хоче навчитися — ви побачите, як це насправді просто.

Основи опціонів
Для початку коротко про суть і ціноутворення опціонів. Опціон має чотири основних параметри:

1. Базовий актив
2. Тип опціону (Кол або Пут)
3. Ціна страйку (ціна виконання опціону)
4. Дата експірації (закінчення) опціону

Для покупця опціону він являє собою право купити (опціон Кол) або продати (опціон Пут) базовий актив за ціною страйку в день експірації. Для продавця опціону він являє собою обов'язок продати (опціон Кол) або купити (опціон Пут) базовий актив за ціною страйку в день експірації. Фактично опціон являє собою страховку від зміни ціни базового активу (БА) від моменту операції до дати експірації — у ролі страховика виступає продавець (у разі несприятливої зміни ціни БА він виплачує страховку покупцеві опціону), а страхувальником є покупець опціону (він платить за страховку продавцю).

Як і ціна страховки ціна опціону повністю визначається ймовірністю «страхового випадку», тобто виконання опціону (виконання права покупця опціону). Основні складові, які впливають цю ймовірність і на ціну опціону, на вартість страховки, яку платить покупець і продавець отримує:
  • Різниця між ціною страйку та ціною базового активу. Тобто при купівлі Колла, чим вище його страйк, тим він дешевше (т. к. знижується ймовірність того, що на момент експірації БА буде вище ціни страйку)
  • Волатильність базового активу. Чим вище волатильність (грубо розмах коливань ціни) БА, тим вище ймовірність досягти страйку до експірації.
  • Час до експірації. Чим більше часу до експірації опціону, тим при купівлі Колла вище ймовірність що за цей час ціна базового активу піде вище страйку, відповідно ціна опціону вище.


При цьому залежність ціни опціону по кожній з цих трьох складових нелінійна. Стала загальноприйнятою формула оцінки опціонів з урахуванням цих основних факторів була виведена Фішером Блеком і Майроном Шоулзом в 1973 році.

Формула Блека-Шоулза має наступний вигляд (докладно можна подивитися у Вікіпедії):

Ціна (європейського) опціону call:
image
image
image
Ціна (європейського) опціону put:
image

Позначення:
C(S,t) — поточна вартість опціону call в момент t до закінчення терміну опціону (до експірації);
S — поточна ціна базового активу;
N(x) — ймовірність того, що відхилення буде менше в умовах стандартного нормального розподілу (таким чином, і обмежують область значень функції стандартного нормального розподілу);
K — ціна виконання опціону;
r — безризикова процентна ставка;
T — t — який час до закінчення терміну опціону;
image — волатильність прибутковості (квадратний корінь з дисперсії) базового активу.

Греки опціонів
Для оцінки чутливості ціни опціону до ціни БА, волатильності, і часу до експірації, застосовують коефіцієнти, звані Греками (коефіцієнти в основному позначаються грецькими буквами, за винятком «веги»).

Греки в моделі Блека-Шоулза обчислюються наступним чином:

1. Дельта (image) — швидкість зміни ціни опціону від зміни ціни БА. Для опціону Колл дельта дорівнює image, для опціону Пут image. Дельта показує поточний нахил кривої вартості опціону в залежності від ціни БА.

2. Гамма ( image) — швидкість зміни ціни опціону від зміни Дельти (або прискорення від зміни ціни БА). Гамма дорівнює image.

3. E ( image) — описує залежність ціни опціону від зміни волатильності БА: image. Вега відображає число пунктів зміни вартості опціону на кожний відсотковий пункт (1%) зміни волатильності.

4. Тета ( image) — описує зниження ціни опціону в залежності від часу до експірації. Для Колла — image, для Пута — image.

Вищенаведені формули вірні для загального випадку, в тому числі для випадку опціонів на акції. Для розрахунку опціонів на ф'ючерсні контракти безризикова ставка r не застосовується. Т. к. на Московській біржі торгуються опціони на ф'ючерси, далі в розрахунках процентну ставку не враховуємо.

Реалізація моделі в MS Excel
Отже, реалізація моделі Блека-Шоулза в Excel+VBA.

Для зручності створимо функцію для кожної змінної з моделі БШ. У кожній функції будуть вхідні змінні:

S — ціна БА
X — ціна страйку
d — число днів до експірації
y — кількість днів у році
v — волатильність
OptionType — тип опціону «Кол» або «Пут» (тільки для розрахунку ціни і дельти)

Запис звичайної функції в VBA виглядає наступним чином:
Function НазваниеФункции(вхідні змінні через кому)
… обчислення…
НазваниеФункции =… обчислення…
End Function


Таку функцію можна викликати як з інших функцій, так і з аркуша Excel.
Функції записуються в створений Модуль (запускаємо VBA в Excel, наприклад натисненням Alt+F11, вибираємо Insert -> Module):

Function d_1(S, X, d, y, v)

T = d / y
d_1 = (Log(S / X) + (0.5 * (v ^ 2)) * T) / (v * (T ^ 0.5))
End Function

Function d_2(S, X, d, y, v)
T = d / y
d_2 = d_1(S, X, d, y, v) — v * (T ^ 0.5)
End Function

Function Nd_1(S, X, d, y, v)
Nd_1 = Application.NormSDist(d_1(S, X, d, y, v))
End Function

Function Nd_2(S, X, d, y, v)
Nd_2 = Application.NormSDist(d_2(S, X, d, y, v))
End Function

Function N_d_1(S, X, d, y, v)
N_d_1 = Application.NormSDist(-d_1(S, X, d, y, v))
End Function

Function N_d_2(S, X, d, y, v)
N_d_2 = Application.NormSDist(-d_2(S, X, d, y, v))
End Function

Function N1d_1(S, X, d, y, v)
T = d / y
N1d_1 = 1 / (2 * Application.Pi()) ^ 0.5 * (Exp(-0.5 * d_1(S, X, d, y, v) ^ 2))
End Function

Function OptionPrice(OptionType, S, X, d, y, v)
If OptionType = «Call» Then
OptionPrice = S * Nd_1(S, X, d, y, v) — X * Nd_2(S, X, d, y, v)
ElseIf OptionType = «Put» Then
OptionPrice = X * N_d_2(S, X, d, y, v) — S * N_d_1(S, X, d, y, v)
End If
End Function

Function Delta(OptionType, S, X, d, y, v)
If OptionType = «Call» Then
Delta = Application.NormSDist(d_1(S, X, d, y, v))
ElseIf OptionType = «Put» Then
Delta = Application.NormSDist(d_1(S, X, d, y, v)) — 1
End If
End Function

Function Theta(S, X, d, y, v)
T = d / y
Theta = -((S * v * N1d_1(S, X, d, y, v)) / (2 * (T ^ 0.5))) / y
End Function

Function Gamma(S, X, d, y, v)
T = d / y
Gamma = N1d_1(S, X, d, y, v) / (S * (v * (T ^ 0.5)))
End Function

Function Vega(S, X, d, y, v)
T = d / y
Vega = (S * (T ^ 0.5) * N1d_1(S, X, d, y, v)) / 100
End Function


Готовий Excel-файл можна завантажити посилання.

Тепер у екселевской комірці можемо викликати будь-яку прописану нами функцію, наприклад, ввівши в комірці =OptionPrice(«Put»;76870;90000;13;365;0.47) ми отримаємо теоретичну ціну опціону Пут при ціні базового активу 76870, страйк 90000, передбачуваної волатильності 45% і за 13 днів до експірації.

Деякі моменти, які хотілося б відзначити
  • Отримані в нашій програмі значення теорцены практично ідентичні тим, що транслює Мосбиржа, це означає, що біржа у своїх розрахунках використовує саме модель БШ.
  • насправді опціон (як і страховка) не має справжньої справедливої вартості — вона для кожного своя, і залежить від того яка передбачається волатильність або, наприклад, яке враховувати кількість днів (враховувати вихідні, з якою вагою враховувати різні дні тижня, скільки днів у році використовувати у формулі) і т. д.
  • Греки володіють чудовою властивістю — щоб отримати значення греків для портфеля ф'ючерсів і опціонів треба просто скласти відповідні греки для окремих активів портфеля. Тобто ми легко можемо розрахувати, наприклад, скільки потрібно купити/продати базових ф'ючерсів щоб загальна вартість портфеля не змінювалася при зміні ціни цього ф'ючерсу (т. зв. вирівнювання Дельти або дельта-хеджування).
  • Не дивлячись на свою поширеність, модель БШ заснована на допущенні, що дохідність активу має нормальний розподіл, що на реальному ринку не виконується ніколи.


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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.