He estado buscando un R-paquete que me va a permitir hacer el seguimiento de mi cartera de acciones - básicamente me gustaría entrar en las poblaciones que tengo, seguimiento de las operaciones que hacer, calcular mi posición abierta y media de coste, no realizadas, y me di cuenta de P/L, etc... pero no he visto un paquete que hace esto. Alguien ha leído acerca de/uso de uno de estos tipos de funciones? Gracias.
Respuestas
¿Demasiados anuncios?Usted puede hacer eso con el papel secante del paquete. La usamos para reconciliar nuestras operaciones.
Sólo está disponible en R-Forge, así que vea este stackoverflow pregunta de cómo instalarlo. Ejecutar el "amzn_test" demo para un ejemplo de cómo usarlo:
library(blotter)
demo(amzn_test)
El PMwR
paquete, el que mantener, proporciona tales cálculos. El paquete está en CRAN y GitHub/GitLab.
El código de ejemplo:
library("PMwR")
trades <- read.table(text="
timestamp , instrument , amount , price
2019-06-25 , Amazon , 20 , 1878
2019-06-26 , Amazon , -10 , 1902
2019-07-01 , Amazon , -10 , 1921
2019-04-15 , Netflix , 20 , 362",
header = TRUE, sep = ",",
strip.white = TRUE, stringsAsFactors = FALSE)
trades
$timestamp <- as.Date(trades$
es timestamp)
trades <- as.journal(trades)
trades
## instrument timestamp amount price
## 1 Amazon 2019-06-25 20 1878
## 2 Amazon 2019-06-26 -10 1902
## 3 Amazon 2019-07-01 -10 1921
## 4 Netflix 2019-04-15 20 362
##
## 4 transactions
, una lista de sus operaciones.
trades
A partir de este journal
, usted puede ahora calcular las posiciones.
summary(trades)
## journal: 4 transactions in 2 instruments
##
## instrument n avg buy avg sell first last
## Amazon 3 1878 1911.5 2019-06-25 2019-07-01
## Netflix 1 362 NA 2019-04-15 2019-04-15
Y usted puede calcular la ganancia/pérdida.
journal
Ya hay una posición abierta en Netflix, tenemos que ofrecer un precio que se utiliza para la valoración (position(trades)
## 2019-07-01
## Amazon 0
## Netflix 20
position(trades, drop.zero = TRUE)
## 2019-07-01
## Netflix 20
position(trades, when = as.Date("2019-06-27"))
## 2019-06-27
## Amazon 10
## Netflix 20
).
pl(trades)
## Amazon
## P/L total 670
## average buy 1878
## average sell 1911.5
## cum. volume 40
##
## Netflix
## P/L total NA
## average buy 362
## average sell NA
## cum. volume 20
##
## ‘P/L total' is in units of instrument;
## ‘volume' is sum of /absolute/ amounts.
## ‘sum(amount)' is not zero for Netflix: specify ‘vprice' to compute p/l.
La función vprice
también puede calcular la ganancia/pérdida a lo largo del tiempo.
pl(trades, vprice = c(Netflix = 380))
## Amazon
## P/L total 670
## average buy 1878
## average sell 1911.5
## cum. volume 40
##
## Netflix
## P/L total 360
## average buy 362
## average sell 380
## cum. volume 20
##
## ‘P/L total' is in units of instrument;
## ‘volume' is sum of /absolute/ amounts.