Por Mauricio Garita
El próximo año se publicará mi libro titulado Applied Quantitative Finance: Using Python for Financial Analysis (disponible aquí). Sin duda alguna, este ha sido uno de los mayores retos que he tenido en mi vida, tanto así que continúo trabajando en la parte final del libro tratando de que sea lo más útil posible pero que al mismo tiempo sea un libro programación que sobreviva más de unos años.
He estado inmerso en el mundo de las finanzas desde los 18 años, cuando comencé a escribir columnas para un medio de Centroamérica titulado Moneda, para luego seguir escribiendo para Mercados y Tendencias, Estrategia y Negocios entre otras revistas y medios de la región. Comencé mi vida como escritor como un hobbie, dándome cuenta luego, que por alguna razón mis escritos gustaban a los lectores y esto me animó a seguir escribiendo.
Después de estudiar en la bella ciudad de Manchester, Inglaterra, mi amor por las finanzas continuó y me impulsó a dictar clases financieras para maestría y posgrados, algo que continuo haciendo. Fue a través de este mundo, las lecturas, las noticias y los temas de interés que me adentré hacia la programación para aumentar mis habilidades o mejor aún, poder ser más curioso en las finanzas. A continuación mi vida de las finanzas hacia la programación:
La realidad de las finanzas
En el mundo se producen 2.5 trillones de bytes diarios de información de acuerdo al artículo de Forbes publicado en el 2018, y la cifra sigue aumentando. Sólo pensar que en el mundo financiero se producen los datos a través de cada movimiento, una erogación, una cuenta por cobrar, una transacción, pagos electrónicos, cada vez que se utiliza una tarjeta de crédito o débito, préstamos y tantos otros puntos en los cuales se crea información.
Lo interesante de toda la información creada es que puede ser abrumantes para aquellos que no nos enamoramos a primera vista de la programación. Honestamente, cuando comencé mi carrera de economista sabía que el manejo de datos era inminente pero lo interesante es que en este momento utilizamos herramientas para bases de datos pequeñas y realmente, poco ágiles.
Ahora, las bases de datos crecen cada vez de manera más rápida. Esto lleva a la siguiente pregunta, ¿cómo trato los datos? Existen dos opciones usualmente en finanzas que podrían considerarse como las más populares o las de cajón. La primera es R (https://www.r-project.org/) el cual es un lenguaje de programación que tienen una mayor rigurosidad académica debido a que cada paquete ha sido probado y también han sido publicados sus resultados en revistas científicas.
El segundo de ellos es Python, que fue lanzado en 1991 por Guido Van Rossum, y que ha gozado de un crecimiento impresionante en la actualidad, sobre todo por su facilidad de comprensión y también, debemos agradecer, los cambios útiles de Python 2.0 a Python 3.0.
El crecimiento ha sido impresionante de ambos y la verdad que son sumamente útiles para desarrollar análisis financiero de datos. Si quedara en mi, y se tiene el tiempo de conocer ambos, diría que la mejor elección es utilizar R y Python sabiendo las fortalezas y debilidades de cada uno de ellos.
¿Cómo aprendí?
La primera parte de mi aprendizaje que el clásico, un libro. Esto me llevó a escribir un libro que permitiera combinar la academia, con la utilización de ecuaciones financieras y Python. Creo que ese primer libro de R fue uno de los mejores libros (http://shop.oreilly.com/product/0636920174851.do) y luego de ello comencé con Python a través del sitio DataCamp que me permitió ir ahondando en mayor conocimiento.
El resto de ello fue práctica, práctica y práctica. Esto me recuerda a la regla de las 10,000 horas (aunque ha sido fuertemente criticada) porque en programación y aprendizaje se deben de hacer ejercicios diarios. No es algo que se absorba simplemente con practicarlo una vez.
Lo que si me ayudó a aprender más rápido es el aportar el conocimiento que yo traía de este mundo (el financiero) hacia la programación. Es utilizar mis ventajas sobre el programa. Si mi pasión es finanzas, entonces programar utilizando finanzas sería el camino idóneo. Creo que alguien que quiere hacer páginas Web podría aprender a utilizar Java mejor que yo, porque tiene una pasión.
La mayor equivocación existe en adaptarte al mercado. Muchas veces escucho a las personas aprendiendo un lenguaje de programación para hacer algo en lugar de pensar en su pasión y como esa pasión la pueden incluir en programación para que el aprendizaje sea menos árido.
Hablemos de las lecciones
La primera lección la mencioné anteriormente, práctica.
La segunda lección de la programación es resiliencia. Resiliencia porque el código fallará, encontrarás mejores formas de hacerlo, pasarás momentos de frustración intensa en que te cuestionas porque lo haces si fuese más simple quedarse sin este conocimiento, pero todo esto no sólo está trabajando en tus habilidades pero también en tu ser. Estás aprendiendo que no todo es fácil en la vida, que existen complicaciones y que al final podemos ser mejores y nos esforzamos. La programación me enseñó que no debo tener miedo a fallar, y que los fallos ahora son mejores códigos adelante. Esto ha sido una lección de vida.
Tercero, pensar en un sistema. Cualquier libro de programación comienza por hablar de sistemas. Si lees a un escritor que ha sido programador y luego te habla de finanzas personales, te hablará del sistema. La mejor forma para explicar el sistema es aquella bella frase de Bill Gates donde mencionaba: Escoge a una persona perezosa para hacer el trabajo difícil porque esta persona encontrará la manera más fácil de hacerlo.
Esta frase ha sido analizada desde diferentes perspectivas, pero usualmente negativa. Negativa porque creemos que la solución a los problemas son las soluciones difíciles, que necesitan de sacrificio, sudor y lágrimas. La verdad es que en términos paretianos, las mejores soluciones son aquellas que con el 20% de esfuerzo alcanzan los el 80% de los resultados. En términos más simples a lo anterior se le llama la Navaja de Ockam que mencionaba que la solución más simple es usualmente la correcta.
Lo anterior ha sido una enseñanza de vida. A veces es mejor hacer, que hacer perfecto. La perfección es uno de los enemigos de la acción porque nunca será alcanzada. Lo anterior no es una invitación a la mediocridad sino una invitación a la humildad. A saber que todo es perfectible y que es mejor proveer una solución simple que pueda ayudar a muchos que una solución complicada que pueda ayudar a pocos. Esta lección es algo que no pude prever.
En fin, lo que comenzó y continúa como un pasatiempo, me ha ayudado a ser una mejor persona.