18 votos

El cálculo de registro de rendimientos con R

Estoy tratando de calcular el registro de las devoluciones de un conjunto de datos en R usando el habitual registro de diferenciación método. Sin embargo, los datos calculados es simplemente un vector de ceros. Yo no puedo ver lo que estoy haciendo mal.

Aquí está el fragmento de código que muestra lo que estoy haciendo

> prices <- data$cl
> head(prices)
[1] 1108.1 1095.4 1095.4 1102.2 1096.3 1096.7
>
>
> lrets <- log(lag(prices)) - log(prices)
> head(lrets)
[1] 0 0 0 0 0 0
> summary(lrets)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0       0       0       0       0       0 

¿Qué estoy haciendo mal?

16voto

Oded Puntos 271275

Simplemente está haciendo $log(S_t) - log(S_t) = 0$ para todo $t$. En su lugar, trate de

> n <- length(prices);
> lrest <- log(prices[-1]/prices[-n])

Debe hacer el truco.

9voto

user6189 Puntos 26

Una manera fácil de realizar lo que usted necesita es hacer de esta manera:

si los datos son a diario, entonces :

> prices <- data$cl
> log_returns <- diff(log(prices), lag=1)

le proveerá con registro diario devuelve, si cambia el $lag=1$ a $lag=5$, a continuación, obtendrá semanal de movimiento de registro de las devoluciones.

7voto

penti Puntos 93

Creo que el método más simple para calcular registro de devoluciones es de ROC de la TTR paquete de:

> data(ttrc)
> roc <- ROC(ttrc[,"Close"])

https://CRAN.R-project.org/package=TTR

2voto

ash3r Puntos 146

sólo para agregar otro método:

>lrtn=diff(log(prices))

para el registro diario de las devoluciones, si usted tiene precios diarios.

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