Модель оцінки капітальних активів

Вступ до керування ризиком портфеля в Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Батько моделей оцінки активів

CAPM

Модель оцінки капітальних активів — базовий фундамент для багатьох інших моделей оцінки активів і факторних моделей у фінансах.

Вступ до керування ризиком портфеля в Python

Надлишкова дохідність

Щоб обчислити надлишкову дохідність, відніміть безризикову ставку від загальної дохідності:

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

Приклад:

Інвестиції в Бразилії:

10% дохідність портфеля − 15% безризикова ставка = −5% надлишкова дохідність

Інвестиції у США:

10% дохідність портфеля − 3% безризикова ставка = 7% надлишкова дохідність

Вступ до керування ризиком портфеля в Python

Модель оцінки капітальних активів

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

  • $E(R_{P}) - RF$: Надлишкова очікувана дохідність акції або портфеля P
  • $E(R_{M}) - RF$: Надлишкова очікувана дохідність широкого ринкового портфеля B
  • $RF$: Регіональна безризикова ставка
  • $\beta_{{P}}$: Бета портфеля, або експозиція, до широкого ринкового портфеля B
Вступ до керування ризиком портфеля в Python

Обчислення бети за коваріацією

Щоб обчислити історичну бету через коваріацію:

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

  • $\beta_P$: Бета портфеля
  • $Cov(R_P, R_B)$: Коваріація між портфелем (P) і ринковим бенчмарком (B)
  • $Var(R_B)$: Дисперсія ринкового бенчмарка
Вступ до керування ризиком портфеля в Python

Обчислення бети за коваріацією в Python

Припустімо, у вас уже є надлишкова дохідність портфеля та ринку в об'єкті 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
Вступ до керування ризиком портфеля в Python

Лінійні регресії

Приклад лінійної регресії:

Формула регресії в матричному вигляді:

Вступ до керування ризиком портфеля в Python

Обчислення бети за лінійною регресією

Припустімо, у вас уже є надлишкова дохідність портфеля та ринку в об'єкті 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
Вступ до керування ризиком портфеля в Python

R-squared vs Adjusted R-squared

Щоб отримати значення r-squared та adjusted 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
Вступ до керування ризиком портфеля в Python

Давайте потренуємось!

Вступ до керування ризиком портфеля в Python

Preparing Video For Download...