¿Una calculadora que tenga en cuenta el reequilibrio de la cartera? [cerrado]

Estoy buscando una calculadora que tenga en cuenta el reequilibrio al estimar los rendimientos totales utilizando datos históricos.

Por ejemplo, ingresaría lo siguiente en la calculadora:

  • Tengo una inversión inicial de $10,000.
  • Puse el 50% en el fondo A.
  • Puse el 50% en el fondo B.
  • Yo rebalanceo todos los años.
  • Inicio en el año 1990.

Luego, la calculadora generaría lo siguiente utilizando los datos de rendimiento real de ambos fondos desde 1990 hasta el presente:

  • El valor total de su cartera en 2015 sería X cantidad de dólares.

¿Alguien sabe de una calculadora de este tipo?

Respuestas (2)

Mi respuesta es Microsoft Excel.

Busque en Google "VBA para tontos" (en serio) y descubra si su corretaje ofrece una 'API'. Con una breve comprensión de la codificación, puede obtener una hoja de cálculo que está conectada en vivo al flujo de datos de sus corredores.

Digamos que tiene una hoja de cálculo con el valor de 1990 de cada uno en las dos primeras columnas (celdas a1 y b1). Tal vez esta fórmula podría ser la tercera columna, te dirá cuánto comprar o vender para reequilibrarlos.

=((a1+b1)/2)-a1

luego, para iterar el reequilibrio, establezca a2 y b2 en =C1y arrastre la fórmula hasta la fila 25, una fila para cada año. Probablemente será un poco más de trabajo que eso, pero entiendes la idea.

Un comienzo, pero los datos de precios por sí solos no serán suficientes, por lo que tiene razón: "un poco más de trabajo que eso". La mayoría de los fondos pagan distribuciones que también deberían ser rastreadas y reinvertidas. Durante un largo período, las distribuciones representarían una parte significativa del valor de la cartera. Un enfoque de solo precio funciona solo en el caso más simple donde no hay distribuciones u otros eventos significativos (por ejemplo, divisiones o consolidaciones). El escenario es poco probable para los fondos mutuos, pero posible para ciertas acciones.

R tiene un paquete realmente bueno que le permite calcular el rendimiento de las carteras reequilibradas. El paquete se llama: PerformanceAnalytics (consulte: http://www.inside-r.org/packages/cran/PerformanceAnalytics/docs/Return.portfolio ).

Rápidamente escribí un pequeño guión para ti que te permite hacer exactamente lo que quieres.

Código:

startAmount <- 10000
library(PerformanceAnalytics)
#a small function to ensure that the data is of the correct type for the package to work
cleanData <- function(df) {
  if(ncol(df) > 0) {
    df <- df[,-1]
    df['Date'] <- as.Date(df[['Date']], format = '%Y-%m-%d')
    #set all the data to numeric data.
    #the first column is the date.
    cols <- c(2:ncol(df))
    df[,cols] <- lapply(df[,cols],function(x) as.numeric(as.character(x)));
    df <- xts(df[,-1], order.by=df[,1])
    return(df)
  } else {
    return("Error; the data.frame does not have any columns.")
  }
}
# use csv2 if you use use a comma as decimal point and a semicolon as field separator
# enter the path to your file where it says: portfolio.csv
yourPortfolio <- cleanData(read.csv('portfolio.csv'))
# the frequency with which you want to rebalance your portfolio is set to yearly. You could also set this to daily, weekly or monthly.
vectorReturns <- Return.portfolio(yourPortfolio, rebalance_on = c(NA, "years"))
dollarAmount <- startAmount*prod(1+vectorReturns)
print(paste("Your portfolio total value in 2015 would be ", dollarAmount, " amount of dollars.", sep = ""))

Por defecto, la cartera se reequilibra a una cartera igualmente ponderada. También es posible reequilibrar su cartera utilizando ponderaciones personalizadas. Consulte la documentación sobre cómo hacerlo.

Para que este código funcione, debe tener sus datos ya en términos de devolución. Puede hacerlo fácilmente en Excel. Asegúrese de que sus datos en Excel se vean así:

             option 1     option 2
2003-10-30 -0.002014099 -0.002014099
2003-10-31 -0.002018163 -0.002018163
2003-11-03 -0.029322548 -0.022605170
2003-11-04 -0.032291667 -0.032128514
2003-11-05  0.019375673  0.017634855

Luego, exporte sus datos a un archivo CSV.

Nota: antes de ejecutar el código, asegúrese de haber instalado el paquete PerformanceAnalytics. Puedes hacer esto de la siguiente manera:

install.packages("PerformanceAnalytics")

Déjame saber si tienes alguna pregunta con respecto a lo anterior.