Análise de performance com Tidyquant

O pacote Tidyquant foi criado com o objetivo de reunir os principais pacotes de análise quantitativa financeira do R em um formato tidy.  No post de hoje, apresentamos o pacote e realizamos um exemplo de análise com ações da Ibovespa.

Introdução ao Tidyquant

O pacote {tidyquant} funciona como um wrapper das funções do principais pacotes do R para análises quantitativas, isto é, ele reutiliza as funções já prontas, realizando mudanças no output para o formato do tidyverse.

Dentre os pacotes que são reunidos, encontram-se:

  • zoo: pacote criado com a finalidade de criar objetos indexados ao tempo, além de fornecer funções para a manipulação de séries no tempo.
  • xts: pacote que funciona como uma extensão do objeto 'ts' do R e também do zoo. Oferece funções para facilitar a manipulação de dados.
  • quantmod: oferece funções para coleta, tratamento e modelagem de séries financeiras. Criado com base nos objetos zoo e xts.
  • TTR: Acrônimo de "Technical Trading Rules". Criado com o objetivo de criar indicadores técnicos e facilitar a criação de janelas móveis. Também criado com base em objetos zoo e xts.
  • PerformanceAnalytics: criado para facilitar a utilização de ferramentas análises econométricas e de performance em séries financeiras. Também utiliza de objetos zoo e xts.
  • Entre outros pacotes que podem ser checados na documentação do pacote.

Todos os pacotes acima foram criados no formato zoo/xts, portanto, apesar de integráveis entre eles, não são diretamente integráveis com o universo do tidyverse, dessa forma, funções como select(), filter(), group_by(), entre outras, não podem ser utilizadas com os objetos criados/utilizados por esses pacotes.

Por isso, criou-se em torno do tidyquant, uma série de funções que possibilitou utilizar todas as funções dos universo zoo/xts, em conjunto com o tidyverse. Dentre as principais funções wrapers do tidyquant, podemos citar:

  • tq_get(): wrapers das funções de coleta de dados financeiros e econômicos - quantmod (Yahoo) , quandl (Nasdaq Data Link), alphavantager (Alpha Vantage), riing (Tiingo) e Rblpapi (Bloomberg).
  • tq_transmute e tq_mutate(): Cria e transforma as colunas já existentes de um data frame com base em uma função dos pacotes utilizados para cálculos e manipulação de dados do formato zoo e xts. O resultado é sempre um objeto tbl/data.frame.
  • tq_performance() e tq_portfolio(): Baseadas nas funções de cálculos de performance e criação de portfolio de ativos financeiros.

Abaixo, iremos seguir um workflow contendo todas essas funções, utilizando os pacotes reunidos no tidyquant.

Coleta de dados de preços

Para a coleta de preços, é possível utilizar o tq_get() para obter dados dos preços de ações e de índices através do yahoo finance, bem como também de informações disponibilizadas pelo Nasdaq Link, como por exemplo taxas de juros.

No código abaixo, capturamos os dados de três ações do Ibovespa, do próprio índice, e também da taxa de retorno do CDI mensal.

Cálculo e Manipulação

Para transformar as colunas, utilizamos a função tq_transmute() como wraper de diversas funções, podemos utilizar a função tq_mutate_fun_options() para obter uma lista de quais funções podemos utilizar.

Para conhecer sobre todas as funções, é recomendado utilizar o helper do Rstudio com ? na função.

Uma vez que tenhamos compreendido as funções, calculamos os excessos de retornos mensais das ações selecionadas e da Ibovespa, isto é, subtraímos os retornos dos ativos pelo retorno da taxa de juros livre de risco.

No código abaixo, utilizamos group_by() para juntar os tickers das ações (visto que estamos lidando com um data frame em formato long) e aplicar o cálculo de função periodReturn() do {quantmod} dentro do argumento mutate_fun. Veja que os argumentos da função podem ser utilizados dentro de tq_transmute(), como por exemplo, period = "monthly", referenciando que a função deve transformar os dados em mensais.

Quando não há mais de uma categoria do data frame, como no caso do objeto ibov_price, não é necessário a utilização de group_by().

Análise de Performance

Para realizar uma analise de performance dos dados, utilizamos a função tq_performance(). Assim, como as funções anteriores, é possível saber os wrapers dessa função através de tq_performance_fun_options().

Como exemplo, é possível calcular uma tabela de valores anualizados dos ativos.

Bem como os valores do CAPM das ações.

Com tq_portfolio(), podemos construir os retornos de um portfolio das três ações acima. Escolhemos os pesos dentro do objeto w para cada ativo.

Com a função tq_portfolio(), selecionamos as colunas de retornos, ativos e o vetor de pesos, e escolhemos wealth.index = TRUE, para que seja retornado o gross returns (retorno bruto acumulado) para obter a riqueza criada pelo portfolio no período.

Em seguida, plotamos os valores do portfolio.

_____________________________________

Se interessou? Veja mais nos nossos cursos de Finanças Quantitativas

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como criar um Agente de IA analista de dados

Agentes de IA podem automatizar a coleta, tratamento e análise de indicadores econômicos, entregando insights prontos para a tomada de decisão. Combinando modelos de linguagem (LLM) avançados com ferramentas de acesso a dados, é possível construir soluções que buscam informações em tempo real e as processam de forma autônoma. Neste post mostramos uma visão geral sobre como isso tudo funciona.

O que é e como funcionam Sistemas Multi-Agentes

Sistemas multi-agentes (MAS) representam uma nova forma de estruturar aplicações de inteligência artificial, especialmente úteis para lidar com problemas complexos e distribuídos. Em vez de depender de um único agente generalista, esses sistemas são compostos por múltiplos agentes especializados que colaboram, competem ou se coordenam para executar tarefas específicas. Neste post, explicamos o que são os MAS, seus principais componentes (como LLMs, ferramentas e processos) e as arquiteturas mais comuns.

Como criar um Agente de IA coletor de dados

A tecnologia de agentes de IA está democratizando o acesso e a manipulação de dados econômicos complexos, tornando-a acessível mesmo para aqueles sem experiência em programação. Neste post discutimos a criação de agentes de IA para coletar dados econômicos brasileiros usando linguagem natural, como "Qual é a expectativa do IPCA para 2025?".

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.