2 votos

La creación de una cartera de R : buenas prácticas

Soy bastante nuevo en quantfin, pero con ganas de aprender. He buscado la respuesta (google y stackex), pero no he encontrado nada satisfactorio (pero yo no podría hacer las preguntas correctas...) El problema :

Tengo que volver a crear una cartera (PF) de una revista, que se publica cada 3 meses, pero con datos diarios. Este PF se reequilibra cada 3 meses. Yo actualmente tengo todos los datos diarios necesito (universo). ¿Cómo puedo crear mi PF en la forma más útil?

Mi meta ideal sería tener mi PF, basado en el tiempo, con sólo las poblaciones que están en ella en ese momento (y no el universo entero con peso=0).

Hay un paquete para esto? ¿cuáles son las buenas prácticas ?

Cualquier ayuda apreciada

3voto

BigCanOfTuna Puntos 210

Como ya se ha comentado por Alex C, el paquete de R PMwR, lo que yo sostengo, puede ofrecer algunas funciones útiles. Un pequeño ejemplo: puedo crear un diario de tres operaciones. (Tenga en cuenta que un diario aquí es simplemente una colección de operaciones.)

library("PMwR")
library("orgutils")

tmp <- readOrg(text="
| instrument | amount |  timestamp | price |
|------------+--------+------------+-------|
| AMZN       |     10 | 2018-01-03 |  1201 |
| AMZN       |    -10 | 2018-01-10 |  1250 |
| IBM        |     20 | 2018-01-10 |   153 |
")

tmp$timestamp <- as.Date(tmp$timestamp)
J <- as.journal(tmp)
J
##    instrument   timestamp  amount  price
## 1        AMZN  2018-01-03      10   1201
## 2        AMZN  2018-01-10     -10   1250
## 3         IBM  2018-01-10      20    153
## 
## 3 transactions  

Usted obtener la composición actual de la cartera position.

position(J)
##      2018-01-10
## AMZN          0
## IBM          20

El argumento drop.zero oculta no las posiciones activas.

position(J, drop.zero = TRUE)
##     2018-01-10
## IBM         20


position(J, when = as.Date("2018-1-5"), drop.zero = TRUE)
##      2018-01-05
## AMZN         10

También puede calcular la posición por más de un día:

days <- seq(from = as.Date("2018-1-1"),
            to = as.Date("2018-1-12"),
            by = "1 day")
position(J, when = days)
##            AMZN IBM
## 2018-01-01    0   0
## 2018-01-02    0   0
## 2018-01-03   10   0
## 2018-01-04   10   0
## 2018-01-05   10   0
## 2018-01-06   10   0
## 2018-01-07   10   0
## 2018-01-08   10   0
## 2018-01-09   10   0
## 2018-01-10    0  20
## 2018-01-11    0  20
## 2018-01-12    0  20

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