FIX y mercado

El protocolo Financial Information eXchange es una secuencia de claves, continuada con un valor, que los mercados y sus participantes saben interpretar para llevar adelante la operatoria.
Tiempo de lectura: 6 minutos
Tabla de contenidos

El protocolo FIX (Financial Information eXchange) es (valga la redundancia) un protocolo de comunicación electrónica iniciado en 1992 para el intercambio de información financiera. Este protocolo es implementado, entre otros tipos de entidades financieras, por una gran cantidad de mercados del mundo. 

Entre estos mercados se encuentran 3 mercados argentinos @matba_rofex, @BYMAOficial y @MAE_ARG, ya que implementan este protocolo como principal vía de interacción con sus plataformas de negociación (matching engines). 

Desde TradeSpark, resolvimos la conectividad de nuestra plataforma de trading algorítmico ArQuants con estos 3 mercados, y actualmente estamos llevando adelante los desarrollos para conectarnos a Interactive Brokers y con los mercados de la región que componen el MILA, comenzando por los mercados de Colombia, Set-Icap y BVC. 

Todo ellos implementan el protocolo FIX, y justamente uno de los principales desafíos que tuvimos que resolver es la de poder establecer conexiones vía FIX con las plazas de negociación.

En este artículo vamos a ver específicamente qué aspecto tiene un mensaje FIX, y como una acción de mercado como puede ser el envío de una orden de compra o venta se traduce en un mensaje FIX para enviarse al mercado.

El elegido por los mercados 

