Quant-Trading-Strategies

如何從 $ 回報計算夏普比率?

  • February 3, 2022

我有一個配對策略,我正在嘗試計算其銳度比率。目前我正在使用python進行分析和計算。我有一個數據框,其中包含每天的累積收益。我對如何將這些資訊轉換為可以計算銳度比率的東西感到困惑。

誰能指出我如何使用累積回報(以美元為單位)來找到夏普比率的正確方向?任何幫助表示讚賞!謝謝

假設您的累積回報系列是 $ {R_i \mid i=0,1,…,N-1} $ 長度 $ N $ 天。

在這個階段有 3 種正常方法可以做到這一點。您可以將累積美元收益曲線轉換為算術收益:

$ \displaystyle{r_i}= \dfrac{R_i-R_{i-1}}{R_{i-1}} $

或美元回報:

$ \displaystyle{r_i=R_i-R_{i-1}} $

然後取比例:

$ \displaystyle{SR_{1d} = \dfrac{E{r_i}-r_f}{std{r_i}} } $

其中無風險利率 $ r_f $ 通常被認為是 $ 0 $ . 最後,將其年度化:

$ \displaystyle{SR_{1y}=SR \cdot \sqrt{252}} $

這是一個如何在 Python 中執行此操作的範例:

import numpy as np
import pandas as pd

# Simulate cumulative returns of 100 days
N = 100
R = pd.DataFrame(np.random.normal(size=100)).cumsum()

# Approach 1
r = (R - R.shift(1))/R.shift(1)

# Approach 2
r = R.diff()

sr = r.mean()/r.std() * np.sqrt(252)

對於另一個答案,夏普比率可能是正的,儘管回報是負的。這是因為幾何平均數和算術平均數不同。

可以使用以下方法:

returns = pd.DataFrame(np.random.normal(size=100))
mean_log_returns = (np.mean(np.log(returns + 1)))
mean_returns = np.exp(mean_log_returns) - 1
std = returns.std()
sharpe_ratio = mean_returns / std * np.sqrt(252)

引用自:https://quant.stackexchange.com/questions/39839