Neo traderBot

Neo traderBot

Você sabia?

A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias

Conceitos básicos

Introdução a Otimização

Leitura estimada: 13 minutos 171 views
Reproduzir vídeo

O processo de desenvolvimento de uma estratégia automatizada demanda a execução de algumas etapas importantes visando aumentar a chance de sucesso ou lucratividade de uma estratégia.

Podemos pensar neste processo como um filtro, no qual iniciamos implementando o código fonte dos algoritmos selecionados que vislumbramos ter maior chance de sucesso na exploração de padrões estatísticos na negociação de ativos. Essa implementação é um desafio inicial e os ajustes que realizamos no código fonte visando melhorar a execução do algoritmo, podem acabar gerando graus de liberdade adicionais à estratégia. Por exemplo, além de parâmetros de médias e outros indicadores próprios do setup operacional, podemos incluir outros indicadores para filtrar situações de mercado. Esses novos indicadores precisarão ser ajustados para que a estratégia funcione bem.

Além disso, é recomendável (para não dizer imprescindível) que toda estratégia tenha uma gestão de risco adequada: definição de tipos e parâmetros de stoploss e definição de alvo das operações (caso não seja feito pelas regras da própria estratégia).

E onde entra a otimização nesse processo? Tendo o código fonte da estratégia implementado, a otimização é o processo pelo qual iremos definir os valores mais apropriados para os graus de liberdade da estratégia! A seguir, vamos entender o que é a otimização para que possamos avançar para a realização prática desse processo sobre uma estratégia.

O que é Otimização?

Otimização é uma área da matemática aplicada que busca selecionar a melhor solução para um problema com relação a um determinado critério dentro de um conjunto de alternativas. Percebam que não estamos falando de problemas teóricos que podem ser modelados por expressões matemáticas lineares ou que podem ser resolvidos por cálculos diferenciais. A otimização aplica-se a problemas nos quais não é possível modelar por equações matemáticas ou ainda que tenhamos as equações não conseguimos resolvê-las pelo cálculo, mas apenas por métodos numéricos ou simulações.

Vamos contextualizar a otimização para o universo das estratégias automatizada. Percebam que não temos fórmulas matemáticas para este problema., mas podemos utilizar um simulador com dados históricos que são os registros do funcionamento do mercado, da oscilação de preços ao longo do tempo e volume negociado, no caso do modelo OHLCV. Podemos ter modelos de simulação que consideram dados com maior ou menor frequência, dados de Book de ofertas ou até informações das ordens executadas. O modelo de simulação pode se tornar mais complexo do que um simples OHLCV e o que é que vai ponderar o nível de complexidade do modelo é a disponibilidade de dados e custo computacional!

Vamos agora formalizar alguns conceitos para seguirmos adiante!

Espaço amostral

Espaço amostral ou espaço de busca…se formos estudar o assunto, cada área de conhecimento atribui um nome diferente para a mesma coisa…o que importa é o conceito!

O espaço de busca ou espaço amostral é o conjunto de todas as possibilidades de valores possíveis para cada variável de entrada do modelo, ou seja, dos graus de liberdade do nosso modelo. Para cada conjunto desse, se aplicarmos a nossa estratégia em uma janela histórica teremos um resultado diferente das operações realizadas.

Na figura acima, visualizamos do lado esquerdo exemplos de graus de liberdade de uma estratégia, que podem ser parâmetros de indicadores (quantidade de períodos de médias móveis, tipos de médias, qtde de períodos do MACD, IFR, sensibilidade de um indicador de topos e fundos), pode ser a opção de uso de uma técnica de stop (fixo, móvel) e todos os parâmetros relacionados: tamanho do stop, tamanho do passo de um stop móvel discreto, utilização de breakeven, valor do gatilho do breakeven, tamanho do alvo das operações (isso também pode ser uma variável de entrada do modelo!).

Do lado direito você visualizará o conjunto de métricas do resultado da execução do modelo de simulação para uma dada configuração de variáveis de entrada. Ou seja, temos um mapeamento do conjunto de dados de entrada para um conjunto de métricas de execução.