FIX es el protocolo utilizado por las plataformas de negociación de los mercados para facilitar la operatoria en tiempo real, lo que implica tanto, el ruteo de órdenes (order routing) como la divulgación de precios (market data). En los mercados del mundo es un estándar y existe una comunidad que se encarga de mantenerlo y extenderlo, ampliando sus capacidades. (Fix Trading Comunnity – https://www.fixtrading.org/

En un mercado que implementa el protocolo FIX, cada orden enviada, arriba a las plataformas de negociación cómo un mensaje FIX. Al ser recibida se genera una respuesta por parte del mercado y eventualmente una nueva conformación de precios (market data) que es divulgada también como un mensaje FIX.

 Pero, ¿qué es un mensaje FIX? 

Es una secuencia de claves (tags), cada una seguida de un valor, que tanto un mercado como sus participantes saben interpretar para llevar adelante la operatoria. 

Veamos un ejemplo paso a paso (o tag a tag) de cómo una orden enviada al mercado es expresada como un mensaje FIX. 

Para enviar una orden al mercado se debe construir un mensaje FIX del tipo NewOrder. 

Se especifica indicando en el tag MessageType (35) el valor D (NewOrder)

Para indicar si es compra o venta, se usa el tag Side (54). 1 indica compra y 2 venta. 

Mensaje: 35=D|54=1 

Para indicar la especie que se está operando es necesario asignar un valor al tag Symbol (55). Por ejemplo AY24 También debe indicarse la moneda de negociación mediante el tag 

Currency (15). En este caso ARS.

Mensaje: 35=D|54=1|55=AY24|15=ARS 

Para indicar el plazo en el que se va a realizar la operación se debe completar el tag SettlType (63). 1 es contado inmediato, 2 es 24hs y 3 es 48hs. Para el ejemplo usaremos 48hs.

Mensaje: 35=D|54=1|55=AY24|15=ARS|63=3

También debe indicarse el tipo de orden en el tag OrdType (40), si bien el protocolo FIX especifica varios, los más conocidos son Market (1) y Limit (2). Para el ejemplo usaremos una orden Limit. 

Mensaje: 35=D|54=1|55=AY24|15=ARS|63=3|40=2

Al ser una orden Limit, se indica el precio límite a operar en el tag Price (44). También se indica el tamaño de la orden en el tag Size (38) 

Mensaje: 35=D|54=1|55=AY24|15=ARS|63=3|40=2|44=2900|38=100 

Además debe indicarse el tipo de activo que se está operando mediante el tag SecurityType (167). En este ejemplo AY24 es un bono porque lo que corresponde enviar el valor GO (General Obligations). Si estuviésemos enviando una orden para una acción, el valor sería CS (Common Stock)

Mensaje: 35=D|54=1|55=AY24|15=ARS|63=3|40=2|44=2900|38=100|167=GO 

Se indica el tiempo de vida de la orden mediante el tag TimeInForce (59). Existen alternativas como indicar una fecha y hora de vencimiento (Good Till Date o GTD valor 6), o que sea válida hasta que se indique que se cancele (Good Till Cancel o GTC valor 1), entre otras. 

Para el ejemplo indicaremos que sea válida hasta el final del día (DAY valor 0). Al alcanzarse el tiempo de vencimiento de la orden, si corresponde, será dada de baja por el mercado automáticamente. 

Mensaje: 35=D|54=1|55=AY24|15=ARS|63=3|40=2|44=2900|38=100|167=GO|59=0 

El tag Account (1) permite definir la cuenta de mercado que se utilizará para la operación. Para el ejemplo usemos la 1234

Mensaje: 35=D|54=1|55=AY24|15=ARS|63=3|40=2|44=2900|38=100|167=GO|59=0|1=1234 

Finalmente así luce una orden Limit DAY de compra de 100 AY24 en pesos a $2900 en 48hs para la cuenta 1234 cuando es recibida por el mercado como un mensaje FIX. Al mensaje se le agregan algunos tags más (información de la sesión mantenida con el mercado) como el número de secuencia del mensaje (34), Quien es quien envía (49), quien es el receptor (56), el horario de envío (52), etc.

 8=FIXT.1.1|9=229|35=D|34=6389|49=client|52=20200218-19:45:57.843|56=server|1=1234|11=Sqeidnab2v|15=ARS|38=100|40=2|44=2900|54=1|55=AY24|59=0|60=20200218-19:45:57.773|63=3|167=GO|10=153 

Que tiene que ver ese mensaje con la orden que envió a través de la terminal que uso diariamente? 

Todo, ya que la misma se termina enviando al mercado como un mensaje FIX con estas características. Es el software el que se encarga de crear este mensaje valiéndose de alguna biblioteca FIX. 

En otro artículo podremos analizar la modificación y cancelación de una orden, reportes de ejecuciones de órdenes enviados por el mercado y divulgación de información de precios.

Una de las principales cuestiones que tuvimos que resolver es la de poder conectarnos vía protocolo FIX con los mercados.

Si bien FIX es un estándar, cada mercado hace su propia implementación intentando siempre mantenerse lo más apegado posible al estándar, pero también satisfaciendo sus propias necesidades de negocio.

Para mayor información de cómo enviar y recibir diferentes tipos de mensajes FIX a los mercados, pueden acceder a las ROE’s (Rules of Engagement) FIX de @matba_rofex y @BYMAOficial 

¡Hasta acá llegamos! La próxima será sobre otros tipos de mensajes FIX, QuickFix (una librería de software para el desarrollo de aplicaciones que implementan protocolo FIX), y otros temas relacionados. Espero que les resulte útil!

<strong>Por</strong> Juan Bais
Por Juan Bais

Ingeniero de sistemas de la Universidad de Buenos Aires y Co founder de TradeSpark.

Inscríbite para estar al día con la serie de automatización de una mesa de operaciones

Datos
Comparte esta noticia
Facebook
Twitter
LinkedIn
WhatsApp
Haz parte de esta comunidad

Recuerda que la tecnología no para de avanzar, si te interesa estar actualizado en materia de mercados financieros, algoritmos y más no olvides seguirnos y hacer parte de nuestra comunidad.

Otros Artículos

Suscríbete a nuestro Newsletter
No te pierdas las últimas noticias del mercado.

Algorithmic Process Automation (APA)

Esta es una “caja” de estrategias para el operador o trader, que le permite llevar adelante la optimización y minimización de errores, en la ejecución de tareas repetitivas dentro de una mesa de operaciones. Mejora de este modo la productividad y eficiencia del equipo de trabajo en el accionar diario.

Estrategias

Realice operaciones de canje entre dólar mep y cable mediante la operatoria de bonos o acciones. Para utilizar esta estrategia, debes configurar la cantidad de dólar cable a operar, el tipo de operación (compra o venta), el precio al que se desea realizar, y los títulos que se emplearán para realizar la operación.

Tiene como objetivo realizar una compra de un activo promediando un valor por debajo del máximo configurado. Está pensada para optimizar el flujo de una operación, consiguiendo el precio deseado sin la necesidad de la intervención de un operador. Se puede configurar el monto total a operar, el precio límite y por último el tamaño máximo de las órdenes.

Tiene como objetivo colocar un monto en una moneda determinada a tasa entre plazos. Pensado para poder optimizar el curso de operaciones de colocación a tasa a través de un algoritmo y no requiriendo una intervención activa de un operador.

Realizá operaciones de compra o venta de dólares mediante la operatoria de bonos o acciones. Para utilizar esta estrategia, debes configurar la cantidad de dólares a operar, el tipo de operación (compra o venta), el precio al que se desea realizar, y los títulos que se emplearán para realizar la operación.

Dada una posición tomada en un valor negociable, la desarmar y la rearma en otro valor negociable, respetando un ratio de precios configurado entre ambos.

Price Improvement Iceberg (PII). Esta estrategia busca estar siempre primera en el book de órdenes con el objetivo de discretizar una orden de compra o venta. Permite configurar precio límite, monto total a operar, límite de monto por orden y cuenta con un mecanismo para ocultarle al mercado su accionar, modificando las órdenes que va enviando en su tamaño.

Tiene como objetivo tomar un monto en una moneda determinada a tasa entre plazos. Pensado para poder optimizar el curso de operaciones de tomar tasa a través de un algoritmo y no requiriendo una intervención activa de un operador.

Tiene como objetivo realizar una venta de un activo promediando un valor por debajo del máximo configurado. Está pensada para optimizar el flujo de una operación, consiguiendo el precio deseado sin la necesidad de la intervención de un operador. Se puede configurar el monto total a operar, el precio límite y por último el tamaño máximo de las órdenes.

Pensada para simplificar la gestión pasiva de liquidez de una gran cantidad de cuentas comitentes, esta estrategia permite la automatización en la ejecución de órdenes de cauciones colocadoras en el mercado. A partir de una lista de cuentas y saldos, el algoritmo envía órdenes al mercado siguiendo parámetros de plazo, tasa, agresión y tamaño. El resultado es la ejecución de cientos de órdenes en pocos minutos manteniendo un control global del proceso en cada momento.

Es un algoritmo pensado para simplificar el proceso de colocación de órdenes para tomar liquidez del mercado. A partir de un detalle de saldo requerido por cuenta comitente y la definición del plazo (caución a t dias), el motor administra el envío de órdenes dentro de parámetros definidos de tasas objetivos y agresividad en la colocación. El resultado es la ejecución de cientos de órdenes en pocos minutos manteniendo un control global del proceso en cada momento.