Para onde vai a Dívida Pública?

A trajetória da Dívida Bruta brasileira tem sido objeto de preocupação entre analistas e investidores. Exemplo disso foi o recente rebaixamento da nota de crédito do país pelas três principais agências de classificação de risco. Mas o que está por trás do aumento da relação Dívida/PIB? Quais são os determinantes do endividamento público? Como podemos modelar essa relação ao longo do tempo? Melhor: como podemos prever essa relação para os próximos meses? São essas e outras questões que abordamos na edição nº 02 do Clube do Código. Visite o Clube para saber como ter acesso completo a esse e outros estudos!

A evolução do fluxo de despesas e receitas, bem como do estoque de endividamento do setor público brasileiro tem sido motivo de grande preocupação nos últimos anos. Em particular, a trajetória da Dívida Bruta do Governo Geral (DBGG) em relação ao PIB ganhou atenção redobrada, diante do forte aumento que vem tendo. Ela era de 51,69% em dezembro de 2013, passando para 67,03% em janeiro desse ano. Um aumento de 15,34 pontos percentuais.

grafico01

Para explicar esse salto na relação Dívida Bruta/PIB, vamos primeiro ilustrar a conexão que existe entre fluxo e estoque. Para isto, observe que:

(1)   \begin{equation*} s^{req}_{t} = \frac{(r_{t}-g_{t})}{(1+g_{t})}b_t\end{equation*}

Onde b_t é a relação Dívida/PIB, s^{req}_{t} é o superávit primário requerido para estabilizar a relação Dívida/PIB, g_{t} é o crescimento do PIB e r_{t} é a taxa de juros real.(*) Em outros termos, se a diferença entre a taxa de juros real e o crescimento do PIB aumentar, o superávit primário necessário para estabilizar a relação Dívida/PIB deve igualmente aumentar. Caso contrário, a relação Dívida/PIB dispara. Nesses termos, mostramos abaixo o comportamento dessas três variáveis: o crescimento do PIB, o juro real e o superávit primário efetivo.

grafico02

Observa-se que enquanto o crescimento do PIB e o superávit primário efetivo caíram no período recente, o juro real se elevou. Tais comportamentos, nesse contexto, explicam o salto observado na relação Dívida/PIB, ilustrado na figura 2. Dado o aumento da diferença entre o juro real e o crescimento do PIB, o superávit primário requerido para estabilizar a relação Dívida/PIB deveria caminhar em direção contrária ao que de fato ocorreu, como ilustra o gráfico abaixo.

grafico03

Em resumo, o comportamento do superávit primário efetivo potencializou o aumento dos juros reais e a queda do crescimento do PIB, como determinantes da trajetória Dívida/PIB. É basicamente por isso que a DBGG em relação ao PIB tem apresentado um comportamento explosivo nos últimos tempos, o que levou as três principais agências de classificação de risco a rebaixarem a nota de crédito do Brasil.

Um modelo univariado de determinação da DBGG em relação ao PIB

Para começarmos a modelar a DBGG em relação ao PIB, vamos fazer uso da metodologia elaborada por Box et al. (1994). Nosso objetivo é construir um modelo univariado que explique a evolução da relação DBGG/PIB ao longo do tempo. Desse modo, nosso primeiro problema é determinar a ordem de integração da série. Faremos isso com base no teste ADF Sequencial de raiz unitária, como exposto em Pfaff (2008).(**) Para implementá-lo no R, primeiro definimos quantas defasagens são necessárias no teste ADF, para prevenir autocorrelação serial. Isso é feito aplicando o teste Ljung-Box sobre os resíduos da equação do teste ADF estimada, a cada defasagem. De modo a facilitar o trabalho, claro, criamos um loop no R.

A aplicação do teste nos diz que com apenas uma defasagem é possível controlar problemas de autocorrelação. Dito isto, passamos ao teste ADF Sequencial. Para tal, começamos com a equação completa do teste ADF, isto é, aquela que contém tanto a tendência quanto o drift:

(2)   \begin{equation*}\Delta Y_t = \alpha + \beta t + \pi Y_{t-1} + \sum_{i=1}^m \gamma_i \Delta Y_{t-i} + \varepsilon_t \end{equation*}

No R, implementamos isso com a função ur.df, do pacote urca, como abaixo.

lags <- 1
adf.t <- ur.df(na.omit(data[,1]), type='trend', lags=lags)

A tabela 1 abaixo traz a estatística de teste e os valores críticos. A estatística tau3 fornece a hipótese nula de que o coeficiente \pi é igual a zero. Como ele é maior do que os valores críticos, não podemos rejeitar essa hipótese nula. Com efeito, devemos prosseguir com o teste, verificando a presença de tendência. Isso é feito testando se \beta é igual a zero, dado \pi igual a zero, que está implementado na estatística phi3. Nesse caso, se a estatística de teste for maior que o valor crítico, devemos rejeitar a hipótese nula de que a série não possui tendência. Como podemos ver na tabela 1, isso não é possível de ser feito, logo devemos continuar o nosso teste, retirando a tendência da equação.(***)

Teste ADF com drift e tendência
statistic 1pct 5pct 10pct
tau3 0.709 -3.990 -3.430 -3.130
phi2 2.207 6.220 4.750 4.070
phi3 2.654 8.430 6.490 5.470

Para fazer isso na função ur.df, basta substituir o argumento type igual a trend por drift. A tabela 2 mostra agora a comparação das estatística de teste com seus valores críticos. Novamente, devemos primeiro verificar a hipótese nula de que \pi é igual a zero (i.e., se a série possui raiz unitária). Isso está implementado na estatística tau2. Se ela for menor do que os valores críticos, rejeitamos a hipótese nula. Como podemos ver na tabela, esse não é o caso, logo prosseguimos com o fluxograma de decisões.

Teste ADF com drift
statistic 1pct 5pct 10pct
tau2 0.603 -3.460 -2.880 -2.570
phi1 0.814 6.520 4.630 3.810

Devemos testar agora a significância do drift. A hipótese nula, de que \alpha é igual a zero, dado \pi igual a zero, está implementada na estatística phi1. A regra de decisão aqui é que se phi1 for maior que os valores críticos, então devemos rejeitar a hipótese nula de que o drift não é estatisticamente significativo. Como pode ser visto na tabela 2, isso não é possível de ser feito, i.e., podemos retirar o drift para aumentarmos o poder do nosso teste ADF. Para isso, deve-se implementar a função ur.df com o argumento type igual a none, isto é, sem tendência e drift. A tabela 3 resume os resultados da estatística de teste e dos valores críticos.

Teste ADF sem drift e tendência
statistic 1pct 5pct 10pct
tau1 1.161 -2.580 -1.950 -1.620

Como de praxe, verificamos se \pi é igual a zero. Isso está implementado na estatística tau1. Como ela é maior do que os valores críticos, não podemos rejeitar a hipótese nula, logo chegamos à conclusão que a DBGG normalizada pelo PIB possui raiz unitária. Com efeito, de modo a encontrar a ordem de integração dessa série, precisamos diferenciá-la e ver se a primeira diferença passa no mesmo teste acima. Fazemos isso no código seguinte.

adf.t <- ur.df(na.omit(diff(data[,1])), type='trend', lags=lags)

E a tabela 4 resume as métricas do teste ADF com tendência e drift para a primeira diferença da DBGG normalizada pelo PIB. Como se pode ver, a estatística tau3 é menor do que os valores críticos, logo podemos rejeitar que a primeira diferença possui raiz unitária. Em outras palavras, a DBGG em relação ao PIB é um processo integrado de ordem 1.

Teste ADF com drift e tendência
statistic 1pct 5pct 10pct
tau3 -5.815 -3.990 -3.430 -3.130
phi2 11.362 6.220 4.750 4.070
phi3 17.043 8.430 6.490 5.470

Com efeito, devemos considerar d igual a 1 no momento de construir nosso modelo univariado. Passemos, agora, à definição dos valores p e q do modelo ARIMA, seguindo a metodologia proposta por Box et al. (1994), de modo a caracterizar a parte estacionária da série. Para isso, vamos ver as funções de autocorrelação da primeira diferença da série.

grafico04

As funções de autocorrelação mostram um processo de médias móveis MA(1). Nesse sentido, podemos modelar nossa série de DBGG em relação ao PIB com um ARIMA(0,1,1). Isso é feito com a função Arima do pacote forecast, como abaixo.

modelo1 <- Arima(na.omit(data[,1]), order=c(0,1,1))

Por fim, podemos comparar nosso modelo com a série efetiva, como mostrado abaixo.(****)

grafico05

Um modelo multivariado de determinação da DBGG em relação ao PIB

Com um modelo univariado simples, é possível captar razoavelmente bem a dinâmica da DBGG/PIB ao longo do tempo. Entretanto, como veremos mais à frente, a previsão com esse modelo não é das melhores. Isto porque, não é possível com um modelo univariado, por motivos óbvios, incorporar as trajetórias daquelas variáveis definidas na equação (1). Com efeito, se queremos avançar em termos de previsão, precisamos construir um modelo multivariado.

A construção de um modelo multivariado não é, contudo, trivial. Para que, por exemplo, possamos construir um modelo linear, é preciso que, ao menos: (i) todas as séries em questão sejam estacionárias; (ii) não haja problemas de endogeneidade. Como vimos em nosso exemplo univariado, a DBGG/PIB não é estacionária, o que implica que precisamos diferenciá-la um vez para tal. Isso, provavelmente, ocorrerá com todas as séries contidas no arquivo clube02.csv. Por fim, se os juros reais, o crescimento do PIB ou o superávit primário efetivo afetam a Dívida Pública, é possível afirmar com certeza que o caso contrário é falso? Isto é, que a Dívida Pública não exerce influência sobre essas variáveis?

Talvez seja possível dizer que o superávit primário efetivo é uma decisão do policymaker a cada ponto do tempo, tornando-o exógeno. O mesmo, entretanto, não se pode inferir sobre os juros reais ou sobre o crescimento, por exemplo. Isto porque, é razoável supor que à medida que o endividamento público aumente, isso afete o prêmio de risco dos agentes, bem como as expectativas de empresários envolvidos em decisões de investimento. Alguma endogeneidade, portanto, entre as variáveis é inevitável.

Poderíamos contornar essas dificuldades diferenciando as séries e aplicando o método de Mínimos Quadrados em 2 estágios (TSLS) ou mesmo o Método dos Momentos Generalizado (GMM), em que se utilizam variáveis instrumentais. Vamos, contudo, fazer uso do método bayesiano, supondo implicitamente que todas as variáveis em questão são endógenas. Para isso, vamos estimar um modelo de Vetores Autoregressivos Bayesiano, ou simplesmente BVAR, usando o pacote BMR.(*****)

Para construirmos nosso modelo, é preciso que o pacote BMR esteja corretamente instalado na sua máquina. Consulte a Nota Técnica nº 2 do Clube do Código caso tenha dificuldades nesse processo. Dito isto, passemos ao modelo propriamente dito, com o código abaixo. Note que, (i) nós pegamos uma subamostra do nosso objeto data, de modo que não haja missing values; (ii) estamos usando a DBGG/PIB, o crescimento do PIB, o juro real e o superávit primário efetivo apenas.(******)

subdata <- window(data, end=c(2015,12))

modelo2 <- BVARW(subdata[,1:4], cores=1, coefprior=NULL, p=1,
 constant=T, irf.periods=20, keep=10000, burnin=1000,
 XiBeta=1, XiSigma=1, gamma=NULL)

