Торговля опционами

  • Симулятор торговли опционами
  • Python для торговли опционами
  • Торговля опционами: кто такие греки?
  • Ожидаемая прибыль (или убыток) от стратегии торговли опционами
  • Торговля опционами на Python: 5 простых стратегий с кодами
  • Торговля институциональными опционами
  • Комплексные опционные стратегии
  • Стратегия покупки опционов с использованием индикатора супертренда и 5-минутной свечной системы
  • Секреты хедж-фондов
  • Анализ опционов в реальном времени с помощью Python
  • Понимание контанго и бэквордации в торговле фьючерсами

Симулятор торговли опционами

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

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

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

Содержание

  1. Настройка среды
  2. Получение исторических данных о ценах на акции
  3. Создание симулятора торговли опционами
  4. Визуализация сценариев прибылей и убытков
  5. Анализ влияния различных факторов на цены опционов
  6. Заключение

1. Настройка среды

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

  • yfinance: библиотека, которая позволяет нам получать исторические данные о ценах на акции.
  • numpy: Библиотека для численных вычислений на Python.
  • matplotlib: библиотека для создания статических, анимированных и интерактивных визуализаций на Python.
  • mplfinance: библиотека для визуализации финансовых данных в Python.
  • plotly: библиотека для создания интерактивных и динамических визуализаций на Python.

Чтобы установить эти библиотеки, откройте терминал или командную строку и выполните следующую команду:

pip install yfinance numpy matplotlib mplfinance plotly

После завершения установки мы можем перейти к следующему шагу.

2. Получение исторических данных о ценах на акции

Чтобы построить симулятор торговли опционами, нам нужны исторические данные о ценах на акции для моделирования торговых сценариев. Мы будем использовать библиотеку yfinance для получения этих данных непосредственно из Yahoo Finance.

Во-первых, давайте импортируем необходимые библиотеки:

import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt
import mplfinance as mpf
import plotly.graph_objects as go
from scipy.stats import norm

Затем мы можем использовать функцию yf.download() для получения исторических данных о ценах на акции. Давайте получим данные для определенного биржевого символа и периода времени:

# Define the stock symbol and time period
symbol = "AAPL"
start_date = "2018-01-01"
end_date = "2023-06-30"

# Fetch the historical stock price data
data = yf.download(symbol, start=start_date, end=end_date)

Функция yf.download() возвращает Pandas DataFrame, содержащий исторические данные о ценах на акции. Мы можем использовать эти данные для анализа и моделирования стратегий торговли опционами.

3. Создание симулятора торговли опционами

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

class OptionsSimulator:
def __init__(self, data):
self.data = data

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

Далее давайте добавим метод plot_stock_price() который визуализирует исторические данные о ценах на акции с помощью mplfinance:

def plot_stock_price(self):
mpf.plot(self.data, type="candle", )

Метод plot_stock_price()() использует функцию mpf.plot() для создания свечного графика данных о цене акций. Сохраняем график как https://cdn-images-1.medium.com/proxy/1*IXvogZ-dpsmb8LC6GtNJ_w.png используя аргумент savefig.

OptionsSimulator и вызовем метод plot_stock_price() для визуализации данных о цене акций:

simulator = OptionsSimulator(data)
simulator.plot_stock_price()
Plot 1
Рисунок 1: Свечной график исторических данных о ценах на акции. Создано автором

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

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

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

def plot_profit_loss(self, strategy):
# Calculate the profit and loss for the strategy
# ...

# Plot the profit and loss
# ...

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

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

Ниже приведен пример реализации метода plot_profit_loss() для стратегии покрытого вызова:

def plot_profit_loss(self, strategy):
# Calculate the profit and loss for the covered call strategy
stock_price = self.data["Close"]
call_option_price = strategy["call_option_price"]
strike_price = strategy["strike_price"]
premium = strategy["premium"]

profit_loss = np.where(stock_price <= strike_price, stock_price - call_option_price + premium, strike_price - call_option_price + premium)

# Plot the profit and loss
plt.plot(stock_price, profit_loss)
plt.xlabel("Stock Price")
plt.ylabel("Profit/Loss")
plt.title("Profit/Loss for Covered Call Strategy")

plt.close()

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

Наконец, мы строим график прибыли и убытков с помощью plt.plot() и сохраняем график как https://cdn-images-1.medium.com/proxy/1*k2AimiQMNwnV03M2Vk524g.png используя ».

OptionsSimulator и вызовем метод plot_profit_loss() для визуализации прибыли и убытка для покрытой колл-стратегии:

simulator = OptionsSimulator(data)
simulator.plot_profit_loss({
"call_option_price": 10,
"strike_price": 150,
"premium": 5
})
Plot 2
Рисунок 2: Прибыль и убыток по покрытой колл-стратегии. Создано автором

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

5. Анализ влияния различных факторов на цены опционов

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

def analyze_option_prices(self, factor):
# Analyze the impact of the factor on option prices
# ...

# Plot the option prices
# ...

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

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

Ниже приведен пример реализации метода analyze_option_prices() для анализа влияния волатильности на цены опционов:

r=0.05 # Risk-free interest rate

def analyze_option_prices(self, factor):
# Analyze the impact of volatility on option prices
stock_price = self.data["Close"]
volatility = factor["volatility"]
time_to_expiry = factor["time_to_expiry"]
strike_price = factor["strike_price"]

option_prices = np.zeros_like(stock_price)
for i in range(len(stock_price)):
d1 = (np.log(stock_price[i] / strike_price) + (0.5 * volatility**2) * time_to_expiry) / (volatility * np.sqrt(time_to_expiry))
d2 = d1 - volatility * np.sqrt(time_to_expiry)

call_option_price = stock_price[i] * norm.cdf(d1) - strike_price * np.exp(-r * time_to_expiry) * norm.cdf(d2)
put_option_price = strike_price * np.exp(-r * time_to_expiry) * norm.cdf(-d2) - stock_price[i] * norm.cdf(-d1)

option_prices[i] = call_option_price

# Plot the option prices
fig = go.Figure(data=go.Scatter(x=stock_price, y=option_prices))
fig.update_layout(
title="Option Prices vs. Stock Price",
xaxis_title="Stock Price",
yaxis_title="Option Price"
)

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

Наконец, мы строим график цен опционов с помощью go.Scatter() из библиотеки plotly и сохраните график как https://cdn-images-1.medium.com/proxy/1*0gCg0-Q7omDRzNPLjImusw.png используя ».

OptionsSimulator и вызовем метод analyze_option_prices() для анализа влияния волатильности на цены опционов:

simulator = OptionsSimulator(data)
simulator.analyze_option_prices({
"volatility": 0.2,
"time_to_expiry": 1,
"strike_price": 150
})
Plot 3
Рисунок 3: Цены опционов по сравнению с ценой акций для разных уровней волатильности. Создано автором

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

6. Заключение

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

На протяжении всего учебника мы использовали концепции объектно-ориентированного программирования для создания модульной и многократно используемой структуры кода. Мы также включили различные библиотеки Python, такие как numpymatplotlibmplfinance и plotly, чтобы расширить функциональность нашего симулятора и создать интерактивные визуализации.

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

Python для торговли опционами

Часть 1: Выбор колл-спреда с наибольшей вероятностью прибыли

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

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

Более того, OptionLab предоставляется как есть, без каких-либо гарантий точности результатов. Таким образом, я не несу ответственности за любые убытки, вызванные использованием кода. Об ошибках можно сообщать как о проблемах на странице проекта на GitHub. Я открыт для любых вопросов, исправлений, комментариев или предложений по коду. Вы также можете связаться со мной через Linkedin.

Ладно, теперь можно приступать.

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

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

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

После этого очень короткого введения в колл-спреды, давайте продолжим писать код!

Первым делом необходимо установить OptionLab на компьютер. Если вы уже установили дистрибутив Python, такой как Anaconda, откройте терминал, запустите pip install optionlab, и все готово.

Далее вы можете увидеть фрагмент кода Python, в котором импортируются необходимые библиотеки, определяются некоторые входные данные, а данные цепочки опций (только вызовы) загружаются из файла .csv. Также создается объект Strategy.# Import the required libraries
from optionlab.strategy import Strategy
import pandas as pd
import matplotlib.pyplot as plt

# Input data (Microsoft, MSFT)
stockprice=342.97
volatility=0.18
startdate=»2021-11-22″
targetdate=»2021-12-17″
interestrate=0.001
minstock=0.0
maxstock=stockprice+round(stockprice*0.5,2)

# Load the option chain data (calls only) from a .csv file
df=pd.read_csv(«msft_22-November-2021.csv»)
chain=[]

for i,_ in enumerate(df[«Expiration»]):
if df[«Expiration»][i]==targetdate and df[«Type»][i]==»call»:
chain.append([df[«Strike»][i],
df[«Bid»][i],
df[«Ask»][i]])

# Strategy object is created
st=Strategy()

Базовым активом являются акции Microsoft, которые 2021 ноября 2021 г. торговались за $342,97. Создается список под названием chain, и к нему добавляются страйк, цена покупки и цена продажи каждого колл-опциона, истекающего в декабре 2021 года 17.

В приведенной ниже функции get_highest_pop() декартово произведение используется для построения пар колл-опционов. Для каждой пары есть две возможности: купить первый колл и продать второй, или наоборот. Вычисления выполняются путем вызова метода run() объекта Strategy. Функция возвращает разброс вызовов с наибольшим PoP.def get_highest_pop():
maxpop=0.0

for i in range(len(chain)-1):
for j in range(i+i,len(chain)):
for k in ((«sell»,»buy»),(«buy»,»sell»)):
if k[0]==»sell»:
premium=[chain[i][1],chain[j][2]]
else:
premium=[chain[i][2],chain[j][1]]

strategy=[{«type»:»call»,»strike»:chain[i][0],»premium»:premium[0],»n»:100,»action»:k[0]},
{«type»:»call»,»strike»:chain[j][0],»premium»:premium[1],»n»:100,»action»:k[1]}]

st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy)

out=st.run()

if maxpop<out[«ProbabilityOfProfit»]:
maxpop=out[«ProbabilityOfProfit»]
best_strategy=strategy

return best_strategy

Если вы проанализируете этот спред звонков впоследствии, вы обнаружите удивительно высокий PoP в 99,1%. Открыли ли мы Святой Грааль торговли опционами? Что ж, давайте не будем торопиться.

Этот бычий колл-спред состоит из покупки 100 коллов со страйк-ценой $145,00 (на самом деле очень ITM) по $198,05 за штуку и продажи 100 коллов со страйк-ценой $305,00 (меньше ITM, чем купленная нога) по $38,10 за штуку. Это приведет к чистому дебету в размере 15 995,00 долларов США на вашем брокерском счете, что также является максимальным убытком, при максимальной прибыли в размере … 5,00 долларов США.

График прибыли/убытка для самого высокого спреда по звонкам в точках присутствия.

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

Крайне низкое соотношение максимальной прибыли/максимального убытка найденного ранее колл-спреда (1:3199) и его очень высокая стоимость, несмотря на то, что PoP выше 99%, определенно не делают его очень привлекательным на практике. Другая возможность состоит в том, чтобы установить порог для максимального соотношения прибыли/максимального убытка, который трейдер считает приемлемым, а затем искать комбинацию вызовов, удовлетворяющую этому ограничению.

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

