Matching Engines o Cómo Se Casan las Órdenes

Dedicado a Álvaro Martínez, por incitar a la investigación en el trading

Si bien cuando uno se aproxima al trading se encuentra con multitud de libros y artículos que tratan temas tan dispares como las reglas de entrada, la gestión monetaria o los tipos de órdenes, lo cierto es que apenas se encuentra información sobre un aspecto tan esencial del trading como son los matching engines o algoritmos de casación. En este artículo os explicamos qué son, cuál es su origen y cómo funcionan con varias aplicaciones prácticas para el Chicago Mercantile Exchange.

¿Qué es un Matching Engine?

Un Matching Engine o sistema de casación de órdenes es un sistema electrónico que casa las órdenes de compra y de venta de un mercado, ya sea de acciones, materias primas o de cualquier otro tipo de mercado. Se trata por tanto del núcleo vital de funcionamiento de cualquier mercado electrónico por cuanto permite la correcta ejecución de las órdenes de los diferentes participantes del mercado.

Esto, que a priori puede parecer casi trivial, no lo es tanto si tenemos en cuenta que existen diferentes algoritmos de casación de órdenes que se utilizan en diferentes productos y mercados, lo que a su vez define la microestructura y comportamiento de un mercado y de los operadores profesionales que en él participan. Y es que la mayoría de los traders solo se preocupa de que su orden se haya ejecutado, pero no de cómo se ha hecho dicha ejecución.

¿Cómo Aparecen los Matching Engines?

La aparición de los primeros sistemas electrónicos de casación de órdenes no se puede entender sin remontarnos a la época en la que se negociaba en los pits en Chicago. Allí la operativa tenía lugar a voces, con gestos manuales y multitud de boletas de papel tiradas por el suelo. Sin embargo, el paso de este paradigma de negociación tan primitivo a uno más sofisticado basado en redes y ordenadores, exigía establecer un conjunto de reglas que dejara claro cómo se debía proceder para realizar la casación de órdenes en este nuevo entorno digital.

Este cambio se introduce por primera vez a comienzos de la década de los ochenta en Estados Unidos, inicialmente con la idea de complementar la negociación a viva voz. Así, tenemos el caso de la Mid West Stock Exchange (que posteriormente se llamaría Chicago Stock Exchange y actualmente forma parte de NYSE con el nombre de NYSE Chicago) en la que se lanzó el sistema MAX, convirtiéndose en una de las primeras Bolsas en ofrecer una ejecución de órdenes totalmente automatizada en 1982. Pero no será hasta diez años más tarde cuando se produzca una auténtica revolución en los sistemas electrónicos de negociación con la introducción del sistema Globex en el Chicago Mercantile Exchange (CME), el cual introducía varios motores de casación.

¿Cómo Funciona el Matching Engine del CME?

Aunque seguramente muchos se pensaban que lo de compra y vender en el mercado es tan fácil como poner en contacto las órdenes según el momento en el que han sido introducidas, lo cierto es que el Matching Engine del CME es algo más complejo que eso, por cuanto utiliza 7 algoritmos diferentes para casar las órdenes electrónicas, tanto aquellas residentes en el libro de órdenes, como las órdenes denominadas “agresoras”, esto es, órdenes que están dispuestas a asumir el spread u horquilla para ejecutarse de forma inmediata a cambio de arriesgarse a padecer un deslizamiento (slippage) mayor que si la orden fuera limitada (en cuyo caso el slippage sería nulo).

La idea general que debemos tener en mente es que, cuando se realiza la negociación en los mercados electrónicos, no todas las órdenes se tratan igual en todos los casos: a veces, se da prioridad a las órdenes que aparecen en la parte superior del libro, a veces se aplica el criterio First In, First Out (FIFO) e incluso en ocasiones es el volumen disponible en cada precio el que determina el cruce de una orden.

En particular, dentro del CME tenemos los siguientes algoritmos de casación:

  1. FIFO (First In First Out)
  2. Pro Rata
  3. FIFO with Lead Market Maker (LMM)
  4. Split FIFO and Pro Rata
  5. Threshold Pro Rata
  6. Threshold Pro Rata with LMM
  7. Allocation

