2 votos

Cálculo de los rendimientos logarítmicos a través de múltiples valores y tiempo

Me he confundido mucho con el tema del cálculo de los rendimientos. Para obtener los rendimientos acumulados en el tiempo, se utilizan los rendimientos logarítmicos, pero aparentemente los rendimientos logarítmicos no se utilizan a través de diferentes valores en un tiempo fijo?

Me gustaría obtener los rendimientos acumulados en función del tiempo sobre mi cartera.

Tengo dos valores, A y B. Compro una acción tanto de A como de B cuando el mercado abre y vendo cuando cierra.

Supongamos que estos son los precios de un día concreto:

    open    close
A   9       10
B   10      8

Mi rendimiento global para ese día es (10+8)/(10+9) - 1 = -5.2% . Guardo ese -5,2% para ese día. Repito esto durante muchos días. ¿Cómo calculo entonces mi suma acumulada? Si ayuda, estoy haciendo esto en python.

Nota al margen: Puedo usar un cumsum() muy fácilmente en python, pero eso supone retornos de registro. No tengo ningún problema en trabajar con log-returns, pero no estoy seguro de cómo hacerlo.

Añadiré que siempre compro 1 acción de cualquier valor que esté en mi cartera para ese día. Los valores de mi cartera cambian a lo largo del tiempo.

7voto

ScottyDont Puntos 433

En Python, retornos geométricos simples:

    import numpy as np
    import pandas as pd
    sp500 = pd.io.data.DataReader('^GSPC', 'yahoo')['Close']
    simple_ret = sp500.pct_change()
    (1+simple_ret).cumprod()[-1] -1

    0.74751768460019963

Log-returnos:

    log_ret = np.log(1+simple_ret)
    np.exp(log_ret.cumsum()[-1]) -1

    0.74751768460020074

En Finanzas Cuantitativas, hacer sus cálculos en log-returnos considerado buenas maneras, sin embargo, para muchas aplicaciones prácticas (backtesting de estrategias de trading, por ejemplo), basta con rendimientos geométricos simples.

1voto

mitwilsch Puntos 33

Cuando hago series como esta en Python, normalmente sólo sumo 1 a cada rendimiento, y luego multiplico a través de estas sumas para los rendimientos acumulativos. Por ejemplo, si mis rendimientos durante tres días fueron -5,2%, 2,1% y 4,8%, entonces los valores que almacenaría serían:

1 + (-0.052) = 0.948

1 + (0.021) = 1.021

1 + (0.048) = 1.048

Entonces, para calcular mis rendimientos acumulados, sólo tendría que multiplicar (0,948)(1,021)(1,048) - 1 = 0,0144 o 1,44%.

Esto funciona especialmente bien con arrays en Python, donde puedes almacenar cada retorno como un array en un array más grande, permitiéndote indexar por fechas cada parte de la serie y luego cortarla como quieras. Estaré encantado de trabajar con el código para esto si me proporciona más detalles sobre su conjunto de datos.

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