for i in range(len(chain)-1):
for j in range(i+i,len(chain)):
for k in ((«sell»,»buy»),(«buy»,»sell»)):
if k[0]==»sell»:
premium=[chain[i][1],chain[j][2]]
else:
premium=[chain[i][2],chain[j][1]]

strategy=[{«type»:»call»,»strike»:chain[i][0],»premium»:premium[0],»n»:100,»action»:k[0]},
{«type»:»call»,»strike»:chain[j][0],»premium»:premium[1],»n»:100,»action»:k[1]}]

st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy)

out=st.run()

if abs(out[«MaximumReturnInTheDomain»]/out[«MinimumReturnInTheDomain»])>=1.0:
if maxpop<out[«ProbabilityOfProfit»]:
maxpop=out[«ProbabilityOfProfit»]
best_strategy=strategy

return best_strategy

С учетом этого ограничения (бычий) колл-спред с самым высоким PoP 49% теперь строится следующим образом: мы должны купить 100 ITM-коллов со страйком $260,00 по $83,00 каждый и продать 100 OTM-коллов со страйком $430,00 по $0,07 каждый. Общая стоимость этой стратегии составляет 8 293,00 долларов США (что также является максимальным убытком), в то время как максимальная прибыль составляет 8 707,00 долларов США, что приводит к максимальному соотношению прибыли к максимальному убытку примерно 1:1.

Диаграмма прибыли/убытка для наибольшего спреда по звонкам PoP с максимальным соотношением прибыли к максимальному убытку не менее 1:1.

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

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

Часть 2: Смешивание опционов и акций

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

FПрежде всего, добро пожаловать в мой блог на Medium.com. В этой статье я привожу примеры того, как анализировать простую и очень популярную стратегию торговли опционами, известную как покрытый колл, используя библиотеку OptionLab и Python. Для установки OptionLab достаточно выполнить pip install optionlabв терминале. Исходный код OptionLab находится в свободном доступе по ссылке ниже.

GitHub — rgaveiga/optionlab: библиотека Python для оценки стратегий торговли опционами.

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

  1. Покрытый колл, когда вы покупаете акции и продаете коллы одновременно.
  2. Покрытый колл-опцион, когда вы продаете колл-опционы, но уже владеете базовыми акциями, и цена акции выросла с тех пор, как вы приобрели акции.
  3. Покрытый колл-опцион, когда вы продаете колл-опционы, но уже владеете базовыми акциями, и цена акции снизилась с тех пор, как вы приобрели акции.

В качестве примера первого сценария предположим, что 16 января 2023 года вы приобрели 100 акций Nvidia (тикер: NVDA) по $168,99 каждая. Сразу же вы продали 100 OTM коллов с ценой исполнения $185,00, что примерно на 10% выше текущей цены акций, срок действия которой истекает 17 февраля 2023 года. За звонки вы получали премию в размере $4,10 за опцион. Реализацию этой простой стратегии можно увидеть во фрагменте кода Python ниже.# Import the required library
from optionlab.strategy import Strategy

# Input data (Nvidia, NVDA)
stockprice=168.99
volatility=0.483
startdate=»2023-01-16″
targetdate=»2023-02-17″
interestrate=0.045
minstock=stockprice-100.0
maxstock=stockprice+100.0

# Strategy object is created
st=Strategy()

# The covered call strategy is defined
strategy=[{«type»:»stock»,»n»:100,»action»:»buy»},
{«type»:»call»,»strike»:185.0,»premium»:4.1,»n»:100,»action»:»sell»}]

# Input data is provided and the calculations are performed
st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy)

out=st.run()

# Print useful information on screen
print(«Strategy cost: %.2f» % out[«StrategyCost»])
print(«Stock price profitable range at maturity: %.2f -> %.2f» %
(out[«ProfitRanges»][0][0],out[«ProfitRanges»][0][1]))
print(«Maximum profit: %.2f» % out[«MaximumReturnInTheDomain»])
print(«Probability of profit: %.1f%%» % (out[«ProbabilityOfProfit»]*100.0))

# Display the profit/loss diagram
st.plotPL()

После запуска этого скрипта Python вы увидите следующий вывод:Strategy cost: -16489.00
Stock price profitable range at maturity: 164.90 -> inf
Maximum profit: 2011.00
Probability of profit: 54.9%

Другими словами, вам нужно будет потратить $16 489,00, что является стоимостью приобретения 100 акций Nvidia за вычетом общей премии, полученной от проданных звонков. Для того, чтобы получить прибыль от этой сделки, необходимо, чтобы цена акции была не менее $164,90 на момент экспирации.

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

Вероятность получения прибыли (PoP) по этой стратегии покрытых коллов составляет около 55%. Диаграмма прибыль/убыток (P/L) выглядит следующим образом:

График прибыли/убытка покрытого колла.

На графике P/L позиция проданных коллов обозначается красной стрелкой вправо, а зеленая пунктирная линия представляет позицию спотовой цены акций.

Теперь разберем второй сценарий. Предположим, вы уже владели теми 100 акциями Nvidia, которые купили некоторое время назад (точная дата не имеет значения) на $10,00 меньше, чем цена, по которой акции торговались 16 января 2023 года. А 16 января 2023 года вы продали 100 коллов с той же страйк-ценой $185,00.

Можно ли оценить эту стратегию с помощью OptionLab?

Ответ — да. Все, что вам нужно сделать, это внести это небольшое изменение в приведенный выше код Python, добавив дополнительный ключ в словарь Python, где определена основная часть стратегии:strategy=[{«type»:»stock»,»n»:100,»action»:»buy»,»prevpos»:158.99},
{«type»:»call»,»strike»:185.0,»premium»:4.1,»n»:100,»action»:»sell»}]

Если вы внесете это изменение и запустите сценарий снова, результат будет следующим:Strategy cost: -15489.00
Stock price profitable range at maturity: 154.90 -> inf
Maximum profit: 3011.00
Probability of profit: 70.9%

Неудивительно, что стоимость построения этой стратегии ($15,489.00) значительно ниже. В конце концов, вы приобрели акции по более низкой цене — $158,99 за акцию, на что указывает значение ключа «prevpos» в определении стратегии. Кроме того, стратегия прибыльна даже в том случае, если цена акции по истечении срока действия упадет до $154,90, а максимальная прибыль в этом случае также будет намного выше ($3 011,00).

Наконец, поскольку диапазон цен на акции, для которых стратегия была бы прибыльной, расширился, вероятность получения прибыли (PoP) также увеличилась почти до 71%!

Я оставляю это на ваше усмотрение, читатель, в качестве упражнения для определения того, что произойдет с этими цифрами, если вы реализуете третий сценарий, предполагая, что вы купили акции, когда Nvidia торговалась по цене $178,99.

В качестве бонуса: а что, если мы перевернем логику покрытого колла? Допустим, после тщательного анализа рынка у вас есть ощущение, что цена акций Nvidia будет падать, а не расти. Итак, 16 января 2023 года вы взяли в долг 100 акций Nvidia и продали их по текущей цене $168,99, надеясь выкупить эти акции по более низкой цене и заработать на разнице.

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

Для этого вы решили купить те же коллы со страйк-ценой $185,00 со сроком действия 17 февраля 2023 года. Используя тот же фрагмент кода Python, все, что нужно, это определить эту стратегию следующим образом:strategy=[{«type»:»stock»,»n»:100,»action»:»sell»},
{«type»:»call»,»strike»:185.0,»premium»:4.1,»n»:100,»action»:»buy»}]

Вы также можете изменить одну из команд print в скрипте, чтобы отображать не максимальную прибыль, а максимальный убыток.print(«Maximum loss: %.2f» % (abs(out[«MinimumReturnInTheDomain»])))

Затем вы запускаете скрипт Python и получаете следующий результат:Strategy cost: 16489.00
Stock price profitable range at maturity: 0.00 -> 164.88
Maximum loss: 2011.00
Probability of profit: 45.1%

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

График P/L этой «перевернутой» стратегии покрытых колл-опционов можно увидеть ниже. Синяя стрелка вправо указывает на позицию купленных коллов.

График прибыли/убытка «перевернутого» покрытого колла.

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

Часть 3: сделка со 100% вероятностью прибыли

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

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

Если вы еще этого не сделали и установили фреймворк Python, такой как Anaconda Python, вам следует, прежде всего, установить OptionLab, как обычно, с pip install optionlab. Исходный код библиотеки также доступен на странице проекта на GitHub. Придание проекту звезды всегда приветствуется.

GitHub — rgaveiga/optionlab: библиотека Python для оценки стратегий торговли опционами.

OptionLab является бесплатным, открытым исходным кодом и предоставляется как есть, без каких-либо гарантий точности результатов. Таким образом, я не несу ответственности за любые убытки, вызванные использованием кода. Я открыт для любых вопросов, исправлений, комментариев или предложений по коду. Вы также можете связаться со мной через Linkedin.

Об ошибках можно сообщить как о проблемах на странице проекта на GitHub выше.

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

Как и в этой статье, базовым активом в этом исследовании являются акции Nvidia (тикер: NVDA), торгуемые 16 января 2023 года по цене $168,99. Стратегия построена следующим образом: было куплено 100 колл-опционов со страйк-ценой $165,00 и продано 100 колл-опционов со страйк-ценой $170,00, при этом обе части стратегии истекают 17 февраля 2023 года. В принципе, эта стратегия может показаться похожей на колл-спред, который обычно приводит к дебету на счете трейдера, поскольку он продает опционы с более высокой ценой исполнения, чем опционы, которые он покупает. Как вы хорошо знаете, такая стратегия, конечно, не имеет 100% присутствия.

Тем не менее, существует очень особое обстоятельство, при котором этот колл-спред действительно становится стратегией со 100% PoP. Это может произойти при входе в длинную и короткую позиции в разное время. Допустим, вы купили эти 100 колл-опционов в какой-то момент до 16 января 2023 года, когда эти опционы были OTM (то есть цена акций Nvidia была ниже $165,00), и вы заплатили за них $7,50 каждый. Это означает, что $750.00 покинули ваш счет.

Если 16 января 2023 года цена акций выросла до $168,99, это означает, что эти колл-опционы стали ITM, и, следовательно, их цена выросла. На самом деле, в тот день они торговались по 12,65 доллара за штуку. С другой стороны, премия по страйк-колл-опционам на $170,00 составила $9,90 за штуку. Таким образом, продавая эти опционы, вы получите $990.00. С этими картами на столе, каков будет наихудший сценарий?

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

Тем не менее, поскольку вы вошли в длинную позицию, когда эти опционы имели более низкую цену, чем опционы, которые вы продали, результат в худшем случае все равно принесет прибыль в размере 240,00 долларов США! В конце концов, вы заплатили $750.00 за купленные вами колл-опционы, но получили $990.00 за те, которые вы продали.

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

График прибыли/убытка стратегии.

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

В следующем фрагменте кода Python показано, как использовать OptionLab для создания диаграммы прибыли/убытка.from optionlab.strategy import Strategy

st=Strategy()

# Input data (Nvidia, NVDA)
stockprice=168.99
volatility=0.483
startdate=»2023-01-16″
targetdate=»2023-02-17″
interestrate=0.045
minstock=stockprice-100.0
maxstock=stockprice+100.0