Pasamos a ver a continuación cada uno de estos algoritmos en detalle, si bien por si queréis profundizar podéis encontrar más información en el Wiki del CME.

1. FIFO (First In, First Out)

El algoritmo FIFO es el mecanismo más simple e intuitivamente claro de asignación de operaciones, por cuanto son el precio y el tiempo los únicos criterios utilizados para emparejar las órdenes.
La lógica es muy sencilla: una orden limitada, que se publica en el libro de órdenes antes que las demás, tiene la máxima prioridad frente a las demás órdenes agresoras, que se encuentran en el mismo nivel. Por defecto, FIFO es el algoritmo de emparejamiento usado por el CME si no se indica que se use otro mecanismo. Así, la mayoría de contratos sobre productos energéticos, renta variable y metales, así como las variantes regular y Ultra de los diferentes bonos usan FIFO.

Veamos un ejemplo: supongamos que en el sistema se ha introducido una orden limitada de compra de 100 contratos a 2.041,25, y que en el libro de órdenes a ese precio ya se ofrecen 150 contratos a la venta.

Ejemplo FIFO - mini SP

Aplicando FIFO, las órdenes se ejecutan de acuerdo con el principio de la prioridad del momento de su entrada en el sistema. Como podemos ver en la imagen anterior, la orden con el identificador ABC «llegó primero» y, en consecuencia, se ejecutará también la primera. Después se ejecutará la orden XYZ. Además, las órdenes ABC y XYZ serán «absorbidas» en su totalidad. Por su parte, la orden limitada de KLM se ejecutará parcialmente en la cantidad de 25 contratos, que serán casados con los 25 contratos restantes de la orden limitada de compra, quedando 5 contratos de KLM en el libro de órdenes.

Como podemos ver, el mecanismo FIFO es realmente sencillo, si bien conviene tener en cuenta lo siguiente: cualquier cambio en el tamaño o precio de una orden limitada, le hace perder su prioridad en el libro, pasando al final de la cola.

2. Pro Rata

El algoritmo Pro Rata directo empareja la orden agresora entrante con las órdenes residentes en el libro, pero repartiendo los contratos en función de los tamaños de dichas órdenes pasivas. De este modo, en este sistema las órdenes con mayor prioridad serán aquellas cuyo porcentaje sea mayor a un nivel de precios determinado. Es decir, se divide el volumen de cada orden residente por el volumen total agregado a un determinado precio.

En caso de que el valor de participación resultante tuviera decimales, el valor obtenido se redondea a la baja al contrato entero más cercano. Y si el tamaño asignado es inferior a 2, entonces la asignación se redondea a cero. Por último, se aplica el algoritmo FIFO a los restos de las órdenes que surjan como resultado del redondeo de los tamaños asignados.

El algoritmo Pro Rata se utiliza generalmente en spreads de futuros sobre divisas (Euro FX, Japanese Yen, Australian Dollar, etc.). Veamos un ejemplo de cómo funciona en la práctica: imaginemos el caso de un Calendar Spread sobre Australian Dollar, cuyo libro de órdenes presenta el siguiente aspecto:

Pro Rata - Australian Dollar Calendar

Se introduce en el sistema una orden de compra a mercado de 100 contratos. ¿Qué sucederá con los 255 contratos que se encuentran a la venta en la primera posición? Para averiguarlo, debemos hallar la participación de las órdenes que componen la oferta al precio de 28.
Tenemos que:

  • Trader ABC: 100/255 = 0,3922 = 39,22%
  • Trader LKZ: 5/255 = 0,0196 = 1,96%
  • Trader MOV: 150/255 = 0,5882 = 58,82%

Aplicando estos porcentajes a los 100 contratos y redondeando a la baja tenemos que:

  • El trader ABC cruzará 39,22% s/ 100 ˜ 39 contratos
  • El trader LKZ cruzará 1,96% s/ 100 ˜ 1 contrato -> Ojo, en la práctica no cruza ninguno por estar su asignación por debajo de 2, que es el mínimo.
  • El trader MOV cruzará 58,82% s/ 100 ˜ 58 contratos.

