Расчет маржи для продажи голых опционов по Reg T
Узнайте, как рассчитывается маржинальное обеспечение для коротких позиций по опционам. В статье приведена формула Reg T, примеры расчетов и алгоритм на языке Python для оценки рисков.
Маржинальное обеспечение для продажи «голых» (непокрытых) опционов рассчитывается по опубликованной формуле, которую можно применить самостоятельно до совершения сделки. Минимальное требование для одного непокрытого опциона на акции — это большее из двух значений (к каждому из которых прибавляется полученная премия): 20% от цены базового актива минус величина «вне денег» (out of the money) или 10% от цены базового актива (в качестве нижнего порога). Каждый процентный показатель на этой странице является регуляторным минимумом. Брокер имеет право устанавливать более высокие требования, и большинство так и делает.
Как рассчитывается маржа для продажи непокрытых опционов?
Опцион считается непокрытым, или «голым», если он продан без обеспечения: короткий call без акций на счете или короткий put без денежных средств, зарезервированных под цену исполнения (strike). Обеспеченный денежными средствами put (cash secured put) предполагает резервирование полной стоимости исполнения, что является иной конструкцией с другими требованиями.
Regulation T устанавливает правила кредитования для маржинального счета. Сами процентные ставки для непокрытых опционов содержатся в правиле FINRA 4210 и соответствующих руководствах бирж по маржинальным требованиям. Расчет производится на одну акцию, а затем умножается на размер контракта (сто акций):
- Непокрытый call, первая ветвь: полученная премия плюс 20% от цены базового актива минус величина «вне денег» (страйк минус цена базового актива, минимум ноль).
- Непокрытый put, первая ветвь: полученная премия плюс 20% от цены базового актива минус величина «вне денег» (цена базового актива минус страйк, минимум ноль).
- Нижний порог для call: полученная премия плюс 10% от цены базового актива.
- Нижний порог для put: полученная премия плюс 10% от цены исполнения (страйка).
Требованием является большее из полученных значений. Для опционов на широкие рыночные индексы используется аналогичная формула, но с коэффициентом 15% вместо 20%. Продажа непокрытых опционов требует наличия маржинального счета с соответствующим уровнем доступа к торговле опционами, что также влечет за собой применение правила паттерн-дейтрейдера.
Премия учитывается в обеих ветвях, поэтому она увеличивает итоговую сумму, не меняя того, какая именно ветвь является определяющей. Решающим фактором является расстояние до страйка. Для call-опциона обе ветви равны, когда страйк находится ровно на десять процентов выше цены базового актива. Для put-опциона они равны, когда страйк находится примерно на одиннадцать целых одну десятую процента ниже цены актива. Внутри этих диапазонов определяющей является ветвь с 20%. За их пределами вступает в силу нижний порог.
Почему пересекаются ветвь 20% и порог 10%
На графике ниже представлены все зарегистрированные страйки AAPL на последней сессии июня 2026 года: от уровня чуть ниже цены акции до примерно 18% выше нее, для контрактов со сроком экспирации от двадцати до сорока пяти дней. Рассчитываются обе ветви на одну акцию для непокрытого call-опциона по каждому страйку. Премия здесь не учитывается для наглядности формы кривых. Ее добавление сдвигает обе линии вверх синхронно.
Точный SQL-код для каждого числа
SELECT
round(toFloat64(strike_price), 2) AS strike,
round(0.20 * max(toFloat64(underlying_close))
- greatest(toFloat64(strike_price) - max(toFloat64(underlying_close)), 0.0), 2) AS main_branch,
round(0.10 * max(toFloat64(underlying_close)), 2) AS floor_branch,
round(0.20 * max(toFloat64(underlying_close))
- greatest(toFloat64(strike_price) - max(toFloat64(underlying_close)), 0.0)
- 0.10 * max(toFloat64(underlying_close)), 2) AS branch_gap
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
)
AND days_to_expiry BETWEEN 20 AND 45
AND iv_converged = 1
AND volume > 0
AND toFloat64(strike_price) BETWEEN 0.98 * toFloat64(underlying_close)
AND 1.18 * toFloat64(underlying_close)
GROUP BY strike_price
ORDER BY strikeЛиния порога горизонтальна. Десять процентов от цены акции не зависят от того, где находится страйк, поэтому она держится на уровне $28.9 за акцию для всех 12 страйков на графике. Первая ветвь имеет наклон вниз: от $57.8 на самом низком страйке до $6.81 на самом высоком, так как каждый доллар увеличения расстояния вычитается из нее напрямую. Столбец branch_gap — это разница между первой ветвью и порогом: выше нуля там, где действует ветвь 20%, ниже нуля — где действует порог, и пересечение происходит на страйке, который на десять процентов выше цены акции.
Сколько маржи требует непокрытый put?
Первая ветвь та же, но порог другой: 10% от цены исполнения, а не от цены базового актива. Эта замена меняет картину. Порог перестает быть горизонтальной линией и наклоняется вместе со страйком, а точка пересечения смещается примерно на одиннадцать процентов ниже цены акции.
Точный SQL-код для каждого числа
SELECT
round(toFloat64(strike_price), 2) AS strike,
round(0.20 * max(toFloat64(underlying_close))
- greatest(max(toFloat64(underlying_close)) - toFloat64(strike_price), 0.0), 2) AS main_branch,
round(0.10 * toFloat64(strike_price), 2) AS floor_branch,
round(0.20 * max(toFloat64(underlying_close))
- greatest(max(toFloat64(underlying_close)) - toFloat64(strike_price), 0.0)
- 0.10 * toFloat64(strike_price), 2) AS branch_gap
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
)
AND days_to_expiry BETWEEN 20 AND 45
AND iv_converged = 1
AND volume > 0
AND toFloat64(strike_price) BETWEEN 0.82 * toFloat64(underlying_close)
AND 1.02 * toFloat64(underlying_close)
GROUP BY strike_price
ORDER BY strikeДля put-опционов порог меняется от $24 за акцию на самом низком страйке до $29 на самом высоком, в то время как первая ветвь растет по мере приближения страйка к текущей цене (at the money). Далеко ниже рынка, где часто работают продавцы, использующие стратегию «колесо» (the wheel strategy), определяющим является именно порог. Именно этот порог не позволяет продавать глубоко «вне денег» непокрытые put-опционы без маржинального обеспечения.
Сколько покупательной способности блокирует один непокрытый контракт?
Формула оперирует данными на одну акцию. Суммы на контракт — это то, что реально списывается со счета. В панели представлены 5 известных компаний на той же сессии июня 2026 года; выбран страйк call-опциона, ближайший к уровню на пять процентов выше цены акции, и обе ветви умножены на сто акций, которые покрывает контракт.
Точный SQL-код для каждого числа
SELECT
ticker,
round(100 * (0.20 * share_price - greatest(strike - share_price, 0.0)), 0) AS main_branch,
round(100 * (0.10 * share_price), 0) AS floor_branch
FROM
(
SELECT
underlying_symbol AS ticker,
max(toFloat64(underlying_close)) AS share_price,
argMin(toFloat64(strike_price),
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1.05)) AS strike
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date BETWEEN '2026-06-01' AND '2026-06-30'
)
AND days_to_expiry BETWEEN 20 AND 45
AND iv_converged = 1
AND volume > 0
GROUP BY underlying_symbol
)
ORDER BY main_branch DESCОдин непокрытый call SPY на этой дистанции требует минимум $11156 на один контракт против $1252 для KO. Сделка идентична, формула идентична. Сумма привязана к цене акции, а не к характеристикам самого опциона. На расстоянии пяти процентов «вне денег» для всех представленных компаний определяющей является первая ветвь, и более высокий столбец в каждой паре является определяющим для маржи.
Проверка позиции с помощью короткого скрипта на Python
Формула легко переносится в код. Потребуется только python3: стандартная библиотека, никаких сторонних пакетов и сетевых запросов. Сохраните файл как naked_margin.py.
#!/usr/bin/env python3
"""Минимальное требование в стиле Reg T для одного непокрытого (naked) опциона на акции.
Выводит обе ветви требования и ту, которая является определяющей.
Только стандартная библиотека. Учебный материал, не является котировкой брокера.
"""
import argparse
SHARES_PER_CONTRACT = 100
def branches(kind, spot, strike, premium, rule_pct, floor_pct):
if kind == 'call':
out_of_money = max(strike - spot, 0.0)
floor_base = spot
else:
out_of_money = max(spot - strike, 0.0)
floor_base = strike
rule = rule_pct * spot - out_of_money + premium
floor = floor_pct * floor_base + premium
return rule, floor
def report(kind, spot, strike, premium, rule_pct, floor_pct):
rule, floor = branches(kind, spot, strike, premium, rule_pct, floor_pct)
if rule >= floor:
binds = '{0:.0%} branch'.format(rule_pct)
else:
binds = '{0:.0%} floor'.format(floor_pct)
print('naked {0}: spot {1:.2f}, strike {2:.2f}, premium {3:.2f}'.format(
kind, spot, strike, premium))
print(' {0:.0%} branch: {1:.2f} per share, {2:.2f} per contract'.format(
rule_pct, rule, rule * SHARES_PER_CONTRACT))
print(' {0:.0%} floor: {1:.2f} per share, {2:.2f} per contract'.format(
floor_pct, floor, floor * SHARES_PER_CONTRACT))
print(' binds: {0}, requirement {1:.2f} per contract'.format(
binds, max(rule, floor) * SHARES_PER_CONTRACT))
def main():
ap = argparse.ArgumentParser(description='Reg T style naked option minimum')
ap.add_argument('--spot', type=float, required=True, help='underlying price')
ap.add_argument('--strike', type=float, required=True, help='strike price')
ap.add_argument('--premium', type=float, required=True, help='premium per share')
ap.add_argument('--index', action='store_true', help='broad based index rate')
args = ap.parse_args()
rule_pct = 0.15 if args.index else 0.20
for kind in ('call', 'put'):
report(kind, args.spot, args.strike, args.premium, rule_pct, 0.10)
if __name__ == '__main__':
main()
Два запуска, выбранные так, чтобы определяющая ветвь менялась. Оба используют округленные гипотетические данные.
$ python3 naked_margin.py --spot 100 --strike 105 --premium 1.50
naked call: spot 100.00, strike 105.00, premium 1.50
20% branch: 16.50 per share, 1650.00 per contract
10% floor: 11.50 per share, 1150.00 per contract
binds: 20% branch, requirement 1650.00 per contract
naked put: spot 100.00, strike 105.00, premium 1.50
20% branch: 21.50 per share, 2150.00 per contract
10% floor: 12.00 per share, 1200.00 per contract
binds: 20% branch, requirement 2150.00 per contract
$ python3 naked_margin.py --spot 100 --strike 85 --premium 0.60
naked call: spot 100.00, strike 85.00, premium 0.60
20% branch: 20.60 per share, 2060.00 per contract
10% floor: 10.60 per share, 1060.00 per contract
binds: 20% branch, requirement 2060.00 per contract
naked put: spot 100.00, strike 85.00, premium 0.60
20% branch: 5.60 per share, 560.00 per contract
10% floor: 9.10 per share, 910.00 per contract
binds: 10% floor, requirement 910.00 per contract
В первом случае страйк на пять процентов выше цены базового актива, внутри десятипроцентного порога, и первая ветвь является определяющей как для call, так и для put. Во втором случае страйк на пятнадцать процентов ниже цены базового актива, что оставляет call «в деньгах» по первой ветви, а put отодвигает достаточно далеко, чтобы в силу вступил десятипроцентный порог. Подставляйте свои значения через --spot, --strike и --premium, а для индекса добавляйте --index, чтобы получить коэффициент 15%. То, что выводит скрипт — это нижний предел требований брокера, а не потолок.
Что меняет требования после продажи
Сумма не фиксируется раз и навсегда. Она ежедневно пересчитывается исходя из цены базового актива, а цена актива меняется. На графике ниже зафиксирован страйк короткого call-опциона примерно на десять процентов выше цены открытия AAPL в апреле 2026 года, а затем отслеживается требование в процентах от цены акции до конца июня.
Точный SQL-код для каждого числа
SELECT
toString(d.dt) AS session_date,
round(d.px, 2) AS underlying_close,
round(100 * (s.short_strike - d.px) / d.px, 2) AS cushion_pct,
round(100 * greatest(0.20 * d.px - greatest(s.short_strike - d.px, 0.0),
0.10 * d.px) / d.px, 2) AS requirement_pct
FROM
(
SELECT
date AS dt,
max(toFloat64(underlying_close)) AS px
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-04-01' AND '2026-06-30'
GROUP BY date
) AS d
CROSS JOIN
(
SELECT round(1.10 * argMin(toFloat64(underlying_close), date), 0) AS short_strike
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date BETWEEN '2026-04-01' AND '2026-06-30'
) AS s
ORDER BY d.dtПозиция открывается на уровне пересечения, составляя 10.19% от цены акции с запасом 9.81% до страйка, и завершает период на уровне 20%. По мере роста акции к страйку короткого call-опциона вычитаемая величина «вне денег» уменьшается, и требование растет в сторону полных 20%. Еще четыре фактора влияют на него:
- Исполнение опциона (assignment) закрывает позицию и приводит к поставке акций или возникновению короткой позиции по акциям с собственными требованиями. Досрочное исполнение коротких опционов часто случается перед выплатой дивидендов и для опционов глубоко «в деньгах».
- Внутренние требования брокера (house requirements) добавляются к минимуму. Брокеры регулярно устанавливают собственные требования выше Reg T для непокрытых позиций, иногда кратно превышая их для волатильных бумаг.
- Движение рынка против позиции увеличивает требование, в то время как собственный капитал счета падает. Разрыв между ними приводит к маржин-коллу.
- Портфельная маржа (portfolio margin) — это отдельный режим. Для одобренного счета расчет ведется на основе стресс-теста всего портфеля, например, при движении базового актива на 15% вверх или вниз, при этом у большинства брокеров требуется минимальный размер счета с шестизначной суммой. Для хеджированного портфеля требование может оказаться значительно ниже Reg T, и оно меняется быстрее при росте волатильности.
Ничто из этого не является рекомендацией. Продажа непокрытых опционов несет неограниченный риск для call-опционов и очень высокий риск для put-опционов, а статья насколько рискованна торговля опционами подробно разбирает это распределение с данными.
Часто задаваемые вопросы
Сколько маржи нужно для продажи непокрытого put-опциона?
Регуляторный минимум — это большее из двух значений (включая полученную премию): 20% от цены базового актива минус величина «вне денег» или 10% от цены исполнения. Для акции по $100, put-опцион со страйком $90, проданный за $0,60, требует $10,60 на акцию против порога в $9,60, то есть $1 060 на один контракт. Брокеры обычно требуют больше.
Одинакова ли маржа для непокрытых опционов у всех брокеров?
Нет. Reg T и правило FINRA 4210 устанавливают минимум, а каждый брокер может добавить внутреннее требование сверх него. Многие так и делают для отдельных акций и в периоды отчетности. Опубликованная формула дает вам нижнюю границу диапазона, а не ту цифру, которую покажет ваша торговая платформа.
Учитывается ли полученная премия в требованиях?
Полученная премия прибавляется к обеим ветвям формулы и зачисляется на счет после расчетов по сделке. Она никогда не меняет того, какая ветвь является определяющей, так как появляется в обеих частях в равном объеме.
Какова маржа для непокрытого индексного опциона?
Для опционов на широкие индексы используется 15% вместо 20%, с тем же десятипроцентным порогом и учетом премии. Опционы на ETF, отслеживающие широкий индекс, рассматриваются как опционы на акции с коэффициентом 20%, поэтому более низкий процент не переносится на другие инструменты. Оба значения остаются регуляторными минимумами.
Может ли требование к непокрытому опциону измениться во время удержания позиции?
Да. Оно пересчитывается исходя из цены базового актива, поэтому меняется при каждом движении акции, как показано на графике выше. Рост цены к страйку короткого call-опциона увеличивает сумму, а брокер также может повысить свои внутренние требования по открытой позиции.
Каждая панель здесь содержит SQL-запрос, который ее сформировал, поэтому разверните любой из них, чтобы увидеть, как именно была рассчитана ветвь. Чтобы провести аналогичный расчет для интересующей вас бумаги, запросите его на терминале Strasmore простым языком.