Delta e beta da carteira: como calcular
Entenda por que deltas brutos não se somam entre tickers e veja como a ponderação por beta converte a exposição em ações equivalentes de SPY, com exemplo prático.
O delta do portfólio é o número que responde a uma única pergunta: se o mercado amplo variar 1%, aproximadamente quanto variará o livro inteiro? Somar os deltas de todas as posições produz um número, mas não esse número. A ponderação por beta é o ajuste que torna essa soma significativa, convertendo cada posição no número equivalente de ações do SPY.
Por que o delta da carteira não soma entre tickers
O delta mede quanto o valor de uma posição muda diante de uma variação de um dólar no ativo subjacente. Uma ação tem delta igual a 1. Cada contrato de opção representa 100 ações. Portanto, uma call com delta de 0,30 corresponde a uma exposição de 30 deltas. Essa visão de uma única posição é o tema de o que o delta de uma opção mede.
O problema aparece com o segundo ticker. Cem deltas de um ativo caro e de beta elevado e cem deltas de um ativo defensivo barato representam a mesma contagem, mas estão longe de representar a mesma exposição. No primeiro caso, trata-se de dezenas de milhares de dólares em ações que historicamente oscilaram mais do que o índice. No segundo, de alguns milhares de dólares em ações que historicamente oscilaram menos. Somá-los resulta em 200, um número que não oferece uma unidade operacional para o investidor.
O que é o delta ponderado pelo beta?
A ponderação pelo beta reexpressa cada delta da carteira como um delta do benchmark escolhido, normalmente o SPY em uma carteira de ações dos EUA. Dois multiplicadores fazem esse trabalho.
O primeiro é o beta: a sensibilidade histórica de uma ação ao benchmark, medida pela inclinação dos retornos diários da ação em relação aos retornos diários do índice ao longo de uma janela definida. Um beta de 1,4 significa que a ação oscilou, em média, cerca de 1,4% para cada variação de 1% no índice durante essa janela.
O segundo é o quociente de preços: o preço da ação dividido pelo preço do benchmark. O delta contabiliza ações, mas ações com preços diferentes representam montantes financeiros diferentes. O quociente coloca essas posições na mesma escala.
Multiplique o delta bruto de uma posição pelos dois fatores. O resultado é o delta ponderado pelo beta: o número de ações do SPY que teria se comportado da mesma forma durante a janela de medição. O painel abaixo calcula o beta de cada ativo com base nos retornos dos fechamentos diários no ano encerrado em 30 de junho de 2026. Em seguida, mostra seu preço em relação ao do SPY e o produto dos dois fatores. O SPY aparece na lista como referência, com beta de 1 e quociente de preços de 1. Assim, uma ação do SPY equivale exatamente a um delta ponderado pelo beta.
O SQL exato por trás de cada número
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 lidera a lista, com beta de 1.86, sendo negociado a 0.268 vezes o preço do SPY. Multiplicando os dois fatores, uma ação desse ativo carregava a exposição ao índice equivalente a 0.498 ações do SPY. No extremo inferior da lista de 7 ativos, o valor fica abaixo de zero. O XOM apresentou beta de -0.36 nessa janela, uma inclinação levemente inversa à do índice, e não apenas uma versão menos sensível dele. Uma ação se converte em -0.067 ações do SPY. Em ambos os casos, havia um delta na carteira. Mas a exposição desse delta era muito diferente. Esse é um primeiro indício de que um beta exibido com duas casas decimais é uma estimativa associada a uma janela específica, ponto retomado no final deste post.
De onde vêm os deltas das opções
O delta de uma ação é fixo em 1 por ação. O delta de uma opção não é fixo. Ele varia conforme o preço de exercício, o tempo restante até ao vencimento, o preço do ativo subjacente e a volatilidade implícita. O painel abaixo apresenta o delta de cada contrato de AAPL negociado em 30 de junho de 2026, com 20 a 45 dias até ao vencimento. Os contratos estão agrupados em intervalos de 2%, conforme a distância do preço de exercício em relação ao preço de fecho.
O SQL exato por trás de cada número
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_pctNo intervalo -12%, as calls apresentaram delta médio de 0.924 em 4 contratos negociados, enquanto as puts apresentaram média de -0.084. Em +10%, o delta médio das calls foi 0.106 e o das puts, -0.834. Uma call e uma put com o mesmo preço de exercício têm deltas de sinais opostos. Por isso, uma call vendida e uma put comprada compensam ambas uma posição comprada na ação. A forma como toda a curva se desloca à medida que o vencimento se aproxima é explicada em como os gregos das opções mudam ao longo do tempo.
Trabalhar uma carteira pequena até chegar a um único número
Considere uma carteira com três posições, dimensionada manualmente. Compra de 300 ações de AAPL. Venda a descoberto de 3 calls de AAPL cerca de 5% acima do preço atual, com aproximadamente um mês até o vencimento: a estrutura padrão de covered call. Compra de 5 puts de KO próximas do preço atual, com vencimento semelhante, como hedge de um segundo ativo. As quantidades de ações e contratos são hipotéticas. Todos os deltas e betas no painel são calculados.
O SQL exato por trás de cada número
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_noA posição em ações contribui com 300 deltas brutos, um por ação. As calls vendidas contribuem com -98 e as puts compradas, com -217. A soma dessas três quantidades resulta em um número. A ponderação pelo beta produz outro.
AAPL apresentou beta de 0.88 no período analisado, e KO, de -0.27: uma inclinação negativa em relação ao índice ao longo desses doze meses. Depois de ajustar cada posição pelo beta e pelo seu preço em relação ao SPY, a posição em ações equivale a 103 ações do SPY, as calls vendidas, a -34, e as puts, a 6. A posição em puts merece atenção. Seu total bruto de -217 deltas representa uma exposição vendida em KO. Ao multiplicar uma exposição vendida por um beta negativo, o resultado passa para o lado positivo do cálculo, em 6 ações do SPY: uma pequena exposição comprada ao índice. Independentemente do sinal, o ponto é a magnitude. Um hedge que parece relevante em termos de delta bruto converte-se em uma pequena fração desse total em termos de índice. Além disso, sua atuação ocorre sobre KO, não sobre o mercado. A coluna do total acumulado soma as posições na ordem apresentada, e a carteira termina com 76 deltas ponderados pelo beta.
O que realmente significa um delta ponderado pelo beta desse tamanho
Uma carteira com 76 deltas ponderados pelo beta comportou-se, durante a janela de medição, como se mantivesse esse número de ações de SPY. Um valor positivo indica uma carteira comprada no índice. Um valor negativo indica uma carteira vendida, que é o que os traders chamam de inclinar o delta para vendido. A última coluna converte o total acumulado em dinheiro. Uma variação de 1% em SPY, sem nenhuma outra alteração, movimenta a carteira em 565 dólares.
Zerar esse valor significa adicionar um delta ponderado pelo beta de igual magnitude e sinal oposto. Vender ações de SPY faz isso na proporção de um para um: por definição, uma ação de SPY equivale a um delta ponderado pelo beta. As opções de SPY fazem esse ajuste em frações, de acordo com o delta do contrato escolhido. Reduzir a posição na ação subjacente produz o mesmo efeito à taxa de conversão própria dessa ação, apresentada no primeiro painel. Cada alternativa tem seus próprios custos e gregas.
Onde a ponderação por beta deixa de funcionar
Beta é uma estimativa de regressão, e o período usado para medi-la altera o resultado. O painel abaixo recalcula os mesmos dois betas em seis janelas, todas terminando na mesma data.
O SQL exato por trás de cada número
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_sessionsNas 30 sessões mais recentes, a ação da AAPL apresentou beta de 0.54, contra 1.14 em 504 sessões. A KO apresentou -1.04 na janela curta e -0.03 na longa. Todas as estimativas de 6 estão aritmeticamente corretas. Elas respondem a perguntas diferentes, e o delta ponderado por beta de uma carteira incorpora a janela que a plataforma tiver escolhido. Uma ação defensiva que apresenta beta ligeiramente negativo em uma janela e ligeiramente positivo na seguinte está no caso normal, não diante de uma anomalia. Todos os sinais da carteira usada no exemplo acima dependem dessa escolha. Risco de concentração descreve o mesmo ponto cego pelo outro lado: uma estatística resumida informa sobre o centro da distribuição, não sobre a cauda.
O comportamento da correlação é o segundo limite. Beta é uma média calculada sobre sessões normais. Durante uma liquidação ampla do mercado, ações que normalmente seguem seu próprio ritmo tendem a se mover juntas, e os betas medidos se concentram perto de 1. Uma carteira que parece equilibrada com base no beta de um mercado calmo pode estar longe de equilibrada na sessão em que o hedge é necessário.
Terceiro, o cálculo é de primeira ordem e não considera a gamma. O delta ponderado por beta é a inclinação do valor da carteira aos preços de hoje e pressupõe que essa inclinação se mantenha. A gamma, que mede a velocidade com que o próprio delta muda, não aparece no cálculo. Uma carteira com opções vendidas pode apresentar um delta ponderado por beta moderado e ainda assim mudar rapidamente de perfil diante de uma variação de 3% no índice. Os deltas usados no cálculo já não descrevem essas posições aos novos preços. Trate esse número como uma descrição de movimentos pequenos. Posições montadas para a cauda, como as de puts de proteção, parecem pequenas em termos de beta ponderado e, de todo modo, não atuam nessa faixa.
O benchmark também é uma escolha. Ponderar uma carteira de small caps contra o SPY oculta a parcela de seu movimento que decorre do porte das empresas, e não do mercado amplo. Delta é apenas uma das gregas, e o restante do conjunto está apresentado em as gregas de opções explicadas.
Perguntas frequentes
O que é o delta ponderado pelo beta?
O delta ponderado pelo beta converte cada posição de uma carteira em um número equivalente de ações de um benchmark, normalmente o SPY. O delta bruto de cada posição é multiplicado pelo beta do ativo subjacente em relação a esse benchmark e pela razão entre os dois preços. Os resultados são somados em uma única medida para a carteira.
Como calcular manualmente o delta ponderado pelo beta?
Comece pelo delta da posição em ações: 1 por ação, ou 100 vezes o delta da opção por contrato. Multiplique pelo beta do ativo subjacente em relação ao benchmark. Depois, multiplique novamente pelo preço do ativo subjacente dividido pelo preço do benchmark. Some os resultados de todas as posições.
O que significa um delta ponderado pelo beta negativo?
Isso indica uma carteira posicionada para ganhar valor quando o benchmark cai e perder valor quando ele sobe. O efeito é aproximadamente equivalente a estar vendido no número correspondente de ações do benchmark. Os traders chamam isso de inclinação do delta para vendido. A medida só é válida para pequenas oscilações.
Uma ação pode ter beta negativo?
Sim, em determinada janela de análise. O beta é a inclinação medida dos retornos diários de uma ação em relação aos retornos do índice. Uma ação defensiva pode apresentar beta ligeiramente abaixo de zero em um período de doze meses e ligeiramente acima de zero no período seguinte. Um beta negativo inverte o sinal do delta ponderado pelo beta da posição. Por isso, a métrica deve ser interpretada em conjunto com a janela em que foi calculada.
Qual janela de análise produz o beta correto?
Não existe uma única janela correta. Um beta de 30 sessões acompanha o comportamento recente e oscila bastante. Um beta de um ou dois anos é mais estável e demora mais para refletir mudanças no negócio subjacente. O painel de estabilidade acima mostra como duas janelas podem apresentar resultados diferentes para a mesma ação na mesma data.
A ponderação pelo beta considera gamma ou volatilidade?
Não. É uma medida de primeira ordem baseada nos deltas atuais e em um beta histórico. Gamma, vega, theta e rho não são afetados. Por isso, uma carteira de opções vendidas pode parecer neutra em termos de delta ponderado pelo beta e ainda carregar risco substancial em um movimento amplo.
Todos os painéis acima vêm acompanhados do SQL que os produziu. Abra um deles, substitua os tickers ou a janela de análise, e o mesmo cálculo de ponderação pelo beta será aplicado a qualquer carteira que possa ser descrita no terminal da Strasmore.