Aplicando a Ciência de Dados no daytrade

 

prancheta com dados


A Ciência de Dados é um tema cada vez mais presente no universo dos investimentos. Muitos investidores, sejam eles pessoas físicas ou institucionais, já estão implementando a análise de dados em suas estratégias de trading.

Nesse artigo vou trazer um exemplo prático da aplicação da ciência de dados no mercado financeiro.

Um pouco sobre Ciência de Dados

Dados são muito importantes para tomada de decisão em qualquer área da vida, concorda comigo?

Nos últimos anos grandes empresas perceberam isso e investiram pesadamente em análise de dados como suporte à tomada de decisão, obtendo ganhos exponenciais em suas receitas.

"A ciência de dados pode revelar insights valiosos para otimizar suas estratégias de trading." - Paul Tudor Jones

Mas como eu posso me beneficiar da análise de dados na minha estratégia de trading?

A análise de dados pode ser utilizada desde a criação e otimização de estratégias como também para o gerenciamento de risco e a gestão de carteiras ou portfólios.

Como resultado ela traz informações que muitas vezes não estão presentes nos relatórios que temos a nossa disposição.

As ferramentas mais utilizadas para análise de dados

As ferramentas mais utilizadas para análise de dados são:

  • linguagens de programação Python e R. Algumas pessoas também utilizam o programa Microsoft Excel mas em número bem menor.
  • ferramentas de business intelligence (BI). Como exemplo temos o Power BI, Tableau, Qlikview, Google Data Studio, etc.
  • softwares ou aplicações web. Em Python temos as IDEs Google Colab, Atom, PyCharm, VsCode, etc.. Já para linguagem R utilizamos: R CranRStudio, RStudio Cloud.
  • bibiotecas. Bibliotecas são nada mais nada menos que repositórios com funções prontas a fim de simplificar o processo de programação. Em Python que é a linguagem mais utilizada no mundo da análise de dados, a biblioteca mais famosa se chama Pandas.
    símbolo da biblioteca pandas

Etapas para uma boa análise de dados

Quando se fala em análise de dados algumas etapas deve ser seguidas:

  1. Obtenção e armazenamento dos dados;
  2. Limpeza e transformação dos dados;
  3. Exploração e visualização dos dados;
  4. Predição e experimentação com os dados obtidos.

Obtenção e armazenamento dos dados

Aqui buscamos responder perguntas como: como obter os dados necessários para análise? E após obtê-los, onde deveríamos armazená-los?

Os dados podem estar em sites, APIs (Application Programming Interface), em arquivos em diferentes formatos. Assim iremos utilizar bibliotecas específicas para extração e armazenamento desses dados.

Limpeza e transformação dos dados

No mundo real, na maior parte das vezes encontramos os dados bagunçados.

Para ter uma análise clara e efetiva, prevenindo erros ou resultados enviesados, precisamos realizar a limpeza e tratamento dos dados.

Exploração e visualização dos dados

A visualização de dados é parte fundamental da análise de dados, para isso utilizamos diferentes tipos de gráficos de acordo com o objeto de estudo.

A linguagem Python possui bibliotecas poderosas para plotagem de gráficos, são elas:

Previsão e experimentação com os dados obtidos

Aqui utilizamos a estatística para criar uma previsão do futuro baseado nos dados que obtivemos.

Exemplo prático de análise de dados no daytrade

Pois bem feito essa breve introdução sobre o tema, mostrarei agora o exemplo de uma aplicação prática da ciência de dados no daytrade.

Objetivo da análise

O objeto do nosso estudo será o lucro acumulado por dia de operação.

Nesse exemplo vamos fazer a análise do resultado das operações de uma carteira de robôs da RobotCrowd.

Para quem não conhece, a RobotCrowd é uma Crowdsourcing para trading automatizado onde são desenvolvidos robôs de investimento com código livre pra uso não comercial.

Fonte de dados

A fonte de dados será um arquivo .csv com o histórico de todas as operações no período de 31-12-2018 à 29-01-2022, de um portfólio público da RobotCrowd disponível no site Trading Portfolios, perfazendo um total de 5806 operações.

Link para download do arquivo

Estão prontos? Então vamos por a mão massa !

Desenvolvimento do código

Para escrever e rodar nosso código em Pyhton vamos utilizar o Google Colab, mas fique a vontade caso queira utilizar outra IDE.

Primeiro vamos importar as bibliotecas necessárias:

import pandas as pdimport matplotlib.pyplot as pltimport plotly.express as pximport seaborn as sns

Agora vamos fazer a leitura do arquivo “.csv” baixado anteriormente e criar o nosso dataframe o qual vamos chamá-lo de df:

df = pd.read_csv('./DailyReturnsTable.csv')

Um dataframe nada mais é do que uma tabela com linhas e colunas, como uma planilha do excel.
 
Agora com o comando abaixo vamos exibir o arquivo:

display(df)

O resultado é essa tabela gigante:
dataframe na ide google colab
Não se preocupe com esse emaranhado de informações, pois iremos tratar os dados.
 
Primeiro vamos converter o campo “Data” para formato de data do Python:

df["Data"] = pd.to_datetime(df["Data"])

Depois criamos 3 colunas contendo somente as informações “dia”, “mês” e “ano” da operação:

df["Dia"], df["Mês"], df["Ano"] = (df["Data"].dt.day, df["Data"].dt.month, df["Data"].dt.year)

Agora criaremos um novo objeto chamado lucro_acumulado_por_dia que irá receber as informações do lucro acumulado por dia de operação, do dia “01” até o dia “31”:

lucro_acumulado_por_dia = (df.groupby(['Dia']).agg('sum'))

Exibindo o objeto criado:

display(lucro_acumulado_por_dia)

datraframe lucro acumulado por dia

Veja que temos agora um dataframe com o lucro acumulado por dia de operação.
  
Assim, por exemplo, se eu tivesse operado com esse portfólio apenas nos dias 04 (quatro) de cada mês eu teria como resultado final um lucro de R$ 3.126,00 reais.
  
Agora para facilitar a visualização e interpretação dos dados vamos plotar um gráfico de barras do objeto criado. Para isso vamos utilizar a biblioteca Matplotlib:
 
lucro_acumulado_por_dia.plot(y=["Lucro Total"], kind="bar",figsize=(9,8), color='r') plt.show()

Na imagem abaixo, apresentamos o resultado final do nosso estudo:
gráfico de histograma

Conclusão do estudo

Percebam que dado interessante, o dia 30 de cada mês foi o único dia que terminou negativo, portanto parece ser um dia ruim para este portfólio.

Daí surge a seguinte questão:

Seria interessante não operar nesse dia ou esse resultado foi apenas obra do acaso?

Para responder a essa pergunta seria interessante realizar esse teste com outros portfólios para ver se esse padrão se repete.

Essa tarefa eu vou deixar com dever de casa para vocês. 😅

Viu como a ciência de dados é incrível!

De forma muito simples e rápida obtivemos uma informação que você dificilmente encontrará nos relatórios de backtest.

Leituras recomendadas

Caso queira se aprofundar mais no assunto de análise de dados, sugiro a leitura deste livro escrito pelo criador da biblioteca Pandas:
 

Python Para Análise de Dados: Tratamento de Dados com Pandas, NumPy & Jupyter - Wes McKinney



Considerações finais

Espero que tenha gostado deste conteúdo.

Meu objetivo é passar conteúdo relevante e único para você.

Caso tenha gostado ou se ficou alguma dúvida deixe abaixo nos comentários.

Abraços e até a próxima!

Postar um comentário