Robôs de investimento - Regressão linear
Published: 2021-06-29 15:25:12

#Fundamentação teórica
##Regressão Linear Simples
Trata-se de um método de aproximação de um conjunto de dados a uma reta, ou seja, dado um conjunto de dados organizados em duas dimensões como pontos, o método traça uma reta com a menor distância possível entre todos os pontos. É utilizado para modelar uma aproximação a fim de visualizar a tendência de um grupo de dados e até mesmo para projeções de tendências futuras.

A regressão linear recebe este nome por relacionar os dados em uma função linear:

{% katex %}
 Y = \alpha + \beta X + e
{% endkatex %}

Considerando o conjunto de {% katex inline %} n {% endkatex %} dados:

{% katex %}
 y_i = \alpha + \beta x_i + e_i, i = 1, ..., n
{% endkatex %}

Serão geradas {% katex inline %} n {% endkatex %} equações e {% katex inline %} n+2 {% endkatex %}. Com essas equações será necessário encontrar {% katex inline %} \alpha {% endkatex %} e {% katex inline %} \beta {% endkatex %} que minimizam a soma dos quadrados dos erros, tal que:

{% katex %}
 e_i = y_i - (\alpha + \beta x_i), i = 1, ..., n
{% endkatex %}

Obtemos então a soma dos quadrados dos erros:
{% katex %}
SQ(\alpha, \beta) = \sum^{n}_{i = 1} e^2_i = 
                \sum^{n}_{i = 1} {y_i - (\alpha + \beta x_i)}^2
{% endkatex %}

Derivando em relação a {% katex inline %} \alpha {% endkatex %} e {% katex inline %} \beta {% endkatex %}:

{% katex %}
\frac{\partial SQ(\alpha, \beta)}{\partial \alpha} = 0
\iff
\alpha = \bar{y} - \beta \bar{x}
{% endkatex %}
{% katex %}
\frac{\partial SQ(\alpha, \beta)}{\partial \beta} = 0
\iff
\beta = \frac{\sum^{n}_{i=1}x_iy_i - n \bar{x} \bar{y}}{\sum^{n}_{i=1} x_i^2 - n \bar{x}^2}
{% endkatex %}

Onde {% katex inline %} \bar{x} = \frac{\sum_{i=1}^{n} x_i}{n} {% endkatex %} e {% katex inline %} \bar{y} = \frac{\sum_{i=1}^{n} y_i}{n} {% endkatex %}

##Estratégia
A linha de regressão traçada aproxima os preços de fechamento dos candles do gráfico corrente indicando a tendência, as máximas acima e mínimas abaixo da linha de regressão indicam os pontos de compra e de venda respectivamente [2].

As linhas de offset superior e inferior é uma estratégia para aproximar e facilitar a visualização das máximas e mínimas.

![Exemplo da estratégia](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/74p4y2pu5sg5f6m688y3.png)

#Metodologia
##Indicador
O usuário deve configurar alguns parâmetros para a execução do indicador:

- Tamanho da janela: número de candles que serão considerados para o cálculo da regressão linear;
- Cor das linhas superior, de regressão e inferior;
- Estilo da linha superior, de regressão e inferior;
- Espessura da linha superior, de regressão e inferior;
- Distância da linha superior à linha de regressão;
- Distância da linha inferior à linha de regressão.

![Exemplo de entradas Indicador](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m21zz3xge6w5nzwlztgl.png)

Este indicador traça três linhas paralelas, a central é uma linha de regressão com n definido pelo tamanho da janela configurada pelo usuário, as linhas superior e inferior são cópias da linha de regressão com um offset configurado pelo usuário.

![Exemplo funcionamento](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3kwvil4n05llqc16kw7.gif)

##Expert Advisor
O expert advisor (EA) é baseado no indicador supracitado, entretanto não desenha o indicador no gráfico, apenas executa uma estratégia com base na linha de regressão traçada.

O usuário deve inserir:

- Tamanho da janela: número de candles que serão considerados para o cálculo da regressão linear;
- A quantidade de candles a serem considerados no cálculo da regressão linear;
- A distância para a linha superior;
- A distância para a linha inferior;
Stop Loss.

![Exemplo de estradas EA](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3th8ql66n566ofacfwkk.png)

O EA executa ordens de compra e de venda a mercado quando o valor de uma das linhas, superior ou inferior, é atingida pelo preço corrente, sendo que quando a linha inferior é atingida é executada uma ordem de compra e quando a linha superior é atingida uma ordem de venda é executada.

#Resultados
Foram executadas otimizações genéticas utilizando o testador de estratégias do Metatrader 5 na versão 5.00 build 2470, para otimizar o saldo máximo.

##Teste 1
**Parâmetros:**

- Ativo: WINM20
- Período gráfico: 5 minutos;
- Data: 01/05/2020 a 01/06/2020;
- Modelagem: OHLC por 1 minuto;
- Depósito inicial demonstrativo: R$10.000,00;
- Volume de negociação fixado em 1 contrato.

**Melhor retorno:**

- Lucro: R$2.739,00;
- Lucro bruto: R$4.889,00;
- Perda máxima: -R$2.160,00;
- Número de operações: 186;
- Tamanho da janela otimizado: 40 candles;
- Limite superior otimizado: 26 pontos;
- Limite inferior otimizado: 100 pontos;
- Stop loss otimizado: 100.

##Teste 2
**Parâmetros:**

- Ativo: WINM20
- Período gráfico: 5 minutos;
- Data: 01/05/2020 a 01/06/2020;
- Modelagem: OHLC por 1 minuto;
- Depósito inicial demonstrativo: R$10.000,00;
- Volume de negociação fixado em 1 contrato;
- Stop loss fixado em 200 pontos.

**Melhor retorno:**

- Lucro: R$3.141,00;
- Lucro bruto: R$4.781,00;
- Perda máxima: -R$1.640,00;
- Número de operações: 83;
- Tamanho da janela otimizado: 110 candles;
- Limite superior otimizado: 136 pontos;
- Limite inferior otimizado: 114 pontos;

##Referências
Regressão Linear Simples. In: MORETTIN, Pedro; BUSSAB, Wilton. Estatística Básica. 6. ed. São Paulo - SP: Saraiva, 2010. cap. 16, p. 449-453.

Regressão Linear. In: LEMOS, Flávio. Análise Técnica dos Mercados Financeiros: Um Guia Completo e Definitivo dos Mercados de Negociação de Ativos. São Paulo - SP: Saraiva, 2016. cap. 8.4, p. 215-217.

[MQL market - Indicador](https://www.mql5.com/pt/market/product/49702#)
[MQL market - Expert Advisor](https://www.mql5.com/pt/market/product/50016#)