top of page
  • Foto do escritorRafael Perez

Estratégias de Trading com Algoritmos & Case Navarra

Atualizado: 15 de out. de 2023


Seguindo a série de estudos que fizemos sobre algoritmos no mercado de energia, nós da Navarra decidimos testar algumas hipóteses de estratégias utilizando os algoritmos que estamos desenvolvendo internamente e nosso know how na gerência de dados, dado nossa experiência com o projeto Navarra Trader.

Com a definição da estratégia que vamos testar (arbitragem de um produto trimestral vs os três produtos mensais daquele trimestre) decidimos escrever mais um artigo sobre o tópico. Nesse artigo vamos falar sobre Algo Trading, algoritmos de execução e algumas estratégias que podemos utilizar no mercado de comercialização de energia. Antes de começar vamos rever os conceitos de algo trading e algoritmos de execução

Algo Trading

Algo Trading é um algoritmo computacional toma uma decisão baseada em dados e regras (delimitadas por humanos) sobre quando e em quais termos (preço, quantidade, tempo, etc.) ele pode inserir, cancelar ou alterar uma ordem de compra e venda ou até mesmo executá-la no mercado.

O impacto e necessidade de algoritmos na comercialização de energia pode ser sentido quanto maior for a liquidez do mercado, uma vez que com o aumento de complexidade (volume, preço, produtos) a necessidade de tomar decisões rápidas e corretas pesa na capacidade do operador humano. No mercado de comercialização europeu, cerca de 65% do volume negociado é feito por algoritmos de automação. Esse número ocorre pela complexidade dos mercados intradiários e por conta do aumento de energias renováveis como eólica e solar.

O uso de energias renováveis impulsionou o mercado europeu, entre outros fatores, a adotar a automação de trading via algoritmos. Aqui no Brasil quase 50%* da nossa matriz energética é composta por energia renovável, o que aumenta a complexidade na comercialização por ser uma matriz energética com "difícil previsibildade”. Com a abertura do mercado livre ocorrendo gradativamente a cada ano e a recente adoção do PLD horário, podemos prever que em pouco tempo o nosso mercado nacional começará a ficar mais complexo e líquido, promovendo a adoção de soluções para automatizar os processos de compra e venda de energia *https://www.gov.br/pt-br/noticias/energia-minerais-e-combustiveis/2021/08/energia-renovavel

Algoritmo de Execução

O papel do algoritmo de execução, como o próprio nome diz, é executar uma ordem de compra e venda pré definida pelo operador. Esse algoritmo é muito utilizado na compra e venda de produtos com alta liquidez onde o trabalho de um operador manual seria desgastante. Esses algoritmos são conhecidos por serem mais eficientes do que inteligentes, pois sua função é simplesmente executar uma ação assim que suas condições pre definidas forem validadas. Uma situação bem comum da utilização de algoritmos de execução é na identificação de arbitragens entre produtos. Vamos mostrar um exemplo que estamos desenvolvendo aqui na Navarra mais a frente neste artigo.

Estratégias de Algoritmos e Case Navarra

A seguir vamos apresentar algumas estratégias que podemos utilizar na comercialização de energia, algumas dessas estratégias são conhecidas no mercado financeiro.

  • Trading de momentum: É uma estratégia de trading que analisa a força dos movimentos de preço recentes de um ativo para determinar o melhor momento para a compra e venda do mesmo, baseado na velocidade da mudança inicial de preço e no volume negociado do ativo. É uma estratégia simples bem utilizada no mercado financeiro.

O índice de momentum é dado pela fórmula: (M = V – Vx) Onde (V) é o último preço de fechamento e (Vx) é o preço de fechamento de x período atrás


A seguir vamos mostrar a estratégia que estamos testando atualmente na Navarra com algoritmos.


  • Produto trimestral vs 3 produtos mensais CASE NAVARRA

Essa é uma estratégia de execução que estamos testando atualmente na Navarra. Escolhemos um produto trimestral e 3 produtos mensais por serem os produtos com maior liquidez no mercado, primeiro e segundo respectivamente. Quanto mais liquido e complexo for um mercado, mais sentido faz a utilização de algoritmos para automatizar processos de compra e venda de produtos (Execução de ordem). Num caso menos liquido como produtos bimestrais, há tempo suficiente para o usuário manualmente conferir a estratégia e acompanhar a variação de preço/volume no mercado e inserir a ordem de compra manualmente

