Python 投資組合風險管理入門
Dakota Wixom
Quantitative Analyst | QuantCourse.com
資本資產定價模型是許多其他資產定價模型與金融因子模型的基礎。
要計算超額報酬,只要用總報酬減去無風險報酬率:
$$ \text{Excess Return} = \text{Return} - \text{Risk Free Return} $$
範例:
投資巴西:
10% 投資組合報酬 − 15% 無風險利率 = -5% 超額報酬
投資美國:
10% 投資組合報酬 − 3% 無風險利率 = 7% 超額報酬
$$ E(R_{P}) - RF = \beta_{{P}}(E(R_{M})-RF)\ $$
用共變異數計算歷史貝他:
$$ \beta_P = \frac{Cov(R_P, R_B)}{Var(R_B)} $$
假設你已在物件 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
線性迴歸範例:

矩陣表示的迴歸式:

假設你已在物件 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
擷取調整後 R 平方與 R 平方:
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 投資組合風險管理入門