¿A quién no le gusta ganar dinero?
¿Y si pudieras convertir el problema de ganar dinero en el problema de encontrar el camino más corto? Podemos hacer eso al menos de una manera particular: explotando las oportunidades de arbitraje.
¿Qué es el arbitraje?
El arbitraje es el acto de comprar o vender cosas en diferentes mercados, o en diferentes formas, para beneficiarse de las diferencias de precios. ¿Y las personas que se dedican a ello? Son conocidos como arbitrajistas, un título realmente elegante.
Comencemos con un ejemplo. Digamos que Paul, Peter y Bob viven en un pueblo, donde intercambian zanahorias, papas y lechuga. Bob cambia papas por zanahorias, Peter cambia lechuga por papas y Paul cambia lechuga por zanahorias. Además, Bob cambiará 2 papas por una zanahoria, Peter cambiará 1 lechuga por 2 papas y Paul cambiará 2 zanahorias por 1 lechuga. Si tuviéramos que tratar a cada individuo como un mercado para sus respectivos bienes, ¿cómo serían los tipos de cambio?
¿Sientes una oportunidad? Siendo el individuo emprendedor que eres, puedes intentar explotarlo. Comenzando con 5 zanahorias, te acercas a Bob y cambias tus 5 zanahorias por 10 papas, al precio que él está dispuesto a cambiar.
Luego, te acercas a Peter con tus papas, sabiendo que te cambiará 5 lechugas por ellas. Luego te acercas a Paul con tus 5 lechugas, y él cambia 10 zanahorias por tu lechuga. Después de algunos intercambios inteligentes, ha duplicado su riqueza de zanahorias. Ha convertido 5 zanahorias en 10 aprovechando una oportunidad de arbitraje. Más adelante, los aldeanos pueden desarrollar mercados más sofisticados en los que Bob, Peter y Paul no sean los únicos comerciantes. En cambio, este pequeño pueblo podría desarrollar un mercado de zanahorias/lechugas, un mercado de lechugas/papas y un mercado de papas/zanahorias, donde la tasa vigente para cada transacción fluctuará en función de lo que la gente esté dispuesta a intercambiar. Pero el principio de arbitraje sigue siendo el mismo. Y la oportunidad se puede aprovechar hasta que los comerciantes que ofrecen intercambiar a esos tipos se queden sin zanahorias, lechuga y papas para comerciar. La oportunidad de arbitraje se explota hasta que el mercado alcanza un equilibrio.
Arbitraje en tiempos modernos
Cuando piensa en los mercados modernos, probablemente no piense en intercambiar zanahorias, papas y lechugas. Si le gusta el mercado de divisas, es más probable que esté pensando en operar con dólares, libras y yenes. Y en ese caso, estaríamos tratando con un mercado dólar/libra, un mercado libra/yen y un mercado yen/dólar, con muchos comerciantes actuando en cada mercado. De ahora en adelante, usemos esas monedas como ejemplos de cosas para comerciar, pero tenga en cuenta que los principios se pueden aplicar a todo tipo de cosas que se pueden comerciar. Digamos que en un momento dado, los tipos de cambio son los siguientes:
Si aprendiste algo de Bob, Peter y Paul intercambiando zanahorias, lechuga y papas, sentirías una oportunidad aquí. Si cambia $1 por libras, terminará con £0.8. Cambiando eso por yenes, terminarás con 80 yenes. Llevas tu yen a la casa de cambio yen/dólar donde lo cambias por dólares… ¡pero ahora tienes $1.04! Pero tienes que actuar rápido, antes de que otro arbitrajista se te adelante. Estas oportunidades solo existen temporalmente, hasta que la liquidez se agote y las tasas se igualen. Los perspicaces entre ustedes pueden notar que no hemos considerado las tarifas de cambio en nuestro ejemplo. Por supuesto, tendría que tenerlos en cuenta para calcular si realmente existe una oportunidad de arbitraje rentable.
actuar rápidamente
Esperemos que tengas algo de intuición para entender por qué actuar rápido es primordial. Los tipos de cambio fluctúan rápidamente y solo hay una cantidad limitada de "cosas" disponibles a ese tipo de cambio. Si bien aquí hemos trabajado con ejemplos relativamente simples, las oportunidades de arbitraje pueden abarcar muchas transacciones y volverse increíblemente complejas. Nuestros ejemplos usaron 3 oficios, pero ¿qué pasa si necesita 10? Y en una red de 20 divisas con un mercado para cada par, ¿qué tan rápido podría encontrar una oportunidad? Usar una computadora es una respuesta obvia. Pero necesitamos un algoritmo eficiente, no sea que alguien más nos gane la oportunidad. Para lograrlo, podemos aprovechar algunas ideas inteligentes en matemáticas e informática.
Mercados como un gráfico
Los gráficos son una estructura increíblemente importante que ha encontrado sus usos en numerosas aplicaciones. Muchas estructuras sociales y naturales se pueden modelar con gráficos, y resulta que los mercados son una de ellas. En nuestro caso, tratemos cada moneda como un nodo. Pasar de un nodo a otro corresponde a cambiar una divisa por otra.
Entonces, moverse a lo largo de un borde, entre nodos, debería transformar la cantidad de moneda por el tipo de cambio. Eso significa que pasar del nodo dólar al nodo libra corresponde a multiplicar por 0,8 libras/dólar. Asignemos el tipo de cambio como el peso de cada arista.
Tenga en cuenta que el tipo de cambio en cada dirección será aproximadamente el recíproco de cada uno. Eso significa que si la tasa para convertir libras a dólares es 0,8 libras/dólar, la tasa en la otra dirección será 1/(0,8 libras/dólar) = 1,25 dólares/libra. La consecuencia para nosotros es que debemos tener cuidado de tratar la compra y venta en cada mercado como bordes distintos, dirigidos, con diferentes pesos.
La razón por la que los tipos de cambio en ambas direcciones son solo aproximadamente recíprocos se debe a las pequeñas diferencias en los precios de compra y venta de divisas, lo que se conoce como diferencial de compra-venta. Por ejemplo, si en un momento dado puedes comprar libras a 0,8 libras/dólar (el precio actual que alguien te venderá), pero puedes vender dólares por libras a 0,82 libras/dólar (o 1,22 dólares/libra, y el precio actual alguien le comprará a usted), su modelo de gráfico se verá así (excluyendo los otros tipos de cambio por simplicidad):
Se puede modelar una serie de intercambios moviéndose a lo largo de los bordes en este gráfico, y el resultado de los intercambios se calcula multiplicando los pesos de los bordes a medida que se mueve a lo largo de ellos.
Viendo la oportunidad
Ahora que tenemos un modelo de trabajo, ¿qué estamos buscando en nuestro gráfico que corresponda a una oportunidad de arbitraje? Para determinar si una serie de operaciones es rentable, necesitamos una métrica consistente de rentabilidad. En otras palabras, si comenzamos nuestra serie de operaciones en dólares, también tendremos que terminarla en dólares. Y al comparar la cantidad de dólares con la que terminamos con la cantidad con la que comenzamos, sabremos si fue rentable o no. En nuestro gráfico, eso significa que nuestra serie de transacciones debe terminar en el mismo nodo desde el que comenzó. En nuestro caso, comenzamos en el nodo dólar y terminamos en el nodo dólar. En terminología de grafos, lo llamamos ciclo. Así que sabemos que estamos buscando algún tipo de ciclo, pero ¿qué tipo de ciclo lo hace rentable? Observe que si multiplicamos a lo largo de los bordes de un ciclo, transformamos las unidades del tipo de cambio efectivo.
Sin embargo, cuando volvemos a nuestro nodo inicial, la cantidad se vuelve sin unidades. ¡Se transforma de una tasa de cambio a una relación de retorno! Atravesar un ciclo en nuestro gráfico y calcular el producto de los tipos de cambio a lo largo del camino corresponde a calcular la relación de rendimiento que obtendríamos después de completar la serie de transacciones.
Si el mercado es perfectamente eficiente, nuestra relación de rendimiento, abc, será 1, porque los tipos de cambio se han igualado. Si el producto de los pesos es mayor que 1, digamos 1.02, entonces nuestra oportunidad de arbitraje nos habría dado un retorno del 2%.
Por lo tanto, generalizando a un número arbitrario de transacciones, una oportunidad de arbitraje corresponde a la siguiente desigualdad:
donde e_i corresponde al i -ésimo tipo de cambio, para cada operación i , sobre n operaciones.
Entonces, lo que necesitamos es un algoritmo que encuentre un ciclo en el gráfico de los mercados, donde el producto de los pesos de los bordes sea mayor que 1. Es posible que pueda inventar un algoritmo para hacer eso, pero en informática, como en la vida en En general, es útil para reducir los problemas a los que ya sabe cómo resolver.
El algoritmo de Bellman-Ford
El problema de encontrar los caminos más cortos es un problema común y fundamental en informática, que se puede aplicar a muchos escenarios diferentes. Una obvia, trazando una correspondencia entre un gráfico y un mapa, es la de encontrar la ruta más corta en un mapa. Pero con algo de inteligencia, muchos otros tipos de problemas también pueden transformarse en un problema de ruta más corta. Lo que les voy a demostrar es que el problema de encontrar oportunidades de arbitraje es uno de esos problemas.
Primero, establezcamos cuál es el problema del camino más corto. Dados dos nodos en un gráfico, s y t , el camino más corto es el camino que minimiza la suma de los pesos de los bordes. En otras palabras, nos movemos a lo largo del camino de s a t , sumando los pesos de los bordes a lo largo del camino, el camino con la suma mínima es el camino más corto, el camino con el costo más bajo.
A continuación, será útil comprender que existen diferentes clases de problemas de ruta más corta. En el ejemplo obvio, como la ruta más corta en un mapa, los pesos de los bordes deben ser positivos. No hay forma, salvo una máquina del tiempo, de que conducir por una carretera reduzca el tiempo de viaje. En un gráfico con solo pesos de borde positivos, el famoso algoritmo de Dijkstra calculará la ruta más corta a todos los nodos del gráfico.
Sin embargo, no hay ninguna razón por la que un gráfico no pueda tener pesos de borde negativos. En ese caso, moverse a lo largo de ese borde reduce el costo total de la ruta. Pero, si tiene un ciclo que tiene un peso negativo, puede seguir recorriendo ese ciclo para siempre, cada vez, reduciendo el costo total de la ruta, y su ruta más corta tendrá un costo cercano a -∞. En ese caso, sería muy útil que nuestro algoritmo de ruta más corta tuviera un mecanismo para identificar ciclos de peso negativos. De lo contrario, el camino más corto se quedaría atascado dando vueltas al ciclo de peso negativo, para siempre.
El algoritmo Bellman-Ford es exactamente ese algoritmo. Una versión más general del algoritmo de ruta más corta de Dijkstra, puede manejar pesos negativos. Para hacerlo, detecta ciclos de peso negativos, ciclos en un gráfico en el que la suma de los pesos produce un valor negativo.
Pero, ¿cómo nos ayuda un algoritmo que puede encontrar ciclos donde la suma de aristas es menor que 0, cuando necesitamos un algoritmo que pueda detectar ciclos donde el producto de aristas es mayor que 1?
Iniciar sesión al rescate
La siguiente idea es que un producto se puede convertir en una suma aplicando la función logarítmica, gracias a la identidad:
De este modo podemos transformar nuestro problema de encontrar un ciclo con un producto mayor que 1, ¡a un problema de encontrar un ciclo con una suma mayor que 0! Lo hacemos tomando el logaritmo de cada tipo de cambio y usándolo como el peso de cada borde.
Demostremos eso tomando el logaritmo de ambos lados de nuestra desigualdad. Primero, tomar el logaritmo del lado izquierdo transforma el problema de calcular un producto en calcular una suma:
El logaritmo del lado derecho simplemente transforma el 1 en un 0:
Estamos cerca, pero no del todo. El paso final, para reducir nuestro problema a uno que podamos resolver con este algoritmo conocido, es multiplicar el peso de cada borde por -1. Esto convierte el problema de encontrar un ciclo de peso positivo en uno negativo:
¡Lo que sabemos que puede hacer el algoritmo Bellman-Ford! Construir un gráfico como se especifica y ejecutar el algoritmo de Bellman-Ford en él nos permitirá encontrar oportunidades de arbitraje de manera rápida y eficiente, porque hemos convertido el problema de arbitraje en el problema de encontrar el camino más corto, el camino infinitamente más corto .
En retrospectiva, es obvio que debería haber una correspondencia entre un ciclo de peso negativo, que reduce el costo de la ruta cada vez que la recorre, y una oportunidad de arbitraje, que genera ganancias cada vez que la recorre. La idea clave es transformar un problema de encontrar un producto mayor que 1 en encontrar una suma menor que 0, aplicando -log a los pesos de los bordes.
Pruébalo
Ejecutemos este algoritmo en nuestros tipos de cambio para ver si identifica correctamente la oportunidad de arbitraje. Transformando los tipos de cambio por -log, obtenemos:
Sumando los intercambios, nuestra igualdad se mantiene : ¡encontramos un ciclo de peso negativo!
Podemos deshacer la operación logarítmica para restaurar el producto, y calcular la devolución:
Que es exactamente el 4% de retorno que calculamos anteriormente.
En el mundo real
Dado que una oportunidad de arbitraje corresponde a un ciclo de peso negativo, parece que podríamos atravesar el ciclo para siempre para ganar dinero infinito. Por supuesto, ese no es el caso. La liquidez (el volumen disponible antes de que el precio cambie significativamente) disponible para cualquier oportunidad de arbitraje es limitada y los comerciantes algorítmicos la aprovechan rápidamente y traspasan los límites de la tecnología informática y las leyes de la física para vencerse entre sí. Dicho esto, espero que hayas encontrado este ejercicio sobre la aplicación de la teoría de grafos y un conocido algoritmo de ruta más corta para resolver un problema en el dominio de las finanzas, y ganar dinero, tan interesante como siempre.