Intercambio de información financiera

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Protocolo electrónico de comunicaciones

El protocolo Intercambio de Información Financiera (FIX) es un protocolo de comunicaciones electrónicas iniciado en 1992 para el intercambio internacional en tiempo real de información relacionada con transacciones y mercados de valores. Con billones de dólares negociados anualmente sólo en el NASDAQ, las entidades de servicios financieros están empleando el acceso directo al mercado (DMA) para aumentar su velocidad de acceso a los mercados financieros. Gestionar la entrega de aplicaciones comerciales y mantener una latencia baja requiere cada vez más una comprensión del protocolo FIX.

Historia

La especificación del protocolo FIX fue escrita originalmente en 1992 por Robert "Bob" Lamoureux y Chris Morstatt para permitir la comunicación electrónica de datos de negociación de acciones entre Fidelity Investments y Salomon Brothers. Inicialmente, FIX se ocupaba de la información entre los corredores de bolsa y sus clientes institucionales. En su momento, esta información se comunicó verbalmente por teléfono. Fidelity se dio cuenta de que la información de sus corredores de bolsa podía enviarse al operador equivocado o simplemente perderse cuando las partes colgaban sus teléfonos. Quería que dichas comunicaciones fueran reemplazadas por datos legibles por máquinas que luego pudieran compartirse entre los comerciantes, analizarse, actuar sobre ellos y almacenarse. Por ejemplo, los corredores de bolsa llaman con una indicación de interés (IOI) para comprar o vender un bloque de acciones. La iniciativa FIX creó nuevos mensajes como el IOI.

Según FIX Trading Community, FIX se ha convertido en el estándar de mensajería de facto para la comunicación comercial y previa a la negociación en los mercados de valores globales, y se está expandiendo al espacio posterior a la negociación para respaldar el procesamiento directo, así como Continuar expandiéndose a los mercados de divisas, renta fija y derivados.

Comunidad comercial FIX

La FIX Trading Community es un organismo de estándares sin fines de lucro impulsado por la industria con la misión de abordar los problemas comerciales y regulatorios que afectan el comercio de múltiples activos en los mercados financieros globales a través del mayor uso de estándares, incluida la mensajería del Protocolo FIX. lenguaje, brindando eficiencia operativa, mayor transparencia y reducción de costos y riesgos para todos los participantes del mercado.

Usuarios

FIX es ampliamente utilizado tanto por el lado comprador (instituciones) como por el lado vendedor (corredores/agentes) de los mercados financieros. Entre sus usuarios se encuentran fondos mutuos, bancos de inversión, corredores, bolsas de valores y ECN.

FIX se ha convertido en el protocolo electrónico estándar para las comunicaciones previas a la negociación y la ejecución de operaciones. Aunque se utiliza principalmente para transacciones de acciones en el área de front office, también son posibles derivados de bonos y transacciones de divisas. Se podría decir que, mientras que SWIFT es el estándar para la mensajería administrativa, FIX es el estándar para la mensajería administrativa. Sin embargo, hoy en día, la membresía de FIX Protocol Ltd. está ampliando FIX a la asignación de operaciones en bloque y otras fases del proceso de negociación, en todos los mercados, para prácticamente todas las clases de activos.

Especificaciones técnicas

Originalmente, el estándar FIX era monolítico e incluía la semántica de la capa de aplicación, la codificación de mensajes y la capa de sesión en una única especificación técnica. Permaneció monolítico hasta la versión 4.2 de FIX. A partir de entonces, las codificaciones de mensajes y las especificaciones de la capa de sesión comenzaron a dividirse en documentos separados y, en última instancia, FIX evolucionó hasta convertirse en una familia de estándares técnicos relacionados.

Codificaciones de mensajes

La codificación de mensajes, denominada capa de presentación en el modelo de interconexión de sistemas abiertos (modelo OSI), es responsable del formato de cable de los mensajes.

Codificación de valor de etiqueta (FIX clásico)

La codificación del mensaje FIX original se conoce como codificación de valor de etiqueta. Cada campo consta de una etiqueta numérica única y un valor. La etiqueta identifica semánticamente el campo. Por tanto, los mensajes se describen a sí mismos. La codificación de valores de etiquetas se basa en caracteres y utiliza códigos ASCII.

FIJAR formato de mensaje de valor de etiqueta