# The strategy is defined. Pay attention to the ‘prevpos’ key in the first dictionary
strategy=[{«type»:»call»,»strike»:165.0,»premium»:12.65,»n»:100,»action»:»buy»,»prevpos»:7.5},
{«type»:»call»,»strike»:170.0,»premium»:9.9,»n»:100,»action»:»sell»}]

# Input data is provided and the calculations are performed
st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy)

out=st.run()

# Display the profit/loss diagram
st.plotPL()

На первый взгляд может показаться не особенно интересным использование кода Python, каким бы простым он ни был, чтобы прийти к выводу, что действительно можно иметь стратегию, напоминающую колл-спред со 100% PoP. Однако, как я уже упоминал в начале этой статьи, по-настоящему важно проиллюстрировать на примере особенность библиотеки OptionLab, которая может быть очень ценной при построении сложных опционных стратегий.

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

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

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

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

Часть 4: Дополнительные комментарии по сделке со 100% вероятностью прибыли

В моей последней части на Medium была представлена стратегия динамических колл-опционов, которая, если она реализована так, как описано там, теоретически обеспечивает 100% вероятность получения прибыли. Что ж, действительно, как и все предыдущие, статья была посвящена демонстрации использования библиотеки Python, разработанной мною для анализа опционных стратегий, OptionLab. Стратегия со 100% PoP была продемонстрирована в качестве наглядного примера применения библиотеки.

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

В конкретном случае вышеупомянутой статьи, в первый день был куплен колл за $7.50. Через некоторое время цена базового актива (NVDA, в данном примере) значительно выросла, и этот первый купленный колл стал стоить $12,65. Конечно, вы можете продать его, закрыть сделку и положить в карман $12,65 — $7,50 = $5,15 за колл-опцион. Я не спорю, что это было бы самым тривиальным решением, если бы вы хотели гарантировать прибыль.

Но затем вы заметили, что колл с более высоким страйком был оценен в 9,90 доллара. Продав этот колл-опцион, вы получите $9,90 за колл-опцион. Таким образом, если при экспирации цена NVDA упадет ниже страйка первоначально купленного колла с низким страйком, то оба колла истекают бесполезными, и ваш окончательный результат будет $9,90 — $7,50 = $2,40. Это, конечно, меньше, чем 5,15 доллара, но все же больше нуля. Таким образом, было бы прибылью, если бы вы рассматривали состояние своего торгового счета перед покупкой первого колла в качестве первоначального ориентира.

Стоит ли оно того? Как показано в статье, максимальная прибыль, которую вы можете получить, составляет 7,40 доллара. Чтобы получить $5,15 или рискнуть получить всего $2,40 за возможность выиграть $7,40… Стоит ли оно того? Это на ваше усмотрение.

Я, конечно, не являюсь автором статей о том, как быстро разбогатеть, которые распространяются здесь, на Medium. Я не верю в такие статьи; Я бы даже сказал, что 100% из них являются мошенничеством. Мои статьи на Medium посвящены использованию языка Python для анализа опционных стратегий. OptionLab — это, прежде всего, образовательный инструмент, и его нельзя переоценить, даже несмотря на то, что опционные трейдеры могут использовать его — на свой страх и риск — в качестве инструмента для принятия решений. Я всегда буду подчеркивать, что примеры, которые я привожу в своих статьях, не являются рекомендациями.

Часть 5. Снижение риска при убыточном длинном колле

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

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

В этой статье мы поговорим именно об этом. Пожалуйста, оставайтесь со мной.

Прежде чем мы продолжим, в расчетах, представленных в этой статье, используется библиотека Python OptionLab. Поэтому, если вы хотите запустить код, приведенный ниже, вам необходимо сначала установить OptionLab, что можно сделать с помощью команды pip install optionlab.

Исходный код библиотеки также доступен на странице проекта на GitHub. Придание проекту звезды всегда приветствуется.

GitHub — rgaveiga/optionlab: библиотека Python для оценки стратегий торговли опционами.

OptionLab является бесплатным, открытым исходным кодом и предоставляется как есть, без каких-либо гарантий точности результатов. Таким образом, я не несу ответственности за любые убытки, вызванные использованием кода. Я открыт для любых вопросов, исправлений, комментариев или предложений по коду. Вы также можете связаться со мной через Linkedin.

Об ошибках можно сообщить как о проблемах на странице проекта на GitHub выше.

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

В качестве базового актива мы снова будем использовать акции Nvidia (тикер: NVDA) в иллюстративных целях. 16 января 2023 года эти акции торговались на уровне $168,99. Предположим, что в какой-то момент до этой даты вы были настроены оптимистично по отношению к Nvidia и купили 100 колл-опционов со страйк-ценой $175 со сроком действия 17 февраля 2023 года по $9 за штуку. Однако с тех пор эти звонки обесценились, и к 16 января 2023 года их стоимость упала всего до $7,55. Это означает, что до этого момента убыток составлял $1,45 на опционный контракт. Вы больше не были уверены в том, что акции вырастут настолько, что эта позиция станет прибыльной. На самом деле, шансы были не в вашу пользу, о чем свидетельствует результат фрагмента кода Python ниже.# Import the required libraries
from optionlab.strategy import Strategy
import pandas as pd
import matplotlib.pyplot as plt

# Input data (Nvidia, NVDA)
stockprice=168.99
volatility=0.483
startdate=»2023-01-16″
targetdate=»2023-02-17″
interestrate=0.045
minstock=stockprice-100.0
maxstock=stockprice+100.0

st=Strategy()

# Current situation
strategy=[{«type»:»call»,»strike»:175.0,»premium»:7.55,»n»:100,»action»:»buy»,
«prevpos»:9.00}]

st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy)

out0=st.run()

print(«Stock price profitable range at maturity: %.2f -> %.2f» %
(out0[«ProfitRanges»][0][0],out0[«ProfitRanges»][0][1]))
print(«Maximum loss: %.2f» % (abs(out0[«MinimumReturnInTheDomain»])))
print(«Probability of profit: %.1f%%» % (out0[«ProbabilityOfProfit»]*100.0))

Результат:Stock price profitable range at maturity: 184.01 -> inf
Maximum loss: 900.00
Probability of profit: 26.5%

Чтобы этот длинный колл закончился прибылью, цена акций Nvidia на 17 февраля 2023 года должна быть выше $184. Используя модель Блэка-ШоулзаOptionLab оценила, что вероятность этого составляет всего 26,5%. Так как это длинный колл, максимальный убыток составил 900 долларов.

В спорной статье, где я продемонстрировал опционную стратегию с вероятностью прибыли (PoP) 100%, мы получили выигрышный лонг-колл, в котором риск потери теоретически был полностью исключен. Это было достигнуто за счет превращения длинного колла в своеобразный вертикальный спред, при котором продавались коллы с более высоким страйком, по сравнению с купленными коллами.

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

В этом исследовании мы проанализируем эффект от выбора страйка для проданной ноги с помощью следующего фрагмента кода Python.# Load the option chain data (calls only) from a .csv file
df=pd.read_csv(«nvda_16-January-2023.csv»)
chain=[]

for i,_ in enumerate(df[«Expiration»]):
if df[«Expiration»][i]==targetdate and df[«Type»][i]==»call» and \
df[«Strike»][i]>175.0:
chain.append([df[«Strike»][i],df[«Bid»][i])

# Funtion that compute the adjustments of the long call
def compute_adjustment():
strikes=[]
losses=[]
profits=[]
PoPs=[]

for c in chain:
strategy=[{«type»:»call»,»strike»:175.0,»premium»:7.55,»n»:100,
«action»:»buy»,»prevpos»:9.00},
{«type»:»call»,»strike»:c[0],»premium»:c[1],»n»:100,
«action»:»sell»}]

st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy)

out=st.run()

strikes.append(c)
losses.append(abs(out[«MinimumReturnInTheDomain»]))
profits.append(out[«MaximumReturnInTheDomain»])
PoPs.append(out[«ProbabilityOfProfit»]*100.0)

return strikes,losses,profits,PoPs

strikes,losses,profits,PoPs=compute_adjustment()

# Make plots
plt.xlabel(«Strike»)
plt.ylabel(«Maximum loss»)
plt.xlim(175,400)
plt.plot(strikes,losses)
plt.show()
plt.xlabel(«Strike»)
plt.ylabel(«Maximum profit»)
plt.xlim(175,400)
plt.plot(strikes,profits)
plt.show()
plt.ylabel(«Probability of Profit»)
plt.xlim(175,400)
plt.ylim(25,35)
plt.plot(strikes,PoPs)
plt.show()

Рыночные данные, связанные с цепочкой опционов Nvidia, полученные от Yahoo! Finance и хранящиеся в файле .csv, загружаются в кадр данных Pandas. Впоследствии выбираются все коллы со страйком более $175 и истекающим 17 февраля 2023 года. Функция compute_adjustments() по сути, перебирает каждый из этих страйков, добавляя короткий вызов к уже открытому длинному вызову. После вызова метода run() объекта Strategy страйки, максимальные потери, максимальные прибыли и PoP каждой из рассчитанных стратегий возвращаются compute_adjustments() Результаты представлены на следующих графиках.

Максимальный убыток в зависимости от цены исполнения.

Заметно, что максимальный убыток увеличивается по мере отклонения страйка опционов от страйка лонг-колла, достигая плато примерно в $900, что в любом случае является максимальным убытком купленной ноги. Это происходит из-за низкой стоимости этих удаленных OTM-вызовов, которые после продажи не вычитаются из стоимости, уплаченной за купленные звонки. Наименьший максимальный убыток приходится на страйк $180, первый — выше длинного колл-страйка $175, что в сумме составляет $335 — чуть более трети максимального убытка, если не будет произведена корректировка.

Максимальная прибыль в зависимости от цены исполнения.

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

PoP как функция страйк-цены.

Наконец, точка присутствия оказывается менее чувствительной к выбору страйка для составления скорректированного колл-спреда. Для страйка, ближайшего к страйку длинного колла, PoP достигает 34%, снижаясь примерно до 26,5% для самого дальнего OTM-колла.

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

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

Торговля опционами: кто такие греки?

Торговля опционами: кто такие греки?

ТЛ; ДОКТОР

Греки — Дельта, Гамма, Тета и Вега — это финансовые расчеты, которые измеряют чувствительность опциона к конкретным параметрам. Дельта (Δ) показывает скорость изменения между ценой опциона и движением цены базового актива на 1 доллар. Гамма (Γ) измеряет скорость изменения дельты опционов, основанную на изменении цены базового актива на 1 доллар.

Тета (θ) измеряет чувствительность цены опциона по отношению ко времени, оставшемуся до его погашения (или истечения срока действия). Vega (ν) измеряет чувствительность цены опциона на основе изменения подразумеваемой волатильности на 1%.

Знакомство

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

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

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

Что такое опционные контракты?
Опционный контракт — это финансовый инструмент, который дает вам право (но не обязанность) купить или продать базовый актив по заранее определенной цене (цене исполнения); У него также есть срок годности.

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

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

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

Чем отличаются греки?

Чем отличаются греки?
В торговле опционами вы регулярно встретите дискуссии о греках. Эти финансовые расчеты измеряют чувствительность опциона к конкретным параметрам, таким как время и волатильность. Греки помогают опционным трейдерам принимать более обоснованные решения о своих позициях и оценивать свой риск. В торговле опционами используются четыре основных грека: Дельта, Гамма, Тета и Вега.