De este modo, se asignan mediante Pro Rata la ejecución de 97 contratos. Los 3 contratos restantes son asignados de acuerdo al algoritmo FIFO al trader ABC por ser el primero en la cola por antigüedad.

3. FIFO con Lead Market Maker (LMM)

Dado que no todos los productos negociados en el CME son tan líquidos como por ejemplo el e-Mini S&P500 o el Eurodollar, mediante el algoritmo FIFO with Lead Market Maker (LMM) se intenta atraer a los creadores de mercado ofreciéndoles incentivos por proporcionar liquidez. Uno de los incentivos más comunes en este caso es dar preferencia en la cola de órdenes, de tal forma que los creadores de mercado y el CME acuerdan un determinado porcentaje de asignación de las órdenes entrantes.

Tomemos como ejemplo el mercado de futuros de Butterflies sobre Eurodollar Butterfly, en el que se utiliza el algoritmo FIFO con LMM. El libro de órdenes presenta el siguiente aspecto:

Ejemplo FIFO LMM - Eurodollar Butterfly

Imaginemos que entra en el sistema una orden de compra limitada de 30 contratos a 1,25, nivel al cual el total de órdenes suma 50 contratos.

Dicha suma es el resultado de la orden del trader ABC, que entró primero en el sistema con 30 contratos, y el trader LKZ, que actúa como Market Maker con una orden LMM de 20 contratos y asignación del 40%.

Aplicando la condición del Market Maker, al ejecutarse la orden el 40% de los 30 contratos de la orden entrante (esto es, 12 contratos) se cruzarán con el trader LKZ (tiene mayor prioridad por ser LMM). Los 18 contratos restantes se asignan aplicando el algoritmo FIFO, asignándose al trader ABC.

4. Split FIFO and Pro Rata

Como su nombre indica, el algoritmo Split FIFO & Pro Rata es una estructura híbrida que combina los algoritmos FIFO y Pro Rata, de tal forma que un porcentaje de cada orden se asigna mediante FIFO, y el resto según el algoritmo Pro Rata. Adicionalmente, en caso de que quedara parte del volumen de la orden entrante sin asignar en el algoritmo Pro Rata, dicho remanente se distribuye entre las órdenes limitadas que queden, asignando un contrato a cada una de ellas (este es el denominado Leveling). La prioridad de la asignación de este resto se determina en base al tamaño de la orden y su antigüedad en el libro de órdenes. Si aun así quedara algún resto sin ejecutar, entonces se aplica el algoritmo FIFO.

Este algoritmo es el habitual en contratos sobre productos agrícolas como el maíz o la soja. Veamos a continuación un ejemplo de su funcionamiento en el contrato de futuros sobre maíz. El libro de órdenes presenta el siguiente aspecto:

Ejemplo Split - Corn Futures

Supongamos que entra una orden de compra limitada a 411’4 y se aplica el método híbrido Split FIFO & Pro Rata, ejecutándose el 40% del volumen entrante mediante FIFO y el 60% restante utilizando el algoritmo Pro Rata.

En la primera etapa, el FIFO se aplica al 40% del tamaño de la orden entrante, obteniendo 40% s/ 7 = 2,8 ˜ 3. Esta parte de la orden se asigna a la primera orden limitada del libro correspondiente al trader ABC, quedando disponibles para la venta 97 contratos de este trader.

En la segunda etapa, el 60% restante de la orden agresiva, es decir, 4 contratos, se ejecutará según el algoritmo Pro Rata. Las órdenes en el libro de órdenes se ejecutan de acuerdo con su tamaño y el momento en que fueron colocadas en el libro de órdenes. Los porcentajes de asignación son los siguientes:

  • Trader ABC: 97/297 = 32,66%
  • Trader XYZ: 30/297 = 10,10%
  • Trader KLM: 80/297 = 26,94%
  • Trader ZZZ: 30/297 = 10,10%
  • Trader OPP: 60/297 = 20,20%

