Python 投資組合風險管理入門
Dakota Wixom
Quantitative Analyst | QuantCourse.com

夏普比率用來衡量「風險調整後報酬」。
計算 1966 年版夏普比率:
$$ S = \frac{ R_a - r_f }{\sigma_a} $$

有效前緣上的任一點都是最適投組。
這兩個常見點稱為「馬可維茲投組」:

要怎麼選最佳投組?
假設有隨機投組的 DataFrame df,包含 Volatility 與 Returns 欄:
numstocks = 5
risk_free = 0
df["Sharpe"] = (df["Returns"] - risk_free) / df["Volatility"]
MSR = df.sort_values(by=['Sharpe'], ascending=False)
MSR_weights = MSR.iloc[0, 0:numstocks]
np.array(MSR_weights)
array([0.15, 0.35, 0.10, 0.15, 0.25])
雖然最大夏普比率投組聽起來不錯,但實務上,報酬非常難以預測。
假設有隨機投組的 DataFrame df,包含 Volatility 與 Returns 欄:
numstocks = 5
GMV = df.sort_values(by=['Volatility'], ascending=True)
GMV_weights = GMV.iloc[0, 0:numstocks]
np.array(GMV_weights)
array([0.25, 0.15, 0.35, 0.15, 0.10])
Python 投資組合風險管理入門