As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Calcule o value at risk (VaR – valor em risco) usando os serviços da AWS
Criado por Sumon Samanta (AWS)
Resumo
Esse padrão descreve como implementar um sistema de cálculo de valor em risco (VaR) usando os serviços da AWS. Em um ambiente on-premises, a maioria dos sistemas VaR usa uma infraestrutura grande e dedicada e um software de agendamento de rede interno ou comercial para executar processos em lote. Esse padrão apresenta uma arquitetura simples, confiável e escalável para lidar com o processamento de VaR na nuvem AWS. Ele cria uma arquitetura sem servidor que usa o Amazon Kinesis Data Streams como um serviço de streaming, o Amazon Simple Queue Service (Amazon SQS) como um serviço gerenciado de filas, a Amazon como um serviço de cache e o ElastiCache AWS Lambda para processar pedidos e calcular riscos.
O VaR é uma medida estatística que os negociadores e gerentes de risco usam para estimar a perda potencial em seu portfólio além de um certo nível de confiança. A maioria dos sistemas VaR envolve a execução de um grande número de cálculos matemáticos e estatísticos e o armazenamento dos resultados. Esses cálculos exigem recursos computacionais significativos, portanto, os processos em lote do VaR precisam ser divididos em conjuntos menores de tarefas computacionais. É possível dividir um lote grande em tarefas menores porque essas tarefas são, em sua maioria, independentes (ou seja, os cálculos de uma tarefa não dependem de outras tarefas).
Outro requisito importante para uma arquitetura VaR é a escalabilidade computacional. Esse padrão usa uma arquitetura com tecnologia sem servidor que aumenta ou diminui automaticamente com base na carga computacional. Como a demanda de computação em lote ou on-line é difícil de prever, o escalonamento dinâmico é necessário para concluir o processo dentro do cronograma imposto por um Acordo de Serviço (SLA). Além disso, uma arquitetura com custo otimizado deve ser capaz de reduzir a escala verticalmente para cada recurso computacional assim que as tarefas desse recurso forem concluídas.
Os serviços da AWS são adequados para cálculos de VaR porque oferecem capacidade de computação e armazenamento escalável, serviços de análise para processamento de forma econômica e diferentes tipos de agendadores para executar seus fluxos de trabalho de gerenciamento de riscos. Além disso, você paga apenas pelos recursos de computação e armazenamento que usa na AWS.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Arquivos de entrada, que dependem dos requisitos da sua empresa. Um caso de uso típico envolve os seguintes arquivos de entrada:
Arquivo de dados de mercado (entrada para o mecanismo de cálculo do VaR)
Arquivo de dados comerciais (a menos que os dados comerciais venham por meio de um fluxo).
Arquivo de dados de configuração (modelo e outros dados estáticos de configuração)
Arquivos de modelo do mecanismo de cálculo (bibliotecas quantitativas)
Arquivo de dados de séries temporais (para dados históricos, como o preço das ações nos últimos cinco anos)
Se os dados de mercado ou outras informações chegarem por meio de um stream, o Amazon Kinesis Data Streams será configurado e as permissões do Amazon Identity and Access Management (IAM) serão configuradas para gravar no stream.
Esse padrão cria uma arquitetura na qual os dados comerciais são gravados de um sistema de negociação em um fluxo de dados do Kinesis. Em vez de usar um serviço de streaming, você pode salvar os dados de negociação em pequenos lotes, armazená-los em um bucket do Amazon Simple Storage Service (Amazon S3) e invocar um evento para começar a processar os dados.
Limitações
O sequenciamento do fluxo de dados do Kinesis é garantido em cada fragmento, portanto, não é garantido que as ordens de negociação gravadas em vários fragmentos sejam entregues na mesma ordem das operações de gravação.
Atualmente, o limite de runtime do AWS Lambda é de 15 minutos. (Para obter mais informações, consulte as perguntas frequentes do Lambda
.)
Arquitetura
Arquitetura de destino
O diagrama de arquitetura a seguir mostra os serviços e fluxos de trabalho da AWS para o sistema de avaliação de risco.