Дельта (Δ)
Дельта (Δ) показывает скорость изменения между ценой опциона и движением цены базового актива на 1 доллар. Расчет представляет собой ценовую чувствительность опциона относительно движения цены базового актива.

Дельта колеблется от 0 до 1 для колл-опционов и от 0 до -1 для пут-опционов. Колл-премии растут, когда цена базового актива растет, и падают, когда цена актива падает. С другой стороны, пут-премии падают, когда цена базового актива растет, и растут, когда цена актива падает.

Если ваш колл-опцион имеет дельту 0,75, увеличение цены базового актива на 1 доллар теоретически увеличит премию опциона на 75 центов. Если ваш пут-опцион имеет дельту -0,4, увеличение цены базового актива на 1 доллар уменьшит премию на 40 центов.

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

Представьте, что ваш колл-опцион имеет дельту 0,6 и гамму 0,2. Цена базового актива увеличивается на 1 доллар, а его колл-премия — на 60 центов. Затем дельта опциона также корректируется в сторону увеличения на 0,2-0,8.

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

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

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

В целом, более высокая волатильность делает опционы более дорогими, потому что существует большая вероятность достижения цены исполнения. Продавец опционов выиграет от падения подразумеваемой волатильности, в то время как покупатель окажется в невыгодном положении. Давайте рассмотрим простой пример: если ваш опцион имеет vega 0,2 и подразумеваемая волатильность возрастает на 1%, премия должна увеличиться на 20 центов.

Могу ли я использовать греков для контрактов на криптовалютные опционы?

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

Заключение

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

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

Использование Python с OptionLab для вычисления ожидаемых значений

Фото Елены Койчевой с сайта Unsplash

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

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

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

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

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

В этом уравнении — безрисковая процентная ставка в годовом исчислении, σ — годовая волатильность базовой акции, а Z — стандартная нормально распределенная случайная величина.

По умолчанию OptionLab генерирует 100 000 терминальных цен акций, используя приведенное выше уравнение. Для каждой цены, сгенерированной для акции в момент времени TOptionLab проверяет, находится ли эта цена в пределах ценового диапазона (или диапазонов), для которого стратегия прибыльна (т.е. генерирует доходность не менее 0,01 доллара). Затем вычисляется доходность стратегии и добавляется к другим положительным доходам, и получается среднее значение, представляющее собой ожидаемую доходность стратегии, когда она прибыльна. Аналогично, ожидаемый убыток рассчитывается как среднее значение, но когда доходность стратегии меньше или равна -$0,01.

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

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

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

В этом примере было продано 100 колл-опционов и 100 пут-опционов с одинаковой страйк-ценой $170,00 и экспирацией 17 февраля 2023 года. Выбранная страйк-цена была ближайшей к спотовой цене акции, которая составляла $168,99 на 16 января 2023 года, дату создания короткого стрэддла. Премии в размере $9,90 и $10,20 были собраны за каждый опцион колл и пут соответственно.

Оценка этой стратегии с помощью OptionLab, как обычно, проста, как видно из приведенного ниже фрагмента кода Python. Обратите внимание compute_expectation аргумент метода get_data() который собирает необходимые данные для моделирования стратегии. Он должен быть установлен в True, чтобы OptionLab рассчитал ожидаемую прибыль и убыток.from optionlab.strategy import Strategy

st=Strategy()

# Input data (Nvidia, NVDA)
stockprice=168.99
volatility=0.483
startdate=»2023-01-16″
targetdate=»2023-02-17″
interestrate=0.045
minstock=stockprice-100.0
maxstock=stockprice+100.0
compute_expectation=True # Necessary to compute average profit and loss

# The short straddle strategy is defined
strategy=[{«type»:»call»,»strike»:170.0,»premium»:9.9,»n»:100,»action»:»sell»},
{«type»:»put»,»strike»:170.0,»premium»:10.2,»n»:100,»action»:»sell»}]

# Input data is provided and the calculations are performed
st.getdata(stockprice=stockprice,startdate=startdate,
targetdate=targetdate,volatility=volatility,
interestrate=interestrate,minstock=minstock,
maxstock=maxstock,strategy=strategy,
compute_expectation=compute_expectation)

out=st.run()

# Display the profit/loss diagram
st.plotPL()

# Print useful information on screen
print(«Strategy credit: %.2f» % out[«StrategyCost»])
print(«Stock price profitable range at maturity: %.2f -> %.2f» %
(out[«ProfitRanges»][0][0],out[«ProfitRanges»][0][1]))
print(«Maximum profit: %.2f» % out[«MaximumReturnInTheDomain»])
print(«Maximum loss: %.2f» % (abs(out[«MinimumReturnInTheDomain»])))
print(«Probability of profit: %.1f%%» % (out[«ProbabilityOfProfit»]*100.0))
print(«Expected profit: %.2f» % out[«AverageProfitFromMC»])
print(«Expected loss: %.2f» % abs(out[«AverageLossFromMC»]))

Когда вы выполните этот код, первое, что вы увидите, это диаграмма прибыли/убытка (P/L) стратегии. На этой диаграмме вертикальная пунктирная зеленая линия представляет позицию спотовой цены акций Nvidia на 16 января 2023 года. Красные стрелки, указывающие вправо и влево, соответствуют страйк-позициям проданных коллов и проданных путов соответственно. Поскольку опционы колл и пут имеют одинаковый страйк, стрелки кажутся наложенными друг на друга.

График прибыли/убытка по короткому стрэддлу.

Одна вещь, которая бросается в глаза, это тот факт, что прибыль от стратегии короткого стрэддла имеет потолок, а убыток не имеет предела. В ценовом диапазоне акций, рассматриваемых в данном исследовании, максимальная прибыль ($2 010,00, то есть стоимость, полученная от продажи коллов и путов) примерно в четыре раза меньше максимального убытка ($8 091,00). Это дает хорошее представление о связанном с этим риске, поэтому я хотел бы повторить, что это исследование в образовательных целях, а не рекомендация!

Команды print в конце фрагмента кода Python выводят на экран некоторую информацию, представляющую интерес для трейдера. Эта информация содержится в словаре, хранящемся в переменной out, которая получает возврат от метода run()Strategy credit: 2010.00
Stock price profitable range at maturity: 149.91 -> 190.09
Maximum profit: 2010.00
Maximum loss: 8091.00
Probability of profit: 58.4%
Expected profit: 1060.76
Expected loss: 1402.89

PoP для этой стратегии на момент экспирации опционов составил чуть более 58%. Чтобы быть прибыльными, цена акций Nvidia должна была упасть в диапазоне от $149,91 до $190,09 17 февраля 2023 года.

Последние две строки особенно актуальны для целей данной статьи. Ожидаемая прибыль этого короткого стрэддла по экспирации, если бы он оказался прибыльным, составила бы $1 060,76. С другой стороны, ожидаемый убыток, если стратегия принесет отрицательную доходность, был оценен в $1 402,89. Эти ожидаемые значения, помимо самих абсолютных цифр, дают представление о том, как будут работать короткие стрэддлы с аналогичной конфигурацией коллов и путов при многократном выполнении в течение долгого времени. Проще говоря, с помощью этой точки присутствия и зная ожидаемую прибыль и убытки, трейдеры могли предвидеть, будут ли их счета расти или столкнуться с риском уничтожения.

Торговля опционами на Python: 5 простых стратегий с кодами

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

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

1. Покрытый звонок

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

Реализация на Python:pythonCopy codeimport yfinance as yf
from datetime import datetime# Fetch data
stock = yf.Ticker(«AAPL»)
data = stock.history(period=»1y»)# Implementing the strategy
def covered_call(data, strike_price):
call_premium = calculate_call_premium(data, strike_price)
stock_return = (data[‘Close’].iloc[-1] — data[‘Close’].iloc[0]) / data[‘Close’].iloc[0]
total_return = stock_return + call_premium
return total_return# Example usage
strike_price = 150
total_return = covered_call(data, strike_price)
print(f»Total Return: {total_return}»)

2. Защитный пут

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

Реализация на Python:pythonCopy code# Implementing the strategy
def protective_put(data, strike_price):
put_premium = calculate_put_premium(data, strike_price)
stock_loss = max(0, strike_price — data[‘Close’].iloc[-1])
total_cost = put_premium + stock_loss
return total_cost# Example usage
strike_price = 100
total_cost = protective_put(data, strike_price)
print(f»Total Cost: {total_cost}»)

3. Железный Кондор

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

Реализация на Python:pythonCopy code# Implementing the strategy
def iron_condor(data, lower_strike, upper_strike):
premium_received = calculate_premiums(data, lower_strike, upper_strike)
potential_loss = calculate_potential_loss(data, lower_strike, upper_strike)
return premium_received — potential_loss# Example usage
lower_strike = 90
upper_strike = 110
profit_loss = iron_condor(data, lower_strike, upper_strike)
print(f»Profit/Loss: {profit_loss}»)

4. Бычий колл-спред

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

Реализация на Python:pythonCopy code# Implementing the strategy
def bull_call_spread(data, lower_strike, upper_strike):
lower_call_cost = calculate_call_cost(data, lower_strike)
upper_call_premium = calculate_call_premium(data, upper_strike)
net_premium = upper_call_premium — lower_call_cost
return net_premium# Example usage
lower_strike = 95
upper_strike = 105
net_premium = bull_call_spread(data, lower_strike, upper_strike)
print(f»Net Premium: {net_premium}»)

5. Стрэддл

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

Реализация на Python:pythonCopy code# Implementing the strategy
def straddle(data, strike_price):
call_premium = calculate_call_premium(data, strike_price)
put_premium = calculate_put_premium(data, strike_price)
total_premium = call_premium + put_premium
return total_premium# Example usage
strike_price = 100
total_premium = straddle(data, strike_price)
print(f»Total Premium: {total_premium}»)

Заключение

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

Торговля институциональными опционами

Это руководство, раскрывающее взгляд институционального трейдера на торговлю опционами. Спасибо Грегу из Genesis Volatility!

Опции VS Дельта-Один

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

При торговле базовыми инструментами (также известными как «Delta-One») поверхность принятия решений довольно проста. Пойдет ли инструмент вверх или вниз и есть ли доходность, связанная с удержанием инструмента?

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

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

Что такое подразумеваемая волатильность и почему она так важна?

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

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

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

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

Теперь мы определили подразумеваемую волатильность опциона — «подразумеваемую», потому что цена опциона подразумевает определенный вход волатильности.

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

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

Зачем использовать подразумеваемую волатильность?

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

Пример поможет нам проиллюстрировать этот момент.

Предположим, что цена базового актива составляет 3 708 долларов США. Что дешевле?

  1. Опцион, истекающий через 175 дней с ценой исполнения 25 000, торгующийся за $36.60 OR
  2. Опцион, истекающий через 14 дней со страйк-ценой 4000, торгующийся за $154.30

Очевидно, что $154,30 — это более высокая цена, чем $36,60, но с таким количеством других факторов между двумя вариантами, как мы можем сравнивать две цены, не нормализуя все переменные?

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

Подразумеваемая волатильность опциона 1 = 122% и подразумеваемая волатильность опциона 2 = 89%; поэтому опцион с более высокой ценой ($154,60) на самом деле дешевле опциона ($36,60) с точки зрения подразумеваемой волатильности.