Aplicando estos porcentajes asignamos los 4 contratos restantes, redondeando el resultado a la baja:

  • Trader ABC: 32,66% de 4 ≈ 1
  • Trader XYZ: 10,10% de 4 ≈ 0
  • Trader KLM: 26,94% de 4 ≈ 1
  • Trader ZZZ: 10,10% de 4 ≈ 0
  • Trader OPP: 20,20% de 4 ≈ 0

En el caso del maíz, al menos debe asignarse un contrato, por lo que se cruza uno con el trader ABC y otro con KLM:

Ejemplo Split - Corn Futures 2

Finalmente, los 2 contratos restantes que quedan por ejecutar tras la acción del algoritmo Pro Rata, son asignados mediante Leveling. En este fase no participan las órdenes de los traders que participaron en la asignación según el algoritmo Pro Rata (ABC y KLM). Dado que la orden OPP es la más grande, recibe un contrato. Por último, las órdenes de XYZ y ZZZ son del mismo tamaño, pero XYZ se colocó antes en el libro de órdenes, por lo que se le asigna el último contrato restante:

Ejemplo Split - Corn Futures - Leveling

5. Threshold Pro Rata

El algoritmo Threshold Pro Rata es un algoritmo Pro Rata modificado en el que se da prioridad a la orden limitada que se colocó primero en el mejor nivel de precios. A esta orden es lo que en la terminología del CME se denomina Top Order.

Una vez que el algoritmo ha identificado una Top Order, las órdenes entrantes en el mercado son asignadas primero a esta Top Order, ejecutando el tamaño máximo previsto para cada instrumento negociado.

Asimismo, este algoritmo establece el siguiente requisito: para recibir una asignación en el ciclo de prorrateo, el tamaño de la orden limitada debe superar al menos un determinado umbral mínimo («threshold»).

El algoritmo Threshold Pro Rata se utiliza sobre todo en el mercado de opciones sobre productos agrícolas (maíz, soja, trigo, etc.)

Veamos un ejemplo de la aplicación del algoritmo en un contrato de opciones sobre el maíz. El libro de órdenes inicial de nuestro ejemplo es el siguiente:

Ejemplo Threshold - Corn Options

