Fix protocol

,

mayo 5, 2023

FIX y el mercado: Optimizando la operatoria financiera

El protocolo FIX (Financial Information eXchange) es un estándar de comunicación electrónica que se inició en 1992 con el propósito de facilitar el intercambio de información financiera en tiempo real.

Este protocolo ha sido adoptado por numerosos mercados financieros en todo el mundo como Interactive Brokers y Stonex, incluyendo tres mercados argentinos: Matba-Rofex, ByMAy MAE. Estos mercados utilizan el protocolo FIX como la principal vía de interacción con sus plataformas de negociación, conocidas como “matching engines”.

En TradeSpark, nos hemos dedicado a resolver la conectividad de nuestra plataforma de trading algorítmico, ArQuants, con estos tres mercados argentinos. Actualmente, contamos con conexiones con Interactive Brokers y Stonex para operar internacionalmente, además continuamos desarrollando tecnología para estar conectados con otros mercados como los mercados de Colombia (Set-Icap y BVC). Todos estos mercados implementan el protocolo FIX, y uno de nuestros principales desafíos ha sido establecer conexiones vía FIX con estas plazas de negociación.

En este artículo, nos enfocaremos en explorar cómo se estructura un mensaje FIX y cómo una acción de mercado, como el envío de una orden de compra o venta, se traduce en un mensaje FIX que se envía al mercado.

El elegido por los mercados: La importancia de FIX en las plataformas de negociación

FIX se ha convertido en el protocolo preferido por las plataformas de negociación de los mercados financieros, ya que facilita tanto el ruteo de órdenes (order routing) como la divulgación de precios (market data) en tiempo real. Este protocolo ha sido ampliamente adoptado a nivel global y cuenta con una comunidad dedicada a mantener y expandir sus capacidades, conocida como Fix Trading Community.

En un mercado que implementa el protocolo FIX, cada orden enviada se convierte en un mensaje FIX al llegar a las plataformas de negociación. Estas plataformas generan una respuesta y, en ocasiones, actualizan la información de precios (market data), la cual también se divulga como un mensaje FIX.

Pero, ¿qué es exactamente un mensaje FIX?

Un mensaje FIX es una secuencia de claves (tags), cada una seguida de un valor, que tanto el mercado como sus participantes comprenden y utilizan para llevar a cabo la operatoria financiera.

Veamos un ejemplo paso a paso de cómo una orden enviada al mercado se expresa como un mensaje FIX:

  1. Se construye un mensaje FIX del tipo “NewOrder”, indicando el valor “D” (NewOrder) en el tag “MessageType (35)”.

Mensaje: 35=D|54=1

  1. Se utiliza el tag “Side (54)” para indicar si la orden es de compra (1) o venta (2).

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

  1. Se asigna un valor al tag “Symbol (55)” para indicar la especie que se está operando, como “AL30”. Además, se debe indicar la moneda de negociación mediante el tag “Currency (15)”, en este caso, ARS.

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

  1. Se completa el tag “SettlType (63)” para indicar el plazo en el que se realizará la operación. Por ejemplo, se utiliza el valor 3 para indicar un plazo de 48 horas.

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

  1. En el tag “OrdType (40)” se especifica el tipo de orden, como “Market” (1) o “Limit” (2). En este caso, se utiliza una orden de tipo “Limit”.

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

  1. Para una orden de tipo “Limit”, se indica el precio límite de operación en el tag “Price (44)”. También se especifica el tamaño de la orden en el tag “Size (38)”.

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

  1. El tag “SecurityType (167)” se utiliza para indicar el tipo de activo que se está operando. Por ejemplo, en el caso de Al30 (un bono), se utiliza el valor “GO” (General Obligations). Para una orden de una acción, se utilizaría el valor “CS” (Common Stock).

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

  1. El tag “TimeInForce (59)” permite especificar el tiempo de vigencia de la orden. Por ejemplo, el valor “0” indica que la orden es válida hasta el final del día (“DAY”).

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

  1. El tag “Account (1)” se utiliza para definir la cuenta de mercado que se utilizará para la operación. En este ejemplo, se utiliza la cuenta “1234”.

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

Finalmente, una orden de compra limitada de 100 Al30 en pesos a $9077 con un plazo de 48 horas y para la cuenta 1234 se envía al mercado como un mensaje FIX. Este mensaje se enriquece con información adicional, como el número de secuencia del mensaje, quién envía y recibe el mensaje, el horario de envío, entre otros.

Ejemplo de mensaje FIX completo:

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=9077|54=1|55=AL30|59=0|60=20200218-19:45:57.773|63=3|167=GO|10=153

Este mensaje FIX representa la orden enviada a través de la terminal que se utiliza en la operatoria diaria. Es el software el encargado de crear este mensaje utilizando una biblioteca FIX.

En futuros artículos, exploraremos otros aspectos del protocolo FIX, como la modificación y cancelación de órdenes, los informes de ejecución de órdenes enviados por el mercado y la divulgación de información de precios.

Uno de los principales desafíos que enfrentamos fue establecer la conectividad a través del protocolo FIX con los mercados. Aunque FIX es un estándar, cada mercado realiza su propia implementación, tratando de mantenerse lo más cerca posible del estándar pero también satisfaciendo sus necesidades comerciales específicas.

¡Hasta aquí hemos llegado! En el próximo artículo, te seguiremos contando todo lo relacionado con este apasionante mundo del trading algorítmico y cómo se integra con los entes del mercado.

Si te interesa saber más sobre como automatizar tu mesa de operaciones

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

Datos
Share
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.

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.