Ожидаемое значение https://www.youtube.com/watch?v=cBG8Txw9yUk

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

Ожидаемое значение является ответом на этот вопрос.

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

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

ПРИМЕР 1

Рассмотрим пример: (Игнорирование процентных ставок)

  1. Предположим, что мы оцениваем звонок со страйком в 100 долларов, срок действия которого истекает завтра.
  2. Предположим, что базовый актив имеет 20% шанс завтра стоить любых 5 цен: $60, $80, $100, $120, $140
  3. Какую стоимость опцион может стоить по истечении срока действия соответственно? $0, $0, $0, $20, $40?
  4. Учитывая эти результаты, цена опциона сегодня имеет ожидаемое значение (также известное как взвешенное значение вероятности).

[$0 * .20] + [$0 * .20] + [$0 * .20] + [$20 * .20] + [$40 * .20] = $12

ПРИМЕР 2

Давайте попробуем другой пример, но на этот раз с более высокой волатильностью:

  1. Предположим, что мы оцениваем звонок со страйком в 100 долларов, срок действия которого истекает завтра.
  2. Предположим, что базовый актив имеет 20% вероятность того, что завтра он будет стоить любых 5 цен: $0, $50, $100, $150, $200
  3. Какую стоимость опцион может стоить по истечении срока действия соответственно? $0, $0, $0, $50, $100?
  4. Учитывая эти результаты, цена опциона сегодня имеет ожидаемое значение (также известное как взвешенное значение вероятности).

[$0 * .20] + [$0 * .20] + [$0 * .20] + [$50 * .20] + [$100 * .20] = $30

Обратите внимание, что увеличение распределения прибыли увеличивает стоимость опциона.

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

Поверхность волатильности

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

Это ОТЛИЧНЫЙ вопрос, и он выводит нас на поверхность волатильности.

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

Структура термина

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

Эта «средняя реверсия» становится чрезвычайно выраженной в структуре термина (различные подразумеваемые волатильности для разных сроков годности).

В разных средах мы увидим разные терминологические структуры.

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

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

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

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

Перекос

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

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

Для этого есть две основные причины:

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

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

Это отсутствие защиты от диверсификации увеличивает волатильность.

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

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

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

Волатильность ценообразования и волатильность торговли

Эти темы представляют собой краткое введение в торговлю волатильностью и связанные с ней понятия.

Что следует иметь в виду: разные активы имеют разное поведение волатильности и реагируют на разные среды по-своему.

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

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

Мы также заметили обратную зависимость для криптоволатильности по сравнению с волатильностью индекса акций: криптовалюта ВЗРЫВАЕТСЯ выше и ДРЕЙФУЕТ ВНИЗ ниже (в течение более длительных периодов времени). Поэтому мы часто видим, что колл-опционы становятся дороже, чем аналогичные опционы пут.

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

Комплексные опционные стратегии

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

Hмы протестируем две стратегии:

  • первый: продать базовый актив и купить колл-опцион,
  • второй: шорт два опциона OTM call и покупка одного опциона atm call.

Покупка коллов

Мы уже протестировали покрываемый звонок; Почему бы не попробовать стратегию длинных звонков?

Это обратная сторона по отношению к поговорке короткого звонка, и ее легко понять.

0. Предположим, у вас есть 1 ETH
1. Вы продаете 1 ETH за USD2
. Затем вы покупаете страйк ~= спот колл опцион3
. Затем вы отправляете оставшиеся неиспользованные денежные средства (1 ETH в долларах США — премия) в farming @ Curve, ~ 20% APY для начисления вознаграждений поставщика ликвидности.

Некоторые дополнительные предположения:

  • У вас есть колл-опцион ➡️, если ETH увеличивается в цене, вы получите прибыль выше цены исполнения, например, если 1 ETH находится на уровне $3000, а цена увеличивается до 3300, вы получите $(300 — премия)!
  • В течение всего времени до истечения срока действия ваши (3000 премиальных) долларов будут стимулировать ликвидность…

Кажется аккуратным, но какой «бой…

Методология?

Fили данные, мы взяли цены ETH за 2 года и значения подразумеваемой волатильности @ Messari с января 2020 года по январь 2022 года, а также цены на опционную цепочку от Deribit (в основном — цены опционов торговались).

Tданные ясны, но что мы моделируем?

WВы моделируете стоимость портфеля пользователя, вносящего депозит в пул, работающего по вышеупомянутой стратегии (покупая колл-опцион и отправляя остальное на Curve LP), поэтому следующие результаты находятся в ETH {базовый актив}, но номинированы в долларах США!

результаты?

Увы, это намного хуже, чем простая покупка:

Final amounts from 2020-01-03 to 2022-01-14:
Strategy: 491.11
Buy&Hold: 3267.08

В принципе, наш могучий (маленький) портфель из 1 ETH будет стоить почти 3300 долларов и около 500 долларов при покупке звонков… Одной из (возможных? определенных?) причин является высокая подразумеваемая волатильность на ETH ➡️ с последующими высокими ценами опционов.

Многоэтапная стратегия?

«Почти до того, как мы узнали об этом, мы покинули землю».
(Путешествие на Венеру, Джон Манро)

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

А это что?

Структурированный продукт — это, проще говоря, финансовый инструмент, производительность которого связана с каким-либо базовым активом, например, Ethereum.

Определение структуры

Мы тестировали следующую комбинацию:

  • Владение активом (скажем, тот же 1 ETH по цене $3000)
  • Покупка колла с ближайшим страйком ~= цена
  • Продажа двух звонков без денег (мы используем +15% от текущей цены)

Результаты

Наконец, что-то немного лучше, чем просто держать Ethereum, учитывая, что мы только что использовали один контракт, a-и наши портфельные значения следующие:

Final amounts from 2020-01-03 to 2022-01-14:
Structured product: 5494.03
Buy&Hold: 3267.08

Таким образом, если пользователь владел 1 ETH в январе 2020 года, в январе 2022 года его ETH будет стоить 3267 долларов. Но со стратегией двойного короткого колла та же позиция в $3267, открытая в январе 2020 года, будет равна ~$5500, на 68,2% больше!

Графики прибылей и убытков для инициированных

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

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

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

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

Математика, лежащая в основе Supertrend:

Входы-

· Длина

· Множитель

Нисходящая полоса = [(Максимум + Минимум / 2) — Множитель] x ATR

Верхняя полоса = [(Максимум + Минимум / 2) + Множитель] x ATR

Длина обозначает количество свечей, которые учитываются. Используется для расчета ATR (распространенный индикатор). Мультипликатор используется для изменения ширины полосы супертренда.

Создание простых стратегий с супертрендом часто терпит неудачу в реальном времени по нескольким причинам:

· Популярность и открытый исходный код: Индикатор и математика, лежащие в его основе, имеют открытый исходный код. Это снижает УТП стратегии.

· Запаздывающий характер: запаздывающий по своей природе индикатор, сильно зависящий от следования за трендом. Он имеет тенденцию терпеть неудачу в разворотах.

· Choppy Market: Индикатор генерирует большое количество ложных сигналов на нестабильном рынке, что приводит к убыточным сделкам в долгосрочной перспективе.

Одним из решений для преодоления этой проблемы является использование в системе нескольких супертрендов, проверенных на значительном количестве лет. Проблема выбора стратегии может быть решена путем внедрения алгоритмов машинного обучения, таких как XGBOOST, Random forest, CatBoost и т.д.

Каждый супертренд может иметь следующие 6 условий:

  1. Константа и в зеленом цвете для свечей i и i-1:

2. Восходящий и зеленый цвет для свечи i и i-1:

3. Падающий и красный цвет для i и i-1 свечи:

4. Константа и красным цветом для I и i-1 свечи:

5. Переход от зеленого к красному:

6. Переход от красного к зеленому:

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

Код: импорт следующих библиотекfrom kiteconnect import KiteConnect
import kiteconnect
import numpy as np
from regex import B
import talib as la
from talib import MA_Type
import pandas as pd
import logging
import time,os,datetime,math;
import datetime
import pandas_ta as ta
import datetime as dtt

Я использовал исторический API воздушных змеев Zerodha для получения данных за последние 5 лет:c_id = 123 #add your Api details here
ak = 123
asecret = 123
kite=KiteConnect(api_key=ak)
print(‘[*] Generate access Token : ‘,kite.login_url())
request_tkn = input(‘[*] Enter Your Request Token Here : ‘)[-32:];
data = kite.generate_session(request_tkn, api_secret=asecret)
kite.set_access_token(data[‘access_token’])

Код для получения тестовых данных за 5 лет. Исключите данные этого года, которые будут выступать в качестве тестовой выборкиimport datetime as dtt

df = pd.DataFrame()

nse = kite.instruments(‘NSE’) #replace ‘NSE’ with ‘BSE’ for BSE data
nse_data = pd.DataFrame(nse)

for i in range (0,1):
try:
token=nse_data[nse_data.tradingsymbol == ‘NIFTY 50’].instrument_token.values[0]
print(token)
except:
print(symbols[i])
continue
to_date = pd.Timestamp(‘2018-09-15’)
from_date = pd.Timestamp(‘2023-01-01’)

while True:
if from_date >= (to_date — dtt.timedelta(95)): #if from_date is within the 60 days limit
df = df.append(pd.DataFrame(kite.historical_data(token, from_date, to_date, ‘5minute’)))
break

else: #if from_date has more than 60 days limit
to_date_new = from_date + dtt.timedelta(95)

df = df.append(pd.DataFrame(kite.historical_data(token, from_date, to_date_new, ‘5minute’)))

#to_date = from_date.date() + dt.timedelta(60)
from_date = to_date_new
df.to_csv(r’C:\Users\Manas Kapoor\Desktop\supertrend_fx\train_data.csv’)

Для стратегии предположим, что мы предсказываем 3 состояния на будущее. Цена актива превысит пороговое значение, тогда мы классифицируем его как 2. Он опустится ниже нашего стоп-лосса, тогда он будет равен 0. Если он остается постоянным до определенного количества свечей, то мы обозначаем его как 1. При покупке опционов важно выходить из рынка, когда он находится в боковом тренде.df=pd.read_csv(r’C:\Users\Manas Kapoor\Desktop\supertrend_fx\train_data.csv’)
df=df.drop(columns=’date’)
df=df.astype(float)
print(df.shape[0])
val=[]
for ind in df.index:
for i in range(1,25):
if ind+i>=df.shape[0]:
val.append(0)
break
if df[‘high’][ind+i]>1.002*df[‘close’][ind]:
val.append(1)
break
elif df[‘low’][ind+i]<0.998*df[‘close’][ind]:
val.append(0)
break
if i==24:
val.append(0)