Un mensaje se compone de un encabezado, un cuerpo y un final. Los campos de mensaje están separados por el carácter de inicio del encabezado (SOH) (ASCII 0x01).

Hasta FIX.4.4, el encabezado contiene tres campos: 8 (BeginString), 9 (BodyLength) y 35 (MsgType ).

Desde FIXT.1.1 / FIX.5.0, el encabezado contiene cinco o seis campos: 8 (BeginString), 9 (BodyLength), 35 (MsgType ), 49 (SenderCompID), 56 (TargetCompID) y el opcional 1128 (ApplVerID).

El contenido del cuerpo del mensaje está definido por el tipo de mensaje (35 MsgType) en el encabezado.

El avance contiene el último campo del mensaje, 10 (Suma de comprobación), siempre expresado como un número de tres dígitos (por ejemplo, 10=002).

Ejemplo de un mensaje FIX, Informe de ejecución (35=8), con el carácter de barra vertical (|) que representa el carácter SOH:

8=FIX.4.2 | 9=178 | 35=8 | 49=PHLX | 56=PERS | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 20=3 | 150=E | 39=E | 55=MSFT | 167=CS | 54=1 | 38=15 | 40=2 | 44=15 | 58=PHLX EQUITY TESTING | 59=0 | 47=C | 32=0 | 31=0 | 151=15 | 14=0 | 6=0 | 10=128 |
Cuerpo

Los mensajes FIX se forman a partir de varios campos; cada campo tiene un par de valores de etiqueta que está separado del siguiente campo por un delimitador SOH (0x01). La etiqueta es un número entero que indica el significado del campo. El valor es una matriz de bytes que tiene un significado específico para la etiqueta particular (por ejemplo, la etiqueta 48 es SecurityID, una cadena que identifica la seguridad; la etiqueta 22 es IDSource, un número entero que indica la clase de identificador que se utiliza). Los valores pueden estar en texto plano o codificados como binario puro (en cuyo caso el valor está precedido por un campo de longitud). El protocolo FIX define significados para la mayoría de las etiquetas, pero deja una variedad de etiquetas reservadas para uso privado entre las partes que consienten.

El protocolo FIX también define conjuntos de campos que forman un mensaje particular; dentro del conjunto de campos, algunos serán obligatorios y otros opcionales. El orden de los campos dentro del mensaje generalmente no es importante; sin embargo, los grupos repetidos están precedidos por un recuento y los campos cifrados están precedidos por su longitud. El mensaje se divide en tres secciones distintas: cabeza, cuerpo y cola. Los campos deben permanecer dentro de la sección correcta y dentro de cada sección, la posición puede ser importante ya que los campos pueden actuar como delimitadores que impiden que un mensaje se transmita al siguiente. El último campo en cualquier mensaje FIX es la etiqueta 10 (suma de verificación).

Hay dos grupos principales de mensajes: administrador y aplicación. Los mensajes de administrador manejan los conceptos básicos de una sesión FIX. Permiten iniciar y finalizar una sesión y recuperar mensajes perdidos. Los mensajes de la aplicación se ocupan del envío y recepción de información relacionada con el comercio, como una solicitud de orden o información sobre el estado actual y la posterior ejecución de esa orden.

Longitud del cuerpo

La longitud del cuerpo es el recuento de caracteres desde la etiqueta 35 (incluida) hasta la etiqueta 10 (excluida), incluidos los delimitadores SOH finales.
El siguiente ejemplo (que se muestra con delimitadores SOH como '|') tiene una longitud de cuerpo de 65:

8=FIX.4.2 vidas9=65 vidas35=A habit49=SERVER sometida56=CLIENT habit34=177 vidas52=20090107-18:15:1698=0 vidas108=30 vidas10=062 vidas
^ 5 + 10 + 7 + 21 + 5 + 7 ^ = 65 
Suma de comprobación

La suma de comprobación de un mensaje FIX es siempre el último campo del mensaje, con la etiqueta 10 y un valor de 3 caracteres. Se obtiene sumando el valor ASCII de todos los caracteres del mensaje (excepto el campo de suma de verificación en sí), luego el módulo 256. Por ejemplo, en el mensaje anterior, la suma de todos los valores ASCII (incluidos los caracteres SOH con valor ASCII 1 ) da como resultado 4158. Al realizar la operación de módulo se obtiene el valor 62. Dado que la suma de comprobación se compone de tres caracteres, esto da como resultado 10=062.

