2 votos

La Gestión de la cartera en R

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.

1voto

doekman Puntos 5187

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)

1voto

BigCanOfTuna Puntos 210

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.

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