Определив целевую переменную, мы подготовим признаки, т.е. тренды разных множителей и длин и обозначим их состояния в диапазоне от -3 до +3.import math
da=pd.DataFrame()
for i in range (5,100,4):
for j in range (2,30,2):
sup=ta.supertrend(high=df[‘high’],low=df[‘low’],close=df[‘close’],length=i,multiplier=j/10)[‘SUPERT_%s_%s’%(i,j/10)]
store=[]
for k in range (0,len(sup)):
if sup[k]==0 or math.isnan(sup[k]) :
store.append(0)
continue
elif sup[k-1]==0 or math.isnan(sup[k-1]):
store.append(0)
continue
else:
if sup[k]<df[‘close’][k] and sup[k-1]>df[‘close’][k-1]:
store.append(3)
elif sup[k]>sup[k-1]:
store.append(2)
elif sup[k]<df[‘close’][k] and sup[k]==sup[k-1]:
store.append(1)
elif sup[k]>df[‘close’][k] and sup[k-1]<df[‘close’][k-1]:
store.append(-3)
elif sup[k]<sup[k-1]:
store.append(-2)
elif sup[k]>df[‘close’][k] and sup[k]==sup[k-1]:
store.append(-1)
else:
print(k)
da[‘supert%s_%s’%(i,j/10)]=store
da.to_csv(r’C:\Users\Manas Kapoor\Desktop\Vision\data_set.csv’)

После подготовки датасета мы можем обучить нашу модель, выбрав некоторые признаки (не все), чтобы избежать переобучения из-за проклятия размерности и использовать одно горячее кодирование.df=pd.read_csv(r’C:\Users\Manas Kapoor\Desktop\Vision\data_set.csv’)
df=df[[‘supert17_0.8′,’supert25_1.6′,’supert13_2.2′,’supert17_2.6′,’supert53_1.8’]]
df=df.astype(str)
df=pd.get_dummies(df)
clf = CatBoostClassifier(max_depth=10,
learning_rate=0.1,
subsample=0.7,


random_state=42,
)
# clf=XGBClassifier(n_estimators=100,
# max_depth=4,
# learning_rate=0.1,
# subsample=0.5,
# colsample_bytree=0.5,

# random_state=42,
# )

clf.fit(df, val)

conf_matrix = metrics.confusion_matrix(
val, clf.predict(df))
cm = metrics.ConfusionMatrixDisplay(
confusion_matrix=conf_matrix,)
cm.plot()
df.shape

То же самое следует повторить с тестовыми данными, чтобы проверить, не является ли модель переобученной и действительно ли способна хорошо прогнозировать рынок. После того, как тот же процесс подготовки данных завершен, мы можем реализовать простую стратегию построения опционов Target и стоп-лосс на основе пороговых значений.df=pd.read_csv(r’C:\Users\Manas Kapoor\Desktop\supertrend_fx\test_data.csv’)
print(df.shape[0],len(y))
df=df.reset_index()
count=0
profit=0
profit_new=[]
buy=[]
sell=[]
m=0
y=clf.predict(df)
for ind in df.index:

if y[ind]==1 and ind>=m and ind+1<df.shape[0]:
profit+=-(df[‘open’][ind+1])
buy.append(df[‘date’][ind+1])
count+=1
for i in range(1,37):
if (ind+i>=df.shape[0]):
profit+=(df[‘open’][ind+1])
break
if (df[‘open’][ind+i]>=1.002*df[‘open’][ind+1] or df[‘open’][ind+i]<=0.998*df[‘open’][ind+1] ) and df[‘date’][ind+i].split()[1]==»09:15:00+05:30″:
profit+=df[‘open’][ind+i]
profit_new.append(df[‘open’][ind+i]-df[‘open’][ind+1])
sell.append(df[‘date’][ind+i])
break
elif df[‘high’][ind+i]>=1.002*df[‘open’][ind+1]:
profit+=1.002*df[‘open’][ind+1]
profit_new.append(1.002*df[‘open’][ind+1]-df[‘open’][ind+1])

sell.append(df[‘date’][ind+i])
break
elif df[‘low’][ind+i]<=0.998*df[‘open’][ind+1]:
profit+=0.998*df[‘open’][ind+1]
profit_new.append(0.998*df[‘open’][ind+1]-df[‘open’][ind+1])

sell.append(df[‘date’][ind+i])
break
elif i==24:
profit+=df[‘close’][ind+i]
profit_new.append(df[‘close’][ind+i]-df[‘open’][ind+1])

sell.append(df[‘date’][ind+i])
break
m=ind+i
print(profit)
print(len(profit_new),len(buy),len(sell))
dm = pd.DataFrame(list(zip(buy,sell,profit_new)),
columns =[‘buy’,’sell’,’profit’])
dm.to_csv(r’C:\Users\Manas Kapoor\Desktop\Vision\result_supertrend.csv’)

Стратегия носит исключительно образовательный характер и не должна напрямую реализовываться на рынке. Он предполагает цель в 1,002 раза от базового актива и стоп-лосс 0,998*стоимость актива. Выходим, если эти два условия не выполняются в течение 24 свечей

Секреты хедж-фондов

Option Walls

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

Нет абсолютно никаких гарантий или доказательств того, что фонды манипулируют фондовым рынком. Регулирование Комиссии по ценным бумагам и биржам США (SEC) и правительство являются сильными дееспособными субъектами, которые защищают рынки от этих манипуляций. Однако, когда люди продают опционный контракт, это часто указывает на сильное ощущение, что акции будут двигаться в противоположном направлении. Тот факт, что эта стратегия не работает в 100% случаев, также может указывать на то, что причиной этого являются просто рыночные настроения, а не манипуляции. В любом случае, конечный результат должен быть одинаковым.

Стратегия

Ищите большие изменения открытого интереса с контрактами, срок действия которых истекает через 3 недели или меньше. Если контракты не относятся к переторгуемому активу (TSLA, SPY и т.д.), а изменение открытого интереса составляет большую часть от общего открытого интереса, примерно 80%+, это, скорее всего, опционная стена.

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

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

1. Поиск стены опционов

Стена опционов часто обнаруживается при просмотре изменений открытого интереса.

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

Что делают эти деньги? Эти деньги используются для покупки и продажи опционных контрактов. Если вы новичок в опционных контрактах, посмотрите это замечательное видео от Plain Bagel, в котором просто объясняются опционные контракты.

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

Итак, как вы используете это для поиска дополнительных стен? Вот руководство ниже

Я рекомендую использовать Barchart для поиска изменений в открытом интересе, но любая платформа, которую вы найдете, будет работать для вас.

Теперь ниже приведен скриншот скринера Barchart для самых больших изменений открытого интереса на 30 июня 2023 года.

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

Контрольный список опций для обнаружения стен

  1. DTE (дней до истечения срока действия) должен быть меньше или равен 3 неделям или 21 дню. Чем раньше, тем лучше.
  2. OI Chg (изменение открытого интереса) должно быть положительным
  3. OI Chg должен составлять не менее 80% от общего открытого интереса
  4. Тикер — это не SPY, TSLA, не акции-мемы, не другие индексы и не одна из крупнейших компаний, таких как AAPL или MSFT

2. Как использовать Option Walls для получения прибыли

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

После применения этого чек-листа меня больше всего интересуют $CHPT и $SOFI, потому что у них гораздо большее изменение открытого интереса, чем у большинства других тикеров. В недавнем прошлом я нашел более одной стены на ChargePoint и нашел стену пут (бычью стену) в начале этой недели на уровне 7,50 доллара.

После мягкого преодоления этой стены акции взлетели на 17% за последние три дня. Если вы дейный/свинг-трейдер, 17%, вероятно, звучит потрясающе. Если вы торгуете опционами, это может показаться буквально раем. Открывая длинную позицию после того, как акции достигли предыдущей стены, я заработал солидную сумму в 5,3 раза больше своих первоначальных инвестиций, используя опционные контракты. Сладкие 630%. Через 3 дня.

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

*В этом пространстве я вернусь и покажу график для $CHPT через несколько дней, когда он упрется в стену.*

*бум* *падение 10% и большие опционы 2–400%*

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

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

Вероятностные опционные стратегии

Если вы не понимаете, как продавать опционы, сначала посмотрите это видео:

Стратегия

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

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

1. Найдите инструмент

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

В этом примере я выбираю почти всеми любимые акции, $AAPL. Ниже представлен график акций Apple в 2023 году.

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

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

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

Хотя рост SPY в этом году не был стремительным по сравнению с $AAPL, важно отметить, что рынок также находится в восходящем тренде. Это подтверждает нашу теорию о том, что $AAPL теория будет продолжаться.

2. Найдите варианты для продажи

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

Обычно я продаю опционы примерно от 2 недель до 1 месяца, чтобы у меня было время управлять позицией и просматривать акции в течение длительного периода времени. Вот варианты для $AAPL, срок действия которых истекает 28 июля, по состоянию на 1 июля.

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

На вышеуказанном веб-сайте мы продолжаем выбирать все больше и больше вариантов из денег для продажи и проверяем вероятность прибыли, пока не увидим волшебную 100% вероятность прибыли. Для $AAPL это происходит с экспирацией пут в конце месяца со страйком $165.

Теперь давайте посмотрим на это еще раз.

Разве это не красиво?

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

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

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

До тех пор, пока AAPL не упал на -17,64% ко дню экспирации, мы можем получить премию. Кроме того, если AAPL вырастет хотя бы на 3% за 2 недели, мы можем забрать нашу полную премию и закрыть позицию.

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

Стратегия

Целевые рыночные индексы с большим объемом опционов, в основном $SPY. Продавайте дельта-нейтральные спреды (предпочтительно железные кондоры) с шириной примерно 2% или с шириной стандартного отклонения среднего 3D-% изменения. Продавайте спреды, срок действия которых истекает как минимум через 3 дня и максимум через 2 недели. Закрыть через 1–2 дня. Собирайте 10–25% премии.

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

1. Рассчитать дневной диапазон актива

Вот вам скрипт на python. Пожалуйста.import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
import warnings
warnings.filterwarnings(‘ignore’)
import scipy.stats as st
from arch import arch_model
import yfinance as yf

class Stock():
def __init__(self, ticker, dte=1):
self.ticker = ticker
self.dte = dte
self.getData(dte)

def getData(self, DTE=1):
self.dte = DTE
stock = yf.Ticker(self.ticker)

end_date = datetime.now().strftime(‘%Y-%m-%d’)
stock_hist = yf.download(self.ticker, start=’2010-01-01′, end=’2023-01-01′)

stock_df = pd.DataFrame(stock_hist)
stock_df.dropna(inplace = True, axis = 0)

