Para añadir otra posibilidad: A continuación se muestra cómo podría ejecutarse un modelo de este tipo en el PMwR
(que yo mantengo). Parece que sig
mantiene la posición deseada. Supongamos que tenemos una serie temporal de precios P
.
sig <- c("b", "b", "s", "s", "b", "b", "b", "s",
"s", "b", "s", "b", "s", "s", "b", "s",
"b", "s", "s", "s", "s", "b", "b", "s",
"s", "b", "b", "b", "b", "b", "b", "s",
"b", "b", "b", "b", "b", "b", "b")
P <- cumsum(sample(c(1, -1), replace = TRUE, size = length(sig))) + 100
Entonces con PMwR::btest
El backtest podría realizarse de la siguiente manera:
library("PMwR")
signal <- function(sig)
switch(sig[Time()], "b" = 1, "s" = 0, NULL)
bt <- btest(P, signal, sig = sig)
## initial wealth 0 => final wealth 10
El signal
mapas de funciones sig
en cada punto del tiempo a una posición de 1 o 0. El resultado, almacenado en bt
es una lista que almacena los detalles del backtest.
journal(bt)
## instrument timestamp amount price
## 1 asset 1 2 1 100
## 2 asset 1 4 -1 100
## 3 asset 1 6 1 98
## 4 asset 1 9 -1 101
## 5 asset 1 11 1 101
## [....]
plot(NAVseries(bt))
## etc.
0 votos
Echa un vistazo al paquete quantstrat @alonch7
0 votos
Hola Rime, conozco quanstart pero me resulta difícil utilizarlo con la salida que hace mi modelo.
0 votos
Puedes encontrar mucha información sobre cómo utilizar el paquete. aquí hay un enlace a la página de Guy Yollin donde puedes descargar el código que utiliza para repasar una estrategia en quantstrat: r-programming.org/papers @alonch7 una alternativa sería convertir el
b
ys
señales en1
por mucho tiempo,-1
para abreviar, y0
para no hacer nada... y luego multiplicarlos por los rendimientos