Quant-Trading-Strategies
如何從 $ 回報計算夏普比率?
我有一個配對策略,我正在嘗試計算其銳度比率。目前我正在使用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)