夏普比率的计算公式为:
s h a r p e    r a t i o = ( R _ p − R _ f ) σ _ p sharpe\;ratio= \frac{(R\_p - R\_f)}{σ\_p} sharperatio=σ_p(R_p−R_f)
- R _ p R\_p R_p : 回报率平均值
- R _ f R\_f R_f : 无风险利率
- σ _ p σ\_p σ_p : 回报率标准差
下面,开始实践计算。
首先,假设你 N N N 天的累计回报序列为 { R i ∣ i = 0 , 1 , 2 , . . . N − 1 } \{R_i|i=0,1,2,...N-1\} {Ri∣i=0,1,2,...N−1}。
计算回报率:
r _ i = R _ i − R _ i − 1 R _ i − 1 r\_i=\frac{R\_i - R\_{i-1}}{R\_{i-1}} r_i=R_i−1R_i−R_i−1
计算夏普比率:
S R _ d a i l y = E r _ i − r _ f σ r _ i SR\_{daily}=\frac{E{r\_i}-r\_f}{σ{r\_i}} SR_daily=σr_iEr_i−r_f
S R _ y e a r l y = E r _ i − r _ f σ r _ i ∗ 252 SR\_{yearly}=\frac{E{r\_i}-r\_f}{σ{r\_i}} * \sqrt{252} SR_yearly=σr_iEr_i−r_f∗252
无风险回报率 r _ f r\_f r_f一般取0。
示例代码:
import numpy as np
import pandas as pdnp.random.seed(0)# Simulate cumulative returns of 100 days
N = 100
D = pd.DataFrame(np.random.normal(size=N))
R = D.cumsum()# Calcute returns ratio
r = (R - R.shift(1))/R.shift(1)
sr = r.mean()/r.std() * np.sqrt(252)print("sharpe ratio =", sr)
原文地址