Model wyceny aktywów kapitałowych

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Fundament modeli wyceny aktywów

CAPM

Model wyceny aktywów kapitałowych to fundamentalny element wielu modeli wyceny aktywów i modeli czynnikowych w finansach.

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Nadwyżkowe stopy zwrotu

Aby obliczyć nadwyżkowe stopy zwrotu, wystarczy odjąć stopę wolną od ryzyka od całkowitej stopy zwrotu:

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

Przykład:

Inwestowanie w Brazylii:

10% stopa zwrotu portfela - 15% stopa wolna od ryzyka = -5% nadwyżkowa stopa zwrotu

Inwestowanie w USA:

10% stopa zwrotu portfela - 3% stopa wolna od ryzyka = 7% nadwyżkowa stopa zwrotu

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Model wyceny aktywów kapitałowych

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

  • $E(R_{P}) - RF$: Oczekiwana nadwyżkowa stopa zwrotu akcji lub portfela P
  • $E(R_{M}) - RF$: Oczekiwana nadwyżkowa stopa zwrotu szerokiego portfela rynkowego B
  • $RF$: Regionalna stopa wolna od ryzyka
  • $\beta_{{P}}$: Beta portfela, czyli ekspozycja na szeroki portfel rynkowy B
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Obliczanie bety za pomocą kowariancji

Aby obliczyć historyczną betę za pomocą kowariancji:

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

  • $\beta_P$: Beta portfela
  • $Cov(R_P, R_B)$: Kowariancja między portfelem (P) a benchmarkowym indeksem rynkowym (B)
  • $Var(R_B)$: Wariancja benchmarkowego indeksu rynkowego
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Obliczanie bety za pomocą kowariancji w Pythonie

Zakładając, że obiekt Data zawiera już nadwyżkowe stopy zwrotu portfela i rynku:

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
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Regresje liniowe

Przykład regresji liniowej:

Wzór regresji w notacji macierzowej:

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Obliczanie bety za pomocą regresji liniowej

Zakładając, że obiekt Data zawiera już nadwyżkowe stopy zwrotu portfela i rynku:

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
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

R-kwadrat a skorygowany R-kwadrat

Aby wyodrębnić wartości R-kwadrat i skorygowanego R-kwadrat:

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
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Czas na ćwiczenia!

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Preparing Video For Download...