FIXML

FIXML es un esquema XML para mensajes FIX. Es semánticamente equivalente a los mensajes codificados con valor de etiqueta, pero aprovecha la tecnología del analizador XML. FIXML se utiliza comúnmente para aplicaciones administrativas y de compensación en lugar de para operaciones comerciales.

Codificación binaria simple (SBE)

La codificación binaria simple define un formato de cable utilizando tipos de datos primitivos que son nativos de los sistemas informáticos. Por lo tanto, la codificación y decodificación de mensajes tiene una latencia mucho menor que la de los protocolos basados en caracteres, ya que no se necesita traducción para poner los datos en un formato que las computadoras puedan usar. Aparte de las ventajas de la latencia, el rendimiento es más determinista porque los mensajes SBE están limitados por plantillas y se prefieren elementos de datos de longitud fija. Otra consecuencia es que los campos generalmente están en una posición fija, de modo que los filtros de mensajes y los enrutadores no necesitan descifrar un mensaje completo para acceder a los campos clave.

SBE fue desarrollado por el Grupo de Trabajo de Alto Rendimiento FIX para respaldar el comercio de alto rendimiento. Se consideró que la codificación de valor de etiqueta ya no era adecuada para su propósito, ya que se basa en caracteres en lugar de binarios y sus campos y mensajes de longitud variable dan como resultado un rendimiento no determinista.

A diferencia de tagvalue y FIXML, un mensaje SBE no se describe a sí mismo. Solo se envían datos por cable con un encabezado mínimo para identificar la plantilla que controla un mensaje. Los metadatos que describen el diseño de un mensaje se intercambian fuera de banda entre pares.

FIX Trading Community publica un esquema XML para esquemas de mensajes SBE. Un esquema de mensaje puede contener cualquier número de plantillas de mensajes. Una plantilla describe los campos que constituyen un mensaje. Además, un esquema proporciona una lista de tipos de datos simples y compuestos que pueden ser reutilizados por cualquier número de campos.

Desde una perspectiva práctica, asumiendo una implementación C/C++ y ajustando el endianismo: la mayoría de los tipos no compuestos en el mensaje se asignan directamente al mismo tipo en el lenguaje. Por ejemplo, los números enteros de 32 bits se asignan a uint32_t, las cadenas fijas se asignan a const char *, las asignaciones de punto flotante a float, etc. Se puede generar una struct C/C++ a partir de la definición del esquema. Luego, dado un puntero a un búfer de mensajes, acceder a campos no compuestos del mensaje equivale a convertirlo en un puntero a la estructura y acceder a los miembros de la estructura directamente.

/* Estructura generada del esquema */struct Mensaje {} ... uint32_t qty; ... const char *símbolo; ...};vacío consum_message()vacío *incoming_message) {} const struct Mensaje *msg = ()const struct Mensaje*) incoming_message; printf()"C %u de porcentajesn", msg- No.qty, msg- No.símbolo); ...}

Otras codificaciones FIX

FIX Trading Community también ha desarrollado asignaciones estándar entre FIX y otros protocolos de mensajes, que incluyen:

  • Google Protocol Buffers
  • ASN. 1
  • JSON

Protocolos de sesión

La capa de sesión es responsable del intercambio de mensajes, incluidos los mecanismos de recuperación de puntos de control.

Transporte FIX (FIXT)

El protocolo de sesión FIX original no tenía su propio nombre ya que era parte de una especificación monolítica que cubría también la semántica de la capa de aplicación y la codificación de mensajes. Sin embargo, a partir de la versión 5.0 de FIX, la capa de sesión se dividió como una especificación independiente con la introducción de FIXT. FIXT era en gran medida igual a la capa de sesión sin nombre original en la versión 4.x, pero ofrecía una innovación significativa: proporcionaba un mecanismo para mezclar versiones de la capa de aplicación FIX en una versión de sesión común. La versión actual de FIXT es 1.1.

En teoría, FIXT es independiente del transporte. Sin embargo, normalmente se emplea sobre el Protocolo de control de transmisión (TCP).

FIXT es un protocolo punto a punto. Garantiza la entrega de mensajes en ambas direcciones. Los mensajes enviados en cada dirección llevan un número de secuencia de mensaje en el encabezado del mensaje. Si hay una falla de comunicación, un par puede solicitar la retransmisión de los mensajes perdidos. Se admite la entrega de mensajes incluso en caso de desconexión y posterior restablecimiento de una sesión.

