Il Capital Asset Pricing Model

Introduzione alla gestione del rischio di portafoglio in Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Il padre fondatore dei modelli di asset pricing

CAPM

Il Capital Asset Pricing Model è il mattone di base per molti altri modelli di valutazione degli asset e modelli fattoriali in finanza.

Introduzione alla gestione del rischio di portafoglio in Python

Rendimenti in eccesso

Per calcolare i rendimenti in eccesso, sottrai semplicemente il tasso privo di rischio dal rendimento totale:

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

Esempio:

Investire in Brasile:

10% Rendimento portafoglio - 15% Tasso privo di rischio = -5% Rendimento in eccesso

Investire negli USA:

10% Rendimento portafoglio - 3% Tasso privo di rischio = 7% Rendimento in eccesso

Introduzione alla gestione del rischio di portafoglio in Python

Il Capital Asset Pricing Model

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

  • $E(R_{P}) - RF$: Il rendimento atteso in eccesso di un'azione o del portafoglio P
  • $E(R_{M}) - RF$: Il rendimento atteso in eccesso del portafoglio di mercato ampio B
  • $RF$: Il tasso privo di rischio regionale
  • $\beta_{{P}}$: Beta del portafoglio, ovvero esposizione, al portafoglio di mercato ampio B
Introduzione alla gestione del rischio di portafoglio in Python

Calcolare il Beta con la covarianza

Per calcolare il beta storico usando la covarianza:

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

  • $\beta_P$: Beta del portafoglio
  • $Cov(R_P, R_B)$: La covarianza tra il portafoglio (P) e l'indice di mercato benchmark (B)
  • $Var(R_B)$: La varianza dell'indice di mercato benchmark
Introduzione alla gestione del rischio di portafoglio in Python

Calcolare il Beta con la covarianza in Python

Supponendo di avere già i rendimenti in eccesso di portafoglio e mercato nell'oggetto 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
Introduzione alla gestione del rischio di portafoglio in Python

Regressioni lineari

Esempio di regressione lineare:

Formula della regressione in notazione matriciale:

Introduzione alla gestione del rischio di portafoglio in Python

Calcolare il Beta con la regressione lineare

Supponendo di avere già i rendimenti in eccesso di portafoglio e mercato nell'oggetto 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
Introduzione alla gestione del rischio di portafoglio in Python

R-quadro vs R-quadro aggiustato

Per estrarre i valori di r-quadro e r-quadro aggiustato:

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
Introduzione alla gestione del rischio di portafoglio in Python

Esercitiamoci!

Introduzione alla gestione del rischio di portafoglio in Python

Preparing Video For Download...