Estos meses he estado trabajando en mi peculiar proyecto de crear mi propia base de datos de empresas, y por fin lo he logrado. 12186 empresas con sus cotizaciones históricas, aunque casi todas del mercado americano. El objetivo de mi base de datos es poder hacer estadísticas de patrones y calcular rendimientos de estrategias sobre ellos aplicado a miles de empresas de golpe y en tiempo mínimo. Al final del post explico un poco la estructura, el cómo y el por qué. Y dirás, ¿eso no lo hace ETChart? ETChart te permite buscar patrones de una forma genial, si sabes lo que buscas, pero mi objetivo es hacer estadísticas de patrones y estrategias para saber qué buscar, y para eso hace falta muchísima más potencia de cálculo.
Y para estrenar la base de datos he creado un pequeño gráfico. Si suponemos, aunque no sea muy cierto, que el número de empresas que se estrenan en el mercado anualmente es prácticamente el mismo, podemos calcular qué proporción de empresas han desaparecido en función del número de años que deberían llevar cotizando, analizando la vida de las empresas de la muestra de la base de datos. Haciendo esto nos sale el siguiente gráfico.
Por ejemplo, si compramos acciones de una empresa X que lleva cotizando 10 años debemos saber que el 90% de las empresas cotizadas dejan de cotizar antes de llegar a los 20 años. Luego si nuestro objetivo es mantener las acciones durante los próximos 10 años la probabilidad de que nuestra empresa deje de cotizar, y nuestro dinero acabe secuestrado y convertido en papel reciclado, es del 90/65 = 72%. Así que deberíamos invertir en 4 empresas con la esperanza de que la que sobreviva se revalorice al menos un 300% en 10 años más el beneficio que esperemos obtener.
Y ¿cuál es la solución? Los índices. Están formados por empresas sólidas y se van modificando sacando empresas enfermas y metiendo empresas en plenitud. Si inviertes a largo plazo y no tienes gran idea de seleccionar empresas deberías invertir solo en índices.
Unas notas sobre la base de datos. Utilizo Matlab y la datafeed toolbox leyendo datos desde yahoo finance. Me creo un listado de empresas con sus tickers (esta es la parte difícil y la que me reservo…) y leo desde yahoo finance sus datos usando la función fetch. Los almaceno en ficheros para guardarlos y los rescato en memoria en una cell gigante metiendo en cada elemento los datos de una empresa en formato structure. Con todos esos datos almacenados en RAM hacer estudios avanzados recorriendo todo el cell se hace volando, y más utilizando las capacidades numéricas de Matlab. La base de datos me puede ocupar 2GB de RAM. El gráfico anterior se hace en 0.4 segundos. Si a alguien le interesa ya crearé otro post explicando más todo esto.