Escrevo semanalmente para lhe ajudar a utilizar linguagem de programação na análise de dados financeiros, estratégias de investimento quantitativas e as melhores práticas para manipulação e visualização de dados. Para que você possa ter conhecimento e ferramentas quantitativas e reproduzir análises quantitativas de forma independente.
|
Olá Reader! Muito bom te ver por aqui. Antes de iniciar o conteúdo da 1ª edição desta newsletter, tenho alguns comentários que gostaria de compartilhar. Em primeiro lugar, muito obrigado por assinar minha newsletter! Estou muito entusiasmado por ter você aqui nesta jornada de exploração e descoberta. A cada edição, vou compartilhar insights valiosos sobre a utilização de linguagens de programação na análise de dados financeiros, estratégias de investimento quantitativas e as melhores práticas para manipulação e visualização de dados. O objetivo é te capacitar com o conhecimento e ferramentas quantitativas para que possa reproduzir análises quantitativas de forma independente. Se tiver alguma dúvida, sugestão ou tema específico que gostaria de ver abordado, não hesite em entrar em contacto. A sua opinião é fundamental para moldar o conteúdo desta newsletter. Mais uma vez, obrigado por se juntar ao projeto. Estou ansioso para partilhar este caminho de aprendizagem consigo! Antes de mergulharmos no conteúdo técnico, deixe-me compartilhar um pouco da minha jornada e o que me motiva todos os dias. Meu nome é Wilson Freitas, e há mais de 15 anos venho navegando no fascinante mundo onde programação e finanças se encontram. Sou quant e desenvolvedor, mas acima de tudo, sou alguém apaixonado por transformar dados complexos em insights poderosos. Durante essa trajetória, tive o privilégio de criar ferramentas que hoje são utilizadas por milhares de analistas e pesquisadores: rb3, bizdays (disponível tanto em R quanto Python), rbcb, python-bcb, fixedincome, copom, entre outros. Cada um desses pacotes nasceu de uma necessidade real que encontrei pelo caminho. Tudo começa com dadosE é aqui que nossa história realmente começa. Sempre acreditei que a democratização do acesso a dados financeiros é fundamental para uma análise mais rica e independente. Por isso dediquei anos desenvolvendo soluções open source que tornam simples o que antes era complexo. Porque, no final das contas, toda grande análise quantitativa começa com uma verdade fundamental: tudo começa com dados. Essa foi a motivação para criar o rb3, um pacote em R que facilita o acesso a dados públicos da B3, a bolsa de valores brasileira. O rb3 é uma ferramenta poderosa que permite baixar, organizar e analisar dados financeiros de forma eficiente. As primeiras versões do rb3 apenas faziam o parsing dos arquivos disponibilizados pela B3. Com o tempo, percebi que era necessário ir além, fazer os downloads e criar um cache dos arquivos baixados. Ao longo dos anos, o rb3 evoluiu para conceitos de engenharia de dados, incorporando boas práticas de armazenamento de dados. Hoje, o rb3 constrói uma verdadeira pipeline de dados local, que permite a manipulação eficiente de grandes volumes de dados financeiros. Eu entendi que era necessário criar uma infraestrutura robusta para lidar com os arquivos baixados, ou seja, tornar o cache eficiente. Isso envolveu a criação de funções para baixar os arquivos, garantindo que um mesmo arquivo não seja baixado mais de uma vez. Para isso, utilizei conceitos de hashing para identificar arquivos únicos e criei um banco de dados local para armazenar os metadados dos arquivos baixados. Identificando assim quais arquivos já foram baixados, se os arquivos são válidos e se já foram processados. Os arquivos baixados representam os dados crús, a forma mais bruta dos dados, ainda não têm utilidade para análise. Após o download, vem o processamento, que envolve a transformação dos dados crús em dados estruturados e organizados, prontos para análise. O processamento dos dados no rb3 envolve a leitura dos dados brutos e a criação de arquivos parquet, estruturados e otimizados. Essa etapa cria a primeira camada de dados estruturada, a camada input (input layer), que pode ser utilizada para análises, mas ainda não é a forma final dos dados. Não está otimizada para consultas rápidas. Boa parte dos arquivos é baixada em frequência diária e dessa forma, os datasets são formados por muitos arquivos pequenos, e isso não é eficiente para consultas. Para tornar as consultas mais eficientes, criei a camada staging (staging layer). Essa camada refaz as partições dos dados, agrupando os arquivos pequenos de forma que as consultas sejam mais rápidas. A maior parte das funções do rb3 retorna dados dessa camada. Como isso é feito na prática? A função O usuário não precisa se preocupar com os detalhes técnicos, apenas chama a função e obtém os dados prontos para análise. Essa função tem a seguinte assinatura:
Por exemplo, executando a função Note que o template requer o argumento Para baixar os dados de preços de ajustes diários de contratos futuros para um conjunto de datas, basta chamar a função Note que a primeira etapa faz o download dos arquivos. A quantidade de arquivos baixados depende do número de datas solicitadas. No exemplo acima, foram solicitados dados para 31 dias e, portanto, 31 arquivos foram baixados. Note ainda que nenhum arquivo foi ignorado no download (skipping 0); isso indica que de todos os arquivos solicitados, nenhum deles já havia sido baixado anteriormente. A etapa seguinte é o processamento dos dados, que envolve a criação das camadas input e staging. Dos 31 arquivos baixados, 9 estavam inválidos, ou seja, não tinham dados para a data solicitada. Esses arquivos são referentes a finais de semana e feriados, quando não há pregão na bolsa. Esses arquivos inválidos não são processados para a camada input, mas permanecem no cache, para evitar que sejam baixados novamente no futuro. Os 22 arquivos válidos foram processados e a camada input foi atualizada. A última etapa é a criação da camada staging, que é criada automaticamente sempre que a camada input é atualizada. Ao executar o comando acima, o banco de dados local do rb3 é atualizado, armazenando os metadados dos arquivos baixados e processados. Para acessar os dados e obter um dataframe para análise, basta utilizar a função Para recuperar os dados como um dataframe do R, basta utilizar a função Espero ter conseguido compartilhar com você a essência do rb3 e como ele pode transformar a maneira como você trabalha com dados financeiros brasileiros. Este pacote nasceu da paixão por democratizar o acesso à informação e pela crença de que ferramentas poderosas devem estar ao alcance de todos os analistas e pesquisadores. Lembre-se: o rb3 oferece dezenas de outros templates, cada um projetado para facilitar sua jornada analítica. Use Sua próxima grande descoberta pode estar a apenas uma função de distância! Na próxima edição, vamos explorar juntos os segredos dos datasets do Apache Arrow e como eles podem revolucionar sua manipulação de grandes volumes de dados financeiros. Será uma jornada fascinante! Um abraço e até breve, Wilson Freitas |
Escrevo semanalmente para lhe ajudar a utilizar linguagem de programação na análise de dados financeiros, estratégias de investimento quantitativas e as melhores práticas para manipulação e visualização de dados. Para que você possa ter conhecimento e ferramentas quantitativas e reproduzir análises quantitativas de forma independente.