Marcos Júnio Ribeiro

Taxa de juros real no Brasil

August 22, 2022 | 9 Minute Read

Nesse post vou calcular a taxa de juros real utilizando o Python dentro do Rmarkdown.A ideia aqui é reproduzir em Python o que foi feito em sala de aula utilizando o Excel. O primeiro passo é importar as bibliotecas que irei utilizar.

import numpy as np
import pandas as pd
from matplotlib.ticker import FuncFormatter

Feito isso, utilizo a função pd.read_excel do Pandas para importar os dados do meu HD. Posso ver as cinco primeiras linhas dos meus dados com a função df.head():

df.head()
##       data  selic_am  inf_esp
## 0  2001-07      1.50     6.40
## 1  2001-08      1.60     6.57
## 2  2001-09      1.32     6.53
## 3  2001-10      1.53     6.49
## 4  2001-11      1.39     5.57

A primeira variável é a data, a segunda, a Taxa de juros - Over / Selic - acumulada no mês - (% a.m.), e a terceira a Expectativa média de Inflação - IPCA - taxa acumulada para os próximos doze meses - (% a.a.).

Vamos calcular a taxa de juros real em % a.a, logo, primeiro temos que anualizar a taxa selic. Para isso vou criar uma função chamada selic_aa.


def selic_aa(selic_am):
  selic_am = np.array(selic_am)
  return ((1 + selic_am/100)**12 - 1 )*100
  

Agora estamos habilitados a fazer o cálculo da Selic a.a.

df['selic_aa'] = selic_aa(df['selic_am'])

df.head()
##       data  selic_am  inf_esp   selic_aa
## 0  2001-07      1.50     6.40  19.561817
## 1  2001-08      1.60     6.57  20.983041
## 2  2001-09      1.32     6.53  17.042118
## 3  2001-10      1.53     6.49  19.986569
## 4  2001-11      1.39     5.57  18.016159

Agora vamos criar um segunda função para calcular a taxa de juros real.


def selic_real(selic_aa, inf_esp):
  
  selic_aa = np.array(selic_aa)
  inf_esp = np.array(inf_esp)
  
  return ((1 + selic_aa/100)/ (1 + inf_esp/100) - 1)*100 

Então podemos calcular a taxa de juros real a.a.


df['selic_real'] = selic_real(df['selic_aa'], df['inf_esp'])

df.head()
##       data  selic_am  inf_esp   selic_aa  selic_real
## 0  2001-07      1.50     6.40  19.561817   12.370129
## 1  2001-08      1.60     6.57  20.983041   13.524482
## 2  2001-09      1.32     6.53  17.042118    9.867754
## 3  2001-10      1.53     6.49  19.986569   12.674025
## 4  2001-11      1.39     5.57  18.016159   11.789485

Vamos fazer um gráfico das variáveis que calculamos do jeito mais simples possível. Vamos usar o próprio Pandas para isso. Primeiro temos que colocar a data como índice do nosso conjunto de dados e em seguida vamos usar a função plot do Pandas para gerar um gráfico de linhas das variáveis que queremos.

df.set_index('data', inplace = True)

ax = df.iloc[:, 1:].plot(grid = True)
ax.yaxis.set_major_formatter(FuncFormatter(lambda y, _: f'{y}%'))

ax

Também podemos utilizar a função describe do Pandas para gerar um conjunto de estatísticas descritivas das variáveis do nosso dataframe.

df.describe()
##          selic_am     inf_esp    selic_aa  selic_real
## count  242.000000  240.000000  242.000000  240.000000
## mean     0.932769    5.179625   11.902822    6.436842
## std      0.402196    1.461931    5.383821    4.374065
## min      0.130000    2.500000    1.571202   -2.325991
## 25%      0.660000    4.135000    8.213916    3.108725
## 50%      0.910000    4.915000   11.483469    5.835355
## 75%      1.177500    5.957500   15.081995    9.228181
## max      2.080000   13.240000   28.022981   20.333660