Teoria sobre los portfolios Buy And Hold

Dentro de OLPS (Online Portfolio Selection) tenemos una categoria denominada benchmarks, y este articulo, vamos a empezar con la primera de todas ellas, la llamada Buy And Hold

La estrategia Buy And Hold, es una estrategia, donde desde el primer momento se eligen los activos que compondran la cartera y se les asigna un porcentaje del capital a cada uno. Mantenemos el portfolio sin cambios hasta el final. Sin importar la variacion de los pesos de las posiciones, es decir, sin rebalanceos.

El gestor unicamente compra los activos al principio del primer periodo, y no lo rebalancea en los siguiente periodos, por consecuencia, los activos mantenidos en el portfolio cambian implicitamente sus pesos en funcion de las fluctuaciones del mercado. Tal como vemos en el paper original :

Online Portfolio Selection: A Survey ÔÇô BIN LI and STEVEN C. H. HOI, Nanyang Technological University, Singapore

Hemos visto anteriormente alguna otra cartera que podras ver aqui o aqui, y alguno que otro mas, que te invitamos a que recorras la web para encontrarlos!

buy and hold

Programando la estrategia de Buy And Hold en Python

Una vez explicada en que consiste la estrategya Buy And Hold, vamos a programarla en Python, de una forma sencilla, y que cualquier lector de la web pueda replicarlo sin nigun tipo de complicacion.

Lo primero que realizamos es importar todas las librerias necesarias. En este caso, ademas de las habituales como pandas, matplotlib, yfinance y quantstats, utilizamos una libreria muy peculiar, que recomiendo a todos los lectores que se familiaricen con ella, pues para mi, ha sido un antes y un despues. mlfinlab.

Una vez tenemos las librerias descargadas, declaramos mediante la variable tickers, todos los activos que queremos descargar, en este caso he utilizado unicamente los titulos que componen el indice FAANG, una variable donde asignamos los pesos iniciales a cada activo y creamos una funcion denominada download assets la cual nos devolvera el close de los assets mencionados, y los retornos de forma porcentual.

El siguiente paso es asignar a las variables stock_prices y stock_returns los precios y los retornos obtenidos con la funcion anterior. Posteriormente mediante el objeto BAH() vamos a indicarle a la libreria, que vamos a crear una cartera basada en el buy and hold.

Y una vez creado el objeto. realizamos el allocate de la cartera, mediante bah.allocate, pasandole como precios, los que hemos procesado anteriormente mediante nuestra funcion, que haga un resample mensual,para aligerar todo, ya que deja hasta una resolucion diaria, pero en una cartera de buy and hold, pues pierde el sentido en mi opinion. Y le a├▒adimos la lista de pesos principales que asignamos.

Como podemos ver, Netflix se desmarca con diferencia de el resto, y acaba ponderando mas de la mitad de la cartera . Vemos esto en formato lineas, pero en mi opinion es muchisimo mas visual plotearlo formato area.

Resultados

Ahora vamos a evaluar los resultados de la estrategia. Obviamente estan sesgados, pues en el momento de componer la cartera, yo ya sabia que todas estas empresas han funcionado mejor que la media del mercado. La incertidumbre a la hora de componer estas carteras, es el stock picking, pues en el momento de componerla, no tenemos ningun tipo de informacion de lo que ocurrira en el futuro.

Durante todo el notebook, se ha realizado un backtest de unas empresas, comrpados al principio del periodo, y dejar que crezcan sin rebalancear la cartera. Esa es la esencia del buy and hold. En mi opinion, no es una estrategia optima, pues cualquier resultado puede ser mejorable, unicamente cerrando posiciones cuando el precio este por debajo de una media, o volviendo a comprar cuando el precio este por encima de una media.

Como punto de inicio a la composicion de carteras, era fundamental que se explicara el buy and hold. Ya que seria la base de los siguientes articulos de creacion de portfolios . En proximos articulos veremos otras formas mas optimas de crear carteras.