Para explicar essa estratégia Trimestral vs 3 Mensais, vamos usar como exemplo um produto trimestral “1º Tri 2022” e 3 produtos mensais respectivos ao período, neste caso, Janeiro, Fevereiro e Março de 2022. Neste caso analisamos 2 cenários:

  • (1º) os melhores preços de compra do 1º trimestre vs os melhores preços de venda dos 3 meses.

  • (2º) os melhores preços de venda do 1º trimestre vs os melhores preços de compra dos 3 meses.

Todos os preços analisados tem que respeitar o principio de disponibilidade, ou seja, as respectivas ofertas possuem crédito, são do mesmo produto (Sudeste Convencional Fixo, por exemplo) e estão disponíveis para negociação no mesmo momento. Por ser uma estratégia de execução, ela analisa constantemente o livro de ofertas, avisando o usuário quando o cenário determinado ficar disponível. O cenário nesse caso considera que se tivéssemos um mercado eficiente a média do preço de venda dos 3 produtos mensais seria constantemente igual ao preço de compra do produto trimestral correspondente, independente das flutuações, assim como a média dos preços da compra vs o preço de venda também. Quando isso não acontece, podemos ter o preço de compra de 1 lado da operação sendo mais barato que o preço de venda do outro lado da operação, ou vice versa. Como são a mesma entrega na prática, a diferença do valor é o spread ganho.

Analisamos os dados da BBCE do último ano, quantas oportunidades houveram de spread no produto Sudeste Convencional Fixo entre trimestrais e 3 mensais respectivos. Considerando apenas ofertas BBCE, o resultado foi de 6 oportunidades sendo 3 delas um spread maior do que 5 reais. Lembramos aqui que esse resultado sempre depende do nível de crédito de cada empresa, então algumas empresas podem ter tido mais oportunidades e algumas empresas podem ter tido menos.

Ao longo das analises automaticas dos dados da BBCE temos os sinais sendo calculados constantemente. Por exemplo, se rodamos o código do algoritmo a cada 5 minutos, o resultado da conta (Melhor oferta de venda de Janeiro + Melhor oferta de venda de Fevereiro + Melhor oferta de venda de Março/3) - Melhor oferta de compra do 1º trimestre por exemplo, é o sinal que o algoritmo vai emitir. É possível inclusive criar um gráfico com os sinais de um dia e entender como ele se comporta. Agora se um sinal ultrapassa um valor pré estabelecido, chamos de um flag, uma bandeira. Vamos supor que tivemos um spread de R$0,50 centavos entre a média das melhores ofertas de venda e a compra do trimestral. Para a comercializadora, pode não fazer sentido alocar volume de crédito na negociação, por um lucro de apenas R$0,50 centavos por MWh. Por isso, colocamos como paremetro que só vai haver uma flag (oportunidade) quando o sinal (spread) ultrapassar o valor de R$5,00, pois ai sim é sinalizado uma flag (Via discord ou skype por exemplo) com uma oportunidade que vale a pena ser negociada, ou seja, o conjunto de negociações que contemplam aquele spread.

Ao analisar constantemente o book de ofertas, podemos indicar quando há uma oportunidade com o uso de sinais e flags, mas também monitorar quanto falta para a oportunidade ser gerada, dando a abertura para ao invés de achar, criar uma nova oportunidade. Também é plausível de se considerar que se os dados de balcão fossem levados em consideração nessa análise, haveria mais oportunidades e com maior diferença de valores.

Requerimentos Tecnicos para a Implementação de Algoritmos

A implementação do algoritmo utilizando um código computacional e o processo de backtesting são as últimas partes do processo de algo trading. O maior desafio é transformar a estratégia que escolhemos num processo computacional integrado com uma conta de trading para colocar as ordens de compra/venda, no caso do nosso mercado o acesso à BBCE.

Listamos alguns dos critérios necessários para implementar o algo trading na sua empresa: (Escrevemos um artigo , com análise de um painel do Commodities Trading Week, onde falamos somente sobre a implementação do algo trading, desde composição de equipe, know-how, ferramentas e códigos em open source)

  • Know-how para a programação de estratégias de trading através de programadores ou soluções de terceiros.

  • Acesso a plataformas de trading para conseguir colocar ordem de compra e venda. Neste caso seria acesso à BBCE, Navarra Trader ou outra plataforma da empresa.

  • Acesso aos dados em tempo real do mercado para que o algoritmo consiga monitorar as oportunidades.

  • Infraestrutura e conhecimento para rodar backtests no algoritmo antes dele ser lançado no mercado.

  • Dependendo da complexidade de algoritmos, acesso a dados históricos para backtesting.

