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 selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Resultado PNADc Trimestral - 3° Trimestre/2024

A Análise Macro apresenta os resultados da PNADc Trimestral do 3º trimestre de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

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.