1 votos

Calcular la variación diaria del valor de la posición abierta

A partir de una lista de operaciones me gustaría calcular la variación de beneficios durante el tiempo que la posición está abierta. ¿Alguien tiene un script para hacer esto, ya sea python o R? Los beneficios se basan en un tamaño de contrato de 100 del índice, donde se tiene en cuenta el deslizamiento.

Lista comercial

Enter           Exit            Profit
20070829 14:00  20070829 17:24  1,465,00
20070914 17:24  20070918 14:00  1,588,98
20070924 14:00  20070924 17:24  796,98

Datos del índice:

 Date     Time      Open     High     Low     Close  Volume
  20070829  900     7430.24 7430.24 7358.12 7372.1  1
  20070829  1000    7378.56 7378.56 7354.41 7372.16 1
  20070829  1100    7366.6  7433.46 7366.6  7428.72 1
  20070829  1200    7423.62 7429.08 7408.82 7418.13 1
  20070829  1300    7417.8  7427.13 7412.43 7422.03 1
  20070829  1400    7423.91 7434.21 7406.92 7418.04 1
  20070829  1500    7416.77 7431.55 7413.9  7426.8  1
  20070829  1600    7428.96 7442.38 7406.2  7414.65 1
  20070829  1724    7415.36 7433.29 7407.98 7433.29 1
  20070830  900     7439.18 7484.69 7439.18 7478.72 1
  20070830  1000    7478.22 7491.75 7462.95 7464.2  1
  20070830  1100    7463.82 7480.76 7463.82 7475.08 1
  20070830  1200    7474.77 7474.77 7439.76 7456.95 1
  20070830  1300    7456.19 7456.19 7423.3  7429.93 1
  20070830  1400    7430.05 7444.99 7425.68 7444.99 1
  20070830  1500    7441.21 7454.32 7419.61 7420.8  1
  20070830  1600    7421.59 7480.41 7418.81 7479.4  1
  20070830  1724    7479.01 7494.39 7469.71 7487.42 1
  20070831  900     7519.94 7574.6  7519.94 7554.82 1
  20070831  1000    7554.85 7564.01 7546.77 7552.3  1

0 votos

Así que lo que se quiere calcular es $$ 100\left(\frac{\rm Close}{\rm Open} - 1\right) $$ ?

0 votos

¿Los precios de entrada y salida son los del cierre de cada periodo? Si no es así, ¿cuáles son los precios de entrada y salida de su primera operación en 20070829?

4voto

BigCanOfTuna Puntos 210

Puede que el paquete PMwR haga algunas de las cosas que quieres. Revelación: Soy el autor del paquete. PMwR no está en CRAN (todavía), pero está en GitHub ( https://github.com/enricoschumann/PMwR ) y también se puede instalar desde http://enricoschumann.net/R/packages/PMwR/index.htm .

Permite calcular el beneficio/pérdida de las operaciones, tanto en total como en el tiempo.

Se empieza por crear un journal . Tomo su primera operación y uso los precios de cierre de la tabla. Si quieres incluir tu deslizamiento, ajusta los precios de entrada/salida.

library("PMwR")
j <- journal(amount = c(100, -100),
             price = c(7418.04, 7433.29),
             timestamp = as.POSIXct(c("20070829  1400",
                                      "20070829  1724"),
                                    format = "%Y%m%d  %H%M"))

j

##              timestamp  amount    price
## 1  2007-08-29 14:00:00     100  7418.04
## 2  2007-08-29 17:24:00    -100  7433.29
## 
## 2 transactions  

Para calcular el beneficio/pérdida, utilice la función pl .

pl(j)

## P/L total        1525
## average buy   7418.04
## average sell  7433.29
## cum. volume       200
## 
## 'P/L total' is in units of instrument;
## 'volume' is sum of /absolute/ amounts.

También puede evaluar su posición a lo largo del tiempo. Como ejemplo, utilizo los precios de cierre que me has proporcionado.

timestamp <- as.POSIXct(
    c("20070829  0900", "20070829  1000", "20070829  1100",
      "20070829  1200", "20070829  1300", "20070829  1400",
      "20070829  1500", "20070829  1600", "20070829  1724",
      "20070830  0900", "20070830  1000", "20070830  1100",
      "20070830  1200", "20070830  1300", "20070830  1400",
      "20070830  1500", "20070830  1600", "20070830  1724",
      "20070831  0900", "20070831  1000"),
    format = "%Y%m%d  %H%M")

close <- c(7372.1 , 7372.16, 7428.72, 7418.13, 7422.03,
           7418.04, 7426.8 , 7414.65, 7433.29, 7478.72,
           7464.2 , 7475.08, 7456.95, 7429.93, 7444.99,
           7420.8 , 7479.4 , 7487.42, 7554.82, 7552.3)

Ahora, usted llama a pl con dos argumentos más: along.timestamp y vprice ; este último representa el precio de tasación. Esto le proporcionará una serie temporal del beneficio/pérdida total (realizado + no realizado) de su operación.

pl(j, along.timestamp = timestamp, vprice = close)[[1]]$pl

## 2007-08-29 09:00:00 2007-08-29 10:00:00 2007-08-29 11:00:00 
##                   0                   0                   0 
## 2007-08-29 12:00:00 2007-08-29 13:00:00 2007-08-29 14:00:00 
##                   0                   0                   0 
## 2007-08-29 15:00:00 2007-08-29 16:00:00 2007-08-29 17:24:00 
##                 876                -339                1525 
## 2007-08-30 09:00:00 2007-08-30 10:00:00 2007-08-30 11:00:00 
##                1525                1525                1525 
## 2007-08-30 12:00:00 2007-08-30 13:00:00 2007-08-30 14:00:00 
##                1525                1525                1525 
## 2007-08-30 15:00:00 2007-08-30 16:00:00 2007-08-30 17:24:00 
##                1525                1525                1525 
## 2007-08-31 09:00:00 2007-08-31 10:00:00 
##                1525                1525

0voto

AbdulHannan Puntos 11

Estoy recibiendo un error con el formato de mis datos: ¿Cómo puedo cambiar la marca de tiempo a numérica?

> head(DaxH1)
            timestamp amount   price
1 2008-01-14 11:00:59     19 7735.37
2 2008-01-14 13:00:59    -19 7741.90
3 2008-01-16 17:00:59     20 7485.11
4 2008-01-17 11:00:59    -20 7528.99
5 2008-01-22 16:00:59     22 6651.13
6 2008-01-23 09:07:59    -22 6769.17

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