Para implementar el establecimiento de sesión y la entrega garantizada, FIXT y FIX 4.x clásico definen estos tipos de mensajes de sesión:

  • Latido cardíaco
  • Solicitud de prueba
  • ResendRequest
  • Rechazo
  • SequenceReset
  • Cerrar sesión
  • Logon
  • XMLnonFIX

Capa de sesión de rendimiento FIX (FIXP)

FIXP fue desarrollado por el Grupo de Trabajo de Alto Rendimiento de FIX para satisfacer las necesidades del comercio de alto rendimiento. La necesidad principal es una codificación y decodificación de mensajes de baja latencia y control sobre las garantías de entrega de mensajes.

Para proporcionar una latencia baja, se admiten codificaciones de mensajes binarios tanto para la capa de sesión como para los mensajes de aplicación. El formato de cable real está resumido en la especificación FIXP, por lo que los usuarios pueden seleccionar una codificación FIX de su elección, siempre que sus pares acuerden el protocolo a utilizar. El desarrollo inicial ha utilizado codificación binaria simple.

FIXP cubre casos de uso punto a punto y multidifusión con primitivas comunes.

Cuando se establece una sesión punto a punto, los pares negocian garantías de entrega entre las siguientes opciones:

  • Recoverable: exactamente una vez entrega del mensaje. Si se detectan lagunas, los mensajes perdidos pueden recuperarse mediante la remisión.
  • Idempotent: entrega casi una vez. Si se detectan lagunas, el remitente es notificado, pero la recuperación está bajo el control de la aplicación, si se hace en absoluto.
  • Sin consecuencias: no garantiza la entrega. Esta opción es adecuada si las garantías son innecesarias o si la recuperación se proporciona en la capa de aplicación o a través de un canal de comunicación diferente.
  • Nota: No se deben enviar mensajes de aplicación en una dirección de una sesión.

Las garantías de entrega pueden ser asimétricas. Por ejemplo, un operador puede ingresar órdenes a través de un flujo idempotente mientras que las ejecuciones se devuelven a través de un flujo recuperable. En mercados de rápido movimiento, el retraso inherente a la retransmisión suele ser indeseable, lo que da lugar a oportunidades perdidas o malas operaciones.

Representación esquemática del sistema FIX

A continuación se muestra un diagrama de cómo CORREGIR la apariencia de los mensajes entre el comprador/cliente y el vendedor/proveedor.

Últimas novedades en el protocolo FIX

La última versión del protocolo FIX implementa la "Independencia del transporte" al permitir que se transmitan múltiples versiones de mensajes de aplicación a través de una única versión de sesión FIX independiente del transporte (FIXT.1.1 y superior).

La independencia del transporte también allana el camino para que se utilicen protocolos de transporte como colas de mensajes y servicios web en lugar del tradicional FIX sobre TCP.

FIX ahora admite el comercio algorítmico mediante el uso del lenguaje de definición de comercio algorítmico FIXatdl.

En 2005, la comunidad comercial FIX lanzó el protocolo FAST, que significa FIX adaptado para streaming. FAST es un protocolo binario y se utiliza principalmente para enviar datos de mercado de multidifusión a través de conexiones UDP.

Además, en 2020, la comunidad comercial FIX lanzó una nueva codificación binaria FIX, basada en la codificación binaria simple (SBE), destinada a complementar la codificación FAST existente.

Contenido relacionado

Software de distribución

Software de distribución se refiere al software que gestiona todo, desde el procesamiento de pedidos y el control de inventario hasta la contabilidad, las...

Xerox India

Xerox India, con sede en Gurgaon, India, es la filial india de Xerox Corporation, la empresa estadounidense de imprenta, fotocopiadora, suministros para...

Grupo Timex EE. UU.

Timex Group USA, Inc. es una empresa estadounidense de fabricación de relojes a nivel mundial fundada en 1854 como Waterbury Clock Company. b> en Waterbury...

Cox Enterprises

Cox Enterprises, Inc. es un conglomerado global estadounidense privado con sede en Atlanta, Georgia, Estados Unidos, con aproximadamente 55.000 empleados y...

Grupo Omnicom

Omnicom Group Inc. es un holding estadounidense de medios, marketing y comunicaciones corporativas globales, con sede en la ciudad de Nueva...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save