夏普比率的计算公式为:
$$sharpe;ratio= \frac{(R_p - R_f)}{σ_p}$$
- $R_p$ : 回报率平均值
- $R_f$ : 无风险利率
- $σ_p$ : 回报率标准差
下面,开始实践计算。
首先,假设你 $N$ 天的累计回报序列为 ${?_?∣?=0,1,...,?−1}$。
计算回报率:
$$r_i=\frac{R_i - R_{i-1}}{R_{i-1}}$$
计算夏普比率:
$$SR_{daily}=\frac{E{r_i}-r_f}{σ{r_i}}$$
$$SR_{yearly}=\frac{E{r_i}-r_f}{σ{r_i}} * \sqrt{252}$$
无风险回报率$r_f$一般取0。
示例代码:
import numpy as np
import pandas as pd
np.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)