#stock_df[‘pct_change’] = stock_df[‘Adj Close’].pct_change()*100
for i in range(1, self.dte+1):
stock_df[f'{i} day % chg’] = stock_df[‘Adj Close’].pct_change(periods=i)*100

#stock_df.interpolate(method=’polynomial’, order=5)
stock_df.fillna(method=’ffill’)

self.data = stock_df
return stock_df

def display(self):
self.data[f'{self.dte} day % chg’].hist(bins = 50, figsize = (10,5))
plt.xlabel(f'{self.ticker} {self.dte} day returns’)
plt.ylabel(‘Frequency’)
plt.show()

#get confidence interval for daily percent changes
def CI(self, conf=0.9, dte=1):
self.dte = dte
data = self.data[f'{self.dte} day % chg’][self.dte:]
interval = st.norm.interval(alpha=conf, loc=np.median(data), scale=1)
return interval

def plotCI(self, conf=0.9, dte=1):
self.dte = dte
conf_intervals = []
self.data = self.getData(self.dte)
for i in range(0,len(self.data)):
data = self.data[f'{self.dte} day % chg’][i:26+i]
interval = st.norm.interval(alpha=conf, loc=np.median(data), scale=1)
conf_intervals.append(interval)

x = np.arange(0, len(self.data), 1)

conf_lower = []
conf_upper = []

for tup in conf_intervals:
conf_lower.append(tup[0])
conf_upper.append(tup[1])

#x = self.data.index
self.data[‘CI Lower’] = conf_lower
self.data[‘CI Upper’] = conf_upper
self.data = self.data[4:]

plt.plot(x, conf_lower)
plt.plot(x, conf_upper)
#plt.plot(x, conf_lower, label=’Interval Lower’)
#plt.plot(x, conf_upper, label=’Interval Upper’)
#plt.plot(x, BS_prices, label=’BS’)
plt.title(f'{self.ticker} Interval over Time’)
plt.legend()
plt.show()

def predictVol(self):
trainsize = len(self.data) * 0.8
data = [self.data[‘CI Lower’], self.data[‘CI Upper’]]
T = len(self.data)

results = {}
for p in range(1, 5):
for q in range(1, 5):
print(f'{p} | {q}’)
result = []
for s, t in enumerate(range(trainsize, T-1)):
train_set = data.iloc[s:t]

test_set = data.iloc[t+1]

model = arch_model(y=train_set, p=p, q=q).fit(disp=’off’)

forecast = model.forecast(horizon=1)

mu = forecast.mean.iloc[-1, 0]

var = forecast.variance.iloc[-1, 0]

result.append([(test_set-mu)**2, var])

df = pd.DataFrame(result, columns=[‘y_true’, ‘y_pred’])

results[(p, q)] = np.sqrt(mean_squared_error(df.y_true, df.y_pred))

pd.DataFrame(results, index=pd.Series(0)).unstack().idxmin()

Вот ежедневная доходность SPY с 2010 года. Как вы можете видеть, они обычно находятся в диапазоне от -2% до +2% и почти всегда от -2,5% до +2,5%.

2. Продавайте дельта-нейтральные спреды

Вот руководство по продаже железных кондоров. Я настоятельно рекомендую использовать ИС вместо стрэнглов, так как максимальные потери ограничены в ИС.

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

Вот краткий пример. Это может быть трудно увидеть, но это железный кондор шириной около 2%. Это означает, что короткие пут и колл находятся на уровне $434 и $452 соответственно. Текущая рыночная стоимость SPY составляет $443,27.

Это приводит к 98,3% вероятности прибыли, и если позиция управляется должным образом, то опытный трейдер сделает эту стратегию почти 100% выигрышной.

Это действительно так просто. Но это непросто. Всегда следите за своими позициями очень, очень внимательно. Никогда не доверяйте статистике все время. Если бы вы продавали путы на SPY до краха Covid или 2008 года, вы бы мгновенно проиграли.

Один из способов сделать это — установить стоп-лосс. В этом сценарии я рекомендую рассмотреть возможность использования стоп-лосса 200% или стоп-лосса на уровне -$12. Это связано с тем, что максимум, что вы можете заработать, составляет 6 долларов.

Friday Night Fun

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

Стратегия

Продавайте контракты OTM (Out Of The Money) на рыночные индексы с высокой вероятностью прибыли, следуя тренду КАЖДУЮ ПЯТНИЦУ. До тех пор, пока рынок не упадет невероятно сильно во время премаркета, вы автоматически соберете всю премию при открытии рынка или к концу дня. ЭТО СВЯЗАНО С ТЕМ, ЧТО ОПЦИОНЫ ТЕРЯЮТ В ЦЕНЕ В ВЫХОДНЫЕ ДНИ.

Важно отметить. Продажа опционов означает, что у вас неограниченные убытки. Вы должны быть невероятно осторожны. Будьте ОЧЕНЬ внимательны. Я не финансовый консультант, поэтому воспринимайте все, что я говорю, с долей скептицизма.

Эта стратегия настолько проста, что состоит всего из одного шага.

Продажа опционов в пятницу в полдень

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

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

Стратегия

Целевые рыночные индексы с большим объемом опционов, в основном $SPY. Продавайте дельта-нейтральные спреды (предпочтительно железные кондоры) с шириной примерно 2% или с шириной стандартного отклонения среднего 3D-% изменения. Продавайте спреды, срок действия которых истекает как минимум через 3 дня и максимум через 2 недели. Закрыть через 1–2 дня. Собирайте 10–25% премии.

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

1. Рассчитать дневной диапазон актива

Вот вам скрипт на python. Пожалуйста.import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
import warnings
warnings.filterwarnings(‘ignore’)
import scipy.stats as st
from arch import arch_model
import yfinance as yf

class Stock():
def __init__(self, ticker, dte=1):
self.ticker = ticker
self.dte = dte
self.getData(dte)

def getData(self, DTE=1):
self.dte = DTE
stock = yf.Ticker(self.ticker)

end_date = datetime.now().strftime(‘%Y-%m-%d’)
stock_hist = yf.download(self.ticker, start=’2010-01-01′, end=’2023-01-01′)

stock_df = pd.DataFrame(stock_hist)
stock_df.dropna(inplace = True, axis = 0)

#stock_df[‘pct_change’] = stock_df[‘Adj Close’].pct_change()*100
for i in range(1, self.dte+1):
stock_df[f'{i} day % chg’] = stock_df[‘Adj Close’].pct_change(periods=i)*100

#stock_df.interpolate(method=’polynomial’, order=5)
stock_df.fillna(method=’ffill’)

self.data = stock_df
return stock_df

def display(self):
self.data[f'{self.dte} day % chg’].hist(bins = 50, figsize = (10,5))
plt.xlabel(f'{self.ticker} {self.dte} day returns’)
plt.ylabel(‘Frequency’)
plt.show()

#get confidence interval for daily percent changes
def CI(self, conf=0.9, dte=1):
self.dte = dte
data = self.data[f'{self.dte} day % chg’][self.dte:]
interval = st.norm.interval(alpha=conf, loc=np.median(data), scale=1)
return interval

def plotCI(self, conf=0.9, dte=1):
self.dte = dte
conf_intervals = []
self.data = self.getData(self.dte)
for i in range(0,len(self.data)):
data = self.data[f'{self.dte} day % chg’][i:26+i]
interval = st.norm.interval(alpha=conf, loc=np.median(data), scale=1)
conf_intervals.append(interval)

x = np.arange(0, len(self.data), 1)

conf_lower = []
conf_upper = []

for tup in conf_intervals:
conf_lower.append(tup[0])
conf_upper.append(tup[1])

#x = self.data.index
self.data[‘CI Lower’] = conf_lower
self.data[‘CI Upper’] = conf_upper
self.data = self.data[4:]

plt.plot(x, conf_lower)
plt.plot(x, conf_upper)
#plt.plot(x, conf_lower, label=’Interval Lower’)
#plt.plot(x, conf_upper, label=’Interval Upper’)
#plt.plot(x, BS_prices, label=’BS’)
plt.title(f'{self.ticker} Interval over Time’)
plt.legend()
plt.show()

def predictVol(self):
trainsize = len(self.data) * 0.8
data = [self.data[‘CI Lower’], self.data[‘CI Upper’]]
T = len(self.data)

results = {}
for p in range(1, 5):
for q in range(1, 5):
print(f'{p} | {q}’)
result = []
for s, t in enumerate(range(trainsize, T-1)):
train_set = data.iloc[s:t]

test_set = data.iloc[t+1]

model = arch_model(y=train_set, p=p, q=q).fit(disp=’off’)

forecast = model.forecast(horizon=1)

mu = forecast.mean.iloc[-1, 0]

var = forecast.variance.iloc[-1, 0]

result.append([(test_set-mu)**2, var])

df = pd.DataFrame(result, columns=[‘y_true’, ‘y_pred’])

results[(p, q)] = np.sqrt(mean_squared_error(df.y_true, df.y_pred))

pd.DataFrame(results, index=pd.Series(0)).unstack().idxmin()

Вот ежедневная доходность SPY с 2010 года. Как вы можете видеть, они обычно находятся в диапазоне от -2% до +2% и почти всегда от -2,5% до +2,5%.

2. Продавайте дельта-нейтральные спреды

Вот руководство по продаже железных кондоров. Я настоятельно рекомендую использовать ИС вместо стрэнглов, так как максимальные потери ограничены в ИС.

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

Вот краткий пример. Это может быть трудно увидеть, но это железный кондор шириной около 2%. Это означает, что короткие пут и колл находятся на уровне $434 и $452 соответственно. Текущая рыночная стоимость SPY составляет $443,27.

Это приводит к 98,3% вероятности прибыли, и если позиция управляется должным образом, то опытный трейдер сделает эту стратегию почти 100% выигрышной.

Это действительно так просто. Но это непросто. Всегда следите за своими позициями очень, очень внимательно. Никогда не доверяйте статистике все время. Если бы вы продавали путы на SPY до краха Covid или 2008 года, вы бы мгновенно проиграли.

Один из способов сделать это — установить стоп-лосс. В этом сценарии я рекомендую рассмотреть возможность использования стоп-лосса 200% или стоп-лосса на уровне -$12. Это связано с тем, что максимум, что вы можете заработать, составляет 6 долларов.

Стратегия Barclays «Секрет 300% опционов»

График взят с сайта Dupont Trading

Абстрактный

VIX — это мера так называемой подразумеваемой волатильности или IV. IV использует цены опционов, чтобы определить, какой должна быть реальная волатильность покупателей. Реальная волатильность — это математическая формула, используемая для представления движения цены актива во времени. Наконец, волатильность сектора оценивает волатильность таким же образом, но обобщенно для сектора. Сравнивая эти три варианта, мы можем разработать стратегию коротких опционов, которая даст нам превосходную доходность. Мы видим, что обычно IV акций > RV акций > RV своего сектора. Когда это так, мы продаем опционы, потому что волатильность — это возврат к среднему значению.

Стратегия

Ищите акции с высоким IV с помощью Barchart. Затем посмотрите на волатильность акций. Затем посмотрите на волатильность сектора. Если IV > RV > SV, продавайте strangles, straddles и железных кондоров. По сути, продавайте опционы, стремясь к экспирации от 2 недель до месяца.

Высокий IV, как правило, означает высокие цены на опционы. Таким образом, когда IV завышен, цены на опционы завышены.

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

Если вы менее осторожны, простой тест на историю показывает, что в прошлом году вы заработали более 300%! Я рекомендую использовать рыночный хамелеон для поиска гэпов IV/RV/SV, так как это надежный бесплатный инструмент. К сожалению, у меня нет доступа к достаточному количеству данных, чтобы провести полное тестирование на истории, но результаты Barclay с этой стратегией превзошли любой известный мне фонд.

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

Анализ опционов в реальном времени с помощью Python

Пример использования Python для глубокого погружения в область опций с помощью API

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

Импорт данных

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

Импорт библиотек

import math
import requests
from datetime import datetime

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

Чтобы получить данные опций, мы сделаем запрос API к определенному URL-адресу, и этот запрос облегчит получение необходимых нам данных.

SpiderRock Mlink предлагает два основных способа доступа к своим данным: один через Rest API, а другой через Mlink WebSocket. Такой двойной подход обеспечивает простоту и гибкость при извлечении данных и работе с ними в различных средах.

В данном случае я использовал Rest API для получения данных LiveImpliedQuote для AAPL. Конструкция URL для этого API придерживается заданного формата:https://mlink-delay.spiderrockconnect.com/rest/json?apikey={YOUR API KEY}&cmd=getmsgs&msgtype={DataName}&where=okey.tk:eq:{symbol}.

Просто замените {YOUR API KEY} секретным ключом API, чтобы обеспечить надлежащую аутентификацию при использовании кода, {DataName} — предпочтительным набором данных или типом данных в реальном времени, а {symbol} — последовательностью токенов, соответствующей конкретному интересующему вас капиталу

Запрос данных через URL-адрес REST API

import requests

api_url = «https://mlink-delay.spiderrockconnect.com/rest/json?apikey=YOUR_API_KEY&cmd=getmsgs&msgtype=LiveImpliedQuote&where=okey.tk:eq:AAPL»

# Make a GET request to the API
response = requests.get(api_url)

# Check if the request was successful (status code 200)
if response.status_code == 200:
# Parse the response JSON
data = response.json()
else:
print(f»Error: Unable to fetch data. Status code: {response.status_code}»)

Замените параметр apikey из YOUR API KEY в предоставленном коде на свой секретный ключ API.

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

[Базовая цена, Yушей до экспирацииДенежность опциона, Ставка дисконтирования, Постоянная ставка дивидендов по акциямЦена предложения опциона, Цена предложения опциона, Волатильность, подразумеваемая ценой предложения опциона, Волатильность, подразумеваемая ценой продажи опциона ]

Нам нужны только самые последние данные, поэтому мы выбираем предпоследний (потому что последний — это просто оператор завершения задачи)data = data[-2]

Выходные данные будут иметь следующий формат:

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

Расчет метрик опционов

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

Основные метрики, которые мы будем рассчитывать в этой статье:

1) Подразумеваемая волатильность

2) Вероятность того, что опцион истечет в деньгах (ITM)

3) Спред между ценой покупки и продажи

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

1. Подразумеваемая волатильность

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

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

Теперь, немного углубившись в математику, давайте определим подразумеваемую волатильность (IV):

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

Где:

  • EM = ожидаемое движение 1SD
  • = цена акции
  • IV = подразумеваемая волатильность цикла экспирации вашего опциона
  • DTE = дней до истечения срока действия опционного контракта

Я хотел бы подчеркнуть важный момент, касающийся переменной «Days to Expiry» (DTE) в нашей реализации. В настоящее время он нормализован на весь год, считая 365 дней. Тем не менее, нам нужно привести наши расчеты в соответствие с общим количеством рабочих дней, которое составляет 252 дня. Таким образом, мы должны скорректировать время до истечения срока действия (T) в нашем коде, чтобы оно было нормализовано до 252 рабочих дней, а не до целого года.

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

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

Где:

  • = текущая цена акции
  • = цена исполнения опциона
  • = время до исполнения опциона
  • = безрисковая процентная ставка
  • IV = подразумеваемая волатильность
  • = колл-премиум
  • = экспоненциальный член
  • ln = натуральное бревно

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

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

Совершенно верно! Когда думаешь о расчете подразумеваемой волатильности, на ум естественно приходит процесс, который мы обсуждали ранее, не так ли? Это связано с тем, что это не только основной, но и наиболее эффективный способ получения подразумеваемой волатильности. Вот функция, которая выполняет эту работу.#creating a function to calculate the implied volatility
def calculate_implied_volatility(option_data):
S = option_data[«current_stock_price»]
K = option_data[«strike_price»]
T = option_data[«time_to_expiry_in_days»] / 252 #Normalize to 252 days
r = option_data[«risk_free_rate»]
C = (option_data[«bid_price»] + option_data[«ask_price»]) / 2 # Use average of bid and ask as option price

# Black-Scholes-Merton formula for implied volatility
def black_scholes(volatility):
d1 = (math.log(S / K) + (r + (volatility**2) / 2) * T) / (volatility * math.sqrt(T))
d2 = d1 — volatility * math.sqrt(T)
return S * norm_cdf(d1) — K * math.exp(-r * T) * norm_cdf(d2) — C

# Newton’s method for numerical solution
def implied_volatility_newton(initial_guess, tolerance=1e-6, max_iterations=100):
vol = initial_guess
for _ in range(max_iterations):
diff = black_scholes(vol) / black_scholes_derivative(vol)
vol -= diff
if abs(diff) < tolerance:
return vol
return None

# Helper function for the standard normal cumulative distribution function
def norm_cdf(x):
return (1.0 + math.erf(x / math.sqrt(2.0))) / 2.0

# Helper function for the derivative of the standard normal cumulative distribution function
def norm_cdf_derivative(x):
return math.exp(-x**2 / 2.0) / math.sqrt(2.0 * math.pi)

# Derivative of the Black-Scholes-Merton formula with respect to volatility
def black_scholes_derivative(volatility):
d1 = (math.log(S / K) + (r + (volatility**2) / 2) * T) / (volatility * math.sqrt(T))
return S * norm_cdf_derivative(d1) * math.sqrt(T)

implied_volatility = implied_volatility_newton(initial_guess=0.2) # Initial guess for volatility

return implied_volatility

Но знаете что? Работа со всеми этими вычислениями кажется немного запутанной и может занимать довольно много времени каждый раз, когда нам нужно получить доступ к коду. Чтобы упростить задачу и сэкономить много времени, у нас есть ярлык — конечные точки API SpiderRock. У них есть все данные, которые нам нужны, и они уже присутствуют в данных, которые мы извлекли. Разве это не удобно?

2. Истекает срок действия в деньгах (ITM)

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

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

Теперь рассмотрим математическое уравнение для распределения вероятностей:Probability = CDF(d1)

Где:

  • d1 является частью формулы Блэка-Шоулза.
  • CDF — кумулятивная функция распределения стандартного нормального распределения.

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

Мы вычисляем вероятность, определив функцию, как показано ниже:def calculate_probability(option_data):
S = option_data[«underlier_price»]
K = option_data[«strike_price»]
r = option_data[«discount_rate»]
sigma = option_data[«implied_volatility»]
T = option_data[«years_to_expiration»]

d1 = (math.log(S / K) + (r + (sigma**2) / 2) * T) / (sigma * math.sqrt(T))
probability = norm.cdf(d1)

return probability

Здесь мы используем словарь ‘option_data’ непосредственно в расчете. Прежде чем продолжить, давайте определим этот словарь со следующими значениями:option_data = {
‘underlier_price’: data[‘message’][‘uPrc’],
‘strike_price’: data[‘message’][‘pkey’][‘okey’][‘xx’],
‘years_to_expiration’: data[‘message’][‘years’],
‘discount_rate’: data[‘message’][‘rate’],
‘bid_price’: data[‘message’][‘oBid’],
‘ask_price’: data[‘message’][‘oAsk’],
‘implied_volatility’: data[‘message’][‘oAskIv’]
}

Короче говоря, option_data берет значения из исходных данных и организует их в более удобный формат.

3. Спред между ценой покупки и продажи

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

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

Для расчета спреда Bid-Ask определим функцию следующим образом:def bid_ask_spread_analysis(option_data):
bid_ask_spread = option_data[«ask_price»] — option_data[«bid_price»]
return bid_ask_spread

Компиляция всех инструментов

Теперь, на последнем шаге, мы рассчитаем полный набор метрик, используя ранее определенные функции. Это включает в себя расчет подразумеваемой волатильностисрока действия в деньгах (ITM) и спреда между спросом и предложением, что дает нам всестороннюю оценку характеристик опциона и потенциальной доходности. Такой многогранный подход позволяет нам принимать обоснованные решения и получать ценную информацию о динамике конкретного рассматриваемого варианта:# Calculate probability
option_data[«probability»] = calculate_probability(option_data)

# Bid-Ask Spread Analysis
option_data[«bid_ask_spread»] = bid_ask_spread_analysis(option_data)

# Print results
print(«Implied Volatility:», option_data[«implied_volatility»])
print(«Probability:», option_data[«probability»])
print(«Bid-Ask Spread:», option_data[«bid_ask_spread»])

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

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

Наконец, мы собираем воедино полную функцию для операции. :

Единая функция для расчета метрик

import requests
import math
from scipy.stats import norm

def fetch_option_data(YOUR API KEY, symbol):
api_url = f»https://mlink-delay.spiderrockconnect.com/rest/json?apikey={YOUR APIKEY}&cmd=getmsgs&msgtype=LiveImpliedQuote&where=okey.tk:eq:{symbol}»

# Make a GET request to the API
response = requests.get(api_url)

# Check if the request was successful (status code 200)
if response.status_code == 200:
# Parse the response JSON
data = response.json()

# Extract the relevant data from the response
data = data[-2] # Assuming the data is in a specific format, adjust as needed

option_data = {
‘underlier_price’: data[‘message’][‘uPrc’],
‘strike_price’: data[‘message’][‘pkey’][‘okey’][‘xx’],
‘years_to_expiration’: data[‘message’][‘years’],
‘discount_rate’: data[‘message’][‘rate’],
‘bid_price’: data[‘message’][‘oBid’],
‘ask_price’: data[‘message’][‘oAsk’],
‘implied_volatility’: data[‘message’][‘oAskIv’]
}

return option_data
else:
print(f»Error: Unable to fetch data. Status code: {response.status_code}»)
return None

def calculate_metrics(option_data):
result = {}

S = option_data[«underlier_price»]
K = option_data[«strike_price»]
r = option_data[«discount_rate»]
sigma = option_data[«implied_volatility»]
T = option_data[«years_to_expiration»]

d1 = (math.log(S / K) + (r + (sigma**2) / 2) * T) / (sigma * math.sqrt(T))
probability = norm.cdf(d1)

bid_ask_spread = option_data[«ask_price»] — option_data[«bid_price»]

result[«implied_volatility»] = option_data[«implied_volatility»]
result[«probability»] = probability
result[«bid_ask_spread»] = bid_ask_spread

return result

def main(YOUR API KEY, symbol):
option_data = fetch_option_data(YOUR API KEY, symbol)

if option_data:
metrics_result = calculate_metrics(option_data)
print(metrics_result)

Рабочий пример:api_key = «YOUR API KEY»
symbol = «AAPL»
main(api_key, symbol)

Выпуск:{‘implied_volatility’: -1, ‘probability’: 0.43198086037435784, ‘bid_ask_spread’: 1.0499999999999972}

Примечание: Пожалуйста, замените ВАШ КЛЮЧ API в рабочем примере на ваш секретный ключ API, чтобы обеспечить надлежащую аутентификацию при использовании кода.

Заключение

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

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

Понимание контанго и бэквордации в торговле фьючерсами

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

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

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

Что такое фьючерсы?

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

Фьючерсная кривая

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

Объяснение Contango

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

Пример Contango:

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

Объяснение бэквордации

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

Пример бэквордации:

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

Важность для трейдеров

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

  1. Стратегия:

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

2. Выход рулона:

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

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

3. Хеджирование и спекуляция:

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

Основные соображения перед торговлей фьючерсами

1. Управление рисками: Фьючерсы могут иметь высокую кредитную нагрузку, увеличивая как прибыль, так и убытки. Эффективные стратегии управления рисками имеют важное значение.

2. Исследование рынка: Понимание базового товара или финансового инструмента имеет решающее значение, включая факторы, влияющие на его цену.

3. Маржинальные требования: Трейдеры должны поддерживать минимальные маржинальные требования, в противном случае они могут столкнуться с маржин-коллами.

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

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

Источник

Источник

Источник

Источник

Источник

Источник

Источник

Источник

Источник

Источник

Источник