Margen para vender opciones naked: cálculo Reg T
¿Cuánto margen exige vender una opción naked? Fórmula mínima de Reg T, sus dos componentes, un script breve en Python y cadenas reales de opciones.
El margen para vender opciones naked se obtiene de una fórmula publicada y puede calcularse antes de ejecutar la operación. El mínimo para una opción de acciones descubierta es el mayor de dos componentes, con la prima recibida sumada en ambos casos: 20% del precio de la acción subyacente menos el importe en que la opción está out of the money, o un piso de 10%. Todos los porcentajes de esta página son mínimos regulatorios. Un bróker puede exigir más, y la mayoría lo hace.
¿Cómo se calcula el margen para vender opciones naked?
Una opción está descubierta, o naked, cuando se vende sin respaldo: una call corta sin acciones en la cuenta o una put corta sin efectivo reservado contra el strike. Una put con efectivo garantizado reserva en cambio el valor total del strike. Es una estructura distinta y tiene un requisito diferente.
La Regulation T establece las reglas de crédito para una cuenta de margen. Los porcentajes aplicables a las opciones descubiertas figuran en la Regla 4210 de FINRA y en los manuales de margen de las bolsas que la replican. El cálculo se realiza por acción y luego se cobra por contrato, que representa 100 acciones:
- Call descubierta, primer componente: prima recibida, más 20% del precio del subyacente, menos el importe out of the money (strike menos subyacente, con un mínimo de cero).
- Put descubierta, primer componente: prima recibida, más 20% del precio del subyacente, menos el importe out of the money (subyacente menos strike, con un mínimo de cero).
- Componente piso para una call: prima recibida más 10% del precio del subyacente.
- Componente piso para una put: prima recibida más 10% del strike.
El requisito es el importe mayor. Las opciones sobre índices de base amplia siguen la misma estructura, pero usan 15% en lugar de 20%. La venta descubierta también exige una cuenta de margen con el nivel adecuado de aprobación para operar opciones. Además, una cuenta de margen queda sujeta a la regla del pattern day trader.
La prima aparece en ambos componentes. Por eso eleva el importe total, pero no cambia cuál de ellos prevalece. Lo que determina el resultado es la distancia al strike. En una call, ambos componentes son iguales cuando el strike está exactamente 10% por encima del subyacente. En una put, son iguales cuando el strike está aproximadamente 11.1% por debajo. Dentro de esas distancias, el componente de 20% es mayor. Más allá, prevalece el piso.
Por qué se cruzan el componente de 20% y el piso de 10%
El panel siguiente recorre todos los strikes de AAPL listados en la última sesión de junio de 2026. Parte de un nivel apenas inferior al precio de la acción y llega hasta aproximadamente 18% por encima de ese precio. Incluye contratos con entre 20 y 45 días hasta el vencimiento. Para cada strike calcula, por acción, ambos componentes del margen de una call descubierta. Aquí se excluye la prima para mostrar con claridad la estructura. Al añadirla, ambas líneas suben en la misma magnitud.
El SQL exacto detrás de cada cifra
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 strikeLa línea del piso es plana. El 10% del precio de la acción no depende del strike. Por eso se mantiene en $28.9 por acción para los 12 strikes del panel. El primer componente desciende desde $57.8 en el strike más bajo hasta $6.81 en el más alto, porque cada dólar adicional de distancia se resta directamente. La columna branch_gap es el primer componente menos el piso: está por encima de cero cuando prevalece el componente de 20%, por debajo de cero cuando prevalece el piso y cruza cero en el strike situado 10% por encima del precio de la acción.
¿Cuánto margen necesita una put naked?
El primer componente es el mismo, pero cambia el piso: es 10% del strike, no 10% del subyacente. Esa sustitución modifica el resultado. El piso deja de ser una línea plana y sigue la trayectoria del strike. El punto de cruce se desplaza hasta aproximadamente 11% por debajo del precio de la acción.
El SQL exacto detrás de cada cifra
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 strikeEn los strikes de put del panel, el piso va desde $24 por acción en el strike más bajo hasta $29 en el más alto. El primer componente, por su parte, aumenta a medida que el strike se acerca al precio de mercado. Muy por debajo del mercado, donde suelen operar los vendedores que aplican la estrategia wheel, el piso es el importe vinculante. Ese piso impide que una put naked muy out of the money pueda mantenerse sin margen.
¿Cuánto poder de compra compromete un contrato naked?
Las cifras por acción corresponden a la fórmula. Las cifras por contrato son las que afectan a la cuenta. El panel toma 5 acciones de alta capitalización en la misma sesión de junio de 2026. Para cada una selecciona el strike de call listado más cercano a 5% por encima del precio de la acción y multiplica ambos componentes por las 100 acciones que cubre un contrato.
El SQL exacto detrás de cada cifra
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 DESCUna call SPY descubierta a esa distancia exige un mínimo de $11156 para un solo contrato, frente a $1252 para KO. La operación y la fórmula son idénticas. El importe sigue el precio de la acción, no las características particulares de la opción. Con 5% out of the money, el primer componente prevalece para todas las acciones del panel. En cada par, cuenta la barra más alta.
Comprueba cualquier posición con un script corto de Python
La fórmula cabe en un archivo. Solo necesitas python3: usa únicamente la biblioteca estándar, sin pip install ni conexión de red. Guárdalo como naked_margin.py.
#!/usr/bin/env python3
"""Mínimo al estilo Reg T para una opción de acciones descubierta (naked).
Imprime ambos componentes del requisito y muestra cuál prevalece.
Solo usa la biblioteca estándar. Tiene fines educativos; no es una cotización de un bróker.
"""
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='Mínimo para una opción naked al estilo Reg T')
ap.add_argument('--spot', type=float, required=True, help='precio del subyacente')
ap.add_argument('--strike', type=float, required=True, help='strike')
ap.add_argument('--premium', type=float, required=True, help='prima por acción')
ap.add_argument('--index', action='store_true', help='tasa para un índice de base amplia')
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()
Dos ejecuciones en las que cambia el componente vinculante. Ambas usan datos hipotéticos redondeados.
$ 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
En la primera ejecución, el strike está 5% por encima del subyacente. Se encuentra dentro del cruce de 10%, por lo que el primer componente prevalece tanto para la call como para la put. En la segunda, el strike está 15% por debajo del subyacente. La call queda in the money para el primer componente y la put se aleja lo suficiente del dinero para que el piso de 10% sea el que prevalezca. Introduce tus propios datos con --spot, --strike y --premium. Añade --index para usar la tasa de 15% correspondiente a un índice de base amplia. El resultado representa el mínimo que puede exigir un bróker, nunca un máximo.
¿Qué cambia el requisito después de vender?
El importe no queda fijado una sola vez. Se recalcula diariamente con base en el precio del subyacente, y el subyacente se mueve. El gráfico siguiente fija un strike de call corta aproximadamente 10% por encima del nivel de apertura de AAPL en abril de 2026. Después sigue el requisito como porcentaje del precio de la acción hasta finales de junio.
El SQL exacto detrás de cada cifra
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.dtLa posición comienza en el punto de cruce, en 10.19% del precio de la acción, con 9.81% de margen hasta el strike. Termina el periodo en 20%. Cuando una acción sube hacia el strike de una call corta, la resta correspondiente al importe out of the money se reduce. El requisito se acerca así al 20% completo. Otros cuatro factores también pueden modificarlo:
- La asignación termina la opción y entrega acciones o una posición corta en acciones, cada una con su propio requisito. La asignación anticipada de opciones cortas se concentra alrededor de los dividendos y en strikes muy in the money.
- Los requisitos internos del bróker se suman al mínimo. Los brókers suelen fijar importes superiores a los de la Reg T para posiciones descubiertas. En acciones volátiles, a veces los elevan a varios múltiplos del mínimo regulatorio.
- Un movimiento adverso aumenta el requisito mientras el patrimonio de la cuenta cae al mismo tiempo. La diferencia entre ambos es la que genera un margin call de mantenimiento.
- Portfolio margin es un régimen separado. A una cuenta aprobada se le aplica una prueba de estrés sobre toda la cartera, normalmente con un movimiento de alrededor de 15% al alza o a la baja en el subyacente de renta variable, y la mayoría de los brókers exige un saldo mínimo de seis cifras. En una cartera cubierta, el importe puede quedar muy por debajo del requisito de la Reg T. También cambia más rápido cuando aumenta la volatilidad.
Nada de esto constituye una recomendación. La venta descubierta implica una pérdida potencial ilimitada en el lado de las calls y muy elevada en el de las puts. El riesgo de operar opciones analiza esa distribución con datos.
Preguntas frecuentes
¿Cuánto margen necesito para vender una put naked?
El mínimo regulatorio es el mayor de dos componentes, ambos con la prima recibida incluida: 20% del precio del subyacente menos el importe out of the money, o 10% del strike. En una acción a $100, una put con strike de $90 vendida por $0.60 resulta en $10.60 por acción frente a un piso de $9.60. Eso equivale a $1,060 para un contrato. Los brókers suelen exigir más.
¿El margen para opciones naked es igual en todos los brókers?
No. La Reg T y la Regla 4210 de FINRA establecen el mínimo. Cada bróker puede añadir un requisito interno superior. Muchos lo hacen en acciones individuales y cerca de las fechas de resultados. La fórmula publicada muestra el límite inferior del rango, no el importe que aparecerá en tu plataforma.
¿La prima que cobro cuenta para el requisito?
La prima recibida se suma a ambos componentes de la fórmula y se acredita en la cuenta cuando se liquida la operación. Nunca cambia cuál de los componentes prevalece, porque aparece en ambos por el mismo importe.
¿Cuál es el margen para una opción naked sobre un índice?
Las opciones sobre índices de base amplia usan 15% en lugar de 20%, con el mismo piso de 10% y el mismo término correspondiente a la prima. Las opciones sobre un ETF que replica un índice amplio se tratan como opciones de acciones y usan 20%. El porcentaje menor no se traslada automáticamente por el tipo de exposición. Ambos siguen siendo mínimos regulatorios.
¿Puede cambiar el requisito de una opción naked mientras la mantengo?
Sí. Se recalcula con base en el precio del subyacente y, por tanto, cambia cuando se mueve la acción, como muestra el gráfico anterior. Una subida hacia el strike de una call corta eleva el importe. Además, el bróker puede aumentar su requisito interno sobre una posición abierta.
Cada panel incluye el SQL que lo generó. Expande cualquiera para ver exactamente cómo se calculó cada componente. Para ejecutar la misma cadena de cálculos sobre una acción que sigues, solicítalo en inglés sencillo en la terminal de Strasmore.