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

Criando um Dashboard de análise de Ações no Python

Um Dashboard é um painel de controle que consolida uma variedade de informações sobre um determinado objeto de estudo em um ou mais painéis. Ele simplifica significativamente o processo de análise de dados, oferecendo uma visão global e fácil de entender. Uma maneira simples de construir um Dashboard para acompanhar uma ação específica é utilizando duas ferramentas: Quarto e Python. Neste post, mostramos o resultado da criação de um Dashboard de Ação.

Analisando séries temporais no Python e esquecendo de vez o Excel

Séries temporais representam uma disciplina extremamente importante em diversas áreas, principalmente na economia e na ciência de dados. Mas, afinal, como lidar com esses dados que se apresentam ao longo do tempo? Neste exercício, demonstraremos como compreender uma série temporal e como o Python se destaca como uma das melhores ferramentas para analisar esse tipo de dado.

Cálculo do Retorno Econômico de uma Política Pública

Como podemos traduzir os efeitos de uma política pública para valores monetários? Essa é uma tarefa árdua que requer algumas premissas, entretanto, com métodos bem definidos, é possível obter estimativas precisas dos ganhos e os gastos de uma política pública.

Neste exercício, demonstramos tal método usando a política hipotética "Mãe Paranense”, um conjunto de ações que visam reduzir a mortalidade materna e infantil no estado. Usamos a linguagem R como ferramenta para analisar os 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.