夏普比率的计算公式为:

$$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)