12 votos

¿Cómo calcular el Índice de Sharpe a partir de los rendimientos en $?

Tengo una estrategia de pares que estoy intentando calcular el índice de Sharpe. Actualmente estoy usando python para mi análisis y cálculo. Tengo un dataframe que contiene los rendimientos acumulados en dólares para cada día. Estoy confundido sobre cómo convertir esta información en algo desde lo cual pueda calcular el índice de Sharpe.

¿Alguien me podría indicar la dirección correcta sobre cómo usar los rendimientos acumulados (en dólares) para encontrar el índice de Sharpe? ¡Cualquier ayuda es apreciada! Gracias

11voto

Timothy Carter Puntos 7079

Supongamos que tu serie de retornos acumulativos es $\{R_i \mid i=0,1,...,N-1\}$ de longitud $N$ días.

Hay 3 formas convencionales de hacer esto en esta etapa. Puedes convertir la curva de retorno acumulativo en retornos aritméticos:

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

O retornos en dólares:

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

Luego toma la razón:

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

donde la tasa libre de riesgo $r_f$ a menudo se toma como $0$. Finalmente, anualízalo:

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

Aquí tienes un ejemplo de cómo puedes hacerlo en Python:

import numpy as np
import pandas as pd

# Simular retornos acumulativos de 100 días
N = 100
R = pd.DataFrame(np.random.normal(size=100)).cumsum()

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

# Enfoque 2
r = R.diff()

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

1 votos

Todavía parece que estoy obteniendo un valor anormalmente grande para mi ratio de Sharpe (~5). Debo mencionar que esto se está calculando a partir de los rendimientos en una estrategia de trading de pares. ¿Hay algo que pueda cambiar debido a esto, o debo asumir que algo en mis cálculos previos está mal?

0 votos

No importa en qué tipo de estrategia estés probándolo. 5 no es inusual, para estrategias como esa probablemente solo tienes suposiciones de deslizamiento incorrectas.

2 votos

@madilyn ¿Falta la anualización del SR en este código de Python? Porque estoy obteniendo algo ridículo después de convertirlo a una tasa anualizada.

0voto

K. Do Puntos 1

Con la otra respuesta, el índice de Sharpe podría ser positivo aunque los rendimientos sean negativos. Esto se debe al hecho de que la media geométrica y la media aritmética son diferentes.

El siguiente enfoque se podría utilizar:

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)

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X