Delta de cartera y ponderación por beta
La delta bruta no se suma entre tickers. Aprende a convertirla mediante ponderación por beta en acciones equivalentes de SPY con un ejemplo práctico.
El delta de la cartera es el número que responde una sola pregunta: si el mercado amplio se mueve 1%, ¿aproximadamente cuánto se mueve toda la cartera? Sumar los deltas de cada posición produce un número, pero no ese número. La ponderación por beta es el ajuste que hace que la suma tenga sentido, al expresar cada posición como una cantidad equivalente de acciones de SPY.
Por qué la delta de la cartera no se suma entre tickers
La delta mide cuánto cambia el valor de una posición ante un movimiento de un dólar en su activo subyacente. Una acción tiene una delta de 1. Un contrato de opciones cubre 100 acciones, por lo que una call con una delta de 0.30 representa una exposición de 30 deltas. Esta visión de una sola posición es el tema de qué mide la delta de una opción.
El problema aparece con el segundo ticker. Cien deltas de una acción de precio alto y beta elevada, y cien deltas de una acción defensiva barata, representan el mismo conteo, pero están muy lejos de implicar la misma exposición. En un caso, se trata de decenas de miles de dólares en acciones que históricamente han oscilado más que el índice. En el otro, son unos pocos miles de dólares en acciones que históricamente han oscilado menos. Sumarlas da 200, una cifra expresada en unidades que no sirven para tomar decisiones.
¿Qué es la delta ponderada por beta?
La ponderación por beta expresa cada delta de la cartera como la delta de un benchmark elegido, normalmente SPY para una cartera de renta variable estadounidense. Dos multiplicadores hacen posible el cálculo.
El primero es la beta: la sensibilidad histórica de una acción al benchmark, medida como la pendiente de sus rendimientos diarios frente a los rendimientos diarios del índice durante un periodo determinado. Una beta de 1.4 significa que, en promedio, la acción se movió aproximadamente 1.4% por cada movimiento de 1% del índice durante ese periodo.
El segundo es el ratio de precios: el precio de la acción dividido entre el precio del benchmark. La delta cuenta acciones, y las acciones con precios distintos representan importes monetarios diferentes. El ratio las lleva a una misma escala.
Se multiplica la delta bruta de una posición por ambos factores. El resultado es su delta ponderada por beta: el número de acciones de SPY que se habrían comportado de la misma manera durante el periodo de medición. El panel siguiente mide la beta de cada valor a partir de los rendimientos diarios de cierre del año terminado el 30 de junio de 2026. Después muestra su precio frente al de SPY y el producto de ambos factores. SPY aparece en la lista como referencia, con una beta de 1 y un ratio de precios de 1. Por tanto, una acción de SPY equivale exactamente a una delta ponderada por beta.
El SQL exacto detrás de cada cifra
WITH
sessions AS
(
SELECT
ticker AS ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'MSFT', 'XOM', 'JNJ', 'KO')
AND window_start >= toDateTime('2025-07-01 04:00:00')
AND window_start < toDateTime('2026-07-01 04:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY ticker, d
),
steps AS
(
SELECT
ticker,
d,
px,
any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM sessions
),
daily_ret AS
(
SELECT ticker, d, (px / prev_px) - 1 AS r
FROM steps
WHERE prev_px > 0
),
bench AS
(
SELECT d, r AS spy_r
FROM daily_ret
WHERE ticker = 'SPY'
),
betas AS
(
SELECT
s.ticker AS ticker,
covarPop(s.r, b.spy_r) / varPop(b.spy_r) AS beta_vs_spy,
1 AS k
FROM daily_ret AS s
INNER JOIN bench AS b ON b.d = s.d
GROUP BY s.ticker
),
prices AS
(
SELECT ticker, argMax(px, d) AS close_px
FROM sessions
GROUP BY ticker
),
spy_price AS
(
SELECT argMax(px, d) AS spy_close, 1 AS k
FROM sessions
WHERE ticker = 'SPY'
)
SELECT
betas.ticker AS ticker,
round(betas.beta_vs_spy, 2) AS beta_vs_spy,
round(prices.close_px / spy_price.spy_close, 3) AS price_vs_spy,
round(betas.beta_vs_spy * prices.close_px / spy_price.spy_close, 3) AS spy_shares_per_share
FROM betas
INNER JOIN prices ON prices.ticker = betas.ticker
INNER JOIN spy_price ON spy_price.k = betas.k
ORDER BY beta_vs_spy DESCNVDA encabeza la lista, con una beta de 1.86, y cotiza a 0.268 veces el precio de SPY. Al multiplicar ambos valores, una acción de NVDA tenía la exposición al índice equivalente a 0.498 acciones de SPY. En el extremo inferior de los 7 valores, la cifra está por debajo de cero. XOM registró una beta de -0.36 durante este periodo: una pendiente inversa moderada frente al índice, no una versión menos sensible de este. Una acción se convierte en -0.067 acciones de SPY. En ambos casos, una delta en la cartera. Pero la exposición asociada a esa delta es muy distinta. También es una primera señal de que una beta mostrada con dos decimales es una estimación vinculada a un periodo de medición. Este punto se desarrolla al final del artículo.
De dónde provienen las deltas de las opciones
La delta de una acción es fija: 1 por acción. La delta de una opción no lo es. Cambia según el strike, el tiempo restante hasta el vencimiento, el precio del subyacente y la volatilidad implícita. El panel siguiente muestra la delta de cada contrato de AAPL que operó el 30 de junio de 2026 y tenía entre 20 y 45 días hasta el vencimiento. Los contratos están agrupados en intervalos de 2% según la distancia del strike respecto al precio de cierre.
El SQL exacto detrás de cada cifra
SELECT
concat(if(bucket_pct > 0, '+', ''), toString(bucket_pct), '%') AS strike_vs_spot,
round(avgIf(contract_delta, contract_delta > 0), 3) AS call_delta,
round(avgIf(contract_delta, contract_delta < 0), 3) AS put_delta,
count() AS contract_count
FROM
(
SELECT
toInt32(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 50)) * 2 AS bucket_pct,
toFloat64(delta) AS contract_delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= toDate('2026-06-30')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.12
)
GROUP BY bucket_pct
HAVING countIf(contract_delta > 0) > 0 AND countIf(contract_delta < 0) > 0
ORDER BY bucket_pctEn el intervalo -12%, las calls registraron una delta promedio de 0.924 en 4 contratos operados, mientras que las puts promediaron -0.084. En +10%, las calls promediaron 0.106 y las puts, -0.834. Una call y una put con el mismo strike tienen deltas de signo contrario. Por eso, una call vendida y una put comprada compensan una posición larga en acciones. El desplazamiento de toda la curva a medida que se acerca el vencimiento se explica en cómo cambian las griegas de las opciones con el tiempo.
Construir una cartera pequeña hasta llegar a una sola cifra
Tomemos una cartera de tres posiciones, dimensionada manualmente. Compramos 300 acciones de AAPL. Vendemos en corto 3 calls de AAPL con un strike aproximadamente 5% por encima del precio actual y cerca de un mes hasta el vencimiento: el overlay estándar de covered call. Compramos 5 puts de KO near the money con un vencimiento similar, como cobertura sobre un segundo activo. La cantidad de acciones y contratos es hipotética. Cada delta y beta del panel está medido.
El SQL exacto detrás de cada cifra
WITH
sessions AS
(
SELECT
ticker AS ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'AAPL', 'KO')
AND window_start >= toDateTime('2025-07-01 04:00:00')
AND window_start < toDateTime('2026-07-01 04:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY ticker, d
),
steps AS
(
SELECT
ticker,
d,
px,
any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM sessions
),
daily_ret AS
(
SELECT ticker, d, (px / prev_px) - 1 AS r
FROM steps
WHERE prev_px > 0
),
bench AS
(
SELECT d, r AS spy_r
FROM daily_ret
WHERE ticker = 'SPY'
),
betas AS
(
SELECT
s.ticker AS ticker,
covarPop(s.r, b.spy_r) / varPop(b.spy_r) AS beta_vs_spy
FROM daily_ret AS s
INNER JOIN bench AS b ON b.d = s.d
GROUP BY s.ticker
),
prices AS
(
SELECT ticker, argMax(px, d) AS close_px, 1 AS k
FROM sessions
GROUP BY ticker
),
spy_price AS
(
SELECT argMax(px, d) AS spy_close, 1 AS k
FROM sessions
WHERE ticker = 'SPY'
),
opt_delta AS
(
SELECT
underlying_symbol AS ticker,
if(toFloat64(delta) > 0, 'call', 'put') AS kind,
avg(toFloat64(delta)) AS per_share_delta
FROM global_markets.options_greeks
WHERE date >= toDate('2026-06-30')
AND date < toDate('2026-07-01')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 25 AND 40
AND (
(underlying_symbol = 'AAPL' AND toFloat64(delta) > 0
AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 1.03 AND 1.07)
OR (underlying_symbol = 'KO' AND toFloat64(delta) < 0
AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 0.97 AND 1.03)
)
GROUP BY ticker, kind
),
legs AS
(
SELECT
tupleElement(leg, 1) AS leg_no,
tupleElement(leg, 2) AS position,
tupleElement(leg, 3) AS ticker,
tupleElement(leg, 4) AS kind,
tupleElement(leg, 5) AS qty,
tupleElement(leg, 6) AS multiplier
FROM
(
SELECT arrayJoin([
(1, 'Long 300 AAPL', 'AAPL', 'stock', 300., 1.),
(2, 'Short 3 AAPL calls', 'AAPL', 'call', -3., 100.),
(3, 'Long 5 KO puts', 'KO', 'put', 5., 100.)
]) AS leg
)
)
SELECT
position AS position,
round(raw_share_delta) AS raw_share_delta,
round(beta_vs_spy, 2) AS beta_vs_spy,
round(bw_delta) AS beta_weighted_delta,
round(sum(bw_delta) OVER (ORDER BY leg_no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) AS running_book_delta,
round(sum(bw_delta) OVER (ORDER BY leg_no ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) * spy_close / 100.) AS dollars_per_1pct_spy
FROM
(
SELECT
l.leg_no AS leg_no,
l.position AS position,
l.qty * l.multiplier * if(l.kind = 'stock', 1., o.per_share_delta) AS raw_share_delta,
bt.beta_vs_spy AS beta_vs_spy,
sp.spy_close AS spy_close,
raw_share_delta * bt.beta_vs_spy * pr.close_px / sp.spy_close AS bw_delta
FROM legs AS l
LEFT JOIN opt_delta AS o ON o.ticker = l.ticker AND o.kind = l.kind
INNER JOIN betas AS bt ON bt.ticker = l.ticker
INNER JOIN prices AS pr ON pr.ticker = l.ticker
INNER JOIN spy_price AS sp ON sp.k = pr.k
)
ORDER BY leg_noLa posición en acciones aporta 300 deltas brutos, uno por acción. Las calls vendidas aportan -98 y las puts compradas, -217. La suma de esas tres cantidades da una cifra. La ponderación por beta produce otra distinta.
AAPL registró una beta de 0.88 durante el periodo analizado y KO, de -0.27, una pendiente negativa frente al índice en esos doce meses. Después de ajustar cada posición por su beta y por su precio frente a SPY, la posición en acciones equivale a 103 acciones de SPY, las calls vendidas a -34 y las puts a 6. La posición en puts merece una pausa. Su conteo bruto de -217 deltas representa una posición corta en KO. Al multiplicar una exposición corta por una beta negativa, el resultado pasa al lado positivo del registro, con 6 acciones de SPY, una pequeña exposición larga al índice. Más allá del signo, lo importante es la magnitud: una cobertura que parece considerable en términos de delta bruto se convierte en una fracción pequeña de esa cantidad en términos del índice, y su efecto se produce sobre KO, no sobre el mercado. La columna del total acumulado incorpora las posiciones en orden, y la cartera termina con 76 deltas ponderados por beta.
Qué significa realmente una beta weighted delta de ese tamaño
Una cartera con 76 beta weighted deltas se ha comportado, durante el periodo de medición, como si mantuviera esa cantidad de acciones de SPY. Una cifra positiva describe una cartera long sobre el índice. Una cifra negativa describe una cartera short, que es lo que los operadores llaman inclinar la delta hacia short. La última columna convierte el total acumulado en dinero. Un movimiento de 1% en SPY, sin ningún otro cambio, mueve la cartera en 565 dólares.
Para neutralizar la cifra, hay que añadir una beta weighted delta compensatoria del mismo tamaño y signo contrario. Vender acciones de SPY en corto lo hace uno a uno: por construcción, una acción de SPY equivale a una beta weighted delta. Las opciones de SPY lo hacen en fracciones, según la delta del contrato elegido. Reducir la posición en la acción subyacente produce el mismo efecto aplicando la tasa de conversión propia de esa acción, calculada en el primer panel. Cada alternativa tiene sus propios costos y sus propias griegas.
Dónde falla la ponderación por beta
La beta es una estimación de regresión y el periodo de medición cambia el resultado. El panel siguiente vuelve a calcular las mismas dos betas con seis periodos de observación, todos con la misma fecha final.
El SQL exacto detrás de cada cifra
WITH
sessions AS
(
SELECT
ticker AS ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'AAPL', 'KO')
AND window_start >= toDateTime('2024-04-01 04:00:00')
AND window_start < toDateTime('2026-07-01 04:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY ticker, d
),
steps AS
(
SELECT
ticker,
d,
px,
any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM sessions
),
daily_ret AS
(
SELECT ticker, d, (px / prev_px) - 1 AS r
FROM steps
WHERE prev_px > 0
),
bench AS
(
SELECT d, r AS spy_r
FROM daily_ret
WHERE ticker = 'SPY'
),
paired AS
(
SELECT
s.ticker AS ticker,
s.r AS r,
b.spy_r AS spy_r,
row_number() OVER (PARTITION BY s.ticker ORDER BY s.d DESC) AS rn
FROM daily_ret AS s
INNER JOIN bench AS b ON b.d = s.d
WHERE s.ticker IN ('AAPL', 'KO')
),
windows AS
(
SELECT arrayJoin([30, 60, 90, 180, 252, 504]) AS lookback
)
SELECT
w.lookback AS lookback_sessions,
round(covarPopIf(p.r, p.spy_r, p.ticker = 'AAPL') / varPopIf(p.spy_r, p.ticker = 'AAPL'), 2) AS aapl_beta,
round(covarPopIf(p.r, p.spy_r, p.ticker = 'KO') / varPopIf(p.spy_r, p.ticker = 'KO'), 2) AS ko_beta
FROM paired AS p
CROSS JOIN windows AS w
WHERE p.rn <= w.lookback
GROUP BY w.lookback
HAVING countIf(p.ticker = 'AAPL') > 0 AND countIf(p.ticker = 'KO') > 0
ORDER BY lookback_sessionsEn las sesiones más recientes, AAPL registró 0.54 durante 30 sesiones, frente a 1.14 durante 504 sesiones. KO registró -1.04 en el periodo corto y -0.03 en el largo. Todas las estimaciones de 6 son aritméticamente correctas. Responden preguntas distintas, y el delta ponderado por beta de una cartera hereda el periodo que la plataforma haya elegido. Que una acción defensiva muestre una beta ligeramente negativa en un periodo y ligeramente positiva en el siguiente es lo habitual, no una anomalía. Además, todos los signos del ejemplo desarrollado dependen de esa elección.
El comportamiento de la correlación es el segundo límite. La beta es un promedio de sesiones normales. Durante una venta generalizada del mercado, las acciones que normalmente se mueven a su propio ritmo tienden a moverse juntas, y las betas medidas se agrupan cerca de 1. Una cartera que parece equilibrada según la beta de un mercado tranquilo puede estar lejos de ese equilibrio en la sesión en que la cobertura resulta necesaria. El riesgo de concentración describe el mismo punto ciego desde el otro lado: una estadística resumida informa sobre el centro de la distribución, no sobre la cola.
En tercer lugar, el cálculo es de primer orden y no incorpora la gamma. El delta ponderado por beta es la pendiente del valor de la cartera a los precios actuales y supone que esa pendiente se mantiene. La gamma, que mide cuánto cambia el delta, no aparece en el cálculo. Una cartera con opciones vendidas puede mostrar un delta ponderado por beta moderado y aun así cambiar rápidamente de comportamiento ante un movimiento de 3% del índice. Los deltas utilizados en el cálculo ya no describen esas posiciones a esos precios. Considere la cifra como una descripción de movimientos pequeños. Las posiciones diseñadas para la cola, como las de puts protectoras, parecen pequeñas en términos de beta ponderada y, de todos modos, no cumplen su función dentro de ese rango.
El benchmark también es una elección. Una cartera de small caps ponderada frente a SPY oculta la parte de su movimiento atribuible al tamaño de las empresas, en lugar del mercado amplio. El delta es una de varias griegas, y el resto se explica en la explicación de las griegas de las opciones.
Preguntas frecuentes
¿Qué es la delta ponderada por beta?
La delta ponderada por beta expresa cada posición de una cartera como un número equivalente de acciones de un benchmark, normalmente SPY. La delta bruta de cada posición se multiplica por la beta del subyacente frente a ese benchmark y por la proporción entre ambos precios. Después, los resultados se suman en una sola cifra para la cartera.
¿Cómo se calcula manualmente la delta ponderada por beta?
Comience con la delta de la posición expresada en acciones: una por cada acción del título, o 100 veces la delta de la opción por contrato. Multiplíquela por la beta del subyacente frente al benchmark. Después, vuelva a multiplicar por el precio del subyacente dividido entre el precio del benchmark. Sume los resultados de todas las posiciones.
¿Qué significa una delta ponderada por beta negativa?
Indica que la cartera está posicionada para ganar valor cuando el benchmark cae y perderlo cuando sube, aproximadamente al ritmo de una posición corta equivalente a ese número de acciones del benchmark. Los traders describen esto como una inclinación de la delta hacia una posición corta. La cifra solo es válida para movimientos pequeños.
¿Puede una acción tener una beta negativa?
Sí, durante un periodo determinado. La beta es la pendiente estimada de los rendimientos diarios de una acción frente a los del índice. Una acción defensiva puede registrar una beta ligeramente inferior a cero durante un periodo de doce meses y ligeramente superior a cero durante el siguiente. Una beta negativa invierte el signo de la delta ponderada por beta de esa posición. Por eso, esta métrica debe interpretarse junto con el periodo utilizado para medirla.
¿Qué ventana histórica produce la beta correcta?
No existe una única ventana correcta. Una beta de 30 sesiones refleja el comportamiento reciente y puede variar mucho. Una beta de uno o dos años es más estable y tarda más en reflejar un cambio en el negocio subyacente. El panel de estabilidad anterior muestra cuánto pueden diferir dos ventanas para la misma acción en la misma fecha.
¿La ponderación por beta tiene en cuenta la gamma o la volatilidad?
No. Es una medida de primer orden basada en las deltas actuales y en una beta histórica. La gamma, la vega, la theta y la rho no se modifican. Por eso, una cartera de opciones vendidas puede parecer neutral en términos de delta ponderada por beta y aun así mantener un riesgo considerable ante un movimiento amplio.
Cada panel anterior incluye el SQL que lo generó. Abra uno, cambie los tickers o la ventana de medición y el mismo cálculo de ponderación por beta se aplicará a cualquier cartera que pueda describir en la terminal de Strasmore.