Monday 2 April 2018

Diagrama de sequência do sistema de comércio exterior


OOAD - UML Behavioral Diagrams.
Os diagramas comportamentais UML visualizam, especificam, constroem e documentam os aspectos dinâmicos de um sistema. Os diagramas comportamentais são categorizados da seguinte forma: diagramas de casos de uso, diagramas de interação, diagramas de diagramas de estados e diagramas de atividades.
Modelo de caso de uso.
Um caso de uso descreve a seqüência de ações que um sistema executa produzindo resultados visíveis. Ele mostra a interação de coisas fora do sistema com o próprio sistema. Os casos de uso podem ser aplicados a todo o sistema, bem como a parte do sistema.
Um ator representa os papéis que os usuários dos casos de uso desempenham. Um ator pode ser uma pessoa (por exemplo, estudante, cliente), um dispositivo (por exemplo, estação de trabalho) ou outro sistema (por exemplo, banco, instituição).
A figura a seguir mostra as notações de um ator chamado Student e um caso de uso chamado Generate Performance Report.
Use diagramas de casos.
Os diagramas de casos de uso apresentam uma visão externa da maneira como os elementos de um sistema se comportam e como eles podem ser usados ​​no contexto.
Os diagramas de casos de uso compreendem de & minus;
Casos de uso Relacionamentos de atores como dependência, generalização e associação.
Os diagramas de casos de uso são usados ​​e menos;
Para modelar o contexto de um sistema, encerrando todas as atividades de um sistema dentro de um retângulo e focando os atores fora do sistema, interagindo com ele.
Para modelar os requisitos de um sistema do ponto de vista externo.
Consideremos um Sistema Automatizado de Câmbio. Assumimos os seguintes recursos do sistema e menos;
A casa comercial possui transações com dois tipos de clientes, clientes individuais e clientes corporativos.
Uma vez que o cliente faz um pedido, ele é processado pelo departamento de vendas e o cliente recebe a conta.
O sistema permite que o gerente gerencie contas de clientes e responda a qualquer dúvida postada pelo cliente.
Diagramas de interação.
Os diagramas de interação descrevem interações de objetos e seus relacionamentos. Eles também incluem as mensagens passadas entre eles. Existem dois tipos de diagramas de interação e menos;
Os diagramas de interação são usados ​​para modelagem e menos;
o fluxo de controle por ordem de tempo usando diagramas de seqüência.
o fluxo de controle da organização usando diagramas de colaboração.
Diagramas de Seqüência.
Os diagramas de seqüência são diagramas de interação que ilustram o pedido de mensagens de acordo com o tempo.
Notations & minus; Estes diagramas são na forma de gráficos bidimensionais. Os objetos que iniciam a interação são colocados no eixo dos x. As mensagens que esses objetos enviam e recebem são colocadas ao longo do eixo y, na ordem de aumentar o tempo de cima para baixo.
Exemplo & menos; Um diagrama de sequência para o Automated Trading House System é mostrado na figura a seguir.
Diagramas de colaboração.
Os diagramas de colaboração são diagramas de interação que ilustram a estrutura dos objetos que enviam e recebem mensagens.
Notations & minus; Nesses diagramas, os objetos que participam da interação são mostrados usando vértices. Os links que conectam os objetos são usados ​​para enviar e receber mensagens. A mensagem é mostrada como uma flecha rotulada.
Exemplo & menos; O diagrama de colaboração do Automated Trading House System está ilustrado na figura abaixo.
Diagramas de diagrama de estado.
Um diagrama de diagrama de estados mostra uma máquina de estados que descreve o fluxo de controle de um objeto de um estado para outro. Uma máquina de estados retrata as seqüências de estados que um objeto sofre devido a eventos e suas respostas a eventos.
Diagramas de diagramas de estados compreendem de & menos;
Estados: Simples ou compostos Transições entre estados Eventos causando transições Ações devidas a eventos.
Os diagramas de diagramas de estado são usados ​​para modelar objetos de natureza reativa.
No Automated Trading House System, deixe-nos modelar Order como um objeto e traçar sua seqüência. A figura a seguir mostra o diagrama de diagrama de estados correspondente.
Diagramas de atividades.
Um diagrama de atividade descreve o fluxo de atividades que são operações não-atômicas em curso em uma máquina de estado. As atividades resultam em ações que são operações atômicas.
Os diagramas de atividades compreendem de & menos;
Os estados de atividade e os estados de ação Transitions Objects.
Os diagramas de atividades são usados ​​para modelagem e menos;
fluxos de trabalho vistos pelos atores, interagindo com o sistema. detalhes de operações ou computações usando fluxogramas.
A figura a seguir mostra um diagrama de atividade de uma parte do Sistema Automatizado de Câmbio.

