Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org.
Modelando o Mercado Financeiro com risco
A sua principal função é a intermediação de recursos financeiros: de quem tem poupança para quem quer investir.
É um setor com inúmeros agentes, pessoas, bancos, corretoras de investimento, corretoras de seguros, empresas de uma maneira geral.
Qual a dimensão do setor na economia Brasileira?
Na página das Contas Nacionais do IBGE, podemos encontrar a seguinte tabela:
Tabela 13.1 - Participação no valor adicionado bruto a preços básicos, segundo os grupos de atividades - 2000-2023
Nessa Tabela vemos que o setor Atividades financeiras, de seguros e serviços relacionados respondia por 7,5% do valor adicionado bruto a preços de mercado em nossa economia.
Acontece que esse setor é muito volúvel a coisas como humores, sentimentos como pessimismo ou otimismo, notícias políticas e interesses não confessos. Enfim, é um setor muito dependente das expectativas dos agentes econômicos. E é disso que vamos tratar aqui, relacionando o lado financeiro do modelo IS/LM à Crise de 2008.Para isso vamos apresentar dois conceitos: taxa real de juros e prêmio de risco.
Taxa real de juros
O mercado financeiro trabalha com taxas nominais de juros. Isso quer dizer que se tomarmos $100,00 emprestado a uma taxa de 10%, vamos pagar, no próximo ano, $110,00.
Isso independentemente de como a inflação vai se comportar no período. Geralmente, não fazemos contratos nos bancos com cláusulas de inflação. Por isso dizemos que a transação se dá em termos nominais apenas.
Vamos dar uma olhada com estão essas taxas nominais. Para isso vamos usar as taxas médias de juros praticadas no Brasil e informadas pelo Banco Central. Caminho:
Séries Temporais (SGS) - Sistema Gerenciador de Séries Temporais
Estatísticas de Crédito
Taxas de juros
Taxas de juros - % a. m.
Taxa de juros
Taxa média de juros - Total
Consultar Séries
Taxa média mensal de juros das operações de crédito - Total (código 25433)
Visualizar gráfico
Salvar gráfico: clicar com o lado direito do mouse.
Esse arquivo é geralmente salvo em PNG (Portable Network Graphic)
Ou, no R. Para tanto vamos usar o pacote de raspagem rbcb, desenvolvido por Wilson Freitas.
library(rbcb) # Aqui carregamos o pacote.juros_total_df <-get_series(c(juros_mensal_total =25433),# Usamos a função get_series.start_date ="2010-01-01") # Iniciamos a raspagem de dados a partir de 2010.head(juros_total_df) # Monstrando as primeiras linhas da tabela (data frame).
Explicando o código: Estamos usando a função get_series() do pacote rbcb. O primeiro argumento especifica a séries a ser pegada e já lhe da um nome, “juros_total”.
Vamos fazer o gráfico.
plot(juros_total_df$date, juros_total_df$juros_mensal_total,type ="l", # linhacol ="blue",lwd =2,xlab ="Ano",ylab ="Taxa de juros (%)",main ="Taxa média de juros mensal – Brasil")
Explicando o código: note o uso do operador “$” para selecionar uma coluna do data frame juros_br.
Mas esses são juros nominais. No nosso dia a dia, o que nos interessa realmente são os juros reais, aqueles relacionados a ganhos em termos reais. Por reais, entendam quantidades e não apenas valores em dinheiro. Por exemplo, se eu tenho dinheiro hoje para comprar um carro popular, posso desejar aplicar o dinheiro visando, com os juros em termos reais, adquirir um carro melhor no próximo ano.
Vamos trabalhar com esse exemplo para entender melhor o conceito de juros reais.
Exemplo juros reais
Imagine que você tem hoje R$ 90 mil para adquirir um carro (pelado). Contudo, você pondera: se eu aplicar o dinheiro correspondente a um carro popular hoje, com os juros ganhos vou poder comprar um carro com mais opcionais amanhã. Você almeja um ganho real:
Você “aplica” um carro:
1 carro
E espera ganhar amanhã mais que um carro (popular):
\((1 + r_t)\)carro
Em que \(r_t\) são ganhos ou juros reais. No caso, os opcionais.
No mercado financeiro, não são oferecidos juros reais. Então, você faz a aplicação na esperança de que os juros nominais (\(i_t\)) sejam suficientes para, a) cobrir um eventual aumento no preço do automóvel e b) permitir um ganho a mais no valor exatamente dos opcionais que você deseja.
Ou seja, a aplicação financeira que te interessa é uma que nos leva à seguinte equação:
\[
(1 + r_t) = (1 + i_t)\frac{p_t}{p_{t+1}^e}
\]
Os índices preços aparecem na equação acima justamente para dar conta de uma eventual variação de preço do carro.
Essa relação entre a taxa nominal e a taxa real de juros foi inicialmente proposta pelo economista norte-americano, Irving Fisher (1867-1947) Evidencia como os juros nominais são afetados pela inflação.
Dados sobre a taxa real de juros
Vamos deduzir a taxa real de juros a partir dos dados do Banco Central no R.
Primeiro, vamos pegar as duas variáveis, taxa nominal de juros (que vamos chamar de “tx_juros_mensal”) e inflação (que vamos chamar de “ipca”).
tx_juros_mensal <-get_series(25433, start_date ="2000-01-01") # série com os juros nominal mensal.ipca <-get_series(433, start_date ="2000-01-01") # série com a inflação.
Explicando o código: Estamos usando a função get_series() do pacote rbcb. Como argumentos passamos o código da série e sua data de início.
Agora vamos usar o fantástico pacote para ciência de dados dplyr, desenvolvido por Hadley Alexander Wickham (1979) para renomear as colunas, já que vieram com os códigos como nomes.
Explicando o código: atentem para o uso do operador pipe (%>%). Tal operador pega nossa base de dados e a transforma conforme nossa conveniência. Como que a canaliza para um resultado de nosso interesse (pipe em português pode ser traduzido como duto). Usamos a função rename() para renomear nossas colunas.
Vamos juntar as duas colunas, taxa de juros e inflação em um data frame. Vamos fazer a junção usando o a função left_join() do pacote dplyr.
tx_real_brasil_df <-left_join(tx_juros_mensal, ipca, by ="date")
Explicando o código: vejam a importância dessa função left_join(). Organiza uma tabela que está sendo criada (tx_real_brasil_df) tendo por base a tabela tx_juros_mensal. Ela é quem fica do lado esquerdo da tabela e acrescentamos outra, no caso, a ipca. Notem também que o elemento de concatenação é exatamente a coluna com os meses (date).
Vamos acrescentar ao data frame tx_real_brasil_df uma coluna com a taxa real de juros (taxa nominal - inflação). Vamos usar mais uma função do dplyr, a mutate().
Explicando o código: a função mutate() acrescenta mais uma coluna ao data frame. A coluna a ser criada é exatamente a subtração entre as colunas tx_juros_mensal e “ipca”.
Agora vamos fazer um gráfico só com a taxa real de juros, usando o pacote ggplot2. Esse pacote foi também desenvolvido por Hadley Wickham e é uma rica suíte para gráficos.
library(ggplot2)ggplot(tx_real_brasil_df, aes(x = date, y = taxa_real_mensal)) +geom_line(linewidth =1, color="darkgreen") +geom_hline(yintercept =0, linetype ="dashed", color="red") +labs(title ="Taxa Real de Juros no Brasil",subtitle ="Taxa nominal menos inflação (IPCA)",x ="Ano",y ="%" ) +theme_minimal()
Vamos fazer agora um gráfico mais rico em informações. Seria o correspondente à Figura 6.2, da página 123 do Blanchard. No próximo gráfico, vamos usar os pacotes dplyr e tidyr.
# Bibliotecas que usaremos.library(dplyr) # Vamos usar a função pipe (%>%).library(tidyr) # Vamos usar a função pivot_longer().tx_real_brasil_df %>%# A partir do data frame mais completo.pivot_longer( # Reestruturando o data frame para facilitar a operação do ggplot.cols =c(tx_juros_mensal, ipca, taxa_real_mensal),names_to ="serie",values_to ="valor") %>%ggplot(aes(date, valor, color = serie)) +geom_line() +labs(title ="Juros, inflação e taxa real no Brasil",x ="Ano",y ="%" ) +theme_minimal()
Explicando o código: começamos reestruturando o data frame original com a função pivot_longer(). Essa função transforma o formato dos dados, convertendo várias colunas em duas novas colunas: uma que identifica a série (por exemplo, juros ou inflação) e outra com os valores.
Diferentemente de uma simples transposição, o pivot_longer() reorganiza os dados no chamado formato “longo” (long format), no qual cada observação passa a ocupar uma linha. O termo “longer” indica justamente que a tabela se torna mais “comprida” (mais linhas), enquanto o número de colunas diminui.
Essa estrutura é útil para o ggplot2, pois permite mapear facilmente diferentes séries em uma mesma estética (como cor ou tipo de linha), facilitando a construção de gráficos comparativos.
Prêmio de risco
Normalmente, os juros se diferenciam pelo risco relacionado ao não pagamento. Comprar títulos de instituições financeiras já bem estabelecidas no mercado é uma opção menos arriscada do que adquiri-los de instituições mais novas e tidas como mais ousadas Ora, o que estimula as pessoas a comprarem títulos mais arriscados é uma maior remuneração.
Essa diferença entre os juros pagos por uma instituição segura e o juros pago por instituições “mais arriscadas” é o chamado prêmio de risco (x). Sim, porque, se vamos comprar títulos mais arriscados queremos uma compensação, algo a mais.
Vamos procurar modelar esse prêmio de risco (x) levando em conta a probabilidade (p) de não pagamento (ou default).
Qual o retorno esperado (rt) de um título que não oferece riscos?
\[
rt = (1+i)
\]
Agora qual o retorno esperado (rt) de um título que envolve riscos?
\[
rt = (1-p)[1+i+x] + p[0]
\]
Se o retorno esperado (rt) é o mesmo, nas duas operações, então ficamos com:
Explicando o código: estamos, ao mesmo tempo, recriando os dois data frames, com novos nomes e renomeando suas colunas.
Vamos agora juntar dos dois arquivo em apenas um (premio_risco_df).
premio_risco_df <-left_join(tx_mercado, tx_selic, by ="date")
Explicando o código: como fizemos antes, estamos montando o data frame juntado pela esquerda. Começamos com as datas e os valores da taxa de juros de mercado. Anexamos a esse conjunto, usando as datas (date) como referência, os dados da Selic.
Vamos criar nossa estimativa de prêmio de risco, como a diferença entre a taxa Selic e a taxa média de mercado.