O modelo de simulação é que realiza o mapeamento das variáveis de entrada para  as métricas de desempenho! É nele e nos dados históricos utilizados que estão contidas as regras de simulação, bem como as restrições de execução.

Tipos de variáveis de entrada

As variáveis do espaço amostral podem ter tipos diferentes…podem ser números inteiros, por exemplo, a quantidade de períodos das médias. Podem ser números reais, tal como a sensibilidade de um indicador de topos e fundos ou tamanho inicial do stop. Podem ser dados categóricos ou booleanos: tipo de stop, com ou sem breakeven.

A importância de compreender o tipo das variáveis de entrada reside na definição do espaço amostral de cada variável de entrada que irá impactar o tamanho total do espaço amostral do problema de otimização e o esforço computacional demandado.

Calculando o tamanho do espaço amostral

Para cada variável de entrada do modelo de simulação, precisamos definir seu espaço amostral. 

No caso de variáveis que são números inteiros ou reais, precisamos definir um valor inicial, um valor final e o passo entre cada amostra. Cada variável sensibiliza o resultado em determinada magnitude, assim não faz sentido variar os valores em uma escala muito pequena. Por exemplo: não tem sentido simular um stop inicial de 1,37525 %…é muita precisão numérica….não faz diferença na otimização porque o preço de uma ação por exemplo vai até a segunda casa decimal (centavos). O que talvez seja mais factível para esta variável é estabelecer um espaço amostral entre 0,3% até 1,5%, variando em 0,1%, ou 0,2%….Isto é você quem vai decidir! Se fossemos varia entre 0,3 e 1,5% a cada 0,1%…isso daria 13 valores possíveis.

Após definir o espaço amostral para cada variável, iremos calcular a permutação de todos valores possíveis para obter o tamanho do espaço amostral….ou seja, basta multiplicarmos a quantidade de possibilidades de cada variável de entrada e realizar a soma quando uma determinada opção de variável de entrada impacte em alterações da quantidade de variáveis de entrada. Neste último caso, possivelmente estaremos trabalhando com códigos fontes distintos.

Vamos fazer um exemplo de cálculo do tamanho do espaço amostral para uma estratégia de cruzamento triplo de média, só para fixar esta parte do conteúdo. Vejas as figuras abaixo com o passo-a-passo do cálculo:

Existem algumas combinações de variáveis de entrada que não fazem sentido na permutação…por exemplo: quantidade de períodos da media rápida maior que media intermediaria. Então a quantidade de conjuntos viáveis é menor que isso…vamos supor para simplificação que seja 50% do teto calculado do tamanho do espaço amostral….estaríamos falando ainda de cerca de 7 milhões e 800 mil simulações aproximadamente.

Ainda é um número bem grande! Quanto tempo leva para rodar cada simulação? 3 segundos? E para armazenar o resultado em uma planilha? Isso é feito manualmente ou automaticamente? Vamos supor que o armazenamento das métricas da execução do modelo seja automatizado e gaste 0 segundos…se fossemos rodar todas as possibilidade seria 7,8 milhoes veze 3 segundos….o que daria: 270 dias de execução direta em uma única máquina…Isto certamente não é viável!

Ainda vamos falar dos métodos de otimização e se é necessário rodar 7,8 milhões de testes ou não em próximos documentos aqui no site…O que eu queria deixar claro aqui é que há restrições computacionais e por isso precisamos ser criteriosos em relação ao tamanho do espaço amostral que iremos mapear…por uma questão de tempo!

Função objetivo

A função objetivo ou função de custo ou função utilidade é apenas uma fórmula a qual tentaremos minimizar ou maximizar. Ou seja, iremos selecionar as configurações das variáveis de entrada do espaço amostral que minimizam ou maximizam determinada métrica de desempenho da estratégia, ou fórmula matemática.