Supongamos que entran al mercado tres órdenes de venta limitadas: 150 contratos (trader MZO), 8 contratos (trader OKK) y 160 contratos (trader LMM, todas a un precio de 144’5. La primera orden entrante será identificada por el algoritmo como una Top Order y, en consecuencia, recibirá la mayor prioridad.

Los parámetros clave para la asignación de órdenes son los siguientes:

  • A la Top Order se le asigna el 100% de los contratos, siempre que su tamaño sea de al menos 10 contratos (si el tamaño de la orden superior está por debajo del valor umbral, el algoritmo no la asignará) y no más de 100 contratos (si el tamaño de la Top Order supera los 100 contratos, entonces la orden será asignada parcialmente en la cantidad del valor máximo establecido en el algoritmo).
  • Asimismo, se prevé una asignación mínima de 1.
  • Supongamos ahora que entra en el mercado una orden limitada de compra de 200 contratos a 144’5. En ese caso:
  • La orden de MZO recibirá una asignación de 100 contratos, por ser este el máximo previsto por el algoritmo para este instrumento.
  • Posteriormente, en el ciclo de Pro Rata, el tamaño de cada una de las órdenes limitadas se divide por el tamaño total de todas las órdenes que están en el mejor nivel de precios que estamos considerando para encontrar los coeficientes Pro Rata. Es decir:

    Trader MZO: 50/218 = 22,94%
    Trader OKK: 8/218 = 3,67%
    Trader LEM: 160/218 = 73,39%

    Después, los coeficientes obtenidos se multiplican por el tamaño total de todas las solicitudes, redondeándose los resultados. El resto del volumen de la orden entrante por importe de 100 contratos se distribuye entre las órdenes limitadas según el algoritmo Pro Rata. Como resultado, la orden de LEM recibe 73 contratos, MZO 22 contratos y OKK 3 contratos.
Ejemplo Threshold - Corn Options-2
  • Quedan ahora 2 contratos sin asignar. En esta fase entra en juego el algoritmo FIFO. Dado que la orden MZO fue colocada en primer lugar, se le asignará el saldo restante.


6. Threshold Pro Rata con LMM

Se trata de una variante del anterior algoritmo en la que, en lugar de asignar el 100% a la Top Order hasta alcanzar la asignación máxima, se limita este valor hasta el 25% dejando así margen para los LMMs que participan en el mercado. Este algoritmo se utiliza principalmente en opciones sobre tipos de interés (ie, opciones sobre Eurodollar).

7. Allocation

El algoritmo de Allocation es utilizado en los mercados de futuros sobre tipos de interés como el Eurodollar. En este algoritmo, la primera asignación se cruza contra la Top Order, seguida de una asignación basada en Pro Rata y, por último, una asignación FIFO para cualquier cantidad residual.

En el siguiente ejemplo podéis ver un ejemplo de Allocation en el futuro sobre Eurodollar, donde la asignación máxima de la Top Order es del 100% hasta un máximo de 49.999 contratos. Si suponemos que tenemos 140 contratos a la venta en 97,65 distribuidos de la siguiente forma:

  • Trader ABC: 30 contratos
  • Trader XYZ: 20 contratos
  • Trader KLM: 15 contratos
  • Trader ZZZ: 40 contratos
  • Trader OPP: 35 contratos
Ejemplo Allocation - ED - 1

Y entra en el mercado una orden de compra limitada de 125 contratos a 97,65, la ejecución de la misma aplicando el algoritmo Allocation tendrá lugar del siguiente modo: la Top Order de 30 contratos se ejecutará en su totalidad. Tras la Top Order, en el nivel de precios de casación quedan 4 órdenes por 110 contratos a los que se asignan los 95 contratos restantes de forma prorrateada. Quedan 2 contratos por igualar después del prorrateo debido al redondeo que se asignan sobre una base FIFO.

Ejemplo Allocation - ED - 2

¿FIFO o Pro Rata? ¿Cuál es Mejor?

Seguramente el lector al leer este artículo se habrá quedado con la duda de cuál de las dos grandes familias de algoritmos (FIFO o Pro Rata) es más justa de cara a la formación de precios en el mercado. Lo cierto es que no hay una respuesta definitiva a este respecto, por cuanto cada uno de ellos tiene sus ventajas y desventajas:

  • Si bien a priori cabe pensar que FIFO es lo más justo y razonable, lo cierto es que en mercados con baja volatilidad este algoritmo de casación de órdenes provocará que las órdenes de mayor tamaño y antigüedad en la parte superior del libro bloquearán a las órdenes que hayan entrado posteriormente (de hecho, este es precisamente el motivo por el cual nació el algoritmo Pro Rata).
  • Sin embargo, en la modalidad Pro Rata existen incentivos a que algunos operadores comiencen a «sobreofertar» en el mercado para obtener mejores ejecuciones. En este sentido, si os interesa profundizar en los fallos y desventajas del algoritmo Pro Rata os recomiendo el estudio realizado por Janecek y Kabrhel (2007) titulado Matching Algorithms of International Exchanges y el paper publicado por la Reserva Federal de Chicago en 2014, Recommendations for Equitable Allocation of Trades in High Frequency Trading Environments.

Conclusión

En este artículo hemos revisado en detalle el funcionamiento de varios algoritmos de casación de órdenes o Matching Engines que son utilizados en diferentes productos negociados en el Chicago Mercantile Exchange. Con este análisis, espero que a partir de ahora, cada vez que Vd. cruza una orden en el mercado entienda a la perfección la complejidad del proceso que existe detrás, así como el motivo por el cual su orden recibe un precio u otro de ejecución.


Saludos,
X-Trader

COMPARTIR EN: