O Capital Asset Pricing Model

Introdução ao Gerenciamento de Risco de Portfólio em Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

O pai dos modelos de precificação de ativos

CAPM

O Capital Asset Pricing Model é a base para muitos outros modelos de precificação de ativos e modelos de fatores em finanças.

Introdução ao Gerenciamento de Risco de Portfólio em Python

Retornos em excesso

Para calcular retornos em excesso, basta subtrair a taxa livre de risco do retorno total:

$$ \text{Excess Return} = \text{Return} - \text{Risk Free Return} $$

Exemplo:

Investindo no Brasil:

10% Retorno da Carteira - 15% Taxa Livre de Risco = -5% Retorno em Excesso

Investindo nos EUA:

10% Retorno da Carteira - 3% Taxa Livre de Risco = 7% Retorno em Excesso

Introdução ao Gerenciamento de Risco de Portfólio em Python

O Capital Asset Pricing Model

$$ E(R_{P}) - RF = \beta_{{P}}(E(R_{M})-RF)\ $$

  • $E(R_{P}) - RF$: O retorno esperado em excesso de uma ação ou carteira P
  • $E(R_{M}) - RF$: O retorno esperado em excesso da carteira de mercado ampla B
  • $RF$: A taxa livre de risco regional
  • $\beta_{{P}}$: Beta da carteira, ou exposição, à carteira de mercado ampla B
Introdução ao Gerenciamento de Risco de Portfólio em Python

Calculando o beta usando covariância

Para calcular o beta histórico usando covariância:

$$ \beta_P = \frac{Cov(R_P, R_B)}{Var(R_B)} $$

  • $\beta_P$: Beta da carteira
  • $Cov(R_P, R_B)$: A covariância entre a carteira (P) e o índice de mercado de referência (B)
  • $Var(R_B)$: A variância do índice de mercado de referência
Introdução ao Gerenciamento de Risco de Portfólio em Python

Calculando o beta com covariância em Python

Supondo que você já tenha os retornos em excesso da carteira e do mercado no objeto Data:

covariance_matrix = Data[["Port_Excess","Mkt_Excess"]].cov()
covariance_coefficient = covariance_matrix.iloc[0, 1]
benchmark_variance = Data["Mkt_Excess"].var()
portfolio_beta = covariance_coefficient / benchmark_variance
portfolio_beta
0.93
Introdução ao Gerenciamento de Risco de Portfólio em Python

Regressões lineares

Exemplo de regressão linear:

Fórmula da regressão em notação matricial:

Introdução ao Gerenciamento de Risco de Portfólio em Python

Calculando o beta usando regressão linear

Supondo que você já tenha os retornos em excesso da carteira e do mercado no objeto Data:

import statsmodels.formula.api as smf
model = smf.ols(formula='Port_Excess ~ Mkt_Excess', data=Data)
fit = model.fit()
beta = fit.params["Mkt_Excess"]
beta
0.93
Introdução ao Gerenciamento de Risco de Portfólio em Python

R-quadrado vs R-quadrado ajustado

Para extrair os valores de r-quadrado e r-quadrado ajustado:

import statsmodels.formula.api as smf
model = smf.ols(formula='Port_Excess ~ Mkt_Excess', data=Data)
fit = model.fit()
r_squared = fit.rsquared
r_squared
0.70
adjusted_r_squared = fit.rsquared_adj
0.65
Introdução ao Gerenciamento de Risco de Portfólio em Python

Vamos praticar!

Introdução ao Gerenciamento de Risco de Portfólio em Python

Preparing Video For Download...