O diagrama ilustra o seguinte:
As negociações chegam do sistema de gerenciamento de pedidos.
A função do Lambda de compensação da posição do tíquete processa os pedidos e grava mensagens consolidadas para cada ticker em uma fila de risco no Amazon SQS.
A função Lambda do mecanismo de cálculo de risco processa as mensagens do Amazon SQS, realiza cálculos de risco e atualiza as informações de lucros e perdas (PnL) do VaR no cache de risco na Amazon. ElastiCache
A função Lambda de leitura de ElastiCache dados recupera os resultados de risco e os armazena em um banco de dados ElastiCache e em um bucket do S3.
Para obter mais informações sobre esses serviços e etapas, consulte a seção Épicos.
Automação e escala
Você pode implantar toda a arquitetura usando o AWS Cloud Development Kit (AWS CDK) ou os CloudFormation modelos da AWS. A arquitetura pode suportar tanto o processamento em lote quanto o processamento intradiário (em tempo real).
O dimensionamento é incorporado à arquitetura. À medida que mais negociações são gravadas no fluxo de dados do Kinesis e aguardam para serem processadas, funções adicionais do Lambda podem ser invocadas para processar essas negociações e, em seguida, podem reduzir a escala verticalmente após a conclusão do processamento. O processamento por meio de várias filas de cálculo de risco do Amazon SQS também é uma opção. Se for necessária uma ordenação ou consolidação estritas nas filas, o processamento não poderá ser paralelizado. No entanto, para um end-of-the-day lote ou um mini lote intradiário, as funções Lambda podem processar paralelamente e armazenar os resultados finais em. ElastiCache
Ferramentas
Serviços da AWS
O Amazon Aurora MySQL-Compatible Edition é um mecanismo de banco de dados relacional totalmente gerenciado e compatível com MySQL que ajuda você a configurar, operar e dimensionar implantações do MySQL. Esse padrão usa o MySQL como exemplo, mas você pode usar qualquer sistema RDBMS para armazenar dados.
ElastiCacheA Amazon ajuda você a configurar, gerenciar e escalar ambientes distribuídos de cache na memória na nuvem da AWS.
O Amazon Kinesis Data Streams ajuda a coletar e processar grandes fluxos de registros de dados em tempo real.
O AWS Lambda é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
O Amazon Simple Queue Service (Amazon SQS) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
Código
Esse padrão fornece um exemplo de arquitetura para um sistema VaR na Nuvem AWS e descreve como você pode usar funções do Lambda para cálculos de VaR. Para criar suas funções do Lambda, consulte os exemplos de código na documentação do Lambda. Para obter ajuda, entre em contato com o AWS Professional Services
Práticas recomendadas
Mantenha cada tarefa de computação do VaR tão pequena e leve quanto possível. Experimente diferentes números de negociações em cada tarefa de computação para ver qual delas é a mais otimizada para tempo e custo de computação.
Armazene objetos reutilizáveis na Amazon. ElastiCache Use uma estrutura como o Apache Arrow para reduzir a serialização e a desserialização.
Considere a limitação de tempo do Lambda. Se você acha que suas tarefas de computação podem exceder 15 minutos, tente dividi-las em tarefas menores para evitar o tempo limite do Lambda. Se isso não for possível, considere uma solução de orquestração de contêiner com o AWS Fargate, o Amazon Elastic Container Service (Amazon ECS) e o Amazon Elastic Kubernetes Service (Amazon EKS).
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Comece a escrever negociações. | Negociações novas, liquidadas ou parcialmente liquidadas são gravadas do sistema de gerenciamento de pedidos em um fluxo de risco. Esse padrão usa o Amazon Kinesis como serviço de streaming gerenciado. O hash do ticker da ordem comercial é usado para colocar ordens comerciais em vários fragmentos. | Amazon Kinesis |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Inicie o processamento de riscos com o Lambda. | Execute uma função do AWS Lambda para os novos pedidos. Com base no número de pedidos de negociação pendentes, o Lambda será escalado automaticamente. Cada instância do Lambda tem um ou mais pedidos e recupera a posição mais recente de cada ticker da Amazon. ElastiCache (Você pode usar uma ID CUSIP, um nome de curva ou um nome de índice para outros produtos derivados financeiros como uma chave para armazenar e recuperar dados.) ElasticCache Em ElastiCache, a posição total (quantidade) e o par de valores-chave < ticker, posição líquida >, em que a posição líquida é o fator de escala, são atualizados uma vez para cada ticker. | Amazon Kinesis, AWS Lambda, Amazon ElastiCache |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Grave mensagens consolidadas na fila de risco. | Escrever a mensagem em uma fila. Esse padrão usa o Amazon SQS como um serviço gerenciado de filas. Uma única instância do Lambda pode receber um pequeno lote de ordens comerciais a qualquer momento, mas gravará somente uma única mensagem para cada ticker no Amazon SQS. Um fator de escala é calculado: (posição líquida antiga + posição atual) /posição líquida antiga. | Amazon SQS, AWS Lambda |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Inicie os cálculos de risco. | A função do Lambda para o mecanismo de risco do lambda é invocada. Cada posição é processada por uma única função do Lambda. No entanto, para fins de otimização, cada função do Lambda pode processar várias mensagens do Amazon SQS. | Amazon SQS, AWS Lambda |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Recupere e atualize o cache de riscos. | O Lambda recupera a posição líquida atual de cada ticker de. ElastiCache Ele também recupera uma matriz de lucros e perdas (PnL) do VaR para cada ticker de. ElastiCache Se a matriz PnL já existir, a função do Lambda atualiza a matriz e o VaR com uma escala, que vem da mensagem do Amazon SQS escrita pela função netting Lambda. Se a matriz PnL não estiver ativada ElasticCache, um novo PnL e VaR serão calculados usando dados simulados da série de preços do ticker. | Amazon SQS, AWS Lambda, Amazon ElastiCache |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Armazene os resultados de risco. | Depois que os números VaR e PnL são atualizados ElastiCache, uma nova função Lambda é invocada a cada cinco minutos. Essa função lê todos os dados armazenados ElastiCache e os armazena em um banco de dados compatível com o Aurora MySQL e em um bucket do S3. | AWS Lambda, Amazon ElastiCache |