Model oceňování kapitálových aktiv

Úvod do řízení portfoliového rizika v Pythonu

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Zakladatel modelů oceňování aktiv

CAPM

Model oceňování kapitálových aktiv je základním stavebním kamenem mnoha modelů oceňování aktiv a faktorových modelů ve financích.

Úvod do řízení portfoliového rizika v Pythonu

Nadměrné výnosy

Nadměrný výnos se vypočítá odečtením bezrizikové sazby od celkového výnosu:

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

Příklad:

Investice v Brazílii:

10% výnos portfolia − 15% bezriziková sazba = −5% nadměrný výnos

Investice v USA:

10% výnos portfolia − 3% bezriziková sazba = 7% nadměrný výnos

Úvod do řízení portfoliového rizika v Pythonu

Model oceňování kapitálových aktiv

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

  • $E(R_{P}) - RF$: Nadměrný očekávaný výnos akcie nebo portfolia P
  • $E(R_{M}) - RF$: Nadměrný očekávaný výnos širokého tržního portfolia B
  • $RF$: Regionální bezriziková sazba
  • $\beta_{{P}}$: Beta portfolia, resp. expozice vůči širokému tržnímu portfoliu B
Úvod do řízení portfoliového rizika v Pythonu

Výpočet bety pomocí kovariance

Výpočet historické bety pomocí kovariance:

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

  • $\beta_P$: Beta portfolia
  • $Cov(R_P, R_B)$: Kovariance mezi portfoliem (P) a referenčním tržním indexem (B)
  • $Var(R_B)$: Rozptyl referenčního tržního indexu
Úvod do řízení portfoliového rizika v Pythonu

Výpočet bety pomocí kovariance v Pythonu

Za předpokladu, že objekt Data již obsahuje nadměrné výnosy portfolia a trhu:

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
Úvod do řízení portfoliového rizika v Pythonu

Lineární regrese

Příklad lineární regrese:

Vzorec regrese v maticovém zápisu:

Úvod do řízení portfoliového rizika v Pythonu

Výpočet bety pomocí lineární regrese

Za předpokladu, že objekt Data již obsahuje nadměrné výnosy portfolia a trhu:

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
Úvod do řízení portfoliového rizika v Pythonu

R-Squared vs. upravený R-Squared

Extrakce hodnot R-squared a upraveného R-squared:

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
Úvod do řízení portfoliového rizika v Pythonu

Pojďme si procvičit!

Úvod do řízení portfoliového rizika v Pythonu

Preparing Video For Download...