Acima estimamos um modelo BVAR Normal-Inverse-Wishart-Prior, assumindo que as séries são passeios aleatórios. Para isso, colocamos NULL no argumento coefprior.

Previsão

E abaixo a tabela com as previsões do modelo multivariado para a Dívida Bruta em 2016...

Previsões do Modelo BVAR
Mês Dívida Bruta
1 67.10
2 68.02
3 68.95
4 69.91
5 70.91
6 71.92
7 72.97
8 74.03
9 75.13
10 76.25
11 77.41
12 78.56

________________________________________________________________________

Gostou? Tenha acesso completo a esse e outros estudos no Clube do Código.

________________________________________________________________________

Observações

(*) Ver Goldfajn (2002);

(**) Talvez seja interessante controlar o teste de raiz unitária para a existência de quebras estruturais, dado o comportamento recente da série. Uma forma de fazer isso é utilizando o teste proposto por Zivot e Andrews (1992);

(***) Em um primeiro olhar, isso pode parecer confuso. Intuitivamente, nós começamos com tendência e drift a fim de verificar se mesmo com esses regressores, conseguimos rejeitar a hipótese nula de presença de raiz unitária. Se a tendência não se mostrar significativa, entretanto, podemos aumentar o poder do teste ADF, retirando-a da equação;

(****) É preciso notar que o trabalho não termina aqui, se quisermos usar esse modelo para fins de previsão. É preciso verificar os resíduos do modelo, bem como fazer testes de autocorrelação, normalidade, heterocedasticidade, etc;

(*****) Estamos supondo que o superávit primário efetivo sofre alguma influência do estoque de endividamento público ao longo do tempo. Essa não é uma hipótese tão tresloucada assim, haja visto o que ocorreu, por exemplo, nos últimos anos na economia brasileira. Para o leitor interessado em econometria bayesiana, veja, por exemplo, Albert (2009);

(******) Usamos um modelo com a taxa de câmbio, mas esse apresentou trajetórias bastante pessismistas, nos levando a deixá-lo de fora nesse exercício. Contudo, o leitor interessado pode tentar usar o câmbio em outra abordagem.

 

________________________________________________________________________

Referências

Albert, J. Bayesian Computation with R. Springer, New York, second edition, 2009.

Box, G. E.; Jenkins, G. M., and Reinsel, G. C. Time series analysis: forecasting and control. Prentice
Hall, Englewood Cli s, second edition, 1994.

Goldfajn, I. Ha Raz~oes para Duvidar de que a Dvida Publica no Brasil e Sustentavel? Notas Tecnicas
do Banco Central do Brasil, (25), 2002.

Pfa ff, B. Analysis of integrated and cointegrated time series with R. Springer, New York, second edition,
2008.

Zivot, E. and Andrews, D. W. K. Further evidence on the Great Crash. the Oil-Price Shock, and the
Unit-Root Hypothesis. Journal of Business and Economic Statistics, 10(3):251{270, 1992.
Clube

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Simplificando análises de dados manuais do Excel usando o Python

Tratar e analisar dados no Excel pode ser um verdadeiro caos, mesmo que você precise fazer coisas simples como cruzar duas tabelas de dados. Uma solução melhor é o uso de scripts em Python, que possibilitam a automação de tarefas repetitivas e manuais. Neste artigo mostramos um exemplo simples, comparando o Excel versus Python.

Como automatizar o tratamento de dados feito no Excel usando o Python?

Segundo a pesquisa “State of Data Science”, profissionais de dados gastam 3 horas/dia (38% do tempo) apenas preparando os dados, antes mesmo de analisá-los. Neste artigo advogamos que este gasto de tempo pode ser drasticamente reduzido ao utilizar ferramentas open source, como Pandas e Python, para automatizar tarefas repetitivas que costumam ser feitas em Excel.

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.