Quando devo contratar uma solução de terceiros ou desenvolver a minha própria?

Normalmente se for um algoritmo simples (como de mapeamento de mercado), que não traz diferencial competitivo, pode ser mais interessante buscar um ISV (Independent software vendor) para desenvolvimento. Já se a estratégia que será utilizada for um forte diferencial competitivo (como um algoritmo de execução), o desenvolvimento interno ou customizado pode ser mais atrativo.

Etapa de Backtesting

Backtesting é a etapa de verificação da lógica da estratégia definida utilizando dados históricos para ver seu comportamento num cenário real. Essa etapa é primordial no desenvolvimento de qualquer algo trading. É um método seguro (sem envolver dinheiro real) para ver a execução da lógica de trading. Reforçamos que essa etapa é uma das, se nao a mais importante, no processo de desenvolvimento de um algoritmo. Os parâmetros que são observados geralmente na etapa de backtesting são: Parâmetros de performance:

  • Retorno financeiro (P&L)

  • Máx. drawdown

  • Máx. drawdown continuo

  • Máx. Lucro

  • Máx. Lucro Continuo

  • Numero de transações

  • Media de retorno financeiro por transação

  • outros dependendo do caso específico


Módulos do Código

A estrutura de código que utilizamos para rodar estratégias de execução no mercado de energia, é composta por 6 módulos: Extração das ofertas, tratamento das ofertas, recriação do livro de oferta, estratégia aplicada, resultado das oportunidades e comunicação das oportunidades. Estamos desenvolvendo a etapa de backtest ainda, quando pronta, traremos num artigo futuro mais informações.

  • Extração das ofertas: As ofertas são obtidas através da API do Navarra Trader (Nossa plataforma de dados de front office) com a BBCE, aproveitando a conexão que damos aos nossos clientes para que eles possam ver juntos suas ofertas de balcão e da BBCE na mesma tela.

*API ou “Interface de programação de aplicação'', é um conjunto de normas que possibilita a comunicação entre plataformas através de uma série de padrões e protocolos. No nosso caso, Navarra Trader - BBCE

  • Tratamento das ofertas: Ao obter e organizar todas as informações sobre as ofertas extraídas da BBCE, sempre validamos se uma oferta que já foi reconhecida como válida, ainda está válida no momento da análise. Isto serve para registrar junto a todas as ofertas, em que momento elas entraram no book e ficaram disponíveis, e em que momento elas saíram do book de ofertas, seja por terem sido retiradas ou negociadas. Junto a esta informação, também organizamos as ofertas pelo produto, período, crédito e tipo de preço.


  • Recriação do livro de ofertas: Para fazer uma real análise se uma oportunidade realmente existiu no passado ou não, olhamos não só para o dia, mas para a hora que ela apareceu, e a posterior hora que ela não apareceu mais no livro de ofertas. Dessa forma, conseguimos dizer em qualquer dia, hora e minuto do passado, qual eram exatamente as ordens que os nossos clientes tinham à disposição no livro de ofertas da BBCE. Este módulo tem extrema importância, pois previne faltas, evitando que se calcule ofertas que estavam válidas apenas no período da manhã com ofertas que estavam válidas apenas no período da noite.


  • Estratégia Aplicada: Neste momento, programamos diante de quais cenários serão gerados as oportunidades. Usando o exemplo da seção anterior, uma estratégia poderia ser sempre que o preço de compra de um produto trimestral ultrapassar a média dos preços de venda dos 3 produtos mensais respectivos ou vice-versa.


  • Resultado das Oportunidades: Neste módulo, temos a visualização de quantas oportunidades surgiram na análise, quanto tempo estas oportunidades estiveram disponíveis, quais foram as ofertas que formavam essa oportunidade, em qual sentido (compra/venda) e qual era o tamanho do spread em R$/MWh.


  • Comunicação das Oportunidades: Por último, quando rodamos o algoritmo no dia a dia, adicionamos um módulo que nos avisa em tempo real através de um bot do discord, quando uma oportunidade está ativa, para que possamos informar nossos clientes.

Com o avanço em nossos testes, pretendemos compartilhar mais informações com vocês. O maior desafio inicial é na elaboração de hipoteses de estratégias e acesso à dados para testar e executar-las. Se você tiver interesse me saber mais sobre algoritmos e automatização de comercialização fique a vontade para contactar alguem da nossa equipe. Tudo o que fazemos na Navarra é feito para e com o apoio do mercado.




138 visualizações0 comentário

Posts recentes

Ver tudo
bottom of page