Podemos definir otimizar o lucro líquido da estratégia ou a taxa de acerto (em outras palavras, o percentual de operações lucrativas).  Poderíamos até otimizar a relação de risco ganho da estratégia, que seria o quanto a estratégia tem de lucro médio nas operações vencedoras em relação ao prejuízo médio das operações perdedoras. O objetivo de otimização também poderia ser minimizar o drawdown da estratégia, que é o decaimento máximo de patrimônio.

A relação de métricas mais comuns como objetivo de otimização estão listadas abaixo, bem como sua definição:

Métrica Definição
Lucro bruto/líquido
Refere-se ao somatório do resultado dos trades realizados. Se positivo, significa que a soma do lucro dos trades vencedores superou a soma do prejuízo dos trades perdedores. Se negativo, significa que a soma do prejuízo dos trades perdedores superou a soma do lucro dos trades vencedores. O lucro pode ser em termos brutos (sem considerar custos de operação: taxas e emolumentos) ou líquido quando a plataforma já considera tais custos.
Taxa de acerto
Trata-se da divisão da quantidade de trades vencedores (que obtiveram lucro) pelo número total de trades realizados.
Drawdown
Refere-se ao maior decaimento de patrimônio ocorrido durante a simulação ou seja, a maior diferença entre um topo do valor de patrimônio e o próximo fundo.
Relação Risco/Ganho
É definida como a divisão entre lucro médio dos trades vencedores e prejuízo médio dos trades não vencedores. Uma sutileza do cálculo é que o lucro médio é calculado como o lucro total dos trades vencedores dividido pela quantidade de trades não perdedores, ou seja, inclui os trades que foram zerados. Já o prejuízo médio é a divisão entre o prejuízo total dos trades perdedores e a quantidade de trades perdedores. Este cálculo é mais conservador e recomendável para análise.
Fator de recuperação
É calculado dividindo o lucro final da simulação maior drawdown da simulação. Mede, portanto, a resiliência da estratégia, o quanto ele consegue recuperar de uma sequência de resultados ruins de trades.
Índice de Sharpe
A análise dessa métrica pressupõe que o retorno da estratégia é uma distribuição normal, uma vez que são utilizados apenas os dois primeiros momentos da distribuição, média e desvio padrão. É calculado como (retorno_est - retorno_livre)/desvio_pad. Onde retorno_est é o retorno da estratégia em uma determinada base temporal: anual, mensal, semanal, diária. retorno_livre é a taxa de retorno livre de risco. O usuário pode arbitrar entre usar IBOV ou taxa de juros de título do tesouro, na mesma base temporal. Por fim, desvio_pad refere-se ao desvio padrão da série de retorno da estratégia.

Imagino que você deve estar se perguntando…eu só posso otimizar uma métrica? E se eu quisesse maximizar o lucro líquido e ao mesmo tempo minimizar o Drawdown? É possível?

Sim, claro…é possível! Estamos falando neste caso de uma otimização multiobjetivo e existem algumas formas para se resolver este problema. Eu vou falar de apenas uma forma pois não é foco deste material, mas sinta-se a vontade para pequisar sobre o assunto.

Uma forma de fazer otimização multiobjetivo é criar uma função linear das métricas desejadas, atribuindo pesos para cada métrica. Estes pesos servirão tanto para ponderar as métricas mais importantes quanto para normalizar o valor das métricas que podem ser de escalas diferentes. Por exemplo, Lucro líquido é em unidades monetárias, enquanto Taxa de acerto é percentual (ou seja varia de 0 a 1). O peso atribuído a taxa de acerto deve ser tal que distribua de forma adequada a importância da otimização entre lucro líquido e taxa de acerto.

Recapitulando

Vimos neste documento os conceitos básicos sobre otimização e como eles se aplicam ao universo das estratégias automatizadas. No próximo documento veremos em maior profundidade como funcionam dois métodos de otimização: Grid Search e Algoritmos Genéticos, bem como iremos abordar questões importantes relacionadas aos dados utilizados para otimização.

Leave a Comment

CONTENTS