Webulous.
Fabulous Themes & amp; Retornos maravilhosos.
Sistema de comércio on-line diagramas uml Dubai.
BPTrends janeiro 2018 Um modelo completo do negócio de supermercados. sistema,. Os rolos de feedback e os sistemas de controle não são exibidos nesses diagramas. 7.
Melhorando o resumo automatizado do código-fonte através de um olho.
Ali Gangjis berufliches Profil anzeigen LinkedIn ist das weltweit größte professionelle Netzwerk, das Fach - und Führungskräften com Ali Gangji dabei hilft .. Diagrama de fluxo de implantação - Diagrama do processo de negociação. Fluxograma do sistema Stockbridge. Amostra de fluxograma multifuncional :. Exemplo de Diagrama UML; Símbolos do diagrama.
Módulo ERP de Gerenciamento de Compras - EresourceERP.
Desenvolvedor Sr. Java - Desenvolvedor Sr. Java - Minneapolis, MN.
Melhorando o cuidado globalmente | Sobre a Medtronic.
Uml software de ferramentas de diagramação hp officejet pro. Física do município de dubai. diagrama de enrolamento de bobina de soldagem de arco monte carlo ss trading manual. Sim, a negociação geral localizada em Dubai, nos Emirados Árabes Unidos, fornece importações, exportações, atacado de produtos de teto. Online Trading Academy Dubai está aqui para cada etapa de sua jornada de educação comercial com cursos em ações, forex, opções, futuros e muito mais.
Diagrama de fluxo de dados empregos - Naukri.
Veículos em casa - Ontário.
Um sistema de gerenciamento de energia (EMS) é um sistema de ferramentas auxiliadas por computador usadas por operadores de grades de energia elétrica para monitorar, controlar e otimizar o desempenho de. Fabricante de indicadores para placas de circuito, painéis de instrumentos. Incluindo LEDs, matrizes de LEDs e tubos de luz. Diagram of Import Process via Dubai. procedimentos on-line no Dubai Trade ou manualmente. através do portal Dubai Trade. O sistema e-Token gerencia o fluxo de .. LOC e FP Based Estimation, modelo COCOMO - Project Scheduling - Scheduling ,. UNIT I UML DIAGRAMS 9. Sistema de recrutamento 11. Sistema de comércio exterior 12.Lionel Store tem tudo para o modelo de hobbyista ferroviário, incluindo trens modelo, trilhos ferroviários e muito mais. Encontre os mais recentes conjuntos e trens. Oferecendo as melhores soluções, oferecemos produtos integrados à tecnologia HMI, que o IDEC refinou há décadas. Eles são ergonomicamente projetados. View Mohamed Al ayoubi's perfil profissional no LinkedIn. diagramas, estudando recursos do sistema e especificações de escrita. (UAE) - sistema correspondente.
Eclipse Artigos, Tutoriais, Demos, Livros e Mais; Faça o login. 61 Exibe um Diagrama UML usando Draw2D ;. Durante este tutorial, é criada uma ferramenta de análise de estoque. März 2018 - Heute (1 Jahr 7 Monate) Dubai, Emirados Árabes Unidos. usando UML (casos de uso, diagramas de seqüência, preocupações sobre o uso do sistema são imediatamente.
Datamyne - Fazer com que os dados comerciais funcionem para você.
A iluminação de emergência vende luzes de emergência aprovadas comercial, industrial e aprovadas pelo governo, placas de saída e baterias e peças de reposição. Fabricantes de produtos de segurança rodoviária, incluindo almofadas de choque, tratamentos finais e sistemas de barreira. Instruções de instalação detalhadas on-line. No Connect Hearing, nós acreditamos que todos os sons nos conectam ao nosso mundo. Ensaios de consulta, teste e ensaios gratuitos para atender a sua saúde auditiva. Pesquise on-line para trabalhos administrativos nos Emirados Árabes Unidos. Ajudar no sistema de contabilidade da empresa Lidar com ... Ago 03 11 Financeiro. RIver Indus General Trading - Dubai. World fabricante líder de aviões e trens. Em todo lugar, as pessoas viajam por terra e no ar, um produto Bombardier está pronto para transportá-los ... requisitos de negócios para requisitos funcionais e modelos de negócios projetados usando diagramas UML. (Dubai, Emirados Árabes Unidos) Remessa e sistema de negociação Forex. Domínio.
Aplicar no Diagrama de fluxo de dados 1294. CanGo Networks é uma empresa de produtos de análise de telecomunicações com escritórios em Dubai. Foi iniciada uma criação de negociação de alta freqüência. Sistemas de gerenciamento de recursos. CONTATO OMS. 1-888-OMS-0808. Nosso sistema de processamento de pedidos on-line foi projetado para ser um dos melhores da indústria.
Escritórios globais Você nunca está longe. Dubai Airport Free Zone Dubai, Emirados Árabes Unidos. Uma Divisão de Koch Chemtech (Xangai) Trading Limited Room 1801.

Diagrama de sequência do sistema de comércio exterior
O Esquema FpML 4.0 é a primeira versão da especificação para colocar uma estrutura de mensagens em torno das descrições dos produtos para descrever o contexto e o uso para o qual a informação deve ser colocada. Esta seção descreve um pequeno conjunto de tipos e elementos complexos que compõem uma estrutura de mensagens simples que é usada como base para a definição de mensagens empresariais adequadas para uso em um 'Business to Business' (B2B) ou 'Application-to-Application' (A2A) processo de comunicação.
Essas definições introduzem um novo conjunto de idéias que anteriormente não podiam ser usadas na FpML por causa de sua dependência de DTDs como a especificação formal da gramática. As seções a seguir descrevem o raciocínio por trás dos recursos usados ​​na estrutura.
3.1.1 Por que mensagens?
O aumento da eficiência nos mercados financeiros só pode ser alcançado através de uma maior automação do processamento de transações e do uso de mensagens eletrônicas (por exemplo, troca de informações diretamente entre sistemas informáticos com a menor interação humana possível). Para conseguir isso, todas as partes envolvidas em tais comunicações devem concordar com quatro coisas, a saber:
Deve haver uma representação comum de uma transação, produto ou outro item de dados de referência aceito por todas as partes.
A gramática básica do FpML define um vocabulário padrão para transações e produtos baseados em derivados que podem ser a base de um padrão de mensagens. À medida que novos aplicativos de mensagens são considerados, o escopo da gramática básica precisará expandir para abranger os tipos adicionais de dados referenciados nessas mensagens.
Todas as partes devem ter a mesma interpretação das informações expressas pela representação.
O trabalho do grupo de trabalho de validação fornece um conjunto de regras para garantir que uma definição de produto esteja em conformidade com a definição de mercado para esse produto. O conjunto de regras FpML se expandirá e evoluirá ao longo do tempo à medida que novos produtos financeiros e tipos de mensagens forem adicionados à gramática.
Todas as partes devem seguir os mesmos processos comerciais e responder adequadamente a qualquer comunicação que recebam.
Para suportar o processo de negócios, o grupo de trabalho de mensagens ampliou a gramática básica do FpML para adicionar uma estrutura para definir mensagens e seu conteúdo. Neste documento, o MWG descreve alguns processos comerciais de exemplo e mostra como eles poderiam ser implementados como trocas de mensagens.
As partes devem concordar com o transporte de comunicações usado para interconectar seus negócios.
A FpML não endossa nenhum transporte de mensagens específico para comunicação. A escolha do transporte é deixada ao implementador, embora, na prática, esperemos que apenas alguns sejam encontrados adequados.
O desacordo sobre os três primeiros desses recursos significará que os usuários do FpML terão potencialmente implementar, manter e suportar diferentes sistemas de software para cada serviço ou aplicativo com o FpML que usam. O apoio a vários transportes de comunicações normalmente não é tão difícil, embora isso implique custos de operações adicionais.
3.1.2 Suposições de projeto.
Para criar as mensagens e processos comerciais descritos neste documento, alguns pressupostos de projeto tiveram que ser feitos, principalmente:
Ao longo deste documento, assumimos que as trocas de mensagens serão realizadas por uma troca assíncrona de mensagens através de um transporte garantido, como é fornecido por um sistema de filas de mensagens. Esta forma de transporte é comumente usada hoje no setor financeiro (por exemplo, motores FIX, SwiftNet Interact 'Store e Forward', MSMQ, MQSeries, etc.).
Uma consequência importante desta decisão é que os casos de erro relacionados à não entrega não precisam ser considerados (por exemplo, quando aceitou um sistema de enfileiramento de mensagens garantidas, SEMPRE entregue uma mensagem), embora a "frescura" da mensagem precise ser considerada ( Por exemplo, a mensagem foi presa em uma fila esperando por ser entregue por um longo período de tempo). Da mesma forma, o sistema de filas de mensagens normalmente pode eliminar as mensagens duplicadas para que elas também não sejam consideradas.
Alguns dos processos de negócios são "long-running" em que, uma vez iniciados, eles podem permanecer ativos por um tempo considerável antes de completar (por exemplo, um pedido para confirmar uma troca pode levar muitas horas, pois depende da hora de chegada do comércio correspondente ). Durante esse período, o processo pode gerar notificações periódicas ao originador da solicitação e / ou outras partes. Tais notificações aparecerão no fluxo de mensagens configurado para um participante misturado entre outras mensagens de resposta.
Uma implicação de tais transações "long-running" é que o "provedor de serviços" conterá um "estado" complexo. O serviço deve fazer provisões adequadas para registrar persistentemente seu estado, de modo que, no caso de uma falha de software ou hardware, ele possa se recuperar de forma transparente sem que seus clientes tenham que reenviar qualquer informação.
Os implementadores que tentam construir software com base nesses protocolos usando um transporte sem filas (por exemplo, WebServices, DCOM, CORBA) precisarão implementar uma camada de mensagem confiável para encapsular as seqüências de mensagens atuais (por exemplo, uma interface de mensagem get / put usando números de seqüência para detectar perda ou mensagens duplicadas e confirmações positivas / negativas). O site W3C contém links para propostas para tais extensões para uso com WebServices.
3.1.3 Estilos de mensagens.
Em geral, os sistemas de computador geralmente usam dois estilos de mensagens para trocar informações entre si, a saber:
Um estilo de troca em que um sistema envia uma mensagem para o outro para pedir que ele execute alguma função, cujo resultado é encapsulado em uma resposta apropriada e retornado.
Um estilo de troca em que um sistema envia uma mensagem descrevendo um evento de negócios que ocorreu e pode ser de interesse para outros.
O recebimento de qualquer tipo de mensagem pode fazer com que mensagens adicionais sejam geradas e enviadas como parte do processamento para obter informações de outros sistemas ou para informá-las sobre o evento comercial em andamento.
3.1.4 Independência do transporte.
Em geral, quatro camadas de especificação estão contidas em um padrão XML. Uma abordagem de várias camadas permite que os implementadores escolham a tecnologia mais apropriada para uma determinada situação. Permite o desenvolvimento e modificações dentro de uma camada sem afetar ou exigir mudanças aos outros.
Do topo para baixo, as quatro camadas são:
3.1.4.1 Processo de negócios.
Esta camada especifica a forma como qualquer processo de negócio é definido, tal que é entendido e executável por pessoas e aplicativos. Um processo comercial pode ser definido como um conjunto de tarefas inter-relacionadas vinculadas a uma atividade que abrange os limites funcionais. Os processos comerciais têm pontos de partida e pontos finais, e são repetíveis. Exemplos de processos de negócios no domínio dos derivativos são o processo de afirmação, o processo de confirmação e o processo de correspondência.
Os processos de negócios dos modelos de especificação FpML 4.0 em diagramas de seqüência UML.
3.1.4.2 Documento.
Esta camada corresponde às definições do documento FpML. Ele fornece um conjunto de abstrações específicas para derivativos financeiros, mas também um conjunto de elementos que não são específicos do contexto (como "Party" e "Price").
3.1.4.3 Mensagens.
A camada de Mensagens aborda a necessidade de gravar as configurações de sessão e comunicação para o transporte de mensagens para permitir a coordenação entre as partes em uma transação comercial.
O esquema FpML 4.0 explicitamente modela a informação relacionada com a entrega como parte da própria mensagem. Alguns transportes (ou seja, SOAP, ebXML, etc.) permitem que essas informações sejam colocadas no "envelope" que envolve a mensagem durante a entrega.
Incluir um cabeçalho padrão dentro das mensagens do FpML aumenta a consistência fornecendo um formato único para a entrega de informações, independentemente do transporte físico, garante que ele será persistido se a mensagem for arquivada e permitir uma utilização mais flexível de recursos como assinaturas digitais.
3.1.4.4 Transporte.
A camada de transporte fornece uma conexão ponto a ponto para que um servidor possa enviar mensagens para outro servidor e eles chegarão não corruptos e na ordem correta.
A Arquitetura de mensagens do FpML define uma estrutura de mensagens independente do protocolo de transporte subjacente, como SMTP, protocolo de transferência de arquivos (FTP), middleware de mensagens padronizadas, HTTP, etc.
3.1.5 Controle de conteúdo.
O design de uma gramática deve encontrar um equilíbrio entre o grau de flexibilidade que permite e a complexidade de sua validação. Uma gramática excessivamente laxista permite a construção de documentos que, embora sejam sintaticamente corretos, podem não ter uma interpretação comercial válida. Por outro lado, uma gramática muito rígida pode exigir muitas mais produções gramaticais para enumerar apenas as combinações válidas.
Em geral, faz sentido que uma gramática seja rigorosa quando pode ser alcançada facilmente e sem demasiada definição adicional, e laxista onde é necessária flexibilidade (por exemplo, extensões proprietárias, etc.). No caso da estrutura de mensagens, a gramática fornece um mecanismo para garantir que as mensagens tenham o conteúdo correto que se aplica a elas.
3.1.6 Identificação do objetivo.
O receptor de uma mensagem precisa ser capaz de determinar a função que a mensagem está invocando. Em XML, existem três técnicas diferentes que podem ser usadas para indicar o propósito de uma mensagem.
A estrutura da mensagem FpML é baseada na substituição do tipo (opção 3 - Por tipo de elemento), pois proporciona o maior controle sobre a validação, permitindo uma extensão fácil dos elementos da mensagem. Abaixo está uma breve explicação das três técnicas:
A estrutura de mensagens FpML é baseada na substituição de tipos, pois proporciona o maior controle sobre a validação, permitindo uma extensão fácil dos elementos da mensagem.
3.1.6.1 Por Namespace (não usado pelo FpML)
O receptor pode olhar para o espaço de nome a partir do qual as definições dos elementos foram desenhadas e determinar a partir da função solicitada.
Usando namespaces seria possível criar uma estrutura altamente extensível para FpML, mas poderia levar a documentos que tenham que ter todos os elementos FpML com prefixo com uma abreviatura de namespace adequada, embora seja possível mitigar isso ao usar o sub-esquemas "núcleo" sem namespaces em sua definição e assumir o espaço para nome daquele em que estão incluídos.
Pode haver outros problemas com os padrões XML relacionados, como XPath, pois o espaço para nome dos mesmos elementos incluídos pode não ser consistente entre os documentos.
3.1.6.2 Por Nome do elemento (não usado pelo FpML)
O receptor pode observar o nome associado a um elemento dentro da mensagem (ou a raiz ou um dos filhos do primeiro nível) para determinar a função solicitada.
Para garantir que o conteúdo do elemento FpML seja sempre um elemento de mensagem válido, a gramática teria que usar um grupo de escolha (o que limitaria a extensibilidade) ou um grupo de substituição (que é extensível) para definir os elementos aceitáveis.
Embora o elemento raiz possa ser usado para indicar a função, é mais provável que uma criança seja usada para que todos os documentos FpML ainda tenham o elemento FpML como raiz.
Neste modelo, o cabeçalho da mensagem deve ser genérico, que é adequado para qualquer tipo de mensagem. Não há nenhuma maneira em XML para validar que o conteúdo é adequado para o tipo de conteúdo da mensagem que se segue.
3.1.6.3 Por tipo de elemento.
O receptor pode observar o tipo associado a um elemento dentro da mensagem (por exemplo, a raiz ou uma criança).
Uma instância baseada em esquema XML pode usar a substituição do tipo para substituir o modelo de conteúdo de qualquer elemento por outro, desde que a substituição seja derivada do original. Dada uma estrutura que fornece os pontos de extensão apropriados, qualquer número de novos tipos pode ser derivado dentro do nome ou espaços de nome diferentes conforme necessário.
Além disso, através da herança, os tipos de mensagem podem ser associados a um modelo de conteúdo de cabeçalho de mensagem apropriado.
3.1.7 Representando Negociações Internas.
O foco da FpML até o momento foi sobre a descrição do foco de negócios para fins B2B. Ao mesmo tempo, muitas das implementações existentes foram para trocas comerciais internas entre sistemas.
A extensão do FpML para lidar com informações de comércio interno implica adicionar elementos adicionais ao esquema atual para manter os valores necessários para categorizar um comércio para fins internos. Há várias maneiras pelas quais essa informação pode ser adicionada ao esquema (por exemplo, elementos opcionais, estruturas de herança alternativas, herança por restrição), cada uma com suas próprias propriedades em termos de facilidade de validação ou afeta o estilo do documento.
O comitê de coordenação da FpML atualmente está considerando os tipos de informações que seriam úteis para adicionar para o processamento interno (ou seja, gerenciamento, risco e relatórios P ​​& amp; L, etc.) e a localização mais adequada dentro do esquema para colocá-lo. Esses aprimoramentos serão incluídos em uma versão futura do FpML, mas, enquanto isso, a especificação da arquitetura FpML 2.0 contém exemplos de como as extensões personalizadas podem ser feitas para conseguir isso com o esquema FpML 4.0.
3.1.8 Diagrama de Seqüência.
Um diagrama UML que define os fluxos de informação. Ele se concentra na ordem temporal das mensagens. Analistas de negócios podem encontrar diagramas de seqüência úteis para comunicar como o negócio atualmente funciona mostrando como vários objetos de negócios interagem.
No topo de cada diagrama, vemos os nomes de atores ou objetos de negócios envolvidos no processo que queremos descrever. No diagrama acima, Solicitante de Confirmação e Provedor de Confirmação são exemplos de atores envolvidos no processo de confirmação.
Os retângulos representam os sistemas envolvidos no processo, e. Sistema de Negociação, Sistema de Confirmação e Sistema de Correspondência. No entanto, em algumas outras versões dos diagramas de seqüência, os retângulos representam os atores ou objetos de negócios.
Normalmente, o ator ou objeto de negócios no lado esquerdo inicia a interação. Descendente de cada objeto é uma linha conhecida como "linha de vida". Essas linhas definem o eixo temporal do diagrama. Por convenção, o tempo prossegue em direção descendente. Esta prática é usada na documentação do FpML.
As setas entre as linhas de vida representam mensagens enviadas entre os atores. Por exemplo, no diagrama acima, RequestTradeConfirmation e TradeAlreadySubmitted são exemplos de mensagens enviadas entre o Solicitante de Confirmação e o Provedor de Confirmação.
Os retângulos brancos e estreitos que as setas terminam são chamados de "ativação". Por exemplo, os retângulos entre as mensagens RequestTradeConfirmation e TradeAlreadySubmitted no diagrama acima são ativações. Eles mostram a duração da execução de um método ou ação em resposta a uma mensagem.
Se você precisar de mais informações sobre seqüência ou outros diagramas UML, você pode encontrar facilmente ferramentas de diagrama UML e tutoriais pesquisando na Internet.
3.2 O quadro de mensagens.
As versões do FpML anteriores a 4,0 permitiram a construção de documentos que contenham apenas definições de produtos. A proposta original para o FpML 4.0 era forçar uma transição diretamente para as mensagens, tornando obrigatórios alguns elementos de mensagem em cada documento. No entanto, após uma análise mais aprofundada, decidiu-se reestruturar a estrutura para permitir que ambos os estilos de definição ofereçam compatibilidade com versões anteriores do FpML com as soluções existentes e o alcance para expandir para novos aplicativos de mensagens B2B (ou A2A).
3.2.1 O Documento Base.
O esquema XML para FpML 4.0 define o tipo do elemento raiz FpML como "Documento", um tipo abstrato com um modelo de conteúdo vazio, salvo somente para a versão padrão do FpML.
O tipo de documento serve como o tipo de base em um esquema de herança que fornece as definições do modelo de conteúdo para os tipos de mensagens reais.
3.2.1.1 Documentos de dados.
O tipo DataDocument fornece o mesmo modelo de conteúdo que a versão de esquema pre XML da FpML permitindo a construção de documentos que contenham apenas definições de produtos.
Para tornar um documento baseado em DTD FpML 3.0 compatível com o esquema FpML 4.0 como um DataDocument, é necessário um número de alterações para o documento da instância, a saber:
O & lt;! DOCTYPE & gt; a referência deve ser removida do documento. Onde o & lt; FpML & gt; elemento define um valor de atributo de esquema padrão não padrão ou institucional específico, deve ser propagado o atributo do esquema em todos os elementos apropriados. Uma referência ao esquema FpML como o namespace padrão deve ser adicionada. Uma referência ao esquema da instância do esquema XML W3C deve ser adicionada e atribuída a um espaço para nome (por exemplo, 'xs' ou 'xsi'). Uma referência ao esquema W3C XML Signature Digital deve ser adicionada e atribuída a um espaço para nome (por exemplo, 'dsig'). O tipo de & lt; FpML & gt; O elemento deve ser definido como 'DataDocument'. Um atributo schemaLocation pode ser adicionado ao & lt; FpML & gt; elemento para sugerir a localização do esquema para ferramentas XML que não executam "resolução de entidade completa".
3.2.2 A Mensagem Base.
As duas principais definições dentro do esquema estabelecem duas classes básicas abstratas, 'Mensagem' e 'MessageHeader' a partir das quais todas as outras definições são derivadas.
O tipo 'Mensagem' contém um 'cabeçalho' de elemento único que contém os dados de identificação e entrega de mensagens definidos pelo tipo 'MessageHeader'. O tipo de mensagem herda o conjunto de atributos utilizados para identificar os esquemas de codificação FpML estendendo o tipo de documento. Os elementos que compõem um 'MessageHeader' são o superconjunto dos elementos necessários para os estilos de mensagens de solicitação / resposta e notificação.
O seguinte fragmento de esquema XML mostra como esses tipos são definidos.
Nem todos os elementos de 'MessageHeader' são relevantes para todos os estilos de mensagens e seu conteúdo é restrito por definições subsequentes. O papel de cada elemento é dado abaixo.
conversationId permite que um remetente da mensagem crie um contexto comum para uma série de trocas de mensagens separadas. messageId contém o identificador exclusivo do remetente para uma mensagem. inReplyTo contém o identificador exclusivo para a mensagem de solicitação que está sendo respondida. enviada. Identifica a parte enviando uma mensagem. SendTo identifica as partes que receberão uma mensagem e devem atuar sobre isso. copiar as identidades de outras partes que receberão uma mensagem, mas que não precisam agir sobre isso. creationTimestamp descreve a hora em que o remetente criou a mensagem. expiryTimestamp define um tempo após o qual o remetente considerará a mensagem expirada. dsig: Assinatura permite a inclusão de assinaturas digitais W3C dentro da mensagem.
O elemento de validação no tipo de mensagem contém o URI para um conjunto de regras de validação adicionais a serem aplicadas ao documento durante o processamento.
3.2.3 Solicitações, Respostas e Notificações.
O esquema deriva de três tipos abstratos de estilo de mensagem das classes de mensagens principais por restrição. Por exemplo, uma mensagem de solicitação pode não ter um elemento inReplyTo onde, como é obrigatório em uma resposta.
A seguinte imagem mostra a construção de apenas um tipo de estilo de mensagem, como com a exceção do tipo do elemento de cabeçalho, eles são todos iguais.
Em cada caso, a herança é usada para restringir o modelo de conteúdo do tipo 'Mensagem' da base e alterar o tipo do elemento 'cabeçalho'. Cada um desses tipos é, por sua vez, uma restrição do tipo genérico 'MessageHeader' com alguns elementos excluídos ou obrigatórios.
3.2.4 Manipulação de erros.
Se uma mensagem não puder ser processada por algum motivo técnico, como: ficou corrompido, não é XML ou não é uma mensagem FpML válida, então o receptor retorna uma mensagem 'Mensagem rejeitada' ao remetente. Normalmente, a mensagem exigirá intervenção manual para diagnosticar e resolver quaisquer problemas. Tais rejeições não serão mostradas em nenhum dos diagramas neste artigo.
Se a mensagem não puder ser processada porque a solicitação é inválida, dado o estado dos dados a que se aplica, uma notificação de nível comercial apropriada é devolvida ao remetente (por exemplo, 'TradeNotFound', 'TradeAlreadyMatched', etc.) que por sua vez poderia ser usado para invocar uma recuperação automática ou uma intervenção manual.
O design da mensagem de rejeição permite a inclusão de múltiplas descrições de erros legíveis por computador. Cada erro é descrito por uma coleção de elementos com a seguinte interpretação:
O elemento reasonCode contém um código numérico (tirado de uma lista padrão) que descreve o tipo de erro detectado.
O elemento de localização contém um número de linha e coluna (separados por uma vírgula) ou uma expressão XPath. O valor do atributo locationType define qual tipo de localização foi dada. Pode levar os valores 'lexical' ou 'xpath'.
O elemento de descrição contém texto legível para humanos detalhando o erro.
Se o erro for o resultado de uma violação de uma regra de validação, o elemento validationRuleId contém o identificador da regra (por exemplo, 'ird-1').
O elemento adicionalData pode conter informações adicionais úteis para diagnosticar o motivo da falha.
Outro elemento adicionalData é associado com a mensagem MessageRejected após a lista de erros para permitir que a origem do documento XML falhado seja retornada. Uma seção CDATA deve ser colocada em torno da mensagem de origem para evitar sua interpretação como conteúdo XML. O diagrama a seguir mostra o design para a mensagem completa.
Para encapsular uma mensagem XML dentro de outra, a seção de dados de adição teria que usar uma codificação XML CDATA para evitar que o analisador tente processar o conteúdo.
As rejeições de mensagens podem usar qualquer uma das seguintes listas de códigos de erro para indicar o motivo da falha. As instituições podem definir seus próprios códigos de erro adicionais na faixa numérica fornecida para erros do usuário.
Nível 100: Problemas de transporte e entrega de mensagens.
100: Código de erro de transporte padrão 101: Transporte não disponível 102: Destinatário / destino desconhecido 103: Entregue ao destinatário incorreto 104: Tempo limite - mensagem enviada após expiração 105: Este tipo de mensagem não aceita neste transporte 106: Problema de geração de mensagens (por exemplo, conversão de dados ) 110: Mensagem corrompida (por exemplo, falha CRC) 111: O texto da mensagem não corresponde ao hash de assinatura digital.
Nível 200: problemas de integridade e processamento de mensagens.
200: Código de erro de processamento de mensagens padrão 201: Problema léxico - não bem formado XML 202: Conjunto de caracteres não suportados 203: Conteúdo vazio ou ausente 204: Conteúdo muito grande 210: Sistema indisponível 221: O texto do componente da mensagem não corresponde ao hash da assinatura digital.
Nível 300: Problemas de validação de mensagens.
300: Código de erro de validação padrão 301: DTD / Esquema 302 desconhecido ou não suportado: Versão FpML 303 não suportada: mensagem FpML inválida - a mensagem não valida w. r.t. DTD / esquema especificado 304: falha de validação - tipo de mensagem não suportada 305: falha de validação - regra FpML obrigatória (uma regra que dizemos deve ser sempre seguida) 306: falha de validação - regra de acordo mestre (uma regra 2 partes concordam em seguir) 307: Validação falha - política de negócios (uma regra que apenas o destinatário tem) 308: falha de validação - produto / recurso não suportados 310: assinatura necessária - o conteúdo da mensagem deve ser assinado 311: Assinatura não aceita - problema com o assinante da mensagem (cert revogado, princípio inaceitável, etc. .)
Nível 400: Problemas de processo comercial / fluxo de trabalho.
400: Código de erro do processo comercial padrão 401: Não sei - comércio não reconhecido 402: Adequável - o comércio não pode ser feito por motivos de adequação do cliente ou revendedor 403: O crédito não pode ser feito por razões de crédito 404: Não interessado - O destinatário escolhe não responder 410: a mensagem chegou tarde demais - por exemplo O comércio não existe mais 411: Mensagem expirou - a mensagem chegou no horário, mas uma resposta não foi gerada no tempo.
Nível 500: Definido pelo usuário.
3.3 Os protocolos de mensagens.
As publicações da FpML até o momento se concentraram em definir apenas a estrutura do produto. Esses produtos são a parte fundamental de muitas mensagens, mas para ter uma "conversa" significativa é necessária informação adicional para expressar a ação que o remetente da mensagem acredita que o receptor da mensagem deve executar no recebimento da mensagem. Normalmente, uma estrutura de dados chave, como um produto e / ou uma parte, é o principal componente dos dados que acompanha o pedido, mas para algumas ações, talvez seja necessário incluir parâmetros adicionais.
3.3.1 Pedido de orçamento B2B.
Esta seção descreve um processo para solicitar e obter uma cotação para um comércio antes de entrar em um comércio contratual completo. Os processos apresentados são baseados em usuários em uso nos mercados que já possuem um mercado eletrônico estabelecido.
Dentro desta seção, o bem deve referir-se a dois tipos de participantes no mercado, a saber:
Os revendedores que normalmente fornecerão um preço de uma ou duas vias em um determinado instrumento financeiro.
Os comerciantes que normalmente solicitarão e negociarão posteriormente os preços fornecidos pelos fabricantes de mercado.
Um pedido de processo de cotação pode ser conduzido diretamente entre um criador de mercado e um tomador de mercado (por exemplo, o serviço "CitiFx FX Benchmark" do Citigroup) ou, mais comumente, através de um portal eletrônico de troca ou comercial, onde vários fabricantes de mercado podem citar no mesmo pedido.
3.3.1.1 Especificação do produto para RFQ.
A especificação de produtos no pedido de mensagens de citações é diferente daqueles em mensagens pós-comércio. O produto pode ser mais ambíguo (por exemplo, não pode especificar se é uma compra ou venda) e os dados específicos de liquidação irrelevante podem ser omitidos.
A natureza "simétrica" ​​das especificações dos produtos FpML cria alguns problemas adicionais ao considerar sua generalização em mensagens pré-comerciais. A FpML evita o uso de indicadores simples de "compra" e "venda" associando partes com componentes de um produto e indicando sua obrigação (ou seja, pagador ou receptor). No entanto, esta abordagem tem três problemas no espaço pré-comercial.
Em algumas negociações, a identidade do tomador do mercado pode não ser conhecida até que um acordo tenha sido alcançado. A FpML requer informações do partido dentro de uma especificação de produto para identificar obrigações. Uma identidade só poderia ser escondida se um grupo padrão de 'manequim' fosse permitido em mensagens de negociação.
Um tomador de mercado pode solicitar cotações no mesmo produto de muitos fabricantes de mercado. Dadas as definições atuais, a definição do produto precisaria ser personalizada para cada destinatário potencial. Alternativamente, outra festa "falsa" poderia ser usada para representar qualquer criador.
Em muitas negociações, a intenção do tomador do mercado não é clara e o fabricante de mercado fornece tanto um preço de compra quanto um preço de venda. O uso da parte para identificar a obrigação em um produto FpML significa que só pode ter uma interpretação (ou seja, uma compra ou uma venda, ela nunca pode ser ambas).
É claro que, se o estilo atual de definição do produto for usado para pré-negociação, algumas convenções adicionais precisarão ser adotadas.
Embora seja possível generalizar as definições atuais do comércio de postagens, tornando alguns dos elementos atuais opcionais (para que possam ser excluídos nos RFQs) e a adição de elementos adicionais de dados específicos de cotação, isso levaria à possibilidade de os produtos RFQ aparecerem em mensagens pós-comércio (e vice-versa). Sintaticamente, tais mensagens seriam válidas e as regras de validação extra poderiam precisar definir para detectar esse erro semântico.
Uma solução mais simples seria definir um novo conjunto de definições de produtos especificamente para mensagens pré-comerciais com base em um quadro semelhante, como é usado para os produtos pós-comércio existentes. Para implementar isso, um novo elemento global e tipo base são necessários para servir como ponto de anexo para substituir definições.
Dadas essas definições, podem ser criadas versões citáveis ​​dos produtos existentes, por exemplo, para FX:
Usando esta definição, é possível expressar a intenção da transação (por exemplo, as moedas, data (s) de entrega e quantidade nocional), deixando para fora outros valores (ou seja, a taxa de câmbio).
Ao manter a definição do produto da cotação próxima da do produto pós-comercialização (por exemplo, usando os mesmos nomes de elementos e pedidos), uma mensagem de resposta pode ser construída copiando seções da mensagem de entrada (por exemplo, partes da representação da árvore DOM analisada) e enriquecendo com todos os dados necessários para formar a definição completa do produto.
Para criar a definição de exemplo para o FX, duas outras definições tiveram que ser generalizadas, ou seja, QuotablePayment (do Payment) e QuotableMoney (do Money). Essas definições não têm relação direta com seus parceiros totalmente formados, são simplesmente cópias modificadas das definições de esquema XML originais, embora seja possível defini-las usando 'herança por restrição' (por exemplo, o Money pode ser herdado de QuotableMoney fazendo o elemento de quantidade obrigatório, o Pagamento e o QuotablePayment podem ser derivados de alguma classe base comum genérica).
3.3.1.2 Solicitação de Cotação Bilateral.
Esta seção descreve o seguimento das mensagens exigidas em uma troca bilateral diretamente entre um market maker e um market maker. Assume-se que o criador de mercado opera dois sistemas para suportar seu negócio comercial: um para gerenciar sua comunicação com tomadores de mercado (o sistema de cotação) e um para registrar transações (o sistema de negociação). Os recursos desses dois sistemas lógicos podem residir em uma única implementação física.
O diagrama a seguir mostra a seqüência de troca de mensagens (incluindo um fluxo adicional para uma atualização de cotação) em operação normal.
O papel de cada uma das mensagens é o seguinte:
O tomador do mercado envia ao sistema de cotação uma mensagem do RequestQuote descrevendo as propriedades da transação na qual ele está interessado. O sistema de cotação encaminha a mensagem para o criador de mercado para atenção. A mensagem RequestQuote usa a definição QuotableProduct para permitir que o produto seja explicitamente definido.
Observe que a mensagem permite que mais de um produto seja incluído para permitir que várias citações sejam solicitadas simultaneamente.
O mercado de mercado determina um preço unidirecional ou bidirecional para o produto e a falta de tempo para o qual essa citação será honrada e a devolverá ao tomador do mercado através do sistema de cotação. O marcador de mercado pode citar um subconjunto dos produtos solicitados (ou nenhum deles por não responder).
O tomador do mercado aceita a cotação e informa o sistema de cotação do qual a citação (se o preço era de dois sentidos) foi tomada retornando um comércio totalmente formado (possivelmente contendo a informação de liquidação dos compradores do mercado). O sistema de cotação encaminha a aceitação para o sistema de negociação.
O sistema de cotação deve garantir que os detalhes do comércio dentro do QuoteAcceptance correspondam à cotação fornecida anteriormente e que a citação ainda é válida.
Quando o sistema de negociação confirma sua aceitação da transação, devolvê-lo em uma mensagem de CitaçãoAcceptanceConfirmada (possivelmente depois de adicionar suas próprias informações de liquidação), o sistema de cotação pode emitir TradeAffirmations para informar cada parte que o comércio está completo.
Finalmente, ambas as partes confirmam a aceitação da TradeAffirmation ao sistema de cotação para permitir que ele registre o final bem sucedido da transação. (As mensagens TradeAffirmation e TradeAffirmed são descritas mais adiante)
The role of the quotation system in the above processing is to ensure that both market makers and market takers are treated fairly during the quotation process, by maintaining an audit record of message from both parties in order of arrival.
In practice the negotiation of a rate or price for a transaction may require more message exchanges than shown in the last example and there are a number of different outcomes that can occur, namely:
The market taker may choose not to act on the quote, leaving it instead to expire at the time designated by the market maker.
There are no messages to inform parties of the expiration of a quote, rather it is discovered by exception when a stale quote is acted upon (shown later).
The market maker may choose to refine a previously made quote to reflect a change in market conditions. A marker taker may be tempted to trade on the new quote (as shown in the following diagram) or may leave it to expire or be cancelled.
The market taker may re-request a quote for the same product for which he requested an earlier quotation. If the earlier quotation is still active then the request could be ignored or an update sent to original request. If the quote has expired then the normal quotation process is repeated.
A market taker may attempt to take up a quotation after it has become expired. This could be accidental or caused through synchronization issues between the systems (e. g. differences between system clocks, message delays or processing order).
3.3.2 B2B Trade Affirmation.
Within the context of FpML, trade affirmation is considered to be a notification of trade execution. An affirmation message may be sent internally or externally after the trade negotiation has completed. At this point the trade may not have been legally confirmed between the two principal parties. Trade affirmations may also be sent by a third party, e. g. a broker, to the principal parties involved.
3.3.2.1 The Affirmation Process.
There are a few basic patterns that are used in the industry today for delivery of trade affirmation messages. In all cases the workflow is basically the same. That is, a notification message is sent from a trading system (either an internal/external system or broker) followed by an acknowledgement of receipt (response message) from the message receiver. Acknowledgement of receipt is used to complement the asynchronous nature of the affirmation message and to assure that the message is not deleted from the originating system prior to being persisted in the destination system.
The following sequence diagram illustrates the process for one side of a bilateral affirmation. Both parties to the trade may be executing this process to obtain an affirmation from each other.
The affirmation message typically contains the same information that is contained in a trade confirmation message. Some details, such as settlement information, could be omitted if it is unknown to the affirmation sender. The following diagram shows the content model for a 'TradeAffirmation' message.
The response to the affirmation message indicates its acceptance and indicates the transaction to which it applies. The content model for it is as follows:
If the trade affirmation is being generated by a third party, such as a broker, then affirmation could be sought from one side and then the other, or from both simultaneously as shown in the following diagram.
The data content of the messages is the same as in the bilateral case.
3.3.3 B2B Trade Confirmation.
Today the procedure for achieving trade confirmation is manual for most OTC derivative transactions. Principally this is because the information describing the economic and legal liabilities of the transaction are embedded within a native text document and set amongst legal wording. A skilled human reader is needed to extract and compare the relevant information to determine if it matches the bank's own definition of the same deal.
This section describes how the process of trade confirmation for OTC derivatives might be achieved electronically through the exchange of a sequence of 'messages' between the two parties' computer systems. This can only take place if the parties involved have identified and 'marked-up' the salient details of the transaction using a common vocabulary of terms and data structure, such as those provided by the FpML product definitions.
3.3.3.1 The Confirmation Process.
There are two common styles for trade confirmation used by the finance industry today:
Bilateral confirmation models the current manual process where one party (the confirmation requester) creates a legal definition of the trade, signs it and sends it to the other party (the confirmation provider) who checks and then countersigns the document and returns it.
This countersigned document becomes the legally binding definition from the transaction once it has been acknowledged back to the requester.
Both parties might be attempting to obtain a confirmation from the other with this method at the same time.
Trilateral confirmation involves both parties to a trade each generating and sending a copy of the agreed upon trade to an independent third party. When the third party determines that two trades match it sends an identical trade representation to both parties to confirm the match.
The trade description generated by the confirming service becomes the legally binding trade representation.
3.3.3.2 The Matching Process.
Matching and comparison are central to confirmation process. In basic terms the matching operation is carried out as follows.
Each new request to confirm a trade results in a search of the system's set of currently unmatched trades to determine if a viable match exists. A trade is comprised of a set of data items that describe its properties and each one of these in turn falls into one of following three categories:
Identifying financial items that, if present, must exactly (or within tolerance) match (e. g. common trade identifier, trade date, maturity, product type, currencies, notional amounts, parties, etc.). Non-identifying items that should exactly (or within tolerance) match (e. g. business centers, date roll conventions, etc.). Items irrelevant to the matching process (e. g. comments).
As a result of the matching process a trade is said to be:
Matched - If all identifying and non-identifying items agree. Mismatched - If all identifying items agree but the non-identifying items differ. Unmatched - No match on identifying items could be found.
If a trade is matched then both descriptions of a trade are fully reconciled and the parties can agree that it is confirmed. If the trades contain identification information that shows that they should have matched but other significant details differ then the trade is mismatched.
If no match was found then the system must assume that it is yet to receive a copy of the trade from the other party and should add it to the set of unmatched trades and wait for the next request.
Some additional actions are required to prevent trades remaining unmatched indefinitely. There are two cases that can give rise to this situation:
The counterparty failed to enter and send his definition of the transaction (so no counter-trade exists in the system). The counterparty incorrectly identified the true party (in which case a counter-trade exists but will never match).
To attempt to recover from both cases after a trade has remained unmatched for a period of time, the system should send a message to the alleged counterparty in order to provoke them into investigating whether they need to send a new trade or correct an existing unmatched trade.
If after an additional time period the trade still remains unmatched, it should be returned as failed.
3.3.3.3 Bilateral Confirmation.
The following sections illustrate the end-to-end sequence of message exchanges required to confirm a transaction directly between two parties and the various outcomes that are possible.
3.3.3.3.1 Normal Operation.
Under normal operation we would expect a match to be found as soon as both the internally and externally generated copies of the trade are submitted to the confirmation engine.
Following a trade negotiation each side generates a 'RequestTradeConfirmation' message which is sent to the confirmation provider's system. These requests are used to initiate a trade matching operation. The structure of the request message is shown below.
If the request is valid then the trade is passed to the matching engine for processing. The 'RequestTradeMatch' message needs the same basic data content as the confirmation request message.
When a match is found the associated notification message needs to identify the two trades (via their identifiers) to the participants.
To finish the process the confirmation requestor confirms his acceptance of the match by issuing a 'ConfirmTrade' message that contains a reference to the matched trade.
The final notification of the confirmation provider reiterates the legally binding definition of the trade.
If the request contains the details for a transaction which has already been processed by the confirmation service then a number of possible errors can result in response to the request:
If a request to confirm the same trade was made previously and the trade is currently unmatched or mismatched, then the service should reply with a 'TradeAlreadySubmitted' message.
The 'TradeAlreadySubmitted' message has the following content model:
If a request to confirm the same trade was made previously and the trade was successfully matched, then the service should reply with a 'TradeAlreadyMatched' message.
The 'TradeAlreadyMatched' message has the following content model:
3.3.3.3.2 Mismatch.
If a mistake has occurred in the generation of one trade confirmation request it is possible that the system can detect that two trades should have matched (e. g. they contain a common unique trade identifier) but that they cannot due to significant differences.
The confirmation system keeps trades in its pool following the mismatch notification to allow a subsequent correction or cancellation to be applied to the trade.
The 'TradeMismatched' notification must contain the participants trade identifier as well as the identifier for the counter-trade that it should have matched, together with any other potential matches.
3.3.3.3.3 Confirmation Correction.
Whilst a trade is unconfirmed the requesting party may send new copies of the transaction data to replace the original trade details. The data content of the replacing transaction should match the same requirements as those for initiation. Transactions must be fully re-specified (rather than just the incremental differences). The content model for the 'ModifyTradeConfirmation' message which requests this is as follows:
There are a number of scenarios that can result in the processing of such messages:
The confirmation system may not be able to locate the original trade description to be modified.
The generated 'TradeNotFound' message contains the identifier for the trade the system was unable to find.
The modification may be accepted and propagated to the matching engine but the trade remains unmatched.
As with the initial matching request the 'ModifyTradeMatch' message contains a full copy of the trade.
The modification may be accepted and propagated to the matching engine resulting in a mismatched trade.
The modification may be accepted and propagated to the matching engine resulting in a matched trade.
3.3.3.3.4 Confirmation Cancellation.
Whilst a trade is unconfirmed the requesting party may ask the entire confirmation action to be cancelled. The cancellation message needs only to contain the information necessary to identify the transaction it affects and must match a currently unconfirmed transaction.
As in earlier cases there are a number of possible processing scenarios depending on the state of the trade within the confirmation system, namely:
If the cancellation applies to a trade that can not be located, then the sequence of messages is as follows:
If the cancellation applies to an existing unmatched trade then, it generates the following messages:
Once the confirmation system has identified the trade as unmatched it must request that the matching system remove the trade from its storage. This is done through a 'CancelTradeMatch' message.
The response to the confirmation requester completes the process by acknowledging that the confirmation request is cancelled.
If the cancellation applies to a trade which has already been matched, then the message flow is as follows:
3.3.3.3.5 Alleged.
When the confirmation provider detects an unmatched trade that has been outstanding for a period of time, it sends a copy of the transaction to the indicated counterparty. The trade is not removed from the unmatched trade set so that a subsequent new trade confirmation or modification request may match against the trade.
The 'TradeAlleged' message must provide the identification information for the transaction that is alleged against the counterparty. A confirmation service might provide additional information to suggest current unmatched trades that might be a counter transaction.
3.3.3.3.6 Unmatched.
A request for trade confirmation that remains unmatched, even after alleged trade processing, for a length of time, should be returned to the requester within a message indicating a failure to match.
The 'TradeUnmatched' notification contains identification information for the unmatched trade and may contain suggestions for possible counter trades.
3.3.3.4 Trilateral Confirmation.
This section illustrates some processes in action with a third party performing the matching process. In general the sequence of requests and responses is the same as in the bilateral case and there are no additional trilateral specific message types.
3.3.3.4.1 Normal Operation.
As before the confirmation process is begun when the trading parties send a description of the trade to the confirmation system, now external to both parties.
The presence of the third party allows the match to be taken as legally binding and it is automatically considered confirmed without the need for any further messages.
If the request contains the details of a transaction that has already been processed by the conformation service then a number of possible errors can result from the request, namely:
If the trade has already been submitted and is currently unmatched or mismatched the service should reply with a 'TradeAlreadySubmitted' message.
If the trade has already been processed and has been matched, then the service should reply with a 'TradeAlreadyMatched' message.
3.3.3.4.2 Mismatch.
The message pattern for the detection of a mismatch is the same as in the bilateral processing case.
3.3.3.4.3 Confirmation Correction.
As in the bilateral case either party can request that the details of an unmatched trade be replaced with a new definition. The series of scenarios are identical to the bilateral cases.
If no corresponding trade can be found in the confirmation system then a 'TradeNotFound' messages is generated.
The modification may be accepted and propagated to the matching engine but the trade remains unmatched.
The modification may be accepted and propagated to the matching engine resulting in a mismatched trade.
The modification may be accepted and propagated to the matching engine resulting in a matched trade.
3.3.3.4.4 Confirmation Cancellation.
As in the bilateral case either party can request that the confirmation processing for an unmatched trade be suspended and the trade definition removed from the set of unmatched trades.
If the cancellation applies to a trade that can not be located, then the sequence of messages is as follows:
If the cancellation applies to an existing unmatched trade, then it generates the following messages:
If the cancellation applies to a trade which has already been matched, then the message flow is as follows:
3.3.3.4.5 Alleged.
The process of notifying a counterparty of an alleged trade is exactly the same as in the bilateral case.
3.3.3.4.6 Unmatched.
As in the bilateral case any trades that remain unmatched, even after alleged trade processing has been attempted, are eventually removed from the unmatched trade set.
3.3.4 B2B General Processes.
3.3.4.1 Trade Status Enquiry.
At a number of points in the confirmation process it is possible that one or the other or both parties to a transaction received an unexpected error message from the other or the central service.
In order to determine the correct course of action to recover from such an error the participants need to determine the perceived state of their transaction within the other party's systems. This indicates that a simple status enquiry operation would be required to recover the necessary information.
For efficiency the trade status enquiry message should allow more than one transaction to be checked at a time (e. g. all outstanding unmatched trades, etc.). Its content model is as follows:
The response message returns each identifier with a suitable status code value (i. e. unmatched, matched, confirmed, not known, etc.).
3.3.5 A2A Trade Updates.
Most financial institutions use a collection of systems to manage their trade portfolios, usually with each system providing functionality specific to either a financial product (e. g. foreign exchange, equity, money markets, etc.) or part of the trade processing lifecycle (e. g. trading, risk management, settlement, etc.).
As consequence of this distribution of function, information must be transferred between systems in order to facilitate the administration and execution of the transactions over time. In order to maintain consistency between the master copy of a transaction and any replicas of it that may have been created in other systems any change that is applied to the master copy must be notified to the downstream systems so that they too may (if appropriate) update to reflect the change.
Changes to transactions occur for two primary reasons, namely:
Human error may have caused a discrepancy in the values which parametrically describe the transaction and may be subsequently discovered and corrected. Manual or automated processing related to behavior of the financial product may cause the transaction to change (e. g. option exercise, maturity, etc.)
There are two common ways in which notifications for transaction changes are constructed. One approach is to consider having only two message types, one to indicate the creation of a transaction and another to cause its deletion. In this style an update would be considered to be a deletion of the old transaction image immediately followed by a re-creation of the transaction its new state. Such a protocol will allow the accurate transfer of information between two systems but it fails to relate the two events making it hard to see what the actual cause of the change was.
A better approach is to have a family of messages, each customized to a specific event so that the receiver can adjust its representations of the affected information and at the same time record a connection between the affected items. Such messages can be processed 'atomically' taking the data from one consistent state to another, and at no time leaving the changes incomplete.
The following diagram shows the processing sequence shared by all such notifications. Note that in a real environment the notification message is more likely to be 'multicast' to a number of receivers rather than just one as in the example and/or may pass through some intermediate routing service.
3.3.6 A2A Generic Trade Notifications.
3.3.6.1 Trade Creation.
When a system that acts as source of trade information detects that a new trade has been created it should create and send a TradeCreated notification to inform downstream systems.
3.3.6.2 Trade Amendment.
When a system that acts as source of trade information detects that an existing trade has been modified it should create and send a TradeAmended notification to inform downstream systems.
3.3.6.3 Trade Cancellation.
When a system that acts as source of trade information detects that a previously existing trade has been cancelled it should create and send a TradeCancelled notification to inform downstream systems.
3.3.7 Novations.
3.3.7.1 Introduction.
This section looks at how the entire trade novation process can be represented as an exchange of FpML based messages between parties.
A novation is a transaction in which a ‘transferor’ transfers to a ‘transferee’, with the consent of the ‘remaining party’, all of its rights and obligations under the contract in respect to the novated amount. The effect of the agreement is that for the ‘novated amount’ (i. e. all or part of the outstanding notional amount), the old transaction between the transferor and the remaining party is terminated, and a new transaction is executed between the remaining party and the transferee with economic terms identical to those of the old transaction.
A three-way novation is between a transferee, a transferor and a remaining party. The typical four-way novation is between a transferee, a transferor, a remaining party and a related second remaining party (where remaining party had the deal with the transferor, and the second remaining party is a related company to the remaining party who assumes the deal with the transferee).
The process model for novation has been split into two sections.
During the discovery stage the parties negotiate the details of the novation (e. g. the amount to be novated and any payment required in return) and consent for the novation is obtained from each party. Assuming consent has been obtained then in the second stage the negotiated details are acted upon and the actual transfer of rights and obligations is performed.
As the negotiation today is largely conducted by telephone the first stage of the process is optional and processing can begin directly with the second stage.
3.3.7.2 The Novation Process.
Institutions ABC (the ‘transferor’) and DEF (the ‘remaining party’) have previously negotiated and confirmed a transaction of some kind. ABC now decides that it would like to novate all or part of the transaction to a third party XYZ (the ‘transferee’).
The following diagrams assume direct and reliable communication between all of the parties (possibly through some central hub).
3.3.7.2.1 Phase 1: Consent and Negotiation.
Before a novation can take place all the parties must give consent to the transfer of rights and liabilities. As the transferor is the initiator of the novation they should be the party that sends the initial messages.
The key problem is one of ensuring that all parties are aware of the acceptance or non-acceptance of their counterparts. The transferor could contact each in turn to request their consent but a more elegant solution to use multiple ‘sendTo’ and ‘copyTo’ facilities of the message header to pass requests and responses between all parties simultaneously.
A ‘NovationConsentRequest’ message passes details of the previously negotiated transaction that the transferor wishes to novate as well as describing the identity and roles of each party. As the same message is sent to both the transferee and remaining party it must contain the complete description of the underlying transaction (rather than just a reference) as the transferee will have no record of it.
Figure 1 (above) Successful Novation Consent.
The XML model of the ‘NovationConsentRequest’ would look as follows.
The required ‘transferor’, ‘transferee’, and ‘remainingParty’ elements, with the optional ‘otherRemainingParty’ element, indicate the roles in the transaction by providing references to the ‘party’ elements.
The ‘oldTransaction’ indicates the original trade between the transferor and the remaining party. This can alternately be represented by the ‘oldTransactionReference’. The ‘newTransaction’ indicates the new trade between the transferor and the remaining party (for a 3-way novation) or other remaining party (for a 4-way novation). This can alternately be represented by 'newTransactionReference'.
The ‘novationDate' is the date on which the rights, obligations etc. transfer between the parties. The 'novationTradeDate' is the date on which the parties agree that they will novate. If a 'novationTradeDate' is not specified, the 'novationTradeDate' will be deemed to be the 'novationDate'. The ‘novatedAmount’ (or ‘novatedNumberOfOptions’) by validation rule must be of the same currency and equal to or less than the appropriate notional amount in the product element within the ‘oldTransaction’ between the transferor and the remaining party.
The 'fullFirstCalculationPeriod’ is of type boolean. If its value is 'true', ‘fullFirstCalculationPeriod’ has the implicit value of “applicable” as detailed in the ISDA novation agreement. On the other hand, if its value is 'false', it has the implicit value of "inapplicable".
The 'firstPeriodStartDate' with respect to the Transferee and Remaining Party is included in the Novations message to be able to make sense of the “new transaction” without requiring reference back to the “old transaction”. The 'href' attribute references the relevant party that is making the payments.
The 'nonReliance' element corresponds to the non-Reliance section in the 2004 ISDA Novation Definitions, section 2.1 (c) (i). The element appears in the instance document when non-Reliance is applicable.
The 'creditDerivativesNotices' element should be specified if one or more of either a Credit Event Notice, Notice of Publicly Available Information, Notice of Physical Settlement or Notice of Intended Physical Settlement, as applicable, has been delivered by or to the Transferor or the Remaining Party. The type of notice or notices that have been delivered should be indicated by setting the relevant boolean element value(s) to true.
The absence of the 'creditDerivativesNotices' element means that no Credit Event Notice, Notice of Publicly Available Information, Notice of Physical Settlement or Notice of Intended Physical Settlement, as applicable, has been delivered by or to the Transferor or the Remaining Party.
If the receiving party agrees with the novation then they should respond with a ‘NovationConsentGranted’ message. The Transferor or the Transferee may include the details of a payment representing the market value of the transaction.
Since the Novation transaction itself is governed by one or more ISDA contractual definitions and supplements these are specified within the Novation structure with the following two elements: 'contractualDefinitions' and 'contractualSupplements'.
For example, for an IRS novation this will typically reference the 2004 ISDA Novation Definitions and the 2000 ISDA Definitions. For Credit Derivatives it references the 2004 ISDA Novation Definitions, the 2003 ISDA Credit Derivatives Definitions and the May Supplement. So for interest rate products, the following values might be specified:
And for credit derivatives, the following values might be specified:
If the transferee or remaining party choose not to perform the requested novation then they can respond with a ‘NovationConsentRefused’ message.
The use of this message results in three possible message flows in the case of refusal (e. g. transferee refuses, remaining party refuses or both refuse). In all cases all of the parties are aware of the outcome and can continue processing appropriately.
Figure 2 (above) Unsuccessful Novation Consent (Remaining Party Refuses)
Figure 3 (above) Unsuccessful Novation Consent (Transferee Refuses)
Figure 4 (above) Unsuccessful Novation Consent (Both Parties Refuse)
At end of the process each party should be aware of consent status of the others. Once the transferor has received two; NovationConsentGranted’ messages and has assessed the payment terms specified by the transferee they may either begin the actual novation or request an alternative novation consent with another transferee.
All of the messages exchanged during the negotiation may have passed through an intermediary (such as a confirmation provider) who may monitor message flow, but who plays no part in the initial discovery stage.
3.3.7.2.2 Transfer of Rights and Obligations.
Once all parties have consented to novate a transaction a message from any of the parties may start the transfer process.
The novation process closely resembles that for trade matching and confirmation however there are two underlying transactions that must both be matched for the novation as a whole to be confirmed.
The transferor and remaining party must agree on the details of the old transaction The transferee and remaining party must agree on the details of the new transaction Transferor and transferee need to agree on the payment.
A novation is considered confirmed when all three parties have submitted a valid ‘RequestNovationConfirmation’ message containing matching transaction descriptions. Any of the parties may initiate the matching process by sending their message first.
The data content of this message varies according to the sender, specifically:
The transferor will provide only the old transaction details (or old transaction identifier) and possible payment details if to the transferee The transferee will provide only the new transaction details and possible payment details if to the transferor The remaining party will provide both the old and new transaction details.
The XML grammar for this message does not enforce this content model, rather it is intended to be asserted by a validation rule.
The sequence of processing and messages generated by a confirmation system in response to a request for confirmation will vary according to the order of their arrival from the parties. The diagram ‘Novation model 1’ shows an example of the flows assuming that remaining party sends first followed by the transferor and finally the transferee.
Similar to the trade confirmation process, first request generates ‘NovationAlleged’ messages to inform the other parties that a novation process has been started. Once a party has sent in its confirmation request it receives status notifications until either confirmation is achieved or the process is aborted.
The main difference being that for trade confirmation the alleged messages are only sent after a timeout period.
Novation model 1(above)
Novation model 2 (above): Order as per original Trade Confirmation.
The following diagrams show the model for each status message:
The following items are not specifically addressed in the examples above:
The matching of the payment details The error conditions.
3.3.8 Terminations.
The Termination representation in FpML is used for decreasing the notional value of a trade or fully terminating the trade.
The trade element allows the details of the underlying trade to be specified. Alternately, the tradeReference can be used to reference the previously confirmed trade. The terminationTradeDate is the date on which the the parties enter into the termination transaction. The terminationEffectiveDate is the date on which the termination becomes effective.
To indicate a full termination the “full” element is used. Alternately, for partial terminations the “partial” element is used. Depending on the type of product, the amount of the decrease is specified in the decreaseInNotionalAmount or decreaseInNumberOfOptions elements. Similarly, the outstanding amount of the trade after the partial termination is specified in the outstandingNotionalAmount or outstandingNumberOfOptions elements.
A payment for the right of termination may occur.
3.3.8.1 Negotiation Messages.
FpML defines simple request/response messages for negotiating Terminations:
TradeTerminationRequest is a request message for requesting a Termination. TradeTerminationResponse is a response to the request for Termination.
3.3.8.2 Confirmation Messages.
FpML defines a request and a notification message for confirming Terminations:
RequestTerminationConfirmation is used for requesting that the contained termination be put forward for matching and confirmation. The TerminationConfirmed (notification) message is generated when a Termination is determined to be confirmed.
3.3.9 Increases.
The Increase representation in FpML is used for increasing the notional amount of a trade.
The trade element allows the details of the underlying trade to be specified. Alternately, the tradeReference can be used to reference the previously confirmed trade. The increaseTradeDate is the date on which the parties enter into the increase transaction. The increaseEffectiveDate is the date on which the increase becomes effective.
Depending on the type of product, the amount of the increase is specified in the increaseInNotionalAmount or increaseInNumberOfOptions elements. Similarly, the outstanding amount of the trade after the increase is specified in the outstandingNotionalAmount or outstandingNumberOfOptions elements.
A payment for the right of increase may occur.
3.3.9.1 Negotiation Messages.
FpML defines simple request/response messages for negotiating Increases:
TradeIncreaseRequest is a request message for requesting an Increase. TradeIncreaseResponse is a response to the request for an Increase.
3.3.9.2 Confirmation Messages.
FpML defines a request and a notification message for confirming Increases:
RequestIncreaseConfirmation is used for requesting that the contained increase be put forward for matching and confirmation. The IncreaseConfirmed (notification) message is generated when an Increase is determined to be confirmed.
3.3.10 Amendments.
The Amendment representation in FpML is used for amending the terms of a trade.
The trade element is used to represent the details of the amended trade. (Note that the use of tradeReference is insufficient for providing the amended trade details and is not allowed.) The amendmentTradeDate is the date on which the parties enter into the amendment transaction. The amendmentEffectiveDate is the date on which the amendment becomes effective.
A payment for the right of amendment may occur.
3.3.10.1 Negotiation Messages.
FpML defines simple request/response messages for negotiating Amendments:
TradeAmendmentRequest is a request message for requesting an Amendment. TradeAmendmentResponse is a response to the request for an Amendment.
3.3.10.2 Confirmation Messages.
FpML defines a request and a notification message for confirming Amendments:

Foreign trading system sequence diagram


The FpML 4.0 Schema is the first release of the specification to place a messaging framework around the product descriptions to describe the context and use to which the information is expected to be put. This section describes a small set of complex types and elements that comprise a simple message framework that is used as the basis for defining business messages suitable for use in a 'Business-to-Business' (B2B) or 'Application-to-Application' (A2A) communications process.
These definitions introduce a new set of ideas that previously could not be used in FpML because of its reliance on DTDs as the formal specification of the grammar. The following sections describe the reasoning behind the features used in the framework.
3.1.1 Why Messaging?
Increased efficiency in financial markets can only be achieved through greater automation of transaction processing and use of electronic messaging (e. g. the exchange of information directly between computer systems with as little human interaction as possible). In order to achieve this all the parties involved in such communications must agree on four things, namely:
There must be a common representation of a transaction, product or other reference data item that is accepted by all the parties.
The core FpML grammar defines a standard vocabulary for derivative based transactions and products that can form the basis of a messaging standard. As new messaging applications are considered the scope of the core grammar will need to expand to encompass the additional types of data referenced in these messages.
All the parties must have the same interpretation of the information expressed by the representation.
The work of the validation working group provides a set of rules to ensure that a product definition conforms to the market definition for that product. The FpML rule set will expand and evolve over time as new financial products and message types are added to the grammar.
All the parties must follow the same business processes and respond appropriately to any communication they receive.
To support business process the messaging working group has extended the core FpML grammar to add a framework for defining messages and their content. In this paper the MWG describes some sample business processes and shows how they could be implemented as message exchanges.
The parties must agree on the communications transport used to interconnect their businesses.
FpML does not endorse any particular messaging transport for communication. The choice of transport is left to the implementer although in practice we expect only a few to be found suitable.
Disagreement over the first three of these features will mean that FpML users will potentially have to implement, maintain and support different software systems for each FpML aware service or application that they use. Supporting multiple communications transports is typically not that difficult although it does incur additional operations costs.
3.1.2 Design Assumptions.
In order to create the messages and business processes described in this document some design assumptions had to be made, principally:
Throughout this document we have assumed that message exchanges will be carried by an asynchronous exchange of messages over a guaranteed transport, such is provided by a messaging queuing system. This form of transport is commonly used today in the finance industry (e. g. FIX engines, SwiftNet Interact 'Store and Forward', MSMQ, MQSeries, etc.).
One important consequence of this decision is that error cases related to non-delivery do not have to be considered (e. g. once accepted a guaranteed messaging queuing system WILL ALWAYS deliver a message) although the 'freshness' of the message may need to be considered (e. g. has the message been stuck in a queue waiting to be delivered for a long period of time). Similarly message queuing system can normally eliminate duplicate messages so these are not considered either.
Some of the business processes are 'long-running' in that once initiated they may remain active for a considerable time before completing (e. g. a request to confirm a trade may take many hours as it is dependent on the time of arrival of the matching trade). During this time the process may generate periodic notifications to the originator of the request and/or other parties. Such notifications will appear in the message stream set to a participant intermixed between other response messages.
An implication of such 'long-running' transactions is that the 'service provider' will contain a complex 'state'. The service should make suitable provisions to persistently record its state so that in the event of a software or hardware failure it can recover transparently without its clients having to resend any information.
Implementers attempting to construct software based on these protocols using a non queuing transport (e. g. WebServices, DCOM, CORBA) will need to implement a reliable message layer to encapsulate the current message sequences (e. g. a get/put message interface using sequence numbers to detect lost or duplicated messages and positive/negative acknowledgments). The W3C site contains links to proposals for such extensions for use with WebServices.
3.1.3 Styles of Messaging.
In general computer systems commonly use two styles of messaging to exchange information between each other, namely:
A style of exchange in which one system sends a message to the other to asking it to perform some function, the result of which is encapsulated in an appropriate response and returned.
A style of exchange in which a system sends a message describing a business event that has occurred and may be of interest to others.
The receipt of either kind of message may cause additional messages to be generated and sent as part of the processing to obtain information from other systems or to inform them of the business event underway.
3.1.4 Transport Independence.
In general, four layers of specification are contained in a XML Standard. A multi-layer approach allows implementers to choose the most appropriate technology for a given situation. It allows development and modifications within one layer without affecting or requiring changes to the others..
From the top down, the four layers are:
3.1.4.1 Business Process.
This layer specifies the way in which any business process is defined, such that is understood and executable by people and applications. A business process can be defined as a set of interrelated tasks linked to an activity that spans functional boundaries. Business processes have starting points and ending points, and they are repeatable. Examples of business processes in the derivatives domain are the affirmation process, the confirmation process, and the matching process.
The FpML 4.0 Specification models business processes in UML sequence diagrams.
3.1.4.2 Document.
This layer corresponds to the FpML document definitions. It provides a set of abstractions specific to financial derivatives but also a set of elements which are not context specific (such as “Party” and “Price”).
3.1.4.3 Messaging.
The Messaging layer addresses the need to record session and communication settings for message transport in order to enable coordination between parties in a business transaction.
The FpML 4.0 schema explicitly models ‘delivery’ related information as part of the message itself. Some transports (i. e. SOAP, ebXML, etc.) allow such information to be placed in the ‘envelope’ that surrounds the message during delivery.
Including a standard header within FpML messages increases consistency by providing a single format for delivering information regardless of the physical transport, ensures that it will be persisted if the message is archived, and allows more flexible use of features such as digital signatures.
3.1.4.4 Transport.
The Transport Layer provides a point to point connection so that one server can send messages to another server and they will arrive un-corrupted and in the correct order.
The FpML Message Architecture defines a message structure that is independent of the underlying transport protocol, such as SMTP, File Transfer Protocol (FTP), Standardized Messaging Middleware, HTTP, etc.
3.1.5 Control Over Content.
The design of a grammar must strike a balance between the degree of flexibility it allows and the complexity of its validation. An overly lax grammar allows the construction of documents that, whilst syntactically correct, may have no valid business interpretation. On the other hand a very rigid grammar may require many more grammatical productions in order to enumerate only the valid combinations.
In general it makes sense for a grammar to be strict when it can be achieved easily and without too much additional definition, and lax where flexibility is required (e. g. for proprietary extensions, etc.). In the case of the message framework the grammar provides a mechanism for ensuring that messages have the correct content that applies to them.
3.1.6 Identification of Purpose.
The receiver of a message needs to be able to determine the function that the message is invoking. In XML there are three different techniques that can be used for indicating the purpose of a message.
The FpML message framework is based on type substitution (option 3 - By Element Type) as it gives the greatest control over validation whilst allowing easy extension of the message elements. Below is a short explanation of the three techniques:
The FpML message framework is based on type substitution as it gives the greatest control over validation whilst allowing easy extension of the message elements.
3.1.6.1 By Namespace (not used by FpML)
The receiver can look at the namespace from which the element definitions have been drawn and determine from it the function requested.
Using namespaces it would be possible to create a highly extendable framework for FpML but it could lead to documents having to have every FpML element prefixed with a suitable namespace abbreviation although it may be possible to mitigate this by having the 'core' sub-schemas use no namespaces in their definition and take on the namespace of the one they are including into.
There may be further issues with related XML standards such as XPath as the namespace of the same included elements may not be consistent between documents.
3.1.6.2 By Element Name (not used by FpML)
The receiver can look at the name associated with an element within the message (either the root or one of the first level children) to determine the function requested.
To ensure that the content of the FpML element is always a valid message element the grammar would have to use either a choice group (which would limit extensibility) or a substitution group (which is extensible) to define the acceptable elements.
Whilst the root element could be used to indicate the function it is more likely that a child would be used so that all FpML documents would still have the FpML element as the root.
In this model the message header must be generic, that is suitable for any kind of message. There is no way in XML to validate that the content is suitable for the type of message content that follows.
3.1.6.3 By Element Type.
The receiver can look at the type associated with an element within the message (e. g. the root or a child).
An XML schema based instance may use type substitution to replace the content model of any element with another providing that the replacement is derived from the original. Given a framework that provides the appropriate extension points any number of new types can be derived within the name or different namespaces as necessary.
In addition through inheritance the message types can be associated with an appropriate message header content model.
3.1.7 Representing Internal Trades.
The focus of FpML to date has been on the focus description of trades for B2B purposes. At the same time many of the existing implementations have been for internal trade exchanges between systems.
Extending FpML to handle internal trade information entails adding additional elements to the current schema to hold the values needed to categorize a trade for internal purposes. There are several ways this information could be added to the schema (e. g. optional elements, alternative inheritance structures, inheritance by restriction) each with its own properties in terms of ease of validation or affects on document style.
The FpML coordination committee is currently considering the types of information that would be useful to add for internal processing (i. e. management, risk and P&L reports, etc.) and the most appropriate location within the schema to place it. These enhancements will be included in a future release of FpML but in the mean time the FpML 2.0 Architecture specification contains examples of how bespoke extensions can be made to achieve this with the FpML 4.0 schema.
3.1.8 Sequence Diagram.
A UML diagram that defines information flows. It focuses on the temporal order of the messages. Business Analysts can find sequence diagrams useful to communicate how the business currently works by showing how various business objects interact.
At the top of each diagram we see the names of actors or business objects involved in the process we want to describe. In the diagram above, Confirmation Requester and Confirmation Provider are examples of actors involved in the confirmation process.
The rectangles represent the systems involved in the process, e. g. Trading System, Confirmation System, and Matching System. However, in some other versions of sequence diagrams, the rectangles represent the actors or business objects.
Usually the actor or business object on the left side starts the interaction. Descending from each object is a line known as the “lifeline”. These lines define the time axis of the diagram. By convention, time proceeds in a downward direction. This practice is used in the FpML documentation.
The arrows between the lifelines represent messages being sent between the actors. For example, in the diagram above, RequestTradeConfirmation and TradeAlreadySubmitted are examples of messages being sent between the Confirmation Requester and the Confirmation Provider.
The white narrow rectangles that the arrows terminate on are called “activations”. For example, the rectangles between the RequestTradeConfirmation and TradeAlreadySubmitted messages in the diagram above are activations. They show the duration of the execution of a method or action in response to a message.
If you need more information regarding sequence or other UML diagrams, you can easily find UML diagram tools and tutorials by searching on the Internet.
3.2 The Message Framework.
Versions of FpML prior to 4.0 have allowed the construction of documents which contain only product definitions. The original proposal for FpML 4.0 was to force a transition directly to messages by making some message elements mandatory in every document. However after further consideration it was decided to restructure the framework to allow both styles of definition giving FpML backwards compatibility with existing solutions and the scope to expand into new B2B (or A2A) messaging applications.
3.2.1 The Base Document.
The XML schema for FpML 4.0 defines the type of the root FpML element to be 'Document', an abstract type with an empty content model save only for the standard FpML version.
The Document type serves as the base type in an inheritance scheme that provides the content model definitions for actual message types.
3.2.1.1 Data Documents.
The DataDocument type provides the same content model as the pre XML schema version of FpML allowing the construction of documents that contain only product definitions.
To make an FpML 3.0 DTD based document compatible with the FpML 4.0 schema as a DataDocument a number of changes are required to the instance document, namely:
The <!DOCTYPE> reference must be removed from the document. Where the <FpML> element defines a non-standard or institution specific default scheme attribute value it must be propagated the scheme attribute on all the appropriate elements. A reference to the FpML schema as the default namespace must be added. A reference to the W3C XML schema instance schema must be added and assigned to a namespace (e. g. 'xs' or 'xsi'). A reference to the W3C XML Digital Signature schema must be added and assigned to a namespace (e. g. 'dsig'). The type of the <FpML> element must be set to 'DataDocument'. A schemaLocation attribute may be added to the <FpML> element to hint at the location of the schema for XML tools that do not perform full 'entity resolving'.
3.2.2 The Base Message.
The two core definitions within the schema establish two abstract base classes, 'Message' and 'MessageHeader' from which all the other definitions are derived.
The 'Message' type contains a single element 'header' that holds the message identification and delivery data defined by the 'MessageHeader' type. The Message type inherits the set of attributes used to identify the FpML coding schemes by extending the Document type. The elements that comprise a 'MessageHeader' are the superset of elements required for both request/response and notification messaging styles.
The following XML schema fragment shows how these types are defined.
Not all of the elements of 'MessageHeader' are relevant to all messaging styles and its content is restricted by subsequent definitions, The role of each element is given below.
conversationId allows a message sender to create a common context for a number of separate message exchanges. messageId contains the senders unique identifier for a message. inReplyTo contains the unique identifier for the request message that is being responded to. sentBy identifies the party sending a message. sendTo identifies the parties who will receive a message and should act upon it. copyTo identities other parties who will receive a message but who do not have to act upon it. creationTimestamp describes the time when the sender created the message. expiryTimestamp defines a time after which the sender will consider the message expired. dsig:Signature allows the inclusion of W3C digital signatures within the message.
The validation element in the Message type contains the URI for a set of additional validation rules to be applied to the document during processing.
3.2.3 Requests, Responses and Notifications.
The schema derives three abstract message style types from the core messaging classes by restriction. For example a request message may not have an inReplyTo element where as it is made mandatory in a response.
The following image shows the construction of just one message style type, as with in the exception of the type of the header element, they are all the same.
In each case inheritance is used to restrict the content model of the base 'Message' type and change the type of the 'header' element. Each of these types is in turn a restriction of the generic 'MessageHeader' type with some elements either excluded or made mandatory.
3.2.4 Error Handling.
If a message cannot be processed for some technical reason such as: it has become corrupted, is not XML or is not a valid FpML message, then the receiver returns a 'MessageRejected' message to the sender. Usually the message will require manual intervention to diagnose and solve any problems. Such rejections will not be show on any of the diagrams in this paper.
If the message cannot be processed because the request is invalid, given the state of the data to which it applies, then an appropriate business level notification is returned to the sender (e. g. 'TradeNotFound', 'TradeAlreadyMatched', etc.) which in turn could be used to invoke either an automatic recovery or a manual intervention.
The design of the rejection message allows for the inclusion of multiple computer readable error descriptions. Each error is described by a collection of elements with the following interpretation:
The reasonCode element contains a numeric code (taken from a standard list) which outlines the kind of error detected.
The location element contains either a line and column number (separated by a comma) or an XPath expression. The value of the locationType attribute defines which type of location has been given. It may take the values 'lexical' or 'xpath'.
The description element contains human readable text detailing the error.
If the error is the result of a violation of a validation rule then the element validationRuleId contains the rule's identifier (e. g. 'ird-1').
The additionalData element may contain extra information useful in diagnosing the reason for failure.
Another additionalData element is associated with the MessageRejected message after the error list to allow the source for the failed XML document to be returned. A CDATA section must be placed around the source message to prevent its interpretation as XML content. The following diagram shows the design for the complete message.
In order to encapsulate one XML message within another the addition data section would have to use an XML CDATA encoding to prevent the parser from attempting to process the contents.
Message rejections may use any of the following list of error codes to indicate the reason for failure. Institutions may define their own additional error codes in the numeric range provided for user errors.
Level 100: Message transport and delivery problems.
100: Default transport error code 101: Transport unavailable 102: Unknown recipient/destination 103: Delivered to wrong recipient 104: Timeout - message delivered past expiration 105: This type of message not accepted on this transport 106: Message generation problem (e. g. data conversion) 110: Message corrupted (e. g. CRC failure) 111: Message text doesn't match digital signature hash.
Level 200: Message Integrity and Processing problems.
200: Default message processing error code 201: Lexical problem - not well-formed XML 202: Unsupported character set 203: Empty or missing content 204: Content too large 210: System unavailable 211: Message component text doesn't match digital signature hash.
Level 300: Message Validation Problems.
300: Default validation error code 301: Unknown or unsupported DTD/Schema 302: Unsupported FpML version 303: Invalid FpML message - message doesn't validate w. r.t. specified DTD/schema 304: Validation failure - unsupported message type 305: Validation failure - mandatory FpML rule (a rule we say must always be followed) 306: Validation failure - master agreement rule (a rule 2 parties agree to follow) 307: Validation failure - business policy (a rule that only the recipient has) 308: Validation failure - unsupported product/asset 310: Signature required - message content must be signed 311: Signature not accepted - problem with message signer (cert revoked, unacceptable principal, etc.)
Level 400: Business Process/Workflow Problems.
400: Default business process error code 401: Don't know - unrecognized trade 402: Suitability - trade can't be done for client or dealer suitability reasons 403: Credit - trade can't be done for credit reasons 404: Not interested - recipient chooses not to respond 410: Message arrived too late - e. g. trade no longer exists 411: Message expired - message arrived on time, but a response was not generated in time.
Level 500: User Defined.
3.3 The Message Protocols.
FpML releases to date have concentrated on defining only product structure. These products are the key part of many messages but in order to have a meaningful 'conversation' additional information is required to express the action that the message sender believes the message receiver should perform upon receipt of the message. Usually a key data structure like a product and/or party is the main component of the data that accompanies the request but for some actions additional parameters may need to be included.
3.3.1 B2B Request for Quote.
This section outlines a process for requesting and obtaining a quote for a trade prior to entering into a full contractual trade. The processes shown are based on those in use today in markets that already have an established electronic market.
Within this section well shall refer to two types of market participant, namely:
Dealers who will typically provide either a one or two way price on a given financial instrument.
Traders who will typically request and subsequently trade on prices provided by market makers.
A request for quote process could be conducted directly between a market maker and a market taker (e. g. Citigroup's 'CitiFx FX Benchmark' service) or more commonly through an electronic exchange or trading portal where several market makers may quote on the same request.
3.3.1.1 Product Specification for RFQ.
The specification of products in request for quote messages is different than for those in post trade messages. The product may be more ambiguous (e. g. it may not specify whether it is a buy or sell) and irrelevant settlement specific data can be omitted.
The 'symetric' nature of FpML product specifications creates some additional problems when considering their generalization into pre-trade messages. FpML avoids the use of simple 'buy' and 'sell' indicators by associating parties with components of a product and indicating their obligation (i. e. payer or receiver). However this approach has three problems in the pre-trade space.
In some negotiations the identity of the market taker may not be known until an agreement has been reached. FpML requires party information within a product specification to identify obligations. An identity could only be hidden if a standard 'dummy' party was allowed in negotiation messages.
A market taker may request quotes on the same product from many market makers. Given the current definitions the product definition would need to be customized for each potential recipient. Alternatively another 'dummy' party could be used to represent any maker maker.
In many negotiations the intent of the market taker is unclear and market maker provides both a buy and a sell price. The use of party to identify obligation in an FpML product means that can only have one interpretation (i. e. it is either a buy or a sale, it can never be both).
It is clear that if the current style of product definition is to be used for pre-trade then some additional conventions will need to be adopted.
Whilst it would be possible to generalize the current post trade definitions by making some of the current elements optional (so they could be excluded in RFQs) and the addition of extra optional elements of quote specific data this would lead to possibility that RFQ products could appear in post trade messages (and vice versa). Syntactically such messages would be valid and extra validation rules could need to defined to detect this semantic error.
A simpler solution would be to define a new set of product definitions specifically for pre-trade messages based on a similar framework as is used for the existing post-trade products. To implement this a new global element and base type are needed to serve as the attachment point for substituting definitions.
Given these definitions quotable versions of the existing products can be created, for example for FX:
Using this definition it is possible to express the intention of the transaction (e. g. the currencies, delivery date(s) and notional amount) whilst leaving other values (i. e. the exchange rate) out.
By keeping the quotation product definition close to that of the post-trade product (e. g. using the same element names and ordering) a responding message can be constructed by copying sections of the input message (e. g. parts of the parsed DOM tree representation) and enriching it with any required data to form the full product definition.
In order to create the example definition for FX two other definitions had to be generalized, namely QuotablePayment (from Payment) and QuotableMoney (from Money). These definitions have no direct relationship with their fully formed partners, they are simply modified copies of the original XML schema definitions, although it would be possible to define them using 'inheritance by restriction' (e. g. Money could be inherited from QuotableMoney making the amount element mandatory, Payment and QuotablePayment could be derived from some generic common base class).
3.3.1.2 Bilateral Request for Quote.
This section describes the follow of messages required in a bilateral exchange directly between a market maker and a market maker. It is assumed that market maker operates two systems to support his trading business: one to manage his communication with market takers (the quotation system) and one to record transactions (the trading system). The features of these two logical systems could reside in a single physical implementation.
The following diagram shows the sequence of message exchanges (including an additional flow for a quote update) under normal operation.
The role of each of the messages is as follows:
The market taker sends the quotation system a RequestQuote message describing the properties of the transaction in which he is interested in. The quotation system forwards the message on to the market maker for attention. The RequestQuote message uses the QuotableProduct definition to allow the product to be loosely defined.
Note that the message allows more than one product be to included to allow a number of quotes to be request simultaneously.
The market market determines either a one-way or two-way price for the product and the left of time for which that quote will be honored and returns it to the market taker via the quotation system. The market marker can quote for a subset of the requested products (or none of them by not responding at all).
The market taker accepts the quote and informs the quotation system of which quote (if the price was two-way) was taken by returning a fully formed trade (possibly containing the market takers settlement information). The quotation system forwards the acceptance to the trading system.
The quotation system should ensure that details of the trade within the QuoteAcceptance match the quotation provided earlier and that the quote is still valid.
When the trading system confirms its acceptance of the transaction by returning it in a QuoteAcceptanceConfirmed message (possibly after adding its own settlement information) the quotation system can issue TradeAffirmations to inform each party that the trade is complete.
Finally both parties confirm their acceptance of the TradeAffirmation to the quotation system to allow it to record the successful end of the transaction. (The TradeAffirmation and TradeAffirmed messages are described later)
The role of the quotation system in the above processing is to ensure that both market makers and market takers are treated fairly during the quotation process, by maintaining an audit record of message from both parties in order of arrival.
In practice the negotiation of a rate or price for a transaction may require more message exchanges than shown in the last example and there are a number of different outcomes that can occur, namely:
The market taker may choose not to act on the quote, leaving it instead to expire at the time designated by the market maker.
There are no messages to inform parties of the expiration of a quote, rather it is discovered by exception when a stale quote is acted upon (shown later).
The market maker may choose to refine a previously made quote to reflect a change in market conditions. A marker taker may be tempted to trade on the new quote (as shown in the following diagram) or may leave it to expire or be cancelled.
The market taker may re-request a quote for the same product for which he requested an earlier quotation. If the earlier quotation is still active then the request could be ignored or an update sent to original request. If the quote has expired then the normal quotation process is repeated.
A market taker may attempt to take up a quotation after it has become expired. This could be accidental or caused through synchronization issues between the systems (e. g. differences between system clocks, message delays or processing order).
3.3.2 B2B Trade Affirmation.
Within the context of FpML, trade affirmation is considered to be a notification of trade execution. An affirmation message may be sent internally or externally after the trade negotiation has completed. At this point the trade may not have been legally confirmed between the two principal parties. Trade affirmations may also be sent by a third party, e. g. a broker, to the principal parties involved.
3.3.2.1 The Affirmation Process.
There are a few basic patterns that are used in the industry today for delivery of trade affirmation messages. In all cases the workflow is basically the same. That is, a notification message is sent from a trading system (either an internal/external system or broker) followed by an acknowledgement of receipt (response message) from the message receiver. Acknowledgement of receipt is used to complement the asynchronous nature of the affirmation message and to assure that the message is not deleted from the originating system prior to being persisted in the destination system.
The following sequence diagram illustrates the process for one side of a bilateral affirmation. Both parties to the trade may be executing this process to obtain an affirmation from each other.
The affirmation message typically contains the same information that is contained in a trade confirmation message. Some details, such as settlement information, could be omitted if it is unknown to the affirmation sender. The following diagram shows the content model for a 'TradeAffirmation' message.
The response to the affirmation message indicates its acceptance and indicates the transaction to which it applies. The content model for it is as follows:
If the trade affirmation is being generated by a third party, such as a broker, then affirmation could be sought from one side and then the other, or from both simultaneously as shown in the following diagram.
The data content of the messages is the same as in the bilateral case.
3.3.3 B2B Trade Confirmation.
Today the procedure for achieving trade confirmation is manual for most OTC derivative transactions. Principally this is because the information describing the economic and legal liabilities of the transaction are embedded within a native text document and set amongst legal wording. A skilled human reader is needed to extract and compare the relevant information to determine if it matches the bank's own definition of the same deal.
This section describes how the process of trade confirmation for OTC derivatives might be achieved electronically through the exchange of a sequence of 'messages' between the two parties' computer systems. This can only take place if the parties involved have identified and 'marked-up' the salient details of the transaction using a common vocabulary of terms and data structure, such as those provided by the FpML product definitions.
3.3.3.1 The Confirmation Process.
There are two common styles for trade confirmation used by the finance industry today:
Bilateral confirmation models the current manual process where one party (the confirmation requester) creates a legal definition of the trade, signs it and sends it to the other party (the confirmation provider) who checks and then countersigns the document and returns it.
This countersigned document becomes the legally binding definition from the transaction once it has been acknowledged back to the requester.
Both parties might be attempting to obtain a confirmation from the other with this method at the same time.
Trilateral confirmation involves both parties to a trade each generating and sending a copy of the agreed upon trade to an independent third party. When the third party determines that two trades match it sends an identical trade representation to both parties to confirm the match.
The trade description generated by the confirming service becomes the legally binding trade representation.
3.3.3.2 The Matching Process.
Matching and comparison are central to confirmation process. In basic terms the matching operation is carried out as follows.
Each new request to confirm a trade results in a search of the system's set of currently unmatched trades to determine if a viable match exists. A trade is comprised of a set of data items that describe its properties and each one of these in turn falls into one of following three categories:
Identifying financial items that, if present, must exactly (or within tolerance) match (e. g. common trade identifier, trade date, maturity, product type, currencies, notional amounts, parties, etc.). Non-identifying items that should exactly (or within tolerance) match (e. g. business centers, date roll conventions, etc.). Items irrelevant to the matching process (e. g. comments).
As a result of the matching process a trade is said to be:
Matched - If all identifying and non-identifying items agree. Mismatched - If all identifying items agree but the non-identifying items differ. Unmatched - No match on identifying items could be found.
If a trade is matched then both descriptions of a trade are fully reconciled and the parties can agree that it is confirmed. If the trades contain identification information that shows that they should have matched but other significant details differ then the trade is mismatched.
If no match was found then the system must assume that it is yet to receive a copy of the trade from the other party and should add it to the set of unmatched trades and wait for the next request.
Some additional actions are required to prevent trades remaining unmatched indefinitely. There are two cases that can give rise to this situation:
The counterparty failed to enter and send his definition of the transaction (so no counter-trade exists in the system). The counterparty incorrectly identified the true party (in which case a counter-trade exists but will never match).
To attempt to recover from both cases after a trade has remained unmatched for a period of time, the system should send a message to the alleged counterparty in order to provoke them into investigating whether they need to send a new trade or correct an existing unmatched trade.
If after an additional time period the trade still remains unmatched, it should be returned as failed.
3.3.3.3 Bilateral Confirmation.
The following sections illustrate the end-to-end sequence of message exchanges required to confirm a transaction directly between two parties and the various outcomes that are possible.
3.3.3.3.1 Normal Operation.
Under normal operation we would expect a match to be found as soon as both the internally and externally generated copies of the trade are submitted to the confirmation engine.
Following a trade negotiation each side generates a 'RequestTradeConfirmation' message which is sent to the confirmation provider's system. These requests are used to initiate a trade matching operation. The structure of the request message is shown below.
If the request is valid then the trade is passed to the matching engine for processing. The 'RequestTradeMatch' message needs the same basic data content as the confirmation request message.
When a match is found the associated notification message needs to identify the two trades (via their identifiers) to the participants.
To finish the process the confirmation requestor confirms his acceptance of the match by issuing a 'ConfirmTrade' message that contains a reference to the matched trade.
The final notification of the confirmation provider reiterates the legally binding definition of the trade.
If the request contains the details for a transaction which has already been processed by the confirmation service then a number of possible errors can result in response to the request:
If a request to confirm the same trade was made previously and the trade is currently unmatched or mismatched, then the service should reply with a 'TradeAlreadySubmitted' message.
The 'TradeAlreadySubmitted' message has the following content model:
If a request to confirm the same trade was made previously and the trade was successfully matched, then the service should reply with a 'TradeAlreadyMatched' message.
The 'TradeAlreadyMatched' message has the following content model:
3.3.3.3.2 Mismatch.
If a mistake has occurred in the generation of one trade confirmation request it is possible that the system can detect that two trades should have matched (e. g. they contain a common unique trade identifier) but that they cannot due to significant differences.
The confirmation system keeps trades in its pool following the mismatch notification to allow a subsequent correction or cancellation to be applied to the trade.
The 'TradeMismatched' notification must contain the participants trade identifier as well as the identifier for the counter-trade that it should have matched, together with any other potential matches.
3.3.3.3.3 Confirmation Correction.
Whilst a trade is unconfirmed the requesting party may send new copies of the transaction data to replace the original trade details. The data content of the replacing transaction should match the same requirements as those for initiation. Transactions must be fully re-specified (rather than just the incremental differences). The content model for the 'ModifyTradeConfirmation' message which requests this is as follows:
There are a number of scenarios that can result in the processing of such messages:
The confirmation system may not be able to locate the original trade description to be modified.
The generated 'TradeNotFound' message contains the identifier for the trade the system was unable to find.
The modification may be accepted and propagated to the matching engine but the trade remains unmatched.
As with the initial matching request the 'ModifyTradeMatch' message contains a full copy of the trade.
The modification may be accepted and propagated to the matching engine resulting in a mismatched trade.
The modification may be accepted and propagated to the matching engine resulting in a matched trade.
3.3.3.3.4 Confirmation Cancellation.
Whilst a trade is unconfirmed the requesting party may ask the entire confirmation action to be cancelled. The cancellation message needs only to contain the information necessary to identify the transaction it affects and must match a currently unconfirmed transaction.
As in earlier cases there are a number of possible processing scenarios depending on the state of the trade within the confirmation system, namely:
If the cancellation applies to a trade that can not be located, then the sequence of messages is as follows:
If the cancellation applies to an existing unmatched trade then, it generates the following messages:
Once the confirmation system has identified the trade as unmatched it must request that the matching system remove the trade from its storage. This is done through a 'CancelTradeMatch' message.
The response to the confirmation requester completes the process by acknowledging that the confirmation request is cancelled.
If the cancellation applies to a trade which has already been matched, then the message flow is as follows:
3.3.3.3.5 Alleged.
When the confirmation provider detects an unmatched trade that has been outstanding for a period of time, it sends a copy of the transaction to the indicated counterparty. The trade is not removed from the unmatched trade set so that a subsequent new trade confirmation or modification request may match against the trade.
The 'TradeAlleged' message must provide the identification information for the transaction that is alleged against the counterparty. A confirmation service might provide additional information to suggest current unmatched trades that might be a counter transaction.
3.3.3.3.6 Unmatched.
A request for trade confirmation that remains unmatched, even after alleged trade processing, for a length of time, should be returned to the requester within a message indicating a failure to match.
The 'TradeUnmatched' notification contains identification information for the unmatched trade and may contain suggestions for possible counter trades.
3.3.3.4 Trilateral Confirmation.
This section illustrates some processes in action with a third party performing the matching process. In general the sequence of requests and responses is the same as in the bilateral case and there are no additional trilateral specific message types.
3.3.3.4.1 Normal Operation.
As before the confirmation process is begun when the trading parties send a description of the trade to the confirmation system, now external to both parties.
The presence of the third party allows the match to be taken as legally binding and it is automatically considered confirmed without the need for any further messages.
If the request contains the details of a transaction that has already been processed by the conformation service then a number of possible errors can result from the request, namely:
If the trade has already been submitted and is currently unmatched or mismatched the service should reply with a 'TradeAlreadySubmitted' message.
If the trade has already been processed and has been matched, then the service should reply with a 'TradeAlreadyMatched' message.
3.3.3.4.2 Mismatch.
The message pattern for the detection of a mismatch is the same as in the bilateral processing case.
3.3.3.4.3 Confirmation Correction.
As in the bilateral case either party can request that the details of an unmatched trade be replaced with a new definition. The series of scenarios are identical to the bilateral cases.
If no corresponding trade can be found in the confirmation system then a 'TradeNotFound' messages is generated.
The modification may be accepted and propagated to the matching engine but the trade remains unmatched.
The modification may be accepted and propagated to the matching engine resulting in a mismatched trade.
The modification may be accepted and propagated to the matching engine resulting in a matched trade.
3.3.3.4.4 Confirmation Cancellation.
As in the bilateral case either party can request that the confirmation processing for an unmatched trade be suspended and the trade definition removed from the set of unmatched trades.
If the cancellation applies to a trade that can not be located, then the sequence of messages is as follows:
If the cancellation applies to an existing unmatched trade, then it generates the following messages:
If the cancellation applies to a trade which has already been matched, then the message flow is as follows:
3.3.3.4.5 Alleged.
The process of notifying a counterparty of an alleged trade is exactly the same as in the bilateral case.
3.3.3.4.6 Unmatched.
As in the bilateral case any trades that remain unmatched, even after alleged trade processing has been attempted, are eventually removed from the unmatched trade set.
3.3.4 B2B General Processes.
3.3.4.1 Trade Status Enquiry.
At a number of points in the confirmation process it is possible that one or the other or both parties to a transaction received an unexpected error message from the other or the central service.
In order to determine the correct course of action to recover from such an error the participants need to determine the perceived state of their transaction within the other party's systems. This indicates that a simple status enquiry operation would be required to recover the necessary information.
For efficiency the trade status enquiry message should allow more than one transaction to be checked at a time (e. g. all outstanding unmatched trades, etc.). Its content model is as follows:
The response message returns each identifier with a suitable status code value (i. e. unmatched, matched, confirmed, not known, etc.).
3.3.5 A2A Trade Updates.
Most financial institutions use a collection of systems to manage their trade portfolios, usually with each system providing functionality specific to either a financial product (e. g. foreign exchange, equity, money markets, etc.) or part of the trade processing lifecycle (e. g. trading, risk management, settlement, etc.).
As consequence of this distribution of function, information must be transferred between systems in order to facilitate the administration and execution of the transactions over time. In order to maintain consistency between the master copy of a transaction and any replicas of it that may have been created in other systems any change that is applied to the master copy must be notified to the downstream systems so that they too may (if appropriate) update to reflect the change.
Changes to transactions occur for two primary reasons, namely:
Human error may have caused a discrepancy in the values which parametrically describe the transaction and may be subsequently discovered and corrected. Manual or automated processing related to behavior of the financial product may cause the transaction to change (e. g. option exercise, maturity, etc.)
There are two common ways in which notifications for transaction changes are constructed. One approach is to consider having only two message types, one to indicate the creation of a transaction and another to cause its deletion. In this style an update would be considered to be a deletion of the old transaction image immediately followed by a re-creation of the transaction its new state. Such a protocol will allow the accurate transfer of information between two systems but it fails to relate the two events making it hard to see what the actual cause of the change was.
A better approach is to have a family of messages, each customized to a specific event so that the receiver can adjust its representations of the affected information and at the same time record a connection between the affected items. Such messages can be processed 'atomically' taking the data from one consistent state to another, and at no time leaving the changes incomplete.
The following diagram shows the processing sequence shared by all such notifications. Note that in a real environment the notification message is more likely to be 'multicast' to a number of receivers rather than just one as in the example and/or may pass through some intermediate routing service.
3.3.6 A2A Generic Trade Notifications.
3.3.6.1 Trade Creation.
When a system that acts as source of trade information detects that a new trade has been created it should create and send a TradeCreated notification to inform downstream systems.
3.3.6.2 Trade Amendment.
When a system that acts as source of trade information detects that an existing trade has been modified it should create and send a TradeAmended notification to inform downstream systems.
3.3.6.3 Trade Cancellation.
When a system that acts as source of trade information detects that a previously existing trade has been cancelled it should create and send a TradeCancelled notification to inform downstream systems.
3.3.7 Novations.
3.3.7.1 Introduction.
This section looks at how the entire trade novation process can be represented as an exchange of FpML based messages between parties.
A novation is a transaction in which a ‘transferor’ transfers to a ‘transferee’, with the consent of the ‘remaining party’, all of its rights and obligations under the contract in respect to the novated amount. The effect of the agreement is that for the ‘novated amount’ (i. e. all or part of the outstanding notional amount), the old transaction between the transferor and the remaining party is terminated, and a new transaction is executed between the remaining party and the transferee with economic terms identical to those of the old transaction.
A three-way novation is between a transferee, a transferor and a remaining party. The typical four-way novation is between a transferee, a transferor, a remaining party and a related second remaining party (where remaining party had the deal with the transferor, and the second remaining party is a related company to the remaining party who assumes the deal with the transferee).
The process model for novation has been split into two sections.
During the discovery stage the parties negotiate the details of the novation (e. g. the amount to be novated and any payment required in return) and consent for the novation is obtained from each party. Assuming consent has been obtained then in the second stage the negotiated details are acted upon and the actual transfer of rights and obligations is performed.
As the negotiation today is largely conducted by telephone the first stage of the process is optional and processing can begin directly with the second stage.
3.3.7.2 The Novation Process.
Institutions ABC (the ‘transferor’) and DEF (the ‘remaining party’) have previously negotiated and confirmed a transaction of some kind. ABC now decides that it would like to novate all or part of the transaction to a third party XYZ (the ‘transferee’).
The following diagrams assume direct and reliable communication between all of the parties (possibly through some central hub).
3.3.7.2.1 Phase 1: Consent and Negotiation.
Before a novation can take place all the parties must give consent to the transfer of rights and liabilities. As the transferor is the initiator of the novation they should be the party that sends the initial messages.
The key problem is one of ensuring that all parties are aware of the acceptance or non-acceptance of their counterparts. The transferor could contact each in turn to request their consent but a more elegant solution to use multiple ‘sendTo’ and ‘copyTo’ facilities of the message header to pass requests and responses between all parties simultaneously.
A ‘NovationConsentRequest’ message passes details of the previously negotiated transaction that the transferor wishes to novate as well as describing the identity and roles of each party. As the same message is sent to both the transferee and remaining party it must contain the complete description of the underlying transaction (rather than just a reference) as the transferee will have no record of it.
Figure 1 (above) Successful Novation Consent.
The XML model of the ‘NovationConsentRequest’ would look as follows.
The required ‘transferor’, ‘transferee’, and ‘remainingParty’ elements, with the optional ‘otherRemainingParty’ element, indicate the roles in the transaction by providing references to the ‘party’ elements.
The ‘oldTransaction’ indicates the original trade between the transferor and the remaining party. This can alternately be represented by the ‘oldTransactionReference’. The ‘newTransaction’ indicates the new trade between the transferor and the remaining party (for a 3-way novation) or other remaining party (for a 4-way novation). This can alternately be represented by 'newTransactionReference'.
The ‘novationDate' is the date on which the rights, obligations etc. transfer between the parties. The 'novationTradeDate' is the date on which the parties agree that they will novate. If a 'novationTradeDate' is not specified, the 'novationTradeDate' will be deemed to be the 'novationDate'. The ‘novatedAmount’ (or ‘novatedNumberOfOptions’) by validation rule must be of the same currency and equal to or less than the appropriate notional amount in the product element within the ‘oldTransaction’ between the transferor and the remaining party.
The 'fullFirstCalculationPeriod’ is of type boolean. If its value is 'true', ‘fullFirstCalculationPeriod’ has the implicit value of “applicable” as detailed in the ISDA novation agreement. On the other hand, if its value is 'false', it has the implicit value of "inapplicable".
The 'firstPeriodStartDate' with respect to the Transferee and Remaining Party is included in the Novations message to be able to make sense of the “new transaction” without requiring reference back to the “old transaction”. The 'href' attribute references the relevant party that is making the payments.
The 'nonReliance' element corresponds to the non-Reliance section in the 2004 ISDA Novation Definitions, section 2.1 (c) (i). The element appears in the instance document when non-Reliance is applicable.
The 'creditDerivativesNotices' element should be specified if one or more of either a Credit Event Notice, Notice of Publicly Available Information, Notice of Physical Settlement or Notice of Intended Physical Settlement, as applicable, has been delivered by or to the Transferor or the Remaining Party. The type of notice or notices that have been delivered should be indicated by setting the relevant boolean element value(s) to true.
The absence of the 'creditDerivativesNotices' element means that no Credit Event Notice, Notice of Publicly Available Information, Notice of Physical Settlement or Notice of Intended Physical Settlement, as applicable, has been delivered by or to the Transferor or the Remaining Party.
If the receiving party agrees with the novation then they should respond with a ‘NovationConsentGranted’ message. The Transferor or the Transferee may include the details of a payment representing the market value of the transaction.
Since the Novation transaction itself is governed by one or more ISDA contractual definitions and supplements these are specified within the Novation structure with the following two elements: 'contractualDefinitions' and 'contractualSupplements'.
For example, for an IRS novation this will typically reference the 2004 ISDA Novation Definitions and the 2000 ISDA Definitions. For Credit Derivatives it references the 2004 ISDA Novation Definitions, the 2003 ISDA Credit Derivatives Definitions and the May Supplement. So for interest rate products, the following values might be specified:
And for credit derivatives, the following values might be specified:
If the transferee or remaining party choose not to perform the requested novation then they can respond with a ‘NovationConsentRefused’ message.
The use of this message results in three possible message flows in the case of refusal (e. g. transferee refuses, remaining party refuses or both refuse). In all cases all of the parties are aware of the outcome and can continue processing appropriately.
Figure 2 (above) Unsuccessful Novation Consent (Remaining Party Refuses)
Figure 3 (above) Unsuccessful Novation Consent (Transferee Refuses)
Figure 4 (above) Unsuccessful Novation Consent (Both Parties Refuse)
At end of the process each party should be aware of consent status of the others. Once the transferor has received two; NovationConsentGranted’ messages and has assessed the payment terms specified by the transferee they may either begin the actual novation or request an alternative novation consent with another transferee.
All of the messages exchanged during the negotiation may have passed through an intermediary (such as a confirmation provider) who may monitor message flow, but who plays no part in the initial discovery stage.
3.3.7.2.2 Transfer of Rights and Obligations.
Once all parties have consented to novate a transaction a message from any of the parties may start the transfer process.
The novation process closely resembles that for trade matching and confirmation however there are two underlying transactions that must both be matched for the novation as a whole to be confirmed.
The transferor and remaining party must agree on the details of the old transaction The transferee and remaining party must agree on the details of the new transaction Transferor and transferee need to agree on the payment.
A novation is considered confirmed when all three parties have submitted a valid ‘RequestNovationConfirmation’ message containing matching transaction descriptions. Any of the parties may initiate the matching process by sending their message first.
The data content of this message varies according to the sender, specifically:
The transferor will provide only the old transaction details (or old transaction identifier) and possible payment details if to the transferee The transferee will provide only the new transaction details and possible payment details if to the transferor The remaining party will provide both the old and new transaction details.
The XML grammar for this message does not enforce this content model, rather it is intended to be asserted by a validation rule.
The sequence of processing and messages generated by a confirmation system in response to a request for confirmation will vary according to the order of their arrival from the parties. The diagram ‘Novation model 1’ shows an example of the flows assuming that remaining party sends first followed by the transferor and finally the transferee.
Similar to the trade confirmation process, first request generates ‘NovationAlleged’ messages to inform the other parties that a novation process has been started. Once a party has sent in its confirmation request it receives status notifications until either confirmation is achieved or the process is aborted.
The main difference being that for trade confirmation the alleged messages are only sent after a timeout period.
Novation model 1(above)
Novation model 2 (above): Order as per original Trade Confirmation.
The following diagrams show the model for each status message:
The following items are not specifically addressed in the examples above:
The matching of the payment details The error conditions.
3.3.8 Terminations.
The Termination representation in FpML is used for decreasing the notional value of a trade or fully terminating the trade.
The trade element allows the details of the underlying trade to be specified. Alternately, the tradeReference can be used to reference the previously confirmed trade. The terminationTradeDate is the date on which the the parties enter into the termination transaction. The terminationEffectiveDate is the date on which the termination becomes effective.
To indicate a full termination the “full” element is used. Alternately, for partial terminations the “partial” element is used. Depending on the type of product, the amount of the decrease is specified in the decreaseInNotionalAmount or decreaseInNumberOfOptions elements. Similarly, the outstanding amount of the trade after the partial termination is specified in the outstandingNotionalAmount or outstandingNumberOfOptions elements.
A payment for the right of termination may occur.
3.3.8.1 Negotiation Messages.
FpML defines simple request/response messages for negotiating Terminations:
TradeTerminationRequest is a request message for requesting a Termination. TradeTerminationResponse is a response to the request for Termination.
3.3.8.2 Confirmation Messages.
FpML defines a request and a notification message for confirming Terminations:
RequestTerminationConfirmation is used for requesting that the contained termination be put forward for matching and confirmation. The TerminationConfirmed (notification) message is generated when a Termination is determined to be confirmed.
3.3.9 Increases.
The Increase representation in FpML is used for increasing the notional amount of a trade.
The trade element allows the details of the underlying trade to be specified. Alternately, the tradeReference can be used to reference the previously confirmed trade. The increaseTradeDate is the date on which the parties enter into the increase transaction. The increaseEffectiveDate is the date on which the increase becomes effective.
Depending on the type of product, the amount of the increase is specified in the increaseInNotionalAmount or increaseInNumberOfOptions elements. Similarly, the outstanding amount of the trade after the increase is specified in the outstandingNotionalAmount or outstandingNumberOfOptions elements.
A payment for the right of increase may occur.
3.3.9.1 Negotiation Messages.
FpML defines simple request/response messages for negotiating Increases:
TradeIncreaseRequest is a request message for requesting an Increase. TradeIncreaseResponse is a response to the request for an Increase.
3.3.9.2 Confirmation Messages.
FpML defines a request and a notification message for confirming Increases:
RequestIncreaseConfirmation is used for requesting that the contained increase be put forward for matching and confirmation. The IncreaseConfirmed (notification) message is generated when an Increase is determined to be confirmed.
3.3.10 Amendments.
The Amendment representation in FpML is used for amending the terms of a trade.
The trade element is used to represent the details of the amended trade. (Note that the use of tradeReference is insufficient for providing the amended trade details and is not allowed.) The amendmentTradeDate is the date on which the parties enter into the amendment transaction. The amendmentEffectiveDate is the date on which the amendment becomes effective.
A payment for the right of amendment may occur.
3.3.10.1 Negotiation Messages.
FpML defines simple request/response messages for negotiating Amendments:
TradeAmendmentRequest is a request message for requesting an Amendment. TradeAmendmentResponse is a response to the request for an Amendment.
3.3.10.2 Confirmation Messages.
FpML defines a request and a notification message for confirming Amendments:

Sistema de negociação on-line (Sequence Diagram (UML))
Descrição: Diagrama de Seqüência.
Seqüência de software de uml tech.
Tipo de diagrama:
Sequence Diagram (UML)
Diagramas relacionados.
Por Creately Templates.
Modelo de diagrama de seqüência com objeto real.
Tagged: seqüência de objetos reais, diagrama de seqüência, modelo de diagrama de seqüência.
Atualizado: 2 anos atrás.
Por Creately Templates.
Esquema de diagrama de seqüência de uma máquina ATM funcionando.
Tagged: sequência da máquina atm, modelo do diagrama de sequência, modelo de sequência.
Atualizado: 2 anos atrás.
Por Creately Templates.
Diagrama de seqüência do sistema de emissão de bilhetes on-line.
Tagged: diagrama de diagrama de sequência, sistema de emissão de bilhetes on-line, diagrama de sequência do sistema de emissão de bilhetes.
Atualizado: 2 anos atrás.
Por Creately Templates.
Modelo do diagrama de sequência do sistema ATM. Edite e crie diagramas de seqüência facilmente.
Tagged: sequência da máquina atm, modelo do diagrama de sequência, diagrama de sequência da máquina atm.
Atualizado: 2 anos atrás.
Por Creately Templates.
Modelo de diagrama de seqüência de um sistema informático.
Tagged: modelo de diagrama de sequência, modelo de sequência, modelo de sistema de computador.
Atualizado: 2 anos atrás.
Por Creately Templates.
Modelo de Diagrama de Sequência do Sistema Bancário.
Tagged: modelo de sequência, modelo do diagrama de sequência, sequência do sistema bancário.

No comments:

Post a Comment