Antes de iniciarmos qualquer análise, é necessário carregar os pacotes que serão utilizados:
# Carregar os pacotes necessários
#--------------------------------
library(tidyr)
library(readxl)
library(writexl)
library(readr)
library(dplyr)
library(lubridate)
library(knitr)
library(ggplot2)
library(stringr)
library(scales)O objetivo deste documento é mostrar como os dados previdenciários disponibilizados pela Secretaria de Previdência do Ministério da Economia (SPrev/ME) podem ser utilizados para ajudar no acompanhamento da gestão dos RPPS.
Para alcançar esse objetivo vamos apresentar os scripts elaborados em R para que outros interessados possam, também, realizar as análises indicadas e apresentar novas contribuições.
Diversas bases de dados e relatórios são disponbilizados pela SPrev/ME em seu site (<http://www.previdencia.gov.br/dados-abertos/estatisticas-e-informacoes-dos-rpps/>) e já se sabe há muito tempo que o principal problema atualmente não é tanto a disponibilidade de dados mas a capacidade de análise dos mesmos.
Acho que podemos falar de Análise de Dados Previdenciários para designar uma área de conhecimento a ser desenvolvida nos órgãos encarregados da supervisão e controle dos RPPS com o objetivo de auxiliar na execução dessa atividade.
Conhecer esses dados, suas limitações, inconsistências, analisá-los e enriquecê-los com outros dados e propor melhorias constituem o escopo dessa área.
Nos tópicos a seguir vamos mostrar algumas análises possíveis com os dados disponibilizados. A ideia é que as análises descritas neste documento sejam incluídas no painel de dados previdenciários (ainda em elaboração) disponível no link https://marcosfs2006.shinyapps.io/rpps-painel/ elaborado com os dados disponibilizados pela SPrev/ME.
Como esse painel está hospedado num serviço gratuito não é não se sabe se o mesmo vai suportar as bases de dados necessárias para as análises.
Neste tópico nosso objetivo é mostrar algumas possibilidades de análise em relação aos dados do Certificados de Regularidade Previdenciária - CRP contidos no arquivo CRP Emitido.csv disponibilizado no site da SPrev.
O link para _download_é http://sa.previdencia.gov.br/site/2019/08/CRP-Emitido.zip
A primeira etapa, como sempre, é realizar a importação dos dados e realizar o pré-processamento dos mesmos.
A importação é feita da seguinte forma:
setwd("..\\dados")
crp <- read_csv2("CRP Emitido.csv")Vamos inspecionar a base de dados para a conhecermos um pouco melhor:
kable(head(crp))| UF | ENTE | REGIME | NR CRP | DATA DE EMISSÃO | DATA DE VALIDADE | CRP JUDICIAL | SITUAÇÃO DO CRP |
|---|---|---|---|---|---|---|---|
| AC | Acrelândia | RGPS | 980643-298 | 19/07/2001 | 15/01/2002 | NÃO | VENCIDO |
| AC | Acrelândia | RGPS | 980643-3763 | 18/01/2002 | 17/07/2002 | NÃO | VENCIDO |
| AC | Acrelândia | RGPS | 980643-8191 | 18/07/2002 | 14/01/2003 | NÃO | VENCIDO |
| AC | Acrelândia | RGPS | 980643-13231 | 14/01/2003 | 13/07/2003 | NÃO | VENCIDO |
| AC | Acrelândia | RGPS | 980643-19585 | 18/11/2003 | 16/05/2004 | NÃO | VENCIDO |
| AC | Acrelândia | RGPS | 980643-24818 | 16/07/2004 | 14/09/2004 | NÃO | VENCIDO |
A base nos fornece algumas informações sobre o CRP e compreende tanto os Regimes Próprios como o Regime Geral. Vamos nos restringir aos Regimes Próprios:
crp <- filter(crp, REGIME == "RPPS")Também é possível ver que o arquivo contém, para cada Ente, um histórico dos CRP emitidos para os mesmos. Vamos obter, para cada ente, o CRP mais recente emitido constante da base de dados:
crp <- crp %>%
mutate(`DATA DE EMISSÃO` = dmy(`DATA DE EMISSÃO`),
`DATA DE VALIDADE`= dmy(`DATA DE VALIDADE`)) %>%
group_by(UF, ENTE) %>%
filter(`DATA DE EMISSÃO` == max(`DATA DE EMISSÃO`))Vamos inspecionar novamente a base de dados.
kable(head(crp))| UF | ENTE | REGIME | NR CRP | DATA DE EMISSÃO | DATA DE VALIDADE | CRP JUDICIAL | SITUAÇÃO DO CRP |
|---|---|---|---|---|---|---|---|
| AC | Governo do Estado do Acre | RPPS | 931001-175199 | 2019-05-04 | 2019-10-31 | SIM | VÁLIDO |
| AC | Rio Branco | RPPS | 980139-175140 | 2019-04-29 | 2019-10-26 | NÃO | VÁLIDO |
| AL | Arapiraca | RPPS | 982705-174661 | 2019-04-09 | 2019-10-06 | NÃO | VÁLIDO |
| AL | Atalaia | RPPS | 982707-112197 | 2013-03-18 | 2013-09-14 | NÃO | VENCIDO |
| AL | Barra de Santo Antônio | RPPS | 982709-176337 | 2019-06-16 | 2019-12-13 | SIM | VÁLIDO |
| AL | Batalha | RPPS | 982713-11816 | 2002-11-29 | 2003-05-28 | NÃO | VENCIDO |
Antes de prosseguirmos, devemos excluir as duplicidades existentes na base de dados. Por exemplo, o Ente “Governo do Estado de Roraima” aparece com o mesmo CRP 4 vezes na base de dados:
filter(crp, ENTE == "Governo do Estado de Roraima") %>%
kable()| UF | ENTE | REGIME | NR CRP | DATA DE EMISSÃO | DATA DE VALIDADE | CRP JUDICIAL | SITUAÇÃO DO CRP |
|---|---|---|---|---|---|---|---|
| RR | Governo do Estado de Roraima | RPPS | 936001-174691 | 2019-04-10 | 2019-10-07 | SIM | VÁLIDO |
| RR | Governo do Estado de Roraima | RPPS | 936001-174691 | 2019-04-10 | 2019-10-07 | SIM | VÁLIDO |
| RR | Governo do Estado de Roraima | RPPS | 936001-174691 | 2019-04-10 | 2019-10-07 | SIM | VÁLIDO |
| RR | Governo do Estado de Roraima | RPPS | 936001-174691 | 2019-04-10 | 2019-10-07 | SIM | VÁLIDO |
Vamos excluir as duplicidades:
crp <- crp %>%
filter(!duplicated(`NR CRP`))Se quisermos exportar a base de dados para uma planilha do Excel podemos fazer da seguinte forma:
setwd("..\\dados-produzidos")
write_xlxs(crp, file = "crp_DtRef2019-08.xlxs")Agora estamos em condições de responder a algumas questões: Quantos Entes com CRP vencido existe em cada Estado? Quanto isso representa do total de RPPS existentes no Estado?
crp %>%
group_by(UF) %>%
summarise(QtdRPPS = n(),
QtdRPPS_CRPVencido = sum(`SITUAÇÃO DO CRP` == "VENCIDO"),
PctRPPS_CRPVencido = round(QtdRPPS_CRPVencido / QtdRPPS * 100, 2)) %>%
arrange(desc(PctRPPS_CRPVencido)) %>%
kable()| UF | QtdRPPS | QtdRPPS_CRPVencido | PctRPPS_CRPVencido |
|---|---|---|---|
| PA | 28 | 17 | 60.71 |
| AL | 74 | 41 | 55.41 |
| GO | 171 | 89 | 52.05 |
| RJ | 78 | 40 | 51.28 |
| AP | 4 | 2 | 50.00 |
| SE | 4 | 2 | 50.00 |
| TO | 30 | 14 | 46.67 |
| RN | 39 | 18 | 46.15 |
| PI | 68 | 30 | 44.12 |
| BA | 37 | 16 | 43.24 |
| MG | 218 | 83 | 38.07 |
| PB | 71 | 27 | 38.03 |
| SP | 221 | 80 | 36.20 |
| CE | 65 | 23 | 35.38 |
| MA | 47 | 15 | 31.91 |
| PR | 178 | 55 | 30.90 |
| MS | 51 | 15 | 29.41 |
| PE | 149 | 37 | 24.83 |
| MT | 106 | 25 | 23.58 |
| RS | 329 | 74 | 22.49 |
| AM | 27 | 6 | 22.22 |
| ES | 35 | 7 | 20.00 |
| SC | 70 | 13 | 18.57 |
| RO | 30 | 5 | 16.67 |
| AC | 2 | 0 | 0.00 |
| DF | 1 | 0 | 0.00 |
| RR | 2 | 0 | 0.00 |
Em boa parte dos estados tem-se um elevado percentual de Entes com o CRP vencido.
Também poderíamos incluir na tabela acima a quantidade de Entes com CRP obtido pela via judicial e qual o percentual em relação ao total de Entes no Estado.
crp %>%
group_by(UF) %>%
summarise(QtdRPPS = n(),
QtdRPPS_CRPVencido = sum(`SITUAÇÃO DO CRP` == "VENCIDO"),
PctRPPS_CRPVencido = round(QtdRPPS_CRPVencido / QtdRPPS * 100, 2),
QtdRPPS_CRPJudicial = sum(`CRP JUDICIAL` == "SIM"),
PctRPPS_CRPJudicial = round(QtdRPPS_CRPJudicial / QtdRPPS * 100, 2)) %>%
arrange(desc(PctRPPS_CRPVencido)) %>%
kable()| UF | QtdRPPS | QtdRPPS_CRPVencido | PctRPPS_CRPVencido | QtdRPPS_CRPJudicial | PctRPPS_CRPJudicial |
|---|---|---|---|---|---|
| PA | 28 | 17 | 60.71 | 9 | 32.14 |
| AL | 74 | 41 | 55.41 | 41 | 55.41 |
| GO | 171 | 89 | 52.05 | 29 | 16.96 |
| RJ | 78 | 40 | 51.28 | 21 | 26.92 |
| AP | 4 | 2 | 50.00 | 3 | 75.00 |
| SE | 4 | 2 | 50.00 | 4 | 100.00 |
| TO | 30 | 14 | 46.67 | 4 | 13.33 |
| RN | 39 | 18 | 46.15 | 12 | 30.77 |
| PI | 68 | 30 | 44.12 | 16 | 23.53 |
| BA | 37 | 16 | 43.24 | 22 | 59.46 |
| MG | 218 | 83 | 38.07 | 50 | 22.94 |
| PB | 71 | 27 | 38.03 | 47 | 66.20 |
| SP | 221 | 80 | 36.20 | 40 | 18.10 |
| CE | 65 | 23 | 35.38 | 35 | 53.85 |
| MA | 47 | 15 | 31.91 | 38 | 80.85 |
| PR | 178 | 55 | 30.90 | 22 | 12.36 |
| MS | 51 | 15 | 29.41 | 8 | 15.69 |
| PE | 149 | 37 | 24.83 | 117 | 78.52 |
| MT | 106 | 25 | 23.58 | 3 | 2.83 |
| RS | 329 | 74 | 22.49 | 32 | 9.73 |
| AM | 27 | 6 | 22.22 | 23 | 85.19 |
| ES | 35 | 7 | 20.00 | 6 | 17.14 |
| SC | 70 | 13 | 18.57 | 9 | 12.86 |
| RO | 30 | 5 | 16.67 | 11 | 36.67 |
| AC | 2 | 0 | 0.00 | 1 | 50.00 |
| DF | 1 | 0 | 0.00 | 1 | 100.00 |
| RR | 2 | 0 | 0.00 | 1 | 50.00 |
Vamos criar uma nova coluna na base de dados contendo a quantidade de dias decorridos da data de validade do CRP até a data de hoje (elaboração desse documento).
crp <- crp %>%
mutate(QtdDias = as.numeric(difftime(as.POSIXct(Sys.Date()), `DATA DE VALIDADE`, units = "days")))Qual o Ente com o CRP vencido a mais tempo?
crp %>%
filter(QtdDias == max(crp$QtdDias)) %>%
select(UF, ENTE, `DATA DE EMISSÃO`, `DATA DE VALIDADE`, QtdDias) %>%
kable(caption = paste("Data de Referência: ", format(Sys.Date(), "%d.%m.%Y") , sep = ""))| UF | ENTE | DATA DE EMISSÃO | DATA DE VALIDADE | QtdDias |
|---|---|---|---|---|
| PI | Barreiras do Piauí | 2001-07-24 | 2002-01-20 | 6455 |
Agora criar uma nova coluna na base de dados contendo um escalonamento da variável QtdDias de dados de forma a classificar os Entes em função da quantidade de dias em que os CRP estão vencidos. Por exemplo, podemos adotar a seguinte classificação: “a vencer”, “1 a 30 dias”, “31 a 60 dias”, “61 a 90 dias”, “91 a 180 dias”, “181 a 365 dias”, “1 a 5 anos” e “mais de 5 anos”.
Para fazer esse escalonamento, vamos criar uma nova coluna na base de dados.
crp <- crp %>%
mutate(categoria = cut(QtdDias,
breaks =c(-Inf, 0, 30, 60, 90, 180, 365, 5*365, Inf) ,
labels = c("a vencer",
"1 a 30 dias",
"31 a 60 dias",
"61 a 90 dias",
"91 a 180 dias",
"181 a 365 dias",
"1 a 5 anos",
"mais de 5 anos")))Agora podemos fazer um gráfico que mostre a frequência de Entes em cada uma dessas categorias.
crp %>%
group_by(categoria) %>%
summarise(frequencia = n()) %>%
ggplot(aes(x=categoria, y=frequencia)) +
geom_bar(stat="identity", fill="orange") +
geom_text(aes(label=frequencia), color="blue", vjust = 0, hjust=1, size=4) +
coord_flip()Também é possível fazer o mesmo gráfico para os Entes de um mesmo estado ou mesmo para os Entes que estão em um mesmo grupo conforme definido pels SPrev.
Vamos ver como está situação dos RPPS do Estado do Rio de Janeiro:
Estado <- "RJ"
crp %>%
filter(UF == Estado) %>%
group_by(categoria) %>%
summarise(frequencia = n()) %>%
ggplot(aes(x=categoria, y=frequencia)) +
geom_bar(stat="identity", fill="orange") +
geom_text(aes(label=frequencia), color="blue", vjust = 0, hjust=1, size=4) +
coord_flip()Quais são os Entes do RJ com CRP vencido a mais de 5 anos?
filter(crp, UF == Estado, categoria == "mais de 5 anos") %>%
kable()| UF | ENTE | REGIME | NR CRP | DATA DE EMISSÃO | DATA DE VALIDADE | CRP JUDICIAL | SITUAÇÃO DO CRP | QtdDias | categoria |
|---|---|---|---|---|---|---|---|---|---|
| RJ | Araruama | RPPS | 985803-28572 | 2004-12-23 | 2005-02-21 | NÃO | VENCIDO | 5327 | mais de 5 anos |
| RJ | Belford Roxo | RPPS | 982909-99748 | 2011-09-27 | 2012-03-25 | NÃO | VENCIDO | 2738 | mais de 5 anos |
| RJ | Iguaba Grande | RPPS | 980774-47771 | 2007-05-18 | 2007-11-14 | NÃO | VENCIDO | 4331 | mais de 5 anos |
| RJ | Itaocara | RPPS | 985841-88200 | 2010-07-28 | 2011-01-24 | NÃO | VENCIDO | 3164 | mais de 5 anos |
| RJ | Magé | RPPS | 985849-30352 | 2005-03-02 | 2005-05-01 | SIM | VENCIDO | 5258 | mais de 5 anos |
| RJ | Rio Bonito | RPPS | 985885-117820 | 2013-11-05 | 2014-05-04 | SIM | VENCIDO | 1968 | mais de 5 anos |
| RJ | São Gonçalo | RPPS | 985897-114709 | 2013-07-08 | 2014-01-04 | NÃO | VENCIDO | 2088 | mais de 5 anos |
Infelizmente a base de dados não possui informações sobre os critérios do CRP. Essas seriam informações interessantes de constar da base de dados.
Este capítulo é dedicado à análise dos dados relativos ao Demonstrativo das Aplicações e Investimento dos Recursos - DAIR. Este demonstrativo evidencia, mês a mês, a posição dos investimentos feitos pelos RPPS bem como dos ativos vinculados ao sistema previdenciário.
Antes de iniciarmos qualquer análise com a base de dados do DAIR será necessário importá-la e realizar um pré-processamento com vistas a deixar a base pronta para uso.
Os dados do DAIR podem ser baixados na site da SPrev/ME e, para os exercícos de 2018 e 2019, estão contidos nos seguintes arquivos: Carteira 2018.csv e Carteira 2019.csv
A importação pode ser feita da seguinte forma:
setwd("..\\dados")
arquivos <- c("Carteira 2018.csv", "Carteira 2019.csv")
invest <- lapply(arquivos, read.csv2, stringsAsFactors = FALSE, na.strings = c("NULL", "", " "))
invest <- do.call('rbind', invest)
# Alterar os nomes das colunas
names(invest) <- c("cnpj", "uf", "ente", "competencia", "segmento",
"tipo_ativo", "limite_resol_cmn", "ident_ativo",
"nm_ativo", "qtd_quotas", "vlr_atual_ativo", "vlr_total_atual",
"perc_recursos_rpps", "pl_fundo", "perc_pl_fundo")Feita a importação vamos inspecionar a base de dados.
kable(head(invest), format.args = list(decimal.mark = ",", big.mark = "."))| cnpj | uf | ente | competencia | segmento | tipo_ativo | limite_resol_cmn | ident_ativo | nm_ativo | qtd_quotas | vlr_atual_ativo | vlr_total_atual | perc_recursos_rpps | pl_fundo | perc_pl_fundo |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 63.606.479.000.124 | AC | Governo do Estado do Acre | 1/2018 | Disponibilidades Financeiras | NA | NA | 3550 / 8307-0 | 1 Banco do Brasil S.A. | 1,0 | 0,00000 | 0,0 | 0,00 | NA | NA |
| 63.606.479.000.124 | AC | Governo do Estado do Acre | 1/2018 | Disponibilidades Financeiras | NA | NA | 3550 / 5738-X | 1 Banco do Brasil S.A. | 1,0 | 14.391.809,91000 | 14.391.809,9 | 96,07 | NA | NA |
| 63.606.479.000.124 | AC | Governo do Estado do Acre | 1/2018 | Disponibilidades Financeiras | NA | NA | 2358 / 6178-6 | 1 Banco do Brasil S.A. | 1,0 | 0,00000 | 0,0 | 0,00 | NA | NA |
| 63.606.479.000.124 | AC | Governo do Estado do Acre | 1/2018 | Disponibilidades Financeiras | NA | NA | 3550 / 6080-1 | 1 Banco do Brasil S.A. | 1,0 | 0,00000 | 0,0 | 0,00 | NA | NA |
| 63.606.479.000.124 | AC | Governo do Estado do Acre | 1/2018 | Renda Fixa | FI 100% tÃtulos TN | 99,99 | 11328882/0001-35 | BB PREVIDENCIÃRIO RENDA FIXA IRF M1 | 252.362,9 | 2,33025 | 588.068,6 | 3,93 | 12.260.945.819 | 0 |
| 63.606.479.000.124 | AC | Governo do Estado do Acre | 1/2018 | Disponibilidades Financeiras | NA | NA | 3550 / 8361-5 | 1 Banco do Brasil S.A. | 1,0 | 0,00000 | 0,0 | 0,00 | 0 | NA |
Quantos registros tem a base?
nrow(invest)[1] 454412
Será necessário realizar alguns procedimentos de “limpeza” na base de dados. A mais importante sendo a conversão de encoding das variáveis não numéricas.
invest <- invest %>%
mutate(ente = iconv(ente, from = "utf-8", to="latin1"),
segmento = iconv(segmento, from = "utf-8", to="latin1"),
tipo_ativo = iconv(tipo_ativo, from = "utf-8", to="latin1"),
nm_ativo = iconv(nm_ativo, from = "utf-8", to="latin1"),
ident_ativo = trimws(ident_ativo))
# Preencher valores do campo "tipo_ativo" para as disponibilidades.
invest$tipo_ativo <- ifelse(invest$segmento == "Disponibilidades Financeiras", "Disp", invest$tipo_ativo)
# Converter a variável "competencia" para o formato de data
invest$competencia <- as.Date(paste("01", invest$competencia, sep="/"), "%d/%m/%Y")Outra transformação é fazer a exclusão de símbolos de pontuação da variável ident_ativo. Em especial para os CNPJ que identificam os fundos de investimentos.
invest$ident_ativo <- gsub("[[:punct:]]", "", invest$ident_ativo)Vamos verificar o período compreendido pela base de dados:
sort(unique(invest$competencia)) [1] "2018-01-01" "2018-02-01" "2018-03-01" "2018-04-01" "2018-05-01" "2018-06-01" "2018-07-01" "2018-08-01" "2018-09-01" "2018-10-01" "2018-11-01" "2018-12-01" "2019-01-01"
[14] "2019-02-01" "2019-03-01"
Diversas outras verificações podem ser feitas na base de dados com vistas à obtenção de um melhor conhecimento da mesma, mas vamos nos restringir a essas por ora.
Um verificação necessária diz respeito a saber se o RPPS está encaminhando regularmente o DAIR à SPrev/ME.
Aliás, esse é um ponto de verificação constante na Resolução Atricon 05/2018 que Aprova as Diretrizes de Controle Externo Atricon nº 3214/2018, relacionadas à temática “Controle Externo na gestão dos Regimes Próprios de Previdência Social”.
25.1 (…)
u) se há o envio tempestivo à Secretaria de Previdência (SPREV) do Ministério da Fazenda dos demonstrativos obrigatórios (DIPR, DRAA, DPIN, DAIR e demonstrativos contábeis).
Para executarmos essa verificação é necessário comparar os Entes que constam da base de dados do DAIR (invest) com uma outra base de dados que contenha todos os RPPS.
Vamos usar a base de dados do Indicador de Situação Previdenciária - ISP contida no arquivo RESULTADO-ISP-2018.01.xlsx como nossa referência.
A importação dos dados é feita da seguir:
setwd("..\\dados")
isp <- read_excel("RESULTADO-ISP-2018.01.xlsx")
isp <- isp[, -c(31, 32, 33, 34)]
names(isp) <- c("ENTE", "UF", "REGIAO", "GRUPO", "ESCRITURA", "APLICFIN",
"CONTRIB", "COBSERVPUB", "CONCBENEF", "EQUILATUAR", "PARTSEG", "PARCELTEMP",
"REGRAS", "UTILRECPREV", "CONF", "CLASSIF_CONF", "ENDIVID", "SOLVFIN",
"RAZAOAI", "COMPROMATUAR", "SOLVATUAR", "EQUIL", "CLASSIF_EQUIL",
"DRAA", "DIPR", "DPIN", "DAIR", "TRANSP", "CLASSIF_TRANSP", "ISP201801")Como será necessário juntar essa base com a base do DAIR, vamos limpar um pouco a base de dados para tornar viável essa operação.
# Entes na base do DAIR
entes_dair <- invest %>%
select(ente, uf, competencia) %>%
distinct() %>%
unite(ente, ente, uf, sep=" - ") %>%
mutate(ente = iconv(ente, from = "utf-8", to="ASCII//TRANSLIT"),
ente = toupper(ente))
# Entes na base do ISP
entes_geral <- isp %>%
select(ENTE) %>%
mutate(ENTE = iconv(ENTE, from = "utf-8", to="ASCII//TRANSLIT"))Agora vamos juntar as bases e fazer a checagem.
entrega_dair <- entes_geral %>%
left_join(entes_dair, by=c("ENTE" = "ente")) %>%
mutate(entregou = "X") %>%
distinct() %>%
spread(key=competencia, value = entregou, fill = "-") %>%
select(- `<NA>`) A base de dados entrega_dair nos informa quais entes fizeram a entrega do DAIR no período a que se refere a base de dados. Para conultarmos os Entes de uma UF específica, por exemplo AL, podemos fazer da seguinte forma:
uf <- "AL"
entrega_dair %>%
filter(grepl(paste(uf, "$", sep=""), ENTE)) %>%
kable()| ENTE | 2018-01-01 | 2018-02-01 | 2018-03-01 | 2018-04-01 | 2018-05-01 | 2018-06-01 | 2018-07-01 | 2018-08-01 | 2018-09-01 | 2018-10-01 | 2018-11-01 | 2018-12-01 | 2019-01-01 | 2019-02-01 | 2019-03-01 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ARAPIRACA - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | - |
| ATALAIA - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| BARRA DE SANTO ANTONIO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| BELEM - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| BELO MONTE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| BOCA DA MATA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| BRANQUINHA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| CACIMBINHAS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| CAJUEIRO - AL | X | X | X | - | - | - | - | - | - | - | - | - | - | - | - |
| CAMPESTRE - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| CAMPO ALEGRE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| CANAPI - AL | X | X | X | X | X | X | X | - | - | - | - | - | - | - | - |
| CARNEIROS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| CHA PRETA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| COITE DO NOIA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| COLONIA LEOPOLDINA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| COQUEIRO SECO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| CORURIPE - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | - |
| CRAIBAS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| FLEXEIRAS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| GIRAU DO PONCIANO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| GOVERNO DO ESTADO DE ALAGOAS - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| IGACI - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| INHAPI - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| JACUIPE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| JAPARATINGA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| JARAMATAIA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| JEQUIA DA PRAIA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| JUNDIA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| JUNQUEIRO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| LAGOA DA CANOA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MACEIO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MAJOR IZIDORO - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| MAR VERMELHO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MARAGOGI - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | - |
| MARAVILHA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MARECHAL DEODORO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MARIBONDO - AL | X | X | X | X | - | - | - | - | - | - | - | - | - | - | - |
| MATA GRANDE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MATRIZ DE CAMARAGIBE - AL | X | X | X | X | X | X | X | X | X | X | X | X | - | - | - |
| MESSIAS - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| MINADOR DO NEGRAO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MONTEIROPOLIS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| MURICI - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| NOVO LINO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| OLHO D’AGUA DAS FLORES - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| OLIVENCA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| OURO BRANCO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PALESTINA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PALMEIRA DOS INDIOS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PAO DE ACUCAR - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PASSO DE CAMARAGIBE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PAULO JACINTO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PENEDO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PILAR - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PINDOBA - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | - |
| PIRANHAS - AL | X | X | X | X | X | X | X | X | X | X | X | X | X | X | - |
| POCO DAS TRINCHEIRAS - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PORTO CALVO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| PORTO DE PEDRAS - AL | X | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| QUEBRANGULO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SANTA LUZIA DO NORTE - AL | X | X | X | X | X | X | X | X | X | X | X | X | - | - | - |
| SANTANA DO MUNDAU - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SAO JOSE DA LAJE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SAO JOSE DA TAPERA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SAO LUIZ DO QUITUNDE - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SAO MIGUEL DOS MILAGRES - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SAO SEBASTIAO - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| SENADOR RUI PALMEIRA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| TANQUE D’ARCA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| TAQUARANA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| TEOTONIO VILELA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| VICOSA - AL | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
O quadro acima nos fornece uma indicação de quais RPPS estão inadimplentes com a obrigação de encaminhamento do DAIR à SPrev. O quadro está ordenado por ordem alfabética mas poderia ser ordenado por inadimplência, ou seja, RPPS com maior quantidade de inadimplência no período viriam primeiro.
Caso seja necessário exportar os dados para uma planilha do excel:
setwd("..\\dados-produzidos")
write_xlsx(entrega_dair, "entrega_dair_AL.xlsx")Uma análise possível com os dados disponibilizados é a verificação de que o RPPS possui recursos aplicados em fundos de investimentos vedados. A partir da edição da Resolução CMN n. 4.604/17 que altera a Resolução CMN n. 3.922/10, a SPrev passou a divulgar uma relação com os fundos de investimentos que seriam vedados aos RPPS. A lista é constantemente atualizada e por ocasião da elaboração deste documento a lista disponível era FUNDOS-VEDADOS-CARTEIRA-DOS-FUNDOS-21122018.pdf. Este arquivo pode ser baixado no site da SPrev.
Os dados contidos no arquivo acima foram extraídos utilizando-se um script em R gerando o arquivo fundos_vedados_21-12-2018.xlsx que será utilizado para verificar se um RPPS possui recursos aplicados nesses fundos.
Vamos à importação dos dados:
setwd("..\\dados")
fundos_vedados <- read_excel("fundos_vedados_21-12-2018.xlsx")Essa base de dados possui 138 registros. Será que existe duplicidade de fundos na base?
any(duplicated(fundos_vedados$`CNPJ DO FUNDO`))[1] FALSE
Para a identificação dos RPPS que possuem investimentos em fundos vedados será necessário “cruzar” os dados das duas bases: invest e fundos_vedados. Mas para isso será necessário, antes, fazer uma correção na base, especificamente na variável que identifica o CNPJ do fundo de investimento, visto que essa é a chave que nos permitirá relacionar as duas bases de dados.
Na base invest a variável que contém informação sobre o CNPJ do fundo de investimento é ident_ativo e na base fundos_vedados é a variável CNPJ DO FUNDO.
Vamos inspecionar as quinze primeiros valores destas duas variáveis:
invest$ident_ativo[1:15] [1] "3550 83070" "3550 5738X" "2358 61786" "3550 60801" "11328882000135" "3550 83615" "3550 83070" "3550 5738X" "11328882000135" "2358 61786"
[11] "3550 60801" "3550 83615" "2358 61786" "3550 60801" "3550 83615"
fundos_vedados$`CNPJ DO FUNDO`[1:15] [1] "00.828.035/0001-13" "01.107.772/0001-90" "01.375.954/0001-41" "01.653.201/0001-50" "03.362.624/0001-47" "04.877.280/0001-71" "05.086.234/0001-17" "05.313.396/0001-40"
[9] "06.018.364/0001-85" "06.086.158/0001-02" "07.399.646/0001-32" "07.766.151/0001-02" "07.967.080/0001-06" "08.203.825/0001-15" "09.006.914/0001-34"
Como pode ser visto, os valores do CNPJ estão “formatados” de formas distintas nas duas bases. Será necessário realizar a correção que vai consistir simplesmente remover os caracteres de pontuação. É isso que o código a seguir faz.
fundos_vedados$`CNPJ DO FUNDO` <- gsub("[[:punct:]]", "", fundos_vedados$`CNPJ DO FUNDO`)Agora que fizemos a limpeza das variáveis, podemos realizar o cruzamento dos dados. No comando abaixo criamos uma nova coluna (ou variável caso prefiram) na base de dados invest chamada aplica_fundo_vedado que assumirá o valor 1 caso o CNPJ do fundo conste da base de fundos vedados e 0 caso contrário. Logo em seguida aplicamos um filtro para obter apenas os registros onde a variável aplica_fundos_vedados assume o valor 1 e criamos uma nova base de dados com esses valores chamada invest_fv.
invest_fv <- invest %>%
mutate(aplica_fundo_vedado = ifelse(ident_ativo %in% fundos_vedados$`CNPJ DO FUNDO`, 1, 0)) %>%
filter(aplica_fundo_vedado == 1)Gerada essa nova base de dados, vamos agora exportá-la para um arquivo do Excel.
setwd("..\\dados-produzidos")
write_xlsx(invest_fv, "AplicacoesFundosVedadosBR.xlsx")Filtrando a base de dados podemos agora identificar os Entes de um EstadoF que possuíam, em ao menos um dos períodos abrangidos pela base de dados, aplicações em fundos de investimentos vedados.
Exemplo: Será que no estado do Tocantins existe algum RPPS com aplicações em fundos vedados?
# Definição da UF de interesse
UF <- "TO"
# Aplicação de filtro
invest_fv %>%
filter(uf == UF) %>%
select(ente, ident_ativo, nm_ativo) %>%
distinct() %>%
kable()| ente | ident_ativo | nm_ativo |
|---|---|---|
| Governo do Estado do Tocantins | 13651947000104 | TOTEM FI RF II |
| Governo do Estado do Tocantins | 14721044000115 | INFRA SANEAMENTO FIP |
| Governo do Estado do Tocantins | 20886575000160 | FI EM PARTICIPAÇÕES FP2 |
| Governo do Estado do Tocantins | 13555918000149 | AQUILLA FII |
| Governo do Estado do Tocantins | 14069202000102 | AQUILLA RENDA FII |
| Governo do Estado do Tocantins | 13593438000172 | ECO HEDGE FIM CP LP |
| Governo do Estado do Tocantins | 12440789000180 | LEME MULTISETORIAL IPCA FIDC |
| Governo do Estado do Tocantins | 11827568000105 | INCENTIVO FI REFERENCIADO CDI CP |
| Governo do Estado do Tocantins | 18369510000104 | INFRA REAL ESTATE FII |
| Governo do Estado do Tocantins | 13344834000166 | INCENTIVO FIDC MULTISETORIAL II |
| Governo do Estado do Tocantins | 10355516000102 | TOP FUNDO DE INVESTIMENTO RENDA FIXA |
| Governo do Estado do Tocantins | 11784036000120 | LEME IMA-B FI RF PREVIDENCIÁRIO |
| Governo do Estado do Tocantins | 23954899000187 | TOWER BRIDGE II RF FI IMA-B 5 |
| Governo do Estado do Tocantins | 12312767000135 | ÁTICO FLORESTAL FIP |
| Governo do Estado do Tocantins | 15798354000109 | FUNDO DE INVESTIMENTO EM PARTICIPAÇÕES LSH |
| Governo do Estado do Tocantins | 09006914000134 | RB CAPITAL RENDA - FII |
| Governo do Estado do Tocantins | 15461076000191 | FUNDO DE INVESTIMENTO IMOBILIÁRIO BR HOTÉIS - FII |
| Governo do Estado do Tocantins | 12845801000137 | TOWER BRIDGE RF FI IMA-B 5 |
| Governo do Estado do Tocantins | 15350909000147 | VITÓRIA RÉGIA FI RF LP |
| Governo do Estado do Tocantins | 10625626000147 | CONQUEST FIP |
| Governo do Estado do Tocantins | 13707891000162 | VIAJA BRASIL PRIVATE EQUITY FIP |
| Governo do Estado do Tocantins | 14631148000139 | ÁTICO RENDA FII |
| Palmas | 17213821000109 | FIP CAIS MAUA DO BRASIL INFRAESTRUTURA |
| Palmas | 09006914000134 | RB CAPITAL RENDA II FII |
| Palmas | 25246183000150 | TERCON FIC FIM MULTICRÉDITO CRÉDITO PRIVADO |
Agora vamos estudar o perfil dos investimentos de um determinado RPPS. Vamos olhar o RPPS de São Gonçalo no Estado do Rio de Janeiro.
Vamos a seguir identificar o Ente e o período de interesse para definição do perfil.
ENTE <- "São Gonçalo"
UF <- "RJ"
periodo <- range(invest$competencia, na.rm = TRUE)
periodo <- seq(periodo[1], periodo[2], by='month')Feita a identificação vamos filtrar a base de dados para encontrar os registros relativos ao Ente selecionado.
invest_rpps <- invest %>%
filter(uf == UF, ente == ENTE) %>%
arrange(competencia) %>%
select(competencia, tipo_ativo, vlr_total_atual) %>%
group_by(competencia, tipo_ativo) %>%
summarise(vlr_total_atual = sum(vlr_total_atual, na.rm = TRUE)) %>%
spread(key = competencia, value = vlr_total_atual) kable(invest_rpps,
format.args = list(decimal.mark = ",", big.mark = "."),
col.names = c("Tipo Ativo", format(as.Date(names(invest_rpps[-1])), "%m/%Y")))| Tipo Ativo | 01/2018 | 02/2018 | 03/2018 | 04/2018 | 05/2018 | 06/2018 | 07/2018 | 08/2018 | 09/2018 | 10/2018 | 11/2018 | 12/2018 | 01/2019 | 02/2019 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Disp | 5.224.878 | 4.146.390 | 23.984,19 | 15.013,17 | 3.378,3 | 3.807,39 | 18.744,58 | 9.356,72 | 12.536,63 | 12.734,01 | 19.810,5 | 481.004,5 | 20.577,35 | 4.383.475,4 |
| FI 100% títulos TN | 5.355.800 | 5.387.976 | 5.439.669,25 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| FI 100% títulos TN - Art. 7º, I, b | NA | NA | NA | 5.463.394,02 | 5.378.163,5 | 5.382.668,62 | 5.456.296,12 | 5.414.787,83 | 5.478.713,96 | 5.654.074,88 | 5.705.889,9 | 7.485.045,0 | 7.587.217,76 | 7.608.137,0 |
| FI de Renda Fixa | 1.003.936 | 2.608.065 | 3.073.739,29 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| FI em Participações - Art. 8º, IV, a | NA | NA | NA | 9.018.494,10 | 9.017.556,9 | 9.016.619,68 | 9.015.701,35 | 9.014.783,03 | 9.013.864,09 | 9.012.945,16 | 9.012.025,4 | 9.011.104,9 | 9.010.185,35 | 9.009.186,8 |
| FI em Participações - Fechado | 9.021.537 | 9.020.500 | 9.019.431,32 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| FI Multimercado - Aberto - Art. 8º, III | NA | NA | NA | 1.138.395,17 | 1.135.119,8 | 1.126.206,02 | 1.115.459,63 | 1.102.219,57 | 996.980,81 | 996.025,21 | 1.018.345,2 | 856.668,5 | 855.624,31 | 855.192,7 |
| FI Renda Fixa - Geral - Art. 7º, IV, a | NA | NA | NA | 0,00 | 0,0 | 0,00 | 0,00 | 0,00 | 4.554.008,80 | 9.501.346,42 | 11.087.416,7 | 2.096.557,8 | 14.694.334,08 | 9.733.664,9 |
| FI Renda Fixa Crédito Privado | 3.360.512 | 2.783.212 | 2.782.746,72 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| FI Renda Fixa Crédito Privado - Art. 7º, VII, b | NA | NA | NA | 2.782.259,17 | 2.780.138,2 | 2.780.012,69 | 2.779.960,16 | 2.780.306,86 | 2.780.734,35 | 2.780.862,96 | 2.553.965,4 | 2.553.328,7 | 2.553.199,68 | 2.553.279,5 |
| FI Renda Fixa Referenciado - Art. 7º, III, a | NA | NA | NA | 7.594.082,37 | 8.198.627,7 | 11.745.578,39 | 9.070.563,91 | 9.480.812,26 | 0,00 | 0,00 | 0,0 | 0,0 | 0,00 | 0,0 |
| FI Renda Fixa/Referenciados RF | 1.142.921 | 1.141.682 | 1.139.725,66 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
O quadro mostra uma mudança nas aplicações a partir de abril de 2018 em resposta às alterações introduzidas pela Resolução CMN n. 4.604/17 do Conselho Monetário Nacional que alterou a Resolução CMN n. 3.922/10. Talvez em razão disso seja interessante limitar a série para os meses posteriores a abril de 2018, inclusive.
invest_rpps <- invest_rpps %>% select(-(2:4))
invest_rpps <- invest_rpps[complete.cases(invest_rpps[,-1]),]kable(invest_rpps,
format.args = list(decimal.mark = ",", big.mark = "."),
col.names = c("Tipo Ativo", format(as.Date(names(invest_rpps[-1])), "%m/%Y")))| Tipo Ativo | 04/2018 | 05/2018 | 06/2018 | 07/2018 | 08/2018 | 09/2018 | 10/2018 | 11/2018 | 12/2018 | 01/2019 | 02/2019 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Disp | 15.013,17 | 3.378,3 | 3.807,39 | 18.744,58 | 9.356,72 | 12.536,63 | 12.734,01 | 19.810,5 | 481.004,5 | 20.577,35 | 4.383.475,4 |
| FI 100% títulos TN - Art. 7º, I, b | 5.463.394,02 | 5.378.163,5 | 5.382.668,62 | 5.456.296,12 | 5.414.787,83 | 5.478.713,96 | 5.654.074,88 | 5.705.889,9 | 7.485.045,0 | 7.587.217,76 | 7.608.137,0 |
| FI em Participações - Art. 8º, IV, a | 9.018.494,10 | 9.017.556,9 | 9.016.619,68 | 9.015.701,35 | 9.014.783,03 | 9.013.864,09 | 9.012.945,16 | 9.012.025,4 | 9.011.104,9 | 9.010.185,35 | 9.009.186,8 |
| FI Multimercado - Aberto - Art. 8º, III | 1.138.395,17 | 1.135.119,8 | 1.126.206,02 | 1.115.459,63 | 1.102.219,57 | 996.980,81 | 996.025,21 | 1.018.345,2 | 856.668,5 | 855.624,31 | 855.192,7 |
| FI Renda Fixa - Geral - Art. 7º, IV, a | 0,00 | 0,0 | 0,00 | 0,00 | 0,00 | 4.554.008,80 | 9.501.346,42 | 11.087.416,7 | 2.096.557,8 | 14.694.334,08 | 9.733.664,9 |
| FI Renda Fixa Crédito Privado - Art. 7º, VII, b | 2.782.259,17 | 2.780.138,2 | 2.780.012,69 | 2.779.960,16 | 2.780.306,86 | 2.780.734,35 | 2.780.862,96 | 2.553.965,4 | 2.553.328,7 | 2.553.199,68 | 2.553.279,5 |
| FI Renda Fixa Referenciado - Art. 7º, III, a | 7.594.082,37 | 8.198.627,7 | 11.745.578,39 | 9.070.563,91 | 9.480.812,26 | 0,00 | 0,00 | 0,0 | 0,0 | 0,00 | 0,0 |
Os comandos a seguir fornecem um gráfico do percentual aplicado em cada fundo de investimento por mês com indicação de eventuais fundos vedados. Vamos explicitar o passo a passo até a elaboração do gráfico.
O primeiro passo é obter na base de investimentos (invest) os dados relativos ao RPPS de interesse e os registros relativos aos ativos que se refiram a fundos de investimentos.
Isso é feito a seguir:
perfil <- invest %>%
filter(uf == UF, ente == ENTE, grepl("\\d{14}", ident_ativo)) %>%
mutate(fundos = paste(nm_ativo, " [", ident_ativo, "]", sep = "")) %>%
group_by(competencia, fundos) %>%
summarise(vlr_total_atual = sum(vlr_total_atual, na.rm = TRUE)) %>%
ungroup() %>%
group_by(competencia) %>%
mutate(pct_aplic_fundo = vlr_total_atual / sum(vlr_total_atual, na.rm = TRUE)) O passo a seguir não é absolutamente necessário para o que queremos. Ele apenas vai nos permitir uma certa ordenação dos fundos de investimentos no gráfico de forma que fundos com maior valor aplicado apareçam antes de fundos com menos recursos. A estratégia adotada (não necessariamente a melhor) é ordenar pelo valor médio do percentual investido no período.
medias <- perfil %>%
group_by(fundos) %>%
summarise(media = mean(pct_aplic_fundo, na.rm = TRUE)) %>%
arrange(desc(media)) %>%
mutate(ordem = rank(media, ties.method= "first"))Agora precisamos juntar esses dados com a base de dados do RPPS obtida anteriormente.
# Juntar com base contendo a ordenação dos fundos
perfil <- perfil %>%
left_join(medias[, c("fundos", "ordem")], by="fundos") %>%
arrange(desc(ordem))Agora vamos identificar os fundos vedados.
# Identificar fundos que sejam vedados.
perfil <- perfil %>%
mutate(vedado = ifelse(gsub(".*\\[(.*)\\]", "\\1", fundos) %in% fundos_vedados$`CNPJ DO FUNDO`, "Vedado", "Permitido"))E agora já podemos fazer o gráfico.
ggplot(perfil, aes(x=competencia, y=reorder(fundos, ordem), size=pct_aplic_fundo,colour = factor(vedado))) +
geom_point() +
xlab("Meses") + ylab("Fundos") +
scale_color_manual(values = c("lightblue", "tomato"))O gráfico mostra a existência de um mesmo fundo com denominações ligeiramente diferentes. Exemplo: o Itaú Soberano e o Catânia.
Se o RPPS inciar um investimento em um fundo novo será possível identificá-lo nesse gráfico, o que parece ser um recurso interessante para o monitoramento das carteiras de fundos de investimento dos RPPS.
De grande importância para os RPPS são os seus ativos garantidores, ou seja, os recursos que o RPPS acumula e aplica no mercado financeiro para ajudar a pagar os benefícios juntamente com os bens, valores e direitos vinculados ao RPPS.
Neste capítulo nosso objetivo é verificar como os ativos garantidores estão evoluindo no tempo. Basicamente nossa proposta é fazer um gráfico de linha mostrando a evolução dos recursos.
Em razão de disposições contidas na Resolução CMN n. 3.922/10 vamos trabalhar com os conceitos de Ativo Garantidor Bruto e Ativo Garantidor Líquido.
Por ativo garantidor bruto iremos considerar a totalidade dos ativos que o RPPS relaciona no DAIR. O ativo garantidor líquido não inclui determinados ativos conforme disposto no art. 6o da Resolução CMN n. 3.922/10.
Na base de dados do DAIR a identificação dos ativos está definida na variável tipo_ativo. Antes de iniciarmos, vamos verificar quais tipos de ativos existem na base de dados:
invest %>%
distinct(tipo_ativo) %>%
kable()| tipo_ativo |
|---|
| Disp |
| FI 100% títulos TN |
| FI 100% títulos TN - Art. 7º, I, b |
| FI de Renda Fixa |
| FI em Ações |
| FI Renda Fixa Crédito Privado |
| FI Imobiliários |
| FI Multimercado - Aberto |
| FI Renda Fixa - Geral - Art. 7º, IV, a |
| FI de Ações - Geral - Art. 8º, II, a |
| FI Multimercado - Aberto - Art. 8º, III |
| FI Renda Fixa Crédito Privado - Art. 7º, VII, b |
| FI de Ações - Índices c/ no mínimo 50 ações - Art. 8º, I, a |
| FI Imobiliários - Art. 8º, IV, b |
| Títulos de Renda Fixa |
| FI Renda Fixa/Referenciados RF |
| FI Renda Fixa Referenciado - Art. 7º, III, a |
| Poupança |
| Poupança - Art. 7º, VI, b |
| CDB - Certificado de Depósito Bancário - Art. 7º, VI, a |
| Valores Mobiliários |
| FI de Índices Referenciados em Renda Fixa |
| Outros Bens, Direitos e Ativos |
| FI de Índices Referenciados em RF Subíndices Anbima |
| Títulos Tesouro Nacional |
| ETF - Demais Indicadores de RF - Art. 7º, IV, b |
| Títulos Públicos de emissão do TN - Art. 7º , I, a |
| ETF - Renda Fixa Referenciado - Art. 7º, III, b |
| FI Ações referenciados |
| FI em Direitos Creditórios - Fechado - Cota Sênior |
| FI em Participações - Fechado |
| Prédio Comercial |
| FI em Direitos Creditórios - Aberto - Cota Sênior |
| FI em Participações - Art. 8º, IV, a |
| FI em Direitos Creditórios - Cota Sênior - Art. 7º, VII, a |
| Operações Compromissadas com Títulos do TN |
| Operações compromissadas - Art. 7º , II |
| FI de Índices Referenciados em Ações |
| ETF - Índice de Ações (c/ no mínimo 50) - Art. 8º, I, b |
| Outros - Imóveis |
| Terreno |
| Casa |
| Loja |
| FI Imobiliário |
| Prédio Residencial |
| NA |
| Fundos de Investimento não previstos em Resolução CMN |
| Apartamento |
| Fundo Investimento - Sufixo Investimento no Exterior |
| ETF - Demais Índices de Ações - Art. 8º, II, b |
| FI em Direitos Creditórios - Aberto - Cota Subordinada |
Algumas observações: em razão das alterações feitas na Resolução CMN n. 3.922/10 pela Resolução CMN n. 4.604/17, que passaram a vigir a partir de abril de 2018, alguns ativos estão com duas denominações na base, refletindo as alterações realizadas no CADPREV para se adequar à legislação. Por exemplo os ativos FI 100% títulos TN e FI 100% títulos TN - Art. 7º, I, b ou Poupança e Poupança - Art. 7º, VI, b.
Também é possível ver a existência de ativos sem identificação, representados pelo NA. Vamos ver quantos ativos estão nessa condição:
sum(is.na(invest$tipo_ativo))[1] 4
Apenas 4 observações. Vamos inspecioná-las:
kable(subset(invest, is.na(tipo_ativo)))| cnpj | uf | ente | competencia | segmento | tipo_ativo | limite_resol_cmn | ident_ativo | nm_ativo | qtd_quotas | vlr_atual_ativo | vlr_total_atual | perc_recursos_rpps | pl_fundo | perc_pl_fundo | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 91760 | 0.30 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 91797 | 0.26 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 91823 | 0.24 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| 91861 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
Aparentemente foram erros. Vamos excluir esses registros da base de dados:
invest <- subset(invest, !is.na(tipo_ativo))Agora estamos em condições de realizar a soma dos ativos registrados no DAIR em cada mês para obtermos o total dos ativos garantidores brutos no mês.
ativoGarantBruto <- invest %>%
group_by(uf, ente, competencia) %>%
summarize(vlrAtivoTotal = sum(vlr_total_atual, na.rm=TRUE)) Vamos ver agora como está evoluindo os ativos garantidores totais de Nova Iguaçu no Estado do Rio de Janeiro:
ENTE <- "Nova Iguaçu"
UF <- "RJ"
ativoGarantBruto %>%
filter(uf == UF, ente == ENTE) %>%
ggplot(aes(x=competencia, y=vlrAtivoTotal)) +
geom_line() +
geom_point() +
theme(axis.text.x = element_text(angle = 90, vjust=0.5)) +
scale_x_date(date_breaks="1 month", labels = date_format("%Y-%m"))Alguma coisa parece errada em janeiro e fevereiro de 2019. Mais de 60 bilhões!?!?
Vamos agora calcular os ativos garantidores líquidos, ou seja, devemos excluir do rol de ativos constantes do DAIR, de acordo com o art.6o da Resolução CMN 3.922/10, os ativos vinculados por lei ao regime próprio de previdência social, demais bens, direitos e ativos com finalidade previdenciária do regime próprio de previdência social, as disponibilidades financeiras mantidas em conta corrente e as cotas de fundos de investimento imobiliário que forem admitidas à negociação no mercado secundário, conforme regulamentação da CVM, e que sejam integralizadas por imóveis legalmente vinculados ao Regime Próprio de Previdência Social.
Para tanto devemos conseguir identificar, no rol de ativos que integram o DAIR, aqueles que se encaixam nas categorias acima mencionadas. Para simplificar essa tarefa vamos trabalhar com os dados posteriores a abril de 2018 em razão de ter sido essa a data limite para os RPPS ajustarem seus investimentos ao regramento definido pela Resolução n. CMN 4.604/17 e também porque a partir dessa data o DAIR passou a contar com novos ativos.
Vamos então filtrar a base de dados:
ativoGarantLiquido <- invest %>%
filter(competencia >= ymd("2018-04-01"))Vamos agora inspecionar o rol de ativos com vistas a identificarmos quais devem ser excluídos.
ativoGarantLiquido %>%
distinct(tipo_ativo) %>%
kable()| tipo_ativo |
|---|
| Disp |
| FI 100% títulos TN - Art. 7º, I, b |
| FI Renda Fixa - Geral - Art. 7º, IV, a |
| FI de Ações - Geral - Art. 8º, II, a |
| FI Multimercado - Aberto - Art. 8º, III |
| FI Renda Fixa Crédito Privado - Art. 7º, VII, b |
| FI de Ações - Índices c/ no mínimo 50 ações - Art. 8º, I, a |
| FI Imobiliários - Art. 8º, IV, b |
| FI Renda Fixa Referenciado - Art. 7º, III, a |
| Poupança - Art. 7º, VI, b |
| CDB - Certificado de Depósito Bancário - Art. 7º, VI, a |
| Títulos de Renda Fixa |
| Valores Mobiliários |
| ETF - Demais Indicadores de RF - Art. 7º, IV, b |
| Outros Bens, Direitos e Ativos |
| Títulos Públicos de emissão do TN - Art. 7º , I, a |
| ETF - Renda Fixa Referenciado - Art. 7º, III, b |
| FI em Participações - Art. 8º, IV, a |
| FI em Direitos Creditórios - Cota Sênior - Art. 7º, VII, a |
| Prédio Comercial |
| Operações compromissadas - Art. 7º , II |
| ETF - Índice de Ações (c/ no mínimo 50) - Art. 8º, I, b |
| Outros - Imóveis |
| Terreno |
| Casa |
| Loja |
| Prédio Residencial |
| Fundos de Investimento não previstos em Resolução CMN |
| FI 100% títulos TN |
| FI de Renda Fixa |
| FI em Ações |
| FI Multimercado - Aberto |
| Apartamento |
| Fundo Investimento - Sufixo Investimento no Exterior |
| ETF - Demais Índices de Ações - Art. 8º, II, b |
Para realizar a exclusão dos ativos vamos adotar o seguinte critério: excluir todos os ativos em cujas descrições, constantes do quadro acima, não estejam presentes a indicação do dispositivo da Resolução CMN n. 3.922/10 no qual o ativo se enquadra. Não sei se o critério é adequado mas servirá ao propósito de ilustrar como realizar o procedimento. Surgindo formas melhores de se fazer a seleção de ativos vamos implementar.
Então o próximo passo é realizar a exclusão dos referidos ativos:
ativoGarantLiquido <- ativoGarantLiquido %>%
filter(grepl("Art.*$", tipo_ativo))Vamos dar uma conferida:
ativoGarantLiquido %>%
distinct(tipo_ativo) %>%
kable()| tipo_ativo |
|---|
| FI 100% títulos TN - Art. 7º, I, b |
| FI Renda Fixa - Geral - Art. 7º, IV, a |
| FI de Ações - Geral - Art. 8º, II, a |
| FI Multimercado - Aberto - Art. 8º, III |
| FI Renda Fixa Crédito Privado - Art. 7º, VII, b |
| FI de Ações - Índices c/ no mínimo 50 ações - Art. 8º, I, a |
| FI Imobiliários - Art. 8º, IV, b |
| FI Renda Fixa Referenciado - Art. 7º, III, a |
| Poupança - Art. 7º, VI, b |
| CDB - Certificado de Depósito Bancário - Art. 7º, VI, a |
| ETF - Demais Indicadores de RF - Art. 7º, IV, b |
| Títulos Públicos de emissão do TN - Art. 7º , I, a |
| ETF - Renda Fixa Referenciado - Art. 7º, III, b |
| FI em Participações - Art. 8º, IV, a |
| FI em Direitos Creditórios - Cota Sênior - Art. 7º, VII, a |
| Operações compromissadas - Art. 7º , II |
| ETF - Índice de Ações (c/ no mínimo 50) - Art. 8º, I, b |
| ETF - Demais Índices de Ações - Art. 8º, II, b |
Aparentemente está tudo ok. Podemos agora somar os valores dos ativos. Esse passo é idêntico ao já realizado para agregar os valores dos ativos brutos.
ativoGarantLiquido <- ativoGarantLiquido %>%
group_by(uf, ente, competencia) %>%
summarize(vlrAtivoTotal = sum(vlr_total_atual, na.rm=TRUE)) Agora vamos ao gráfico:
ENTE <- "Nova Iguaçu"
UF <- "RJ"
ativoGarantLiquido %>%
filter(uf == UF, ente == ENTE) %>%
ggplot(aes(x=competencia, y=vlrAtivoTotal)) +
geom_line() +
geom_point() +
theme(axis.text.x = element_text(angle = 90, vjust=0.5)) +
scale_x_date(date_breaks="1 month", labels = date_format("%Y-%m"))Vemos agora uma queda nos ativos liquidos de novembro para dezembro de 2018.
Uma boa ideia é apresentar as duas séries no mesmo gráfico e também obter a relação entre o ativo garantidor liquido e ativo garantidor bruto.
ativoGarantBruto$tipo <- "Ativo Bruto"
ativoGarantLiquido$tipo <- "Ativo Liquido"
ativos_garantidores <- rbind(ativoGarantBruto, ativoGarantLiquido)Vamos agora fazer o gráfico:
ENTE <- "Nova Iguaçu"
UF <- "RJ"
ativos_garantidores %>%
filter(uf == UF, ente == ENTE) %>%
ggplot(aes(x=competencia, y=log(vlrAtivoTotal), group=tipo, color=tipo)) +
geom_line(size=1) +
geom_point(size=2) +
theme(axis.text.x = element_text(angle = 90, vjust=0.5)) +
scale_x_date(date_breaks="1 month", labels = date_format("%Y-%m"))Para que fosse possível ter a visualização dos dados fizemos o gráfico do logaritimo dos valores dos ativos.
A relação entre ativos líquidos e brutos pode ser obtida da seguinte forma:
ativos_garantidores2 <- ativoGarantBruto %>%
inner_join(ativoGarantLiquido, by=c("ente", "competencia")) %>%
mutate(relacao = round(vlrAtivoTotal.y / vlrAtivoTotal.x * 100, 2))Vamos plotar essa relação para o município de São Gonçalo no ERJ:
ENTE <- "São Gonçalo"
UF <- "RJ"
ativos_garantidores2 %>%
filter(uf.x == UF, ente == ENTE) %>%
ggplot(aes(x=competencia, y=relacao)) +
geom_line() +
geom_point() +
theme(axis.text.x = element_text(angle = 90, vjust=0.5)) +
scale_x_date(date_breaks="1 month", labels = date_format("%Y-%m"))Uma outra verificação possível com os dados disponibilizados refere-se ao enquadramento dos fundos de invetimentos realizado pelos RPPS. Estamos aqui denominando de “enquadramento” ao ato de classificar um determinado ativo, em especial os fundos de investimento, em uma das opções constantes da Resolução CMN n. 3.922/10.
Assim, nosso objetivo nesse tópico é conferir o enquadramento informado pelo RPPS ao preencher o DAIR com o enquadramento definido pela SPrev/ME em relação aos fundos de investimento.
Periodicamente a SPrev publica em seu site uma planilha com o enquadramento dos fundos de investimento conforme Resolução CMN n. 3.922/10. Assim é possível comparar o enquadramento divulgado pela SPrev, contida nessa planilha, com o enquadramento realizado pelos RPPS por ocasião do preenchimento do DAIR.
Vamos importar os dados contidos na planilha da SPrev:
setwd("..\\dados")
EnquadSPrev <- read_excel("Planilha-de-Enquadramento-dos-Fundos-com-aplicacoes-dos-RPPS_082019_.xlsx", skip=1) Vamos colocar nomes mais amigáveis na base de dados.
names(EnquadSPrev) <- c("cnpj", "nm_fundo", "seguimento", "tipo_ativo", "cnpj_admin", "cnpj_gestor")Agora podemos inspecionar a base de dados.
kable(head(EnquadSPrev))| cnpj | nm_fundo | seguimento | tipo_ativo | cnpj_admin | cnpj_gestor |
|---|---|---|---|---|---|
| 68305000135 | FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAIXA EMPREENDER RENDA FIXA LONGO PRAZO | Renda Fixa | FI Renda Fixa - Geral - Art. 7º, IV, a | 00.360.305/0001-04 | 00.360.305/0001-04 |
| 180995000110 | SAFRA EXECUTIVE MAX RF FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | Renda Fixa | FI Renda Fixa - Geral - Art. 7º, IV, a | 06.947.853/0001-11 | 62.180.047/0001-31 |
| 322699000106 | BRADESCO H FUNDO DE INVESTIMENTO RENDA FIXA REFERENCIADO DI CRÉDITO PRIVADO LONGO PRAZO EXECUTIVO | Renda Fixa | FI Renda Fixa “Crédito Privado” - Art. 7º, VII, b | 60.746.948/0001-12 | 62.375.134/0001-44 |
| 743026000120 | BANRISUL VIP FUNDO DE INVESTIMENTO RENDA FIXA DE LONGO PRAZO | Renda Fixa | FI Renda Fixa - Geral - Art. 7º, IV, a | 92.702.067/0001-96 | 93.026.847/0001-26 |
| 756851000169 | BB RENDA FIXA 500 FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | Renda Fixa | FI Renda Fixa - Geral - Art. 7º, IV, a | 30.822.936/0001-69 | 30.822.936/0001-69 |
| 787095000135 | BANESTES FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES | Renda Variável | FI de Ações - Geral - Art. 8º, II, a | 28.127.603/0001-78 | 28.156.057/0001-01 |
Feita a importação dos dados, será necessário realizar o pré-processamento com vistas a melhorar a qualidade da base para uso posterior.
Um primeiro ajuste é retirar da variável tipo_ativo a parte da string que identifica o dispositivo da Resolução CMN 3922/10 no qual o fundo está enquadrado. Por exemplo, na string FI de Ações - Índices c/ no mínimo 50 ações - Art. 8º, I, a, queremos apenas o valor Art. 8º, I, a. Podemos fazer isso da seguinte forma:
EnquadSPrev <- EnquadSPrev %>%
mutate(enquad_sprev = str_extract(tipo_ativo, "Art.*$"))Um outro ajuste é corrigir o valor do CNPJ do fundo de investimento que, no processo de importação, perdeu os zeros que estavam à esquerda. Será necessário voltar com esses zeros para que os CNPJ tenham todos 14 dígitos.
EnquadSPrev$cnpj <- sprintf("%014.0f", EnquadSPrev$cnpj)Vamos agora filtrar a base de dados do DAIR (invest) de forma a obter apenas os registros a partir de abril de 2018 (data a partir da qual as alterações introduzidas pela Resolução CMN n. 4.604/17 passaram a vigorar) bem como os registros relativos a fundos de investimentos. Isso pode ser feito da seguinte forma:
invest_fundos <- filter(invest,
competencia >= as.Date("2018-04-01"),
grepl("\\d{14}", ident_ativo))Agora vamos criar uma nova coluna nesta base de dados contendo o enquadramento do fundo de investimento efetuado pelo RPPS ao preencher o DAIR. Vamos fazer da mesma forma que fizemos para o arquivo contendo a classificação realizada pela SPrev.
invest_fundos <- invest_fundos %>%
mutate(enquad_rpps = str_extract(tipo_ativo, "Art.*$"))Ok. Agora podemos juntar esta base, contendo os dados provenientes do DAIR, com a base contendo o enquadramento dos fundos realizado pela SPrev, para que tenhamos na mesma base de dados tanto o enquadramento realizado pelo RPPS como o enquadramento informado pela SPrev .
invest_fundos <- invest_fundos %>%
left_join(EnquadSPrev[,c("cnpj", "nm_fundo", "enquad_sprev")],
by=c("ident_ativo" = "cnpj"))
# Aumentou a quantidade de registros. Agora já temos condições de comparar as variáveis enquad_rpps com a variável enquad_sprev para identificar eventuais divergências de enquadramento. Antes, porém, mais uma pequena modificação nos dados, especificamente nas duas variáveis citadas.
invest_fundos <- invest_fundos %>%
mutate(enquad_rpps = toupper(gsub('[[:punct:]]| |º', '', enquad_rpps)),
enquad_sprev= toupper(gsub('[[:punct:]]| |º', '', enquad_sprev)))Vamos agora criar uma nova variável na base de dados invest_fundos contendo os valores 0 e 1 caso os enquadramentos sejam, respectivamente, iguais ou diferentes.
invest_fundos$diverg_enquad <- ifelse(invest_fundos$enquad_rpps == invest_fundos$enquad_sprev, 0, 1)Vamos agora filtrar para obtermos apenas os registros para os quais as classificações foram diferentes.
divergencia_enquad <- filter(invest_fundos, diverg_enquad == 1)Quantos registros nessa condição:
nrow(divergencia_enquad)[1] 26019
Quantos entes apresentaram problemas com o enquadramento de fundos de investimentos?
length(unique(divergencia_enquad$ente))[1] 1293
Vamos ver, por exemplo, o município de Japeri no Estado do Rio de Janeiro.
ENTE <- "Japeri"
UF <- "RJ"
diverg_rpps <- divergencia_enquad %>%
filter(uf == UF, ente == ENTE) %>%
select(ente, competencia, ident_ativo, nm_ativo, enquad_rpps, enquad_sprev) %>%
arrange(competencia) kable(diverg_rpps)| ente | competencia | ident_ativo | nm_ativo | enquad_rpps | enquad_sprev |
|---|---|---|---|---|---|
| Japeri | 2018-04-01 | 03737206000197 | CAIXA FI BRASIL REF. DI LONGO PRAZO | ART7IVB | ART7IVA |
| Japeri | 2018-04-01 | 12845801000137 | TOWER BRIDGE FI RF IMAB 5 | ART7IIIB | ART7IVA |
| Japeri | 2018-04-01 | 07187570000181 | BRADESCO FICFI RF REFERENCIADO DI PODER PUBLICO | ART7IIIA | ART7IVA |
| Japeri | 2018-04-01 | 13594673000169 | TMJ IMA B FI RF | ART7IIIB | ART7IVA |
| Japeri | 2018-04-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-04-01 | 17213849000146 | FI SICILIA RF LP | ART7IIIB | ART7IVA |
| Japeri | 2018-04-01 | 19391026000136 | BRS IMA-B ATIVO FIC RF | ART7IIIB | ART7IVA |
| Japeri | 2018-05-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-05-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-06-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-06-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-07-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-07-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-08-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-08-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-09-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-09-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-10-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| Japeri | 2018-10-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-11-01 | 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
| Japeri | 2018-11-01 | 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
Caso a gente queira apenas a relação dos fundos com divergência:
diverg_rpps %>%
distinct(ident_ativo, nm_ativo, enquad_rpps, enquad_sprev) %>%
kable()| ident_ativo | nm_ativo | enquad_rpps | enquad_sprev |
|---|---|---|---|
| 03737206000197 | CAIXA FI BRASIL REF. DI LONGO PRAZO | ART7IVB | ART7IVA |
| 12845801000137 | TOWER BRIDGE FI RF IMAB 5 | ART7IIIB | ART7IVA |
| 07187570000181 | BRADESCO FICFI RF REFERENCIADO DI PODER PUBLICO | ART7IIIA | ART7IVA |
| 13594673000169 | TMJ IMA B FI RF | ART7IIIB | ART7IVA |
| 05164356000184 | CAIXA FI BRASIL TITULOS PUBLICOS RF | ART7IVA | ART7IB |
| 17213849000146 | FI SICILIA RF LP | ART7IIIB | ART7IVA |
| 19391026000136 | BRS IMA-B ATIVO FIC RF | ART7IIIB | ART7IVA |
| 23215097000155 | CAIXA FIC BRASIL GESTÃO ESTRATÉGICA | ART7IVA | ART7IB |
Uma consequência imediata de divergências nos enquadramentos dos fundos de investimento é a possibilidade de burla aos limites impostos pela Resolução CMN n. 3.922/10. Essa análise é o objeto da próxima seção.
Os RPPS possuem limitações à quantidade de recursos que pode investir em determinados tipos de ativos. Estes limites estão estabelecidos na Resolução CMN n. 3.922/10. Assim, uma verificação de grande importância é quanto ao atendimento desses limites pelos RPPS.
Esta verificação é, inclusive, recomendada pela Resolução Atricon n. 05/2018, conforme descrito a seguir:
" (…)
25 A fiscalização dos RPPS terá como escopo, prioritariamente e no que couber, pontos de controle selecionados as seguir, dentre as quatro principais áreas de atuação de auditoria previdenciária:
25.4 Aplicações financeiras:
f) se a carteira de investimentos está dentro dos limites normativos "
Para realizar esta verificação, devemos calcular o percentual aplicado em cada tipo de ativo e comparar esses valores com os limites estabelecidos na Resolução CNM n. 3.922/10.
A base de dados do DAIR possui um campo denominado limites_resol_cmn que indica esses limites. Possui, também outro campo denominado perc_recursos_rpps que informa o percentual dos recursos do RPPS investido em cada um dos ativos elencados no DAIR.
Para fazermos essa verificação devemos somar esses percentuais, em cada mês, para todos os ativos de mesma natureza, ou seja, de mesma classificação, e comparar o valor obtido com o percentual permitido pela Resolução CMN n. 3.922/10.
Nossa abordagem será a seguinte: somaremos os valores de cada tipo de ativo para cada Ente e para cada mês e verificaremos o quanto o valor aplicado em cada tipo de ativo representa do total dos ativos garantidores liquidos (Art. 6o da Res. CMN n. 3.922/10) no mês.
Os limites de aplicação permitidos serão então adicionados à base de dados a partir de um arquivo externo em excel contendo a relação dos ativos e seus limites.
Vamos fazer esse passo a passo a partir da base de dados bruta.
A primeira coisa a ser feita é filtrar a base para pegarmos os registros posteriores a abril de 2018 que, como já dissemos, já incorpora as alterações promovidas na Resolução CMN n. 3.922/10 pela Resolução CMN n. 4.604/17.
Vamos então filtrar a base de dados:
dairLimites <- invest %>%
filter(competencia >= ymd("2018-04-01"))Agora precisamos ter uma classificação para cada tipo de ativo na base de dados. Em princípio, a coluna tipo_ativo deveria ser suficiente, mas não é. Vamos relembrar quais tipos de ativos estão na base filtrada:
dairLimites %>%
distinct(tipo_ativo) %>%
kable()| tipo_ativo |
|---|
| Disp |
| FI 100% títulos TN - Art. 7º, I, b |
| FI Renda Fixa - Geral - Art. 7º, IV, a |
| FI de Ações - Geral - Art. 8º, II, a |
| FI Multimercado - Aberto - Art. 8º, III |
| FI Renda Fixa Crédito Privado - Art. 7º, VII, b |
| FI de Ações - Índices c/ no mínimo 50 ações - Art. 8º, I, a |
| FI Imobiliários - Art. 8º, IV, b |
| FI Renda Fixa Referenciado - Art. 7º, III, a |
| Poupança - Art. 7º, VI, b |
| CDB - Certificado de Depósito Bancário - Art. 7º, VI, a |
| Títulos de Renda Fixa |
| Valores Mobiliários |
| ETF - Demais Indicadores de RF - Art. 7º, IV, b |
| Outros Bens, Direitos e Ativos |
| Títulos Públicos de emissão do TN - Art. 7º , I, a |
| ETF - Renda Fixa Referenciado - Art. 7º, III, b |
| FI em Participações - Art. 8º, IV, a |
| FI em Direitos Creditórios - Cota Sênior - Art. 7º, VII, a |
| Prédio Comercial |
| Operações compromissadas - Art. 7º , II |
| ETF - Índice de Ações (c/ no mínimo 50) - Art. 8º, I, b |
| Outros - Imóveis |
| Terreno |
| Casa |
| Loja |
| Prédio Residencial |
| Fundos de Investimento não previstos em Resolução CMN |
| FI 100% títulos TN |
| FI de Renda Fixa |
| FI em Ações |
| FI Multimercado - Aberto |
| Apartamento |
| Fundo Investimento - Sufixo Investimento no Exterior |
| ETF - Demais Índices de Ações - Art. 8º, II, b |
A maior parte dos ativos constante da base de dados já possui uma classificação, mas temos ainda um rol de ativos não classificados, que elencamos a seguir:
Disp
Prédio Comercial
Outros - Imóveis
Terreno
Casa
Loja
Prédio Residencial
Apartamento
Outros Bens, Direitos e Ativos
Títulos de Renda Fixa
Valores Mobiliários
Fundos de Investimento não previstos em Resolução CMN
FI 100% títulos TN
FI de Renda Fixa
FI em Ações
FI Multimercado - Aberto
Fundo Investimento - Sufixo Investimento no Exterior
Olhando o rol de ativos não classificados, podemos dizer que basicamente temos disponibilidades (Disp), imóveis (Prédio Comercial, Outros - Imóveis, Terreno, Casa, Loja, Prédio Residencial, Apartamento), ativos vinculados ao RPPS (Outros Bens, Direitos e Ativos, Títulos de Renda Fixa, Valores Mobiliários e Fundos de Investimento não previstos em Resolução CMN) e um punhado de fundos de investimento que podem ser classificados(FI 100% títulos TN, FI de Renda Fixa, FI em Ações, FI Multimercado - Aberto e Fundo Investimento - Sufixo Investimento no Exterior).
Em razão disso, vamos criar uma nova coluna na base de dados contendo uma classificação para todos os ativos.
Para os ativos sem classificação, vamos adotar as seguintes classificações: Disp, Imoveis e Outros. Os fundos não classificados o serão da seguinte forma:
| Fundo | Classificação |
|---|---|
| FI 100% títulos TN | Art. 7º, I, b |
| FI de Renda Fixa | Art. 7º, IV, b |
| FI em Ações | Art. 8º, II, a |
| FI Multimercado - Aberto | Art. 8º, III |
| Fundo Investimento - Sufixo Investimento no Exterior | Art. 9ºA, II |
Vamos agora à criação dessa nova coluna. Mas vamos por etapas para a coisa ficar clara:
O primeiro passo é criar a nova coluna (classificacao) e colocar a classificação dos ativos que já estão classificados. Isso pode ser feito da seguinte forma:
dairLimites <- dairLimites %>%
mutate(classificacao = str_extract(tipo_ativo, "Art.*$"))Agora temos que ir preenchendo esta nova coluna com a classificação dos demais ativos não classificados. Vamos fazer isso a seguir, começando com as disponibilidades e os imóveis:
dairLimites <- dairLimites %>%
mutate(classificacao = ifelse(tipo_ativo == "Disp", "Disp",
ifelse(tipo_ativo %in% c("Prédio Comercial", "Outros - Imóveis",
"Terreno", "Casa", "Loja", "Prédio Residencial",
"Apartamento"), "Imoveis",
ifelse(tipo_ativo %in% c("Outros Bens, Direitos e Ativos",
"Títulos de Renda Fixa",
"Valores Mobiliários",
"Fundos de Investimento não previstos em Resolução CMN"), "Outros",
classificacao)))
)Da mesma forma, vamos classificar os fundos que não estavam classificados.
dairLimites <- dairLimites %>%
mutate(classificacao = ifelse(tipo_ativo == "FI 100% títulos TN", "Art. 7º, I, b",
ifelse(tipo_ativo == "FI de Renda Fixa", "Art. 7º, IV, b",
ifelse(tipo_ativo == "FI em Ações", "Art. 8º, II, a",
ifelse(tipo_ativo == "FI Multimercado - Aberto", "Art. 8º, III",
ifelse(tipo_ativo == "Fundo Investimento - Sufixo Investimento no Exterior", "Art. 9ºA, II", classificacao)))))
)Vamos agora “padronizar” a variável classificacao para garantir que não tenhamos dois ativos de mesma classificação classificados de forma diferente por conta de um espaço a mais ou a menos ou outro problema qualquer.
dairLimites <- dairLimites %>%
mutate(classificacao = toupper(gsub('[[:punct:]]| |º', '', classificacao)))Vamos agora inspecionar os valores da variável classificacao:
dairLimites %>%
distinct(classificacao) %>%
arrange(classificacao) %>%
kable()| classificacao |
|---|
| ART7IA |
| ART7IB |
| ART7II |
| ART7IIIA |
| ART7IIIB |
| ART7IVA |
| ART7IVB |
| ART7VIA |
| ART7VIB |
| ART7VIIA |
| ART7VIIB |
| ART8IA |
| ART8IB |
| ART8IIA |
| ART8IIB |
| ART8III |
| ART8IVA |
| ART8IVB |
| ART9AII |
| DISP |
| IMOVEIS |
| OUTROS |
Todas as observações estão classificadas. Podemos agora continuar. O próximo passo é somar os valores de todos os ativos de uma mesma classificação para cada ente e para cada mês e ver quanto o ativo representa do ativo total do RPPS. Com isso saberemos, por exemplo, quanto de recursos um Ente tem aplicado num determinado tipo de ativo e qual o percentual dos recursos que esse ativo representa na carteira do RPPS (ativo garantidor bruto).
Vamos criar uma nova base de dados com essa agregação.
dairLimitesAgreg <- dairLimites %>%
group_by(cnpj, ente, uf, competencia, classificacao) %>%
summarise(VlrTotalAtivo = sum(vlr_total_atual, na.rm = TRUE)) %>%
ungroup() %>%
group_by(cnpj, ente, uf, competencia) %>%
mutate(pctVlrTotalAtivo = round(VlrTotalAtivo / sum(VlrTotalAtivo, na.rm=TRUE), 2))kable(head(dairLimitesAgreg, 16))| cnpj | ente | uf | competencia | classificacao | VlrTotalAtivo | pctVlrTotalAtivo |
|---|---|---|---|---|---|---|
| 3848000174 | Figueirópolis | TO | 2018-04-01 | ART7IB | 587035.91 | 0.99 |
| 3848000174 | Figueirópolis | TO | 2018-04-01 | DISP | 6113.03 | 0.01 |
| 3848000174 | Figueirópolis | TO | 2018-05-01 | ART7IB | 671861.98 | 1.00 |
| 3848000174 | Figueirópolis | TO | 2018-05-01 | DISP | 7.78 | 0.00 |
| 3848000174 | Figueirópolis | TO | 2018-06-01 | ART7IB | 671099.60 | 0.88 |
| 3848000174 | Figueirópolis | TO | 2018-06-01 | DISP | 89074.49 | 0.12 |
| 3848000174 | Figueirópolis | TO | 2018-07-01 | ART7IB | 775635.63 | 0.95 |
| 3848000174 | Figueirópolis | TO | 2018-07-01 | DISP | 41404.80 | 0.05 |
| 3848000174 | Figueirópolis | TO | 2018-08-01 | ART7IB | 816635.67 | 0.99 |
| 3848000174 | Figueirópolis | TO | 2018-08-01 | DISP | 4477.92 | 0.01 |
| 3848000174 | Figueirópolis | TO | 2018-09-01 | ART7IB | 823764.13 | 1.00 |
| 3848000174 | Figueirópolis | TO | 2018-09-01 | DISP | 950.92 | 0.00 |
| 3848000174 | Figueirópolis | TO | 2018-10-01 | ART7IB | 828262.04 | 0.98 |
| 3848000174 | Figueirópolis | TO | 2018-10-01 | DISP | 15425.97 | 0.02 |
| 3848000174 | Figueirópolis | TO | 2018-11-01 | ART7IB | 832573.14 | 0.96 |
| 3848000174 | Figueirópolis | TO | 2018-11-01 | DISP | 34668.31 | 0.04 |
Com essa base de dados é possível verificar a composição da carteira de ativos de um RPPS mês a mês. A tabela acima mostra que o município de Figueirópolis possui disponibilidades e aplicações em fundos de investimentos classificados no “Art. 7o, I, b” da Resolução CMN n. 3.922/10 (FI 100% títulos TN).
Vamos olhar graficamente como estão evoluindo os ativos do município de Nova Iguaçu no RJ:
ENTE <- "Nova Iguaçu"
UF <- "RJ"
dairLimitesAgreg %>%
filter(uf == UF, ente == ENTE) %>%
ggplot(aes(x=competencia, y=pctVlrTotalAtivo, group=classificacao, color=classificacao)) +
geom_line(size=1.5) +
geom_point(size=4) +
theme(axis.text.x = element_text(angle = 90, vjust=0.5)) +
scale_x_date(date_breaks="1 month", labels = date_format("%Y-%m"))Uma verificação interessante é se os percentuais somam 100% em todos os meses.
ENTE <- "Nova Iguaçu"
UF <- "RJ"
dairLimitesAgreg %>%
mutate(pctVlrTotalAtivo = pctVlrTotalAtivo * 100) %>%
ungroup() %>%
filter(uf == UF, ente == ENTE) %>%
select(competencia, classificacao, pctVlrTotalAtivo) %>%
spread(key=competencia, value=pctVlrTotalAtivo) %>%
rbind(., append("TOTAL", round(apply(.[,-1], 2, sum, na.rm=TRUE), 2))) %>%
kable(col.names = c("Classificação", format(as.Date(names(.)[-1]), "%b/%y")))| Classificação | abr/18 | mai/18 | jun/18 | jul/18 | ago/18 | set/18 | out/18 | nov/18 | dez/18 | jan/19 | fev/19 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ART7IB | 19 | 17 | 18 | 18 | 15 | 16 | 18 | 18 | 1 | 0 | 0 |
| ART7IIIA | 0 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ART7IVA | 6 | 9 | 9 | 10 | 12 | 12 | 10 | 9 | 0 | 0 | 0 |
| ART8IIA | NA | NA | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| DISP | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 2 | 6 | 0 | 0 |
| IMOVEIS | 75 | 73 | 73 | 72 | 72 | 71 | 71 | 71 | 92 | 100 | 100 |
| TOTAL | 100 | 100 | 100 | 100 | 100 | 99 | 99 | 100 | 99 | 100 | 100 |
Os percentuais contidos no campo pctVlrTotalAtivo foram calculados considerando todos os ativos relacionados no DAIR (ativo garantidor bruto).
Não obstante, para efeito do cálculo dos limites de aplicação de cada tipo de ativo, a Resolução CMN n. 3.922/10 dispõe em seu Art. 6o que o percentual deve ser calculado excluindo-se os ativos vinculados por lei ao regime próprio de previdencia social, demais bens, direitos e ativos com finalidade previdenciária do regime prório de previdência social, as disponibilidades financeiras mantidas em conta corrente e as cotas de fundos de investimento imobiliário que forem admitidas à negociação no mercado secundário, conforme regulamentação da CVM, e que sejam integralizadas por imóveis legalmente vinculados ao RPPS.
Assim, para realizarmos as comparações devemos calcular os percentuais excluindo-se esses ativos, ou seja, devemos considerar apenas os ativos garantidores líquidos. Além disso um outro ajuste será necessário na base de dados.
A Resolução CMN n. 3.922/10 não estipula limites individuais para os ativos classificados como “Art 7o, III, a” ou “Art 7o, III, b”. Apenas diz que a soma dos valores aplicados nos mesmos não pode ser superior a 60% dos recursos do RPPS (ativo garantidor líquido). O mesmo acontece com os ativos classificados como “Art 7o, IV, a” ou “Art 7o, IV, b” cuja soma não deve exceder 40% dos recursos do RPPS.
Uma outra restrição é que a soma dos ativos classificados no art. 8o não pode ser superior a 30%. Mas cada ativo do art. 8o possui seus limites individuais que serão utilizados na nossa verificação.
Vamos partir da base de dados dairLimites. Vamos substituir os ativos “Art 7o, III, a”** e **“Art 7o, III, b” por um ativo que chamaremos “Art 7o, III, #” e os ativos “Art 7o, IV, a” e “Art 7o, IV, b” por um ativo “Art 7o, IV, #” e recalcularemos os percentuais considerando o ativo líquido.
dairLimitesAgregLiq <- dairLimites %>%
mutate(classificacao = ifelse(classificacao %in% c("ART7IIIA", "ART7IIIB"), "ART7III#",
ifelse(classificacao %in% c("ART7IVA", "ART7IVB"), "ART7IV#", classificacao))) %>%
group_by(cnpj, ente, uf, competencia, classificacao) %>%
mutate(VlrTotalAtivoLiq = ifelse(classificacao %in% c("DISP", "IMOVEIS", "OUTROS"), 0, vlr_total_atual)) %>%
summarise(VlrTotalAtivoLiq = sum(VlrTotalAtivoLiq, na.rm = TRUE)) %>%
ungroup() %>%
group_by(cnpj, ente, uf, competencia) %>%
mutate(pctVlrTotalAtivoLiq = round(VlrTotalAtivoLiq / sum(VlrTotalAtivoLiq, na.rm=TRUE) * 100, 2)) %>%
filter(!classificacao %in% c("DISP", "IMOVEIS", "OUTROS"))Com isso temos três bases de dados derivadas da base original do DAIR: dairLimites, dairLimitesAgreg e dairLimitesAgregLiq. Vamos relembrar no que elas diferem:
dairLimites - é idêntica à base original invest apenas possuindo uma coluna classificacao que contem uma classificação para todos os ativos da base.dairLimitesAgreg - Apresenta o percentual que cada tipo de ativo representa do total de ativos que o RPPS possui.dairLimitesAgregLiq - essa base apresenta o percentual que cada tipo de ativo representa do total líquido dos ativos do RPPS, além de apresentar uma reclassificação de quatro tipos de ativos. Os ativos “Art 7o, III, a”** e **“Art 7o, III, b” tornaram-se “Art 7o, III, #” e os ativos “Art 7o, IV, a” e “Art 7o, IV, b” tornaram-se “Art 7o, IV, #”. Será essa base que utilizaremos para realizar a verificação do cumprimento dos limites.Para que possamos realizar a análise será necessáro juntar a esta última base os limites de aplicação permitidos pela Resolução CMN n. 3.922/10. Vamos adicionar à base de dados os limites de aplicações permitidos pela Resolução CMN n. 3.922/10. Estes valores estão armazenados na planilha limites_cmn.xlsx. Vamos importar os dados:
setwd("..\\dados")
limites_cmn <- read_excel("limites_cmn.xlsx", sheet="limites_Res4604")
limites_cmn$classificacao <- toupper(gsub('[[:punct:]]| |o', '', limites_cmn$ativo))Vamos olhar o conteúdo do arquivo:
kable(limites_cmn)| categoria | tipo | tipo_ativo | desc_tipo_ativo | ativo | limite | limite_pl | classificacao |
|---|---|---|---|---|---|---|---|
| Renda Fixa | Títulos Públios | Titulos Tesouro Nacional | Títulos Públicos de Emissão do TN (SELIC) | Art 7o, I, a | 100 | NA | ART7IA |
| Renda Fixa | Títulos Públios | Operações Compromissadas | Operações Compromissadas | Art 7o, II | 5 | NA | ART7II |
| Renda Fixa | Fundos de Investimento | FI 100% Títulos Públicos | FI 100% Títulos TN | Art 7o, I, b | 100 | 15 | ART7IB |
| Renda Fixa | Fundos de Investimento | ETF 100% Títulos Públicos | ETF 100% Títulos Públicos | Art 7o, I, c | 100 | 15 | ART7IC |
| Renda Fixa | Fundos de Investimento | FI Renda Fixa - Referenciados RF | FI Renda Fixa Referenciado | Art 7o, III, a | 60 | 15 | ART7IIIA |
| Renda Fixa | Fundos de Investimento | FI de Índices Referenciados em RF Subindices Anbima | ETF - Renda Fixa Referenciado | Art 7o, III, b | 60 | 15 | ART7IIIB |
| Renda Fixa | Fundos de Investimento | FI de Renda Fixa | FI de Renda Fixa - Geral | Art 7o, IV, a | 40 | 15 | ART7IVA |
| Renda Fixa | Fundos de Investimento | Fi de Índices Referenciados em Renda Fixa | ETF - Demais Indicadores de RF | Art 7o, IV, b | 40 | 15 | ART7IVB |
| Renda Fixa | Outros | Certificado de Depósito Bancário - CDB | CDB - Certificado de Depósito Bancário | Art 7o, VI, a | 15 | NA | ART7VIA |
| Renda Fixa | Outros | Poupança | Poupança | Art 7o, VI, b | 15 | NA | ART7VIB |
| Renda Fixa | Outros | Letras Imobiliárias Garantidas | Letras Imobiliárias Garantidas | Art 7o, V, b | 20 | NA | ART7VB |
| Renda Fixa | Fundos de Investimento | FI em Direitos Creditórios - Aberto ou Fechado- Cota Sênior | FI em Direitos Creditórios - Cota Senior | Art 7o, VII, a | 5 | 5 | ART7VIIA |
| Renda Fixa | Fundos de Investimento | FI Renda Fixa Crédito Privado | FI Renda Fixa Crédito Privado | Art 7o, VII, b | 5 | 5 | ART7VIIB |
| Renda Fixa | Fundos de Investimento | Fundos de Debêntures de Infraestrutura | FI Debêntures de Infraestrutura | Art 7o, VII, c | 5 | 5 | ART7VIIC |
| Renda Variavel | Fundos de Investimento | FI Ações Referenciados | FI de Ações - Índices c/ no mínimo 50 ações | Art 8o, I, a | 30 | 15 | ART8IA |
| Renda Variavel | Fundos de Investimento | FI de Índices Referenciados em Ações | ETF - Índices de Ações (c/ no mínimo 50) | Art 8o, I, b | 30 | 15 | ART8IB |
| Renda Variavel | Fundos de Investimento | FI em Ações | FI de Ações - Geral | Art 8o, II, a | 20 | 15 | ART8IIA |
| Renda Variavel | Fundos de Investimento | ETF de Ações - Índices em geral | ETF - Demais Índices de Ações | Art 8o, II, b | 20 | 15 | ART8IIB |
| Renda Variavel | Fundos de Investimento | FI Multimercado - Aberto | FI Multimercado - Aberto | Art 8o, III | 10 | 5 | ART8III |
| Renda Variavel | Fundos de Investimento | FI em Participações - Fechado | FI em Participações | Art 8o, IV, a | 5 | 5 | ART8IVA |
| Renda Variavel | Fundos de Investimento | FI Imobiliários | FI Imobiliários | Art 8o, IV, b | 5 | 5 | ART8IVB |
| Renda Variavel | Fundos de Investimento | FI em Ações | FI Ações - Mercado de Acesso | Art 8o, IV, c | 5 | 5 | ART8IVC |
| Exterior | Fundos | NA | FIC e FIC FI - Renda Fixa - Dívida Externa | Art 9o A, I | 10 | NA | ART9AI |
| Exterior | Fundos | NA | FIC - Aberto - Investimento no Exterior | Art 9o A, II | 10 | NA | ART9AII |
| Exterior | Fundos | FI em Ações | Fundos de Ações - BDR Nível I | Art 9o A, III | 10 | NA | ART9AIII |
Na tabela de limites existe uma pequena incorreção que iremos ajustar logo em seguida.
Os limites para os ativos “Art 7o, III, a” e “Art 7o, III, b” foram especificados em 60% e os limites dos ativos “Art 7o, IV, a” e “Art 7o, IV, b” em 40%. Ocorre que na verdade é a soma dos dois ativos que deve perfazer, respectivamente, 60% e 40% dos recursos do RPPS.
Importados os dados vamos juntá-los à base de dados:
dairLimitesAgregLiq <- dairLimitesAgregLiq %>%
left_join(limites_cmn[, c("classificacao", "limite", "limite_pl")],
by="classificacao")Como os ativos que “criamos” (ART7III# e ART7IV#) não constam da tabela de limites, precisamos inserir “manualmente”" os valores dos limites relativos às restrições impostas pela Resolução CMN n. 3.922/10, o que faremos a seguir:
dairLimitesAgregLiq <- dairLimitesAgregLiq %>%
mutate(limite = ifelse(classificacao == "ART7III#", 60,
ifelse(classificacao == "ART7IV#", 40, limite)))A análise quanto aos limites deve levar em consideração o Nivel no qual o RPPS está classificado. Dependendo do Nível os limites de investimento são diferenciados. Os RPPS podem não estar classificados em nível algum, ou podem estar classificados como Nivel I, Nivel II, Nivel III ou Nivel IV.
Considerando que bem poucos RPPS estão classificados em algum desses quatro níveis não vamos, por hora, considerá-los em nossa análise. Posteriormente iremos considerar esta situação na análise.
Podemos agora fazer um gráfico para visualizarmos os percentuais aplicados pelos RPPS em cada tipo de ativo. Vamos dar uma olhada no município de São Gonçalo no RJ:
ENTE <- "São Gonçalo"
UF <- "RJ"
dairLimitesAgregLiq %>%
filter(uf == UF, ente == ENTE) %>%
ggplot(aes(x=competencia, y=pctVlrTotalAtivoLiq)) +
geom_point() +
facet_wrap( ~ classificacao) +
geom_hline(aes(yintercept = limite), color="blue") +
labs(title = "Evolucao do Percentual Aplicado por Tipo de Ativo",
y = '% Aplicado', x=" ") +
theme_bw() +
theme(axis.text.x = element_text(angle = 90, vjust=0.5)) +
scale_x_date(date_breaks="1 month", labels = date_format("%Y-%m"))As linhas azuis indicam o limite permitido para cada tipo de ativo. Os pontos indicam os os percentuais que o RPPS possui aplicado em cada tipo de ativo.
É importante destacar que nossa análise levou em consideração a classificação dos ativos informada pelo RPPS ao preencher o DAIR. Não obstante, conforme visto, existem divergências entre a classificação de alguns fundos de investimentos realizada pelo RPPS e a classificação realizada pela SPrev. Assim, essa mesma análise poderia/deveria ser feita considerando-se a classificação dos fundos de investimentos realizada pela SPrev. Oportunamente incluiremos esta análise nesse documento.
Além de restrições em relação percentual dos recursos do RPPS que podem ser aplicados em cada tipo de ativo, a Resolução CMN n. 3.922/10 impõe restrições de aplicação de recursos com base no valor do patrimônio líquido do Fundo de Investimento (Art. 14).
Neste tópico nosso objetivo verificar se esta restrição esta sendo cumprida pelo RPPS. Para esta verificação vamos partir da base de dados dairLimites.
Primeiro vamos filtrar a base para obter os registros para os quais existam informações na variável pl_fundo ou perc_pl_fundo.
dair_plfundo <- dairLimites %>%
filter(!is.na(pl_fundo), !is.na(perc_pl_fundo))A variável perc_pl_fundo indica o percentual que o valor que o RPPS possui investido no fundo representa do PL do mesmo. Vamos considerar os valores do PL do fundo constante da base de dados, e portanto informadas pelo RPPS como corretad, não obstante considerarmos que para uma verificação mais precisa esses valores deveriam ser obtidos jundo à CVM.
Vamos incluir na base de dados uma nova coluna com o cálculo do percentual que o valor aplicado no fundo (vlr_total_atual) representa do PL do fundo (perc_pl_fundo). Naturalmente que essa nova variável e a variável perc_pl_fundo devem ser iguais.
dair_plfundo <- dair_plfundo %>%
mutate(pct_pl_fundo_calc = round(vlr_total_atual / pl_fundo * 100, 2))Vamos verificar se existem divergêncas entre as duas variáveis:
dair_plfundo %>%
filter((perc_pl_fundo - pct_pl_fundo_calc) != 0) %>%
kable()| cnpj | uf | ente | competencia | segmento | tipo_ativo | limite_resol_cmn | ident_ativo | nm_ativo | qtd_quotas | vlr_atual_ativo | vlr_total_atual | perc_recursos_rpps | pl_fundo | perc_pl_fundo | classificacao | pct_pl_fundo_calc |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3741683000126 | MS | Mundo Novo | 2018-04-01 | Renda Vari?vel e Investimentos Estruturados | ETF - Índice de Ações (c/ no mínimo 50) - Art. 8º, I, b | 30 | 07279657000189 | AZ QUEST AÇOES FIC AÇOES | NA | 95193.1 | 10.812224 | 1029249 | 3.06 | 398949720 | ART8IB | 353.34 |
| 3741683000126 | MS | Mundo Novo | 2018-05-01 | Renda Vari?vel e Investimentos Estruturados | ETF - Índice de Ações (c/ no mínimo 50) - Art. 8º, I, b | 30 | 07279657000189 | AZ QUEST AÇOES FIC AÇOES | NA | 95193.1 | 9.880622 | 940567 | 2.86 | 396266741 | ART8IB | 345.48 |
À exceção dos registros acima, não há divergências entre as variáveis pct_pl_fundo_calc e perc_pl_fundo.
Agora vamos juntar a essa base de dados os limites de PL permitidos para cada tipo de fundo. Estes valores, como já mostrado anteriormente, estão contidos na base de dados limites_cmn.
dair_plfundo <- dair_plfundo %>%
left_join(limites_cmn[,c("classificacao", "limite_pl")],
by="classificacao")Agora vamos criar uma nova variável que sinalizará se houve violação ao limite ou não e já faremos também o filtro para reter os registros em que houve violação dos limites.
dair_plfundo <- dair_plfundo %>%
mutate(estourou_limite_pl = ifelse((limite_pl - pct_pl_fundo_calc) < 0, 1, 0)) %>%
filter(estourou_limite_pl == 1) %>%
select(uf, ente, competencia, ident_ativo, nm_ativo, perc_pl_fundo, classificacao, limite_pl)Vamos verificar quantos Entes estão na condição de terem violado essa regra.
dair_plfundo %>%
distinct(uf, ente) %>%
count()# A tibble: 1 x 1
n
<int>
1 216
Vamos olhar a situação do município de Pinhais no estado do Paraná.
ENTE <- "Pinhais"
UF <- "PR"
dair_plfundo %>%
filter(uf == UF, ente == ENTE) %>%
arrange(competencia, ident_ativo, perc_pl_fundo) %>%
kable()| uf | ente | competencia | ident_ativo | nm_ativo | perc_pl_fundo | classificacao | limite_pl |
|---|---|---|---|---|---|---|---|
| PR | Pinhais | 2018-04-01 | 05500127000193 | Infinity Institucional FIM | 7.10 | ART8III | 5 |
| PR | Pinhais | 2018-04-01 | 13608335000139 | MULTINVEST FIA | 18.52 | ART8IIA | 15 |
| PR | Pinhais | 2018-04-01 | 15188380000107 | INFINITY IMAB 5+ TYGER FI RF | 20.20 | ART7IIIA | 15 |
| PR | Pinhais | 2018-04-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.91 | ART8IVA | 5 |
| PR | Pinhais | 2018-04-01 | 17013985000192 | GBX Prime I FIDC | 8.29 | ART7VIIA | 5 |
| PR | Pinhais | 2018-04-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-04-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 15.77 | ART7VIIA | 5 |
| PR | Pinhais | 2018-04-01 | 23948956000115 | Multinvest Grau de Investimento Fundo de Investimento em Cotas de Fundos de Investimento Renda Fixa | 17.95 | ART7IIIA | 15 |
| PR | Pinhais | 2018-05-01 | 05500127000193 | Infinity Institucional FIM | 6.12 | ART8III | 5 |
| PR | Pinhais | 2018-05-01 | 13608335000139 | MULTINVEST FIA | 17.61 | ART8IIA | 15 |
| PR | Pinhais | 2018-05-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.76 | ART8IVA | 5 |
| PR | Pinhais | 2018-05-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-05-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 9.13 | ART7VIIA | 5 |
| PR | Pinhais | 2018-05-01 | 23948956000115 | Multinvest Grau de Investimento FIC FI de RF | 19.56 | ART7IVA | 15 |
| PR | Pinhais | 2018-06-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.79 | ART8III | 5 |
| PR | Pinhais | 2018-06-01 | 13608335000139 | MULTINVEST FIA | 15.35 | ART8IIA | 15 |
| PR | Pinhais | 2018-06-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.99 | ART8IVA | 5 |
| PR | Pinhais | 2018-06-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-06-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 8.81 | ART7VIIA | 5 |
| PR | Pinhais | 2018-06-01 | 23948956000115 | Multinvest Grau de Investimento FIC FI de RF | 15.18 | ART7IVA | 15 |
| PR | Pinhais | 2018-07-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.68 | ART8III | 5 |
| PR | Pinhais | 2018-07-01 | 13608335000139 | MULTINVEST FIA | 15.26 | ART8IIA | 15 |
| PR | Pinhais | 2018-07-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.61 | ART8IVA | 5 |
| PR | Pinhais | 2018-07-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-07-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 8.97 | ART7VIIA | 5 |
| PR | Pinhais | 2018-08-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.68 | ART8III | 5 |
| PR | Pinhais | 2018-08-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.51 | ART8IVA | 5 |
| PR | Pinhais | 2018-08-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-08-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 11.99 | ART7VIIA | 5 |
| PR | Pinhais | 2018-09-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.68 | ART8III | 5 |
| PR | Pinhais | 2018-09-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.99 | ART8IVA | 5 |
| PR | Pinhais | 2018-09-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-09-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 12.36 | ART7VIIA | 5 |
| PR | Pinhais | 2018-10-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.62 | ART8III | 5 |
| PR | Pinhais | 2018-10-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.75 | ART8IVA | 5 |
| PR | Pinhais | 2018-10-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.99 | ART7IIIA | 15 |
| PR | Pinhais | 2018-10-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 12.91 | ART7VIIA | 5 |
| PR | Pinhais | 2018-10-01 | 23948956000115 | Multinvest Grau de Investimento FIC FI de RF | 15.02 | ART7IVA | 15 |
| PR | Pinhais | 2018-11-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.62 | ART8III | 5 |
| PR | Pinhais | 2018-11-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.62 | ART8IVA | 5 |
| PR | Pinhais | 2018-11-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2018-11-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 13.25 | ART7VIIA | 5 |
| PR | Pinhais | 2018-11-01 | 23948956000115 | Multinvest Grau de Investimento FIC FI de RF | 15.80 | ART7IVA | 15 |
| PR | Pinhais | 2018-12-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.62 | ART8III | 5 |
| PR | Pinhais | 2018-12-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.99 | ART8IVA | 5 |
| PR | Pinhais | 2018-12-01 | 17013985000192 | GBX Prime I FIDC | 5.22 | ART7VIIA | 5 |
| PR | Pinhais | 2018-12-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.94 | ART7IIIA | 15 |
| PR | Pinhais | 2018-12-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 11.46 | ART7VIIA | 5 |
| PR | Pinhais | 2018-12-01 | 23948956000115 | Multinvest Grau de Investimento FIC FI de RF | 18.63 | ART7IVA | 15 |
| PR | Pinhais | 2019-01-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.80 | ART8III | 5 |
| PR | Pinhais | 2019-01-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.82 | ART8IVA | 5 |
| PR | Pinhais | 2019-01-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2019-01-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 15.77 | ART7VIIA | 5 |
| PR | Pinhais | 2019-01-01 | 23948956000115 | Multinvest Grau de Investimento FIC FI de RF | 23.63 | ART7IVA | 15 |
| PR | Pinhais | 2019-02-01 | 09412687000147 | Capitania multi crédito privado FIC FIM | 5.79 | ART8III | 5 |
| PR | Pinhais | 2019-02-01 | 16720629000146 | BRB QAM Fundo de Investimento em Participações Imobiliário Paraná I | 24.67 | ART8IVA | 5 |
| PR | Pinhais | 2019-02-01 | 20468531000110 | GBX Institucional Fundo de Investimento RF IMAB-5 | 23.73 | ART7IIIA | 15 |
| PR | Pinhais | 2019-02-01 | 23431871000165 | TRX FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS CORPORATIVO I | 14.20 | ART7VIIA | 5 |
summary(dair_plfundo$perc_pl_fundo) Min. 1st Qu. Median Mean 3rd Qu. Max.
5 8 15 194620 21 398949720
A variável apresenta valores claramente fora do que seria razoável. Vamos identificar os RPPS para os quais o valor da variável perc_pl_fundo é maior do que 100%, o que é claramente um absurdo.
filter(dair_plfundo, perc_pl_fundo > 100) %>%
kable()| uf | ente | competencia | ident_ativo | nm_ativo | perc_pl_fundo | classificacao | limite_pl |
|---|---|---|---|---|---|---|---|
| MA | Barreirinhas | 2018-06-01 | 13077415000105 | BB PREVID RF FLUXO | 183.15 | ART7IVA | 15 |
| MA | Chapadinha | 2018-10-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 2992.48 | ART7IB | 15 |
| MA | Chapadinha | 2018-11-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 5658.87 | ART7IB | 15 |
| MA | Chapadinha | 2018-12-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 6493.32 | ART7IB | 15 |
| MA | Chapadinha | 2018-04-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 525.31 | ART7IB | 15 |
| MA | Chapadinha | 2018-05-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 422.22 | ART7IB | 15 |
| MA | Chapadinha | 2018-06-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 2363.62 | ART7IB | 15 |
| MA | Chapadinha | 2018-07-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 705.07 | ART7IB | 15 |
| MA | Chapadinha | 2018-08-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 246.86 | ART7IB | 15 |
| MA | Chapadinha | 2018-09-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO. | 146.45 | ART7IB | 15 |
| MA | Monção | 2018-10-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 770.39 | ART7IB | 15 |
| MA | Monção | 2018-11-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 1521.28 | ART7IB | 15 |
| MA | Monção | 2018-12-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 1621.28 | ART7IB | 15 |
| MA | Monção | 2018-04-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 29691.00 | ART7IB | 15 |
| MA | Monção | 2018-05-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 295686.94 | ART7IB | 15 |
| MA | Monção | 2018-06-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 472.10 | ART7IB | 15 |
| MA | Monção | 2018-07-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 682.77 | ART7IB | 15 |
| MA | Monção | 2018-08-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 559.87 | ART7IB | 15 |
| MA | Monção | 2018-09-01 | 04288966000127 | BB RENDA FIXA CP SUPREMO SETOR PÚBLICO FUNDO DE INVEST. EM COTAS DE FUNDOS DE INVESTIMENTO | 809.42 | ART7IB | 15 |
| MA | Timbiras | 2018-10-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 16134.80 | ART7IVA | 15 |
| MA | Timbiras | 2018-11-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 16234.79 | ART7IVA | 15 |
| MA | Timbiras | 2018-12-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 16234.79 | ART7IVA | 15 |
| MA | Timbiras | 2018-04-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 666.42 | ART7IVA | 15 |
| MA | Timbiras | 2018-05-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 912.38 | ART7IVA | 15 |
| MA | Timbiras | 2018-06-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 1192.46 | ART7IVA | 15 |
| MA | Timbiras | 2018-07-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 15834.86 | ART7IVA | 15 |
| MA | Timbiras | 2018-08-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 15919.16 | ART7IVA | 15 |
| MA | Timbiras | 2018-09-01 | 13077415000105 | BB PREVIDENCIÁRIO RENDA FIXA FLUXO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO | 16034.64 | ART7IVA | 15 |
| MS | Mundo Novo | 2018-04-01 | 07279657000189 | AZ QUEST AÇOES FIC AÇOES | 398949719.53 | ART8IB | 15 |
| MS | Mundo Novo | 2018-05-01 | 07279657000189 | AZ QUEST AÇOES FIC AÇOES | 396266741.02 | ART8IB | 15 |
| RS | Mampituba | 2018-05-01 | 21007180000103 | BANRISUL FOCO IDKA IPCA 2A | 126.72 | ART7IB | 15 |
| SP | João Ramalho | 2018-04-01 | 13077415000105 | BB FLUXO FIC RENDA FIXA PREVIDENCIÁRIO | 1037071.89 | ART7IVA | 15 |
| RS | Nova Santa Rita | 2019-02-01 | 15570431000160 | Banrisul FII Novas Fronteiras | 856.19 | ART8IVB | 5 |
Outra alteração significativa promovida pela Resolução CMN nº 4.695/18 foi permitir novas aplicações de recursos dos RPPS apenas em fundos de investimento em que o administrador ou gestor seja instituição autorizada a funcionar pelo BACEN, obrigada a instituir comitê de auditoria e comitê de riscos, nos termos da regulamentação do CMN (art. 15, § 2º, I, § 8º da Resolução CMN nº 3.922/10).
Os dados relativos às instituições financeiras que atendem à este dispositivo da Resolução foram extraídos do seguinte documento: http://sa.previdencia.gov.br/site/2018/12/Instituicoes-financeiras-que-atendem-o-previsto-no-art.-15.pdf disponível para download no site da SPrev.
Outro documento expedido pela SPrev contendo esclarecimentos sobre o artigo 15 da Resolução CMN n. 3.922/10 é http://sa.previdencia.gov.br/site/2018/12/Esclarecimento-a-respeito-das-instituicoes-elegiveis_.pdf.
Um ponto que nos parece importante é que a exigência em questão foi introduzida com a edição da Resolução CMN n. 4.695/18, aprovada em reunião de 27.11.18. Assim, nos parece conveniente que a análise se dê com os dados do DAIR relativos aos meses de Dezembro de 2018 em diante.
Vamos filtrar a base de dados e extrair os registros relativos a fundos de investimentos e descartar colunas não necessárias a essa análise:
art_15 <- invest %>%
filter(competencia > ymd("2018-11-01"), grepl("\\d{14}", ident_ativo)) %>%
select(uf, ente, competencia, ident_ativo, nm_ativo)Como já sabemos, a base de dados do DAIR não traz informações sobre quem são os administradores e gestores do fundo de investimento. Não obstante, a base de dados de enquadramento dos fundos disponibilizada pela SPrev e já utilizada anteriormente (EnquadSPrev) contém essa informação. Assim, parece razoável juntar as duas bases de dados (art_15 e EnquadSPrev) de forma que a base de dados do DAIR passe a conter informação relativa ao administrador e gestor dos fundos:
art_15 <- art_15 %>%
left_join(EnquadSPrev[,c("cnpj", "nm_fundo", "cnpj_admin", "cnpj_gestor")],
by=c("ident_ativo" = "cnpj"))
# são acrescentadas observações... O passo seguinte é realizar o cruzamento da base de dados art_15 com a lista dos administradores e gestores que atendem ao disposto no artigo 15 da Resolução CMN n. 3.922/10.
Os dados dos administradores e gestores “permitidos” constam do arquivo AdministradorGestorFundos.xlsx gerado a partir do documento disponibilizado pela SPrev. Vamos importar esses dados:
setwd("..\\dados")
administrador_gestor <- read_excel("AdministradorGestorFundos.xlsx")Vamos agora cruzar os dados deste arquivo (administrador_gestor) com os dados relativos aos fundos de investimentos constantes da base do DAIR (art_15). Antes, contudo, algumas modificações nas bases de dados serão necessárias.
Na base administrador_gestor vamos retirar a pontuação constante na variável CNPJ que identifica a instituição financeira.
administrador_gestor <- administrador_gestor %>%
mutate(CNPJ = gsub("[[:punct:]]", "", CNPJ))Na base art_15 precisamos extrair a raiz do CNPJ e a pontuação nas variáveis cnpj_admin e cnpj_gestor.
art_15 <- art_15 %>%
mutate(cnpj_admin = gsub("(.*)/\\d{4}-\\d{2}", "\\1", cnpj_admin),
cnpj_admin = gsub("[[:punct:]]", "", cnpj_admin),
cnpj_gestor = gsub("(.*)/\\d{4}-\\d{2}", "\\1", cnpj_gestor),
cnpj_gestor = gsub("[[:punct:]]", "", cnpj_gestor))Agora vamos identificar quais fundos possuem administrador ou gestor dentre os que são permitidos.
art_15 <- art_15 %>%
mutate(adm_gest_permitido = ifelse(cnpj_admin %in% administrador_gestor$CNPJ |
cnpj_gestor %in% administrador_gestor$CNPJ, 1, 0))Vamos agora verificar se algum RPPS possui investimentos em fundos que não atendem ao artigo 15 da Resolução CMN n. 3922/10:
art_15 <- art_15 %>%
filter(adm_gest_permitido == 0, !is.na(nm_fundo)) Vamos inspecionar a base de dados:
kable(head(art_15))| uf | ente | competencia | ident_ativo | nm_ativo | nm_fundo | cnpj_admin | cnpj_gestor | adm_gest_permitido |
|---|---|---|---|---|---|---|---|---|
| AM | Governo do Estado do Amazonas | 2018-12-01 | 17253869000140 | SAFRA CARTEIRA PREMIUM FI MULTIMERCADO | SAFRA CARTEIRA PREMIUM FUNDO DE INVESTIMENTO MULTIMERCADO | 06947853 | 62180047 | 0 |
| AM | Manaus | 2018-12-01 | 11989256000190 | BVA MASTER II FIDC MULTISETORIAL SENIOR | FIDC MULTISETORIAL MASTER II | 27652684 | 22119959 | 0 |
| AM | Manaus | 2018-12-01 | 09315625000117 | FI SECURITY REFERENCIADO DI LP | FUNDO DE INVESTIMENTO SECURITY RENDA FIXA REFERENCIADO DI LONGO PRAZO CRÉDITO PRIVADO | 02201501 | 02295841 | 0 |
| AM | Manaus | 2018-12-01 | 10355516000102 | TOP FI RENDA FIXA | TOP FUNDO DE INVESTIMENTO RENDA FIXA | 02201501 | 22119959 | 0 |
| AM | Manaus | 2018-12-01 | 11902276000181 | RECUPERAÇÃO BRASIL RF LP | FUNDO DE INVESTIMENTO RECUPERAÇÃO BRASIL RENDA FIXA LONGO PRAZO | 15489568 | 02888152 | 0 |
| AM | Manaus | 2018-12-01 | 15350909000147 | VITORIA REGIA FIRF LP | VITÓRIA RÉGIA FUNDO DE INVESTIMENTO DE RENDA FIXA LONGO PRAZO | 02201501 | 22119959 | 0 |
Vamos obter uma lista dos fundos de investimento que estão nessa situação, qual seja, possuirem gestor e administrador que não estão entre os permitidos:
fundos_art_15 <- art_15 %>%
distinct(ident_ativo, nm_ativo)Quantos são:
nrow(fundos_art_15)[1] 1007
Quais RPPS tem aplicações neste tipo de fundo:
entes_art_15 <- art_15 %>%
distinct(uf, ente)Quantos RPPS por UF?
entes_art_15 %>%
group_by(uf) %>%
count() %>%
arrange(desc(n)) %>%
kable()| uf | n |
|---|---|
| SP | 115 |
| RS | 66 |
| MG | 43 |
| SC | 41 |
| RJ | 39 |
| PR | 33 |
| GO | 26 |
| CE | 13 |
| MS | 13 |
| MT | 11 |
| RO | 11 |
| PE | 9 |
| PA | 8 |
| ES | 3 |
| PB | 3 |
| AM | 2 |
| RN | 2 |
| TO | 2 |
| AP | 1 |
| BA | 1 |
| DF | 1 |
| MA | 1 |
| PI | 1 |
| RR | 1 |
| SE | 1 |
Vamos verificar, por exemplo, se o RPPS de Belford Roxo no Estado do RJ investiu em algum desses fundos após novembro de 2018 ou se esses fundos já estavam na carteira do RPPS antes disso.
## Obs. Em Barueri identifiquei que um mesmo fundo aparece mais de uma vez em um mesmo mês... Existem outros casos
ENTE <- "Belford Roxo"
UF <- "RJ"
art_15 %>%
filter(uf == UF, ente == ENTE) %>%
group_by(uf, ente, nm_ativo, competencia) %>%
distinct(ident_ativo) %>%
select(uf, ente, competencia, ident_ativo, nm_ativo) %>%
spread(key=competencia, value=ident_ativo) %>%
kable()| uf | ente | nm_ativo | 2018-12-01 | 2019-01-01 | 2019-02-01 |
|---|---|---|---|---|---|
| RJ | Belford Roxo | AQUILLA FUNDO DE INVESTIMENTO IMOBILIÁRIO | 13555918000149 | 13555918000149 | 13555918000149 |
| RJ | Belford Roxo | ÁTICO GESTÃO EMPRESARIAL - FIP | 18373362000193 | 18373362000193 | 18373362000193 |
| RJ | Belford Roxo | ÁTICO FIDC IMOBILIÁRIOS | 12053694000104 | 12053694000104 | 12053694000104 |
| RJ | Belford Roxo | ÁTICO FLORESTAL - FIP | 12312767000135 | 12312767000135 | 12312767000135 |
| RJ | Belford Roxo | ÁTICO RENDA FI IMOBILIÁRIO - FII | 14631148000139 | 14631148000139 | 14631148000139 |
| RJ | Belford Roxo | CORAL FIDC MULTISETORIAL | 11351413000137 | 11351413000137 | 11351413000137 |
| RJ | Belford Roxo | FI MULTIMERCADO SCULPTOR CRÉDITO PRIVADO | 14655180000154 | 14655180000154 | 14655180000154 |
| RJ | Belford Roxo | FI RF MONTE CARLO INSTITUCIONAL IMA-B | 15153656000111 | 15153656000111 | 15153656000111 |
| RJ | Belford Roxo | FI SECURITY REFERENCIADO DI LP LP CRÉDITO PRIVADO | 09315625000117 | 09315625000117 | 09315625000117 |
| RJ | Belford Roxo | FIDC MULTISETORIAL MASTER II | 11989256000190 | 11989256000190 | 11989256000190 |
| RJ | Belford Roxo | FIRF CRÉDTIO PRIVADO PORTFÓLIO MASTER I | 09613232000190 | 09613232000190 | 09613232000190 |
| RJ | Belford Roxo | FUNDO DE INVESTIMENTO EM PARTICIPAÇÕES TURISMO BRASIL | 12360621000165 | NA | NA |
| RJ | Belford Roxo | PIATÃ FI RF PREVIDENCIÁRIO CRÉDITO PRIVADO | 09613226000132 | 09613226000132 | 09613226000132 |
Neste capítulo vamos tratar das possibilidades de análise relativa à base de dados do DIPR. Vamos trabalhar com as bases de dados DIPR-2018-30042019.xlsx e DIPR-2019-30042019.xlsx disponibilizadas pela SPrev que compreendem os exercícios de 2018 e 2019.
Como de costume, vamos realizar a importação dos dados. Como temos uma planilha Excel vamos utilizar a função read_excel() do pacote readxl.
setwd("..\\dados")
arquivos_dipr <- c("DIPR-2018-30042019.xlsx", "DIPR-2019-30042019.xlsx")
dipr <- lapply(arquivos_dipr,
read_excel,
sheet = "diprResultadoPrevidenciario",
skip = 4, col_names = FALSE)
dipr <- do.call('rbind', dipr)Como a planilha possui um cabeçalho contendo a denominação das colunas a importação foi feita sem os nomes das variáveis. Iremos, a seguir, fazer a inclusão do nome das mesmas:
names(dipr) <- c("ente", "uf", "competencia", "plano_segreg", "dt_info", "bc_pat_serv",
"bc_pat_serv_ug", "bc_pat_apo", "bc_pat_pen", "bc_serv", "bc_apo",
"bc_pen", "ct_pat_serv", "ct_pat_serv_ug", "ct_pat_apo", "ct_pat_pen",
"ct_serv", "ct_apo", "ct_pen", "deduc_pat", "deduc_pat_outros", "deduc_seg",
"deduc_seg_outros", "aportes_amortiz", "aportes_insufin", "aportes_despadm",
"aportes_pagtesouro", "aportes_outros", "parcelamentos", "bcug_pat", "bcug_serv",
"bcug_serv_afast", "bcug_apos", "bcug_pen", "ctug_pat", "ctug_serv", "ctug_serv_afast",
"ctug_apos", "ctug_pen", "rb_serv", "rb_apos", "rb_pen", "nb_serv", "nb_apos", "nb_pen",
"nb_dep", "ing_contr", "ing_aportes", "ing_parc", "ing_acres_leg", "ing_contr_cedlic",
"ing_comprev", "ing_aplicfin", "ing_ativos", "ing_outros", "desp_apo", "desp_pen_morte",
"desp_auxdoenca", "desp_salmater", "desp_salfam", "desp_auxreclu", "desp_decjud",
"desp_beneftesouro", "desp_despadm", "desp_invest", "desp_rest", "desp_comprev",
"desp_outras", "total_receita", "total_despesa", "resutado_final", "bcmil_pat_ativ",
"bcmil_ativos", "bcmil_reserva", "bcmil_pen", "ctmil_pat", "ctmil_ativos", "ctmil_reserva",
"ctmil_pen", "rbmil", "nbmil_ativos", "nbmil_reserva", "nbmil_pen", "nbmil_dep",
"ingmil_contr", "ingmil_aportes", "ingmil_outras", "despmil_reseva", "despmil_penmorte",
"despmil_outras", "resultado_final")Realizada a importação dos dados, será necessário realizar um pré-processamento.
# Limpar alguns dados
dipr$ente <- gsub("^Governo do |Prefeitura Municipal d[eoa] ", "", dipr$ente)
# Função para converter para formato numerico
convnum <- function(x){
x <- gsub("\\.", "", x)
x <- gsub(",", ".", x)
as.numeric(x)
}
# convertendo os dados...
dipr[,-c(1:5)] <- sapply(dipr[,-c(1:5)], convnum)Importado o conjunto de dados, vamos salvá-lo no formato .Rds do R para uso posterior.
setwd("..\\dados-produzidos")
saveRDS(dipr, file = "dipr2018-2019_DtGer30042019.Rds")Para um efetivo acompanhamento da gestão dos RPPS é necessário identificarmos quais RPPS não estão encaminhando o DIPR à SPrev/ME com vistas à adoção das providências adequadas.
Aliás, esse é um ponto de verificação constante na Resolução Atricon 05/2018 que Aprova as Diretrizes de Controle Externo Atricon nº 3214/2018, relacionadas à temática “Controle Externo na gestão dos Regimes Próprios de Previdência Social”.
25.1 (…)
u) se há o envio tempestivo à Secretaria de Previdência (SPREV) do Ministério da Fazenda dos demonstrativos obrigatórios (DIPR, DRAA, DPIN, DAIR e demonstrativos contábeis).
Para executarmos esta verificação nossa estratégia será comparar os Entes que constam da base de dados do DIPR com uma relação que contenha todos os RPPS brasileiros. Nossa escolha para a obtenção dessa relação foi o a base de dados do Indicador de Situação Previdenciária - ISP contida no arquivo RESULTADO-ISP-2018.01.xlsx disponibilizado pela SPrev.
Infelizmente a base do DIPR não possui informação quanto ao CNPJ do Ente. Esta é uma variável importante quando queremos relizar o cruzamento entre as diversas bases de dados disponibilizadas pela SPrev bem como com outras bases de dados. Assim, o cruzamento será feito com base no nome do Ente, o que nos coloca a necessidade de garantir que o nome do ente esteja escrito da mesma maneira nas duas bases. Para tante algumas transformações deverão ser realizadas na variável que contém o nome dos Entes.
Vamos importar os dados do ISP:
setwd("..\\dados")
isp <- read_excel("RESULTADO-ISP-2018.01.xlsx")
isp <- isp[, -c(31, 32, 33, 34)]
names(isp) <- c("ENTE", "UF", "REGIAO", "GRUPO", "ESCRITURA", "APLICFIN",
"CONTRIB", "COBSERVPUB", "CONCBENEF", "EQUILATUAR", "PARTSEG", "PARCELTEMP",
"REGRAS", "UTILRECPREV", "CONF", "CLASSIF_CONF", "ENDIVID", "SOLVFIN",
"RAZAOAI", "COMPROMATUAR", "SOLVATUAR", "EQUIL", "CLASSIF_EQUIL",
"DRAA", "DIPR", "DPIN", "DAIR", "TRANSP", "CLASSIF_TRANSP", "ISP201801")Como será necessário juntar essa base com a base do DIPR, vamos limpar um pouco a base de dados para tornar viável essa operação.
dipr$ente <- toupper(dipr$ente)
dipr$ente <- iconv(dipr$ente, from = "utf-8", to="ASCII//TRANSLIT")
dipr$ente <- paste(dipr$ente, dipr$uf, sep=" - ")
isp$ENTE <- gsub("^GOVERNO DO ", "", isp$ENTE)
isp$ENTE <- iconv(isp$ENTE, from = "utf-8", to="ASCII//TRANSLIT")Agora vamos tentar juntar as bases e fazer a checagem. Vamos ver como estão os Entes do Estado do Mato Grosso.
uf <- "MT"
entrega_dipr <- isp %>%
select(ENTE) %>%
left_join(dipr[, c("ente", "competencia")], by=c("ENTE" = "ente")) %>%
mutate(entregou = "X",
competencia = factor(competencia, levels = unique(dipr$competencia), ordered = TRUE)) %>%
filter(grepl(paste(uf, "$", sep=""), ENTE)) %>%
distinct() %>%
spread(key=competencia, value = entregou, fill = "-") %>%
select(- `<NA>`) kable(entrega_dipr)| ENTE | JAN/2018 | FEV/2018 | MAR/2018 | ABR/2018 | MAI/2018 | JUN/2018 | JUL/2018 | AGO/2018 | SET/2018 | OUT/2018 | NOV/2018 | DEZ/2018 | JAN/2019 | FEV/2019 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ACORIZAL - MT | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| AGUA BOA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| ALTA FLORESTA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| ALTO ARAGUAIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| APIACAS - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| ARAGUAIANA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| ARAGUAINHA - MT | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| ARAPUTANGA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| ARIPUANA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| BARAO DE MELGACO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| BARRA DO BUGRES - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| BARRA DO GARCAS - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| CACERES - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CAMPINAPOLIS - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CAMPO NOVO DO PARECIS - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CAMPO VERDE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CANARANA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CARLINDA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| CASTANHEIRA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| CHAPADA DOS GUIMARAES - MT | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| CLAUDIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| COCALINHO - MT | X | X | X | X | X | X | - | - | - | - | - | - | - | - |
| COLIDER - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| COLNIZA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| COMODORO - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| CONFRESA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CONQUISTA D’OESTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| COTRIGUACU - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CUIABA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| CURVELANDIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| ESTADO DO MATO GROSSO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| FELIZ NATAL - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| GAUCHA DO NORTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| GENERAL CARNEIRO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| GLORIA D’OESTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| GUARANTA DO NORTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| GUIRATINGA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| IPIRANGA DO NORTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| ITAUBA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| ITIQUIRA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| JACIARA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| JAURU - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| JUARA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| JUINA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| JURUENA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| LAMBARI D’OESTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| LUCAS DO RIO VERDE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| MARCELANDIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| MATUPA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| MIRASSOL D’OESTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NOBRES - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NORTELANDIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NOSSA SENHORA DO LIVRAMENTO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA BRASILANDIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NOVA CANAA DO NORTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA LACERDA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA MARILANDIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA MONTE VERDE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA MUTUM - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA NAZARE - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NOVA OLIMPIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NOVA SANTA HELENA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVA UBIRATA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| NOVA XAVANTINA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| NOVO HORIZONTE DO NORTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| NOVO MUNDO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| PARANAITA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| PARANATINGA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| PEIXOTO DE AZEVEDO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| PLANALTO DA SERRA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| PONTAL DO ARAGUAIA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| PONTE BRANCA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| PONTES E LACERDA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| PORTO ESPERIDIAO - MT | X | X | X | X | X | X | X | X | - | - | - | - | - | - |
| PORTO ESTRELA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| POXOREO - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| PRIMAVERA DO LESTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| QUERENCIA - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| RESERVA DO CABACAL - MT | X | X | X | X | - | - | - | - | - | - | - | - | - | - |
| RIBEIRAO CASCALHEIRA - MT | X | X | - | - | - | - | - | - | - | - | - | - | - | - |
| RIBEIRAOZINHO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| RIO BRANCO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| RONDONOPOLIS - MT | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| ROSARIO OESTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| SANTA RITA DO TRIVELATO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| SANTA TEREZINHA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| SANTO AFONSO - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| SANTO ANTONIO DO LESTE - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| SANTO ANTONIO DO LEVERGER - MT | X | X | X | X | - | - | - | - | - | - | - | - | - | - |
| SAO FELIX DO ARAGUAIA - MT | X | X | X | X | X | X | X | X | X | X | - | - | - | - |
| SAO JOSE DO POVO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| SAO JOSE DO RIO CLARO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| SAO JOSE DOS QUATRO MARCOS - MT | X | X | X | X | X | X | X | X | X | X | X | X | - | - |
| SINOP - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| SORRISO - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| TABAPORA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| TANGARA DA SERRA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| TAPURAH - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| TERRA NOVA DO NORTE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| TORIXOREU - MT | X | X | - | - | - | - | - | - | - | - | - | - | - | - |
| VALE DE SAO DOMINGOS - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| VARZEA GRANDE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| VERA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| VILA BELA DA SANTISSIMA TRINDADE - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
| VILA RICA - MT | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
O quadro acima nos fornece uma indicação de quais RPPS estão inadimplentes com a obrigação de encaminhamento do DIPR à SPrev. O quadro está ordenado por ordem alfabética, mas poderia ser ordenado por inadimplência, ou seja, RPPS com maior quantidade de inadimplência no período viriam primeiro.
Caso seja necessário exportar os dados para uma planilha do excel:
setwd("..\\dados-produzidos")
write_xlsx(entrega_dipr, "entrega_dipr_MT.xlsx")A base de dados do DIPR também nos fornece de imediato uma informação relevante: os RPPS com segregação de messas (dentre os que encaminharam o DIPR à SPrev/ME).
Vamos identificar quais RPPS do Estado do Rio de Janeiro possuem segregação de massas.
UF <- "RJ"
entes_segreg <- dipr %>%
mutate(periodo = as.Date(paste("01", competencia, sep = "/"), "%d/%b/%Y")) %>%
group_by(ente) %>%
filter(uf == UF, periodo == max(periodo, na.rm = TRUE), plano_segreg == "Financeiro") %>%
select(ente) %>%
ungroup() %>%
arrange(ente)No código acima olhamos o valor da variável plano_segreg no mês mais recente disponível na base de dados para cada Ente .
Os RPPS com segregação de massas no ERJ são os seguintes:
kable(entes_segreg)| ente |
|---|
| ANGRA DOS REIS - RJ |
| BARRA MANSA - RJ |
| CACHOEIRAS DE MACACU - RJ |
| CANTAGALO - RJ |
| CARMO - RJ |
| DUAS BARRAS - RJ |
| DUQUE DE CAXIAS - RJ |
| ESTADO DO RIO DE JANEIRO - RJ |
| ITATIAIA - RJ |
| MACAE - RJ |
| MARICA - RJ |
| MENDES - RJ |
| NITEROI - RJ |
| PINHEIRAL - RJ |
| PORCIUNCULA - RJ |
| RIO CLARO - RJ |
| SAQUAREMA - RJ |
| SUMIDOURO - RJ |
O site da SPrev/ME disponibiliza um conjunto de dados específico para parcelamentos (PARCELAMENTOS_30042019.xlsx) contendo bastante informação sobre os Termos de Parcelamento de Dívidas dos Entes.
O DIPR fornece informações sobre o montante dos valores recebidos pela Unidade Gestora do RPPS oriundos de parcelamentos. Estes dados estão disponíveis nas variáveis parcelamentos e ing_parc.
Neste tópico nosso objetivo será tentar verificar se o Ente está pagando seus parcelamentos. Não é possivel, apenas com esses dados, verificar se todos os parcelamentos estão sendo pagos, se estão sendo pagos com os acréscimos legais, etc. Mas combinando os dados do DIPR com os dados do arquivo PARCELAMENTOS_30042019.xlsx talvez seja possível obter informações interessantes. Mas por ora vamos ficar apenas com os dados disponíveis no DIPR.
Vamos antes identificar no RJ quais RPPS receberam recursos oriundos de parcelamentos no período.
UF <- "RJ"
parcel_dipr <- dipr %>%
filter(uf == UF, !is.na(parcelamentos) | !is.na(ing_parc)) %>%
select(ente, competencia, plano_segreg, parcelamentos, ing_parc)Vamos olhar o município de Pinheiral no RJ ver como está o recebimento de parcelamentos:
ENTE <- "PINHEIRAL - RJ"
dipr_parcelamentos <- parcel_dipr %>%
filter(ente == ENTE)Vamos dar uma olhada no conjunto de dados:
kable(dipr_parcelamentos)| ente | competencia | plano_segreg | parcelamentos | ing_parc |
|---|---|---|---|---|
| PINHEIRAL - RJ | JAN/2018 | Financeiro | 1687.47 | 1687.47 |
| PINHEIRAL - RJ | JAN/2018 | Previdenciário | 20529.68 | 20529.68 |
| PINHEIRAL - RJ | FEV/2018 | Financeiro | 1707.99 | 1707.99 |
| PINHEIRAL - RJ | FEV/2018 | Previdenciário | 20782.40 | 20782.40 |
| PINHEIRAL - RJ | MAR/2018 | Financeiro | 1721.45 | 1721.45 |
| PINHEIRAL - RJ | MAR/2018 | Previdenciário | 20950.17 | 20950.17 |
| PINHEIRAL - RJ | ABR/2018 | Financeiro | 1731.25 | 1731.25 |
| PINHEIRAL - RJ | ABR/2018 | Previdenciário | 21068.98 | 21068.98 |
| PINHEIRAL - RJ | MAI/2018 | Financeiro | 1743.14 | 1743.14 |
| PINHEIRAL - RJ | MAI/2018 | Previdenciário | 21221.08 | 21221.08 |
| PINHEIRAL - RJ | JUN/2018 | Financeiro | 1758.41 | 1758.41 |
| PINHEIRAL - RJ | JUN/2018 | Previdenciário | 21409.25 | 21409.25 |
| PINHEIRAL - RJ | JUL/2018 | Financeiro | 1788.86 | 1788.86 |
| PINHEIRAL - RJ | JUL/2018 | Previdenciário | 21782.94 | 21782.94 |
| PINHEIRAL - RJ | AGO/2018 | Financeiro | 1811.67 | 1811.67 |
| PINHEIRAL - RJ | AGO/2018 | Previdenciário | 22507.85 | 22507.85 |
| PINHEIRAL - RJ | SET/2018 | Financeiro | 1809.78 | 1809.78 |
| PINHEIRAL - RJ | SET/2018 | Previdenciário | 22044.38 | 22044.38 |
| PINHEIRAL - RJ | OUT/2018 | Financeiro | 1475.41 | 1475.41 |
| PINHEIRAL - RJ | OUT/2018 | Previdenciário | 23171.94 | 23171.94 |
| PINHEIRAL - RJ | NOV/2018 | Financeiro | 354.72 | 354.72 |
| PINHEIRAL - RJ | NOV/2018 | Previdenciário | 22460.82 | 22460.82 |
| PINHEIRAL - RJ | DEZ/2018 | Financeiro | 355.64 | 355.64 |
| PINHEIRAL - RJ | DEZ/2018 | Previdenciário | 22518.98 | 22518.98 |
| PINHEIRAL - RJ | JAN/2019 | Financeiro | 357.30 | 357.30 |
| PINHEIRAL - RJ | JAN/2019 | Previdenciário | 22624.20 | 22624.20 |
| PINHEIRAL - RJ | FEV/2019 | Financeiro | 358.96 | 358.96 |
| PINHEIRAL - RJ | FEV/2019 | Previdenciário | 70191.27 | 70191.27 |
A base do DIPR contém informações sobre parcelamentos em duas variáveis: parcelamentose ing_parc. Assim foram selecionadas as duas apenas para efeito de comparação, ou seja, ver se os dois valores estão “batendo”.
# Gráfico dos dados acima.
#-------------------------
dipr_parcelamentos %>%
mutate(competencia = as.Date(paste("01", competencia, sep = "/"), "%d/%B/%Y")) %>%
ggplot(aes(x=competencia, y=parcelamentos)) +
geom_line() +
geom_point(size=2) +
facet_wrap(~ plano_segreg)Neste tópico nosso objetivo é verificar se as contribuições devidas estão sendo recebidas pelo RPPS. Vamos dar uma olhada no município de Porto Alegre no RS.
ENTE <- "PORTO ALEGRE - RS"
teste <- function(x){!all(is.na(x))}
dipr_contribuicoes <- dipr %>%
filter(ente == ENTE) %>%
select(competencia, plano_segreg, ct_pat_serv, ct_pat_serv_ug, ct_pat_apo, ct_pat_pen, ct_serv, ct_apo, ct_pen) %>%
select_if(teste) %>%
gather(key=tipo, value=contribuicao, -competencia, -plano_segreg) Vamos dar uma olhada nos dados:
kable(dipr_contribuicoes)| competencia | plano_segreg | tipo | contribuicao |
|---|---|---|---|
| JAN/2018 | Financeiro | ct_pat_serv | 14743681.23 |
| JAN/2018 | Previdenciário | ct_pat_serv | 11277159.96 |
| FEV/2018 | Financeiro | ct_pat_serv | 13630951.27 |
| FEV/2018 | Previdenciário | ct_pat_serv | 11021252.89 |
| MAR/2018 | Financeiro | ct_pat_serv | 13645190.18 |
| MAR/2018 | Previdenciário | ct_pat_serv | 11063673.48 |
| ABR/2018 | Financeiro | ct_pat_serv | 13401438.77 |
| ABR/2018 | Previdenciário | ct_pat_serv | 11093625.02 |
| MAI/2018 | Financeiro | ct_pat_serv | 12980740.46 |
| MAI/2018 | Previdenciário | ct_pat_serv | 11016261.69 |
| JUN/2018 | Financeiro | ct_pat_serv | 12711227.70 |
| JUN/2018 | Previdenciário | ct_pat_serv | 11004772.35 |
| JUL/2018 | Financeiro | ct_pat_serv | 12554091.24 |
| JUL/2018 | Previdenciário | ct_pat_serv | 10990582.70 |
| AGO/2018 | Financeiro | ct_pat_serv | 12208294.63 |
| AGO/2018 | Previdenciário | ct_pat_serv | 10989952.32 |
| SET/2018 | Financeiro | ct_pat_serv | 11953218.87 |
| SET/2018 | Previdenciário | ct_pat_serv | 10973447.48 |
| OUT/2018 | Financeiro | ct_pat_serv | 11982903.13 |
| OUT/2018 | Previdenciário | ct_pat_serv | 11134719.08 |
| NOV/2018 | Financeiro | ct_pat_serv | 11730088.86 |
| NOV/2018 | Previdenciário | ct_pat_serv | 11120274.04 |
| DEZ/2018 | Financeiro | ct_pat_serv | 13332301.02 |
| DEZ/2018 | Previdenciário | ct_pat_serv | 12002975.82 |
| JAN/2019 | Financeiro | ct_pat_serv | 11884901.53 |
| JAN/2019 | Previdenciário | ct_pat_serv | 11312612.14 |
| FEV/2019 | Financeiro | ct_pat_serv | 12085991.18 |
| FEV/2019 | Previdenciário | ct_pat_serv | 12089387.41 |
| JAN/2018 | Financeiro | ct_pat_apo | 6328623.32 |
| JAN/2018 | Previdenciário | ct_pat_apo | 41229.74 |
| FEV/2018 | Financeiro | ct_pat_apo | 6427046.22 |
| FEV/2018 | Previdenciário | ct_pat_apo | 48182.78 |
| MAR/2018 | Financeiro | ct_pat_apo | 6352250.69 |
| MAR/2018 | Previdenciário | ct_pat_apo | 47633.73 |
| ABR/2018 | Financeiro | ct_pat_apo | 6573955.56 |
| ABR/2018 | Previdenciário | ct_pat_apo | 43863.21 |
| MAI/2018 | Financeiro | ct_pat_apo | 6534341.45 |
| MAI/2018 | Previdenciário | ct_pat_apo | 58240.33 |
| JUN/2018 | Financeiro | ct_pat_apo | 6623779.20 |
| JUN/2018 | Previdenciário | ct_pat_apo | 56724.17 |
| JUL/2018 | Financeiro | ct_pat_apo | 6743450.06 |
| JUL/2018 | Previdenciário | ct_pat_apo | 69314.73 |
| AGO/2018 | Financeiro | ct_pat_apo | 6790484.58 |
| AGO/2018 | Previdenciário | ct_pat_apo | 74215.64 |
| SET/2018 | Financeiro | ct_pat_apo | 6955831.01 |
| SET/2018 | Previdenciário | ct_pat_apo | 73925.79 |
| OUT/2018 | Financeiro | ct_pat_apo | 7070420.95 |
| OUT/2018 | Previdenciário | ct_pat_apo | 79227.22 |
| NOV/2018 | Financeiro | ct_pat_apo | 6946595.29 |
| NOV/2018 | Previdenciário | ct_pat_apo | 80861.07 |
| DEZ/2018 | Financeiro | ct_pat_apo | 7820161.86 |
| DEZ/2018 | Previdenciário | ct_pat_apo | 136785.30 |
| JAN/2019 | Financeiro | ct_pat_apo | 6841110.89 |
| JAN/2019 | Previdenciário | ct_pat_apo | 81313.99 |
| FEV/2019 | Financeiro | ct_pat_apo | 7408550.18 |
| FEV/2019 | Previdenciário | ct_pat_apo | 80459.60 |
| JAN/2018 | Financeiro | ct_serv | 9216219.96 |
| JAN/2018 | Previdenciário | ct_serv | 6490567.16 |
| FEV/2018 | Financeiro | ct_serv | 8669810.04 |
| FEV/2018 | Previdenciário | ct_serv | 6385571.07 |
| MAR/2018 | Financeiro | ct_serv | 8669710.32 |
| MAR/2018 | Previdenciário | ct_serv | 6412475.79 |
| ABR/2018 | Financeiro | ct_serv | 8527162.52 |
| ABR/2018 | Previdenciário | ct_serv | 6430735.29 |
| MAI/2018 | Financeiro | ct_serv | 8243400.43 |
| MAI/2018 | Previdenciário | ct_serv | 6392616.92 |
| JUN/2018 | Financeiro | ct_serv | 8072370.94 |
| JUN/2018 | Previdenciário | ct_serv | 6379680.45 |
| JUL/2018 | Financeiro | ct_serv | 7976096.30 |
| JUL/2018 | Previdenciário | ct_serv | 6372044.13 |
| AGO/2018 | Financeiro | ct_serv | 7760405.64 |
| AGO/2018 | Previdenciário | ct_serv | 6370782.43 |
| SET/2018 | Financeiro | ct_serv | 7596256.38 |
| SET/2018 | Previdenciário | ct_serv | 6364136.24 |
| OUT/2018 | Financeiro | ct_serv | 7601002.32 |
| OUT/2018 | Previdenciário | ct_serv | 6454192.68 |
| NOV/2018 | Financeiro | ct_serv | 7454927.51 |
| NOV/2018 | Previdenciário | ct_serv | 6449223.40 |
| DEZ/2018 | Financeiro | ct_serv | 8472652.89 |
| DEZ/2018 | Previdenciário | ct_serv | 6956520.63 |
| JAN/2019 | Financeiro | ct_serv | 7543092.81 |
| JAN/2019 | Previdenciário | ct_serv | 6557478.42 |
| FEV/2019 | Financeiro | ct_serv | 7683747.21 |
| FEV/2019 | Previdenciário | ct_serv | 7009477.66 |
# Gráfico dos dados acima.
dipr_contribuicoes %>%
mutate(competencia = as.Date(paste("01", competencia, sep = "/"), "%d/%B/%Y")) %>%
ggplot(aes(x=competencia, y=contribuicao, group=tipo, color=tipo)) +
geom_line() +
geom_point(size=2) +
facet_wrap(~ plano_segreg)Neste tópico nosso objetivo é apenas visualizar como as receitas e despesas do RPPS estão evoluindo no tempo. Para isso, vamos utilizar como exemplo o RPPS de Manaus, AM. As variáveis que nos interessam são: total_receita e total_despesa.
ENTE <- "MANAUS - AM"
dipr %>%
filter(ente == ENTE) %>%
select(ente, competencia, plano_segreg, total_receita, total_despesa) %>%
mutate(competencia = as.Date(paste("01", competencia, sep = "/"), "%d/%B/%Y")) %>%
ggplot(aes(x=competencia, y=total_despesa)) +
geom_line() +
geom_point() +
facet_wrap(~ plano_segreg)Para a receita o código é o mesmo:
dipr %>%
filter(ente == ENTE) %>%
select(ente, competencia, plano_segreg, total_receita, total_despesa) %>%
mutate(competencia = as.Date(paste("01", competencia, sep = "/"), "%d/%B/%Y")) %>%
ggplot(aes(x=competencia, y=total_receita)) +
geom_line() +
geom_point() +
facet_wrap(~ plano_segreg)Outra análise que pode ser de interesse seria avaliar como a quantidade de beneficiários está evoluindo ao longo do tempo. Informações sobre a quantidade de beneficiários estão contidas nas variáveis nb_serv, nb_apos, nb_pen e nb_dep.
Se quisermos incluir dados dos militares, teremos que considerar as variáveis nbmil_ativos, nbmil_reserva, nbmil_pen e nbmil_dep.
No gráfico a seguir vamos ver a evolução da quantidade de servidores ativos (nb_serv):
ENTE <- "JAPERI - RJ"
dipr %>%
filter(ente == ENTE) %>%
select(competencia, plano_segreg, nb_serv, nb_apos, nb_pen, nb_dep) %>%
mutate(competencia = as.Date(paste("01", competencia, sep = "/"), "%d/%B/%Y")) %>%
ggplot(aes(x=competencia, y=nb_serv, group=1)) +
geom_line() +
geom_point() +
facet_wrap(~ plano_segreg)Neste tópico nosso objetivo será obter uma relação dos RPPS de uma UF com os valores do COMPREV recebido. Uma análise adicional seria verificar se todos os RPPS que informaram ter recebido COMPREV estão regulares com o CRP.
Esta verificação pode auxiliar na Diretriz Atricon que oriente os TCs a verificar:
" g) se os regimes próprios têm viabilizado o exercício do direito de compensação financeira;“”
Na base do DIPR os valores recebidos relativos ao COMPREV constam da variável ing_comprev.
Vamos olhar os RPPS do Estado do Paraná (PR). No código abaixo os valores do COMPREV do plano financeiro e previdenciário serão caso o RPPS escolhido possua segregação de massas.
UF <- "PR"
recebe_comprev <- dipr %>%
filter(uf == UF) %>%
select(ente, competencia, ing_comprev) %>%
mutate(competencia = as.Date(paste("01", competencia, sep="/"), "%d/%b/%Y")) %>%
group_by(ente, competencia) %>%
summarise(comprev = sum(ing_comprev, na.rm=TRUE)) %>%
spread(key=competencia, value=comprev)Vamos olhar os dados. Como são muitos RPPS, vamos ver os dados dos 10 primeiros.
kable(head(recebe_comprev, 10))| ente | 2018-01-01 | 2018-02-01 | 2018-03-01 | 2018-04-01 | 2018-05-01 | 2018-06-01 | 2018-07-01 | 2018-08-01 | 2018-09-01 | 2018-10-01 | 2018-11-01 | 2018-12-01 | 2019-01-01 | 2019-02-01 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ADRIANOPOLIS - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA |
| ALMIRANTE TAMANDARE - PR | 0.00 | 0.00 | 0.00 | 0.0 | 351116.9 | 44924.63 | 44924.63 | 44341.73 | 44341.73 | 42633.35 | 88682.36 | 44052.05 | NA | NA |
| ALTAMIRA DO PARANA - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA |
| ALTO PARANA - PR | 4423.02 | 14096.92 | 13743.28 | 129343.6 | 15027.3 | 0.00 | 0.00 | 0.00 | 0.00 | 75136.50 | 15027.30 | 30054.60 | 14193.57 | 14680.23 |
| AMAPORA - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| AMPERE - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| ANDIRA - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 729290.83 | 59260.77 | 11964.24 | NA | NA |
| ANGULO - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA |
| ARAPONGAS - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| ARAPOTI - PR | 0.00 | 0.00 | 0.00 | 0.0 | 0.0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Vamos excluir os Entes que cujos valores de COMPREV estejam zerados em todos os meses ou possuam NA.
recebe_comprev2 <- recebe_comprev %>%
ungroup() %>%
mutate(flag = apply(.[, -1], 1, function(x) all(x == 0 | is.na(x)))) %>%
filter(!flag) %>%
select(-flag)kable(recebe_comprev2)| ente | 2018-01-01 | 2018-02-01 | 2018-03-01 | 2018-04-01 | 2018-05-01 | 2018-06-01 | 2018-07-01 | 2018-08-01 | 2018-09-01 | 2018-10-01 | 2018-11-01 | 2018-12-01 | 2019-01-01 | 2019-02-01 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ALMIRANTE TAMANDARE - PR | 0.00 | 0.00 | 0.00 | 0.00 | 351116.92 | 44924.63 | 44924.63 | 44341.73 | 44341.73 | 42633.35 | 88682.36 | 44052.05 | NA | NA |
| ALTO PARANA - PR | 4423.02 | 14096.92 | 13743.28 | 129343.64 | 15027.30 | 0.00 | 0.00 | 0.00 | 0.00 | 75136.50 | 15027.30 | 30054.60 | 14193.57 | 14680.23 |
| ANDIRA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 729290.83 | 59260.77 | 11964.24 | NA | NA |
| BARRACAO - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 16371.50 | 38437.18 | 19218.59 | 38437.18 | 19218.59 | 19877.59 |
| BOA ESPERANCA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 184520.66 | 5143.13 | 5143.13 | 5143.13 | 5143.13 | 10286.26 | 5143.13 | 5319.50 |
| BOA VENTURA DE SAO ROQUE - PR | 968.40 | 96957.50 | 1955.44 | 1829.44 | 1829.44 | 1829.44 | 1829.44 | 1829.44 | 210.00 | 3658.88 | NA | NA | NA | NA |
| CAFELANDIA - PR | 5584.50 | 0.00 | 12021.29 | 4713.26 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| CAMBARA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 195748.92 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA |
| CAMBE - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2961599.95 | 19275.73 | 19936.65 |
| CAMPO LARGO - PR | 69295.07 | 70729.21 | 100244.20 | 97340.07 | 100244.20 | 100046.70 | 0.00 | 0.00 | 0.00 | 0.00 | 396539.18 | 198160.52 | 99080.26 | 102477.49 |
| CAMPO MOURAO - PR | 148325.28 | 183691.77 | 145986.34 | 147916.03 | 147916.03 | 147398.59 | 147418.85 | 147550.04 | 0.00 | 0.00 | 588568.01 | 146804.18 | 151408.03 | 170491.32 |
| CANTAGALO - PR | 379.20 | 387.04 | 42000.70 | 807.24 | 807.24 | 807.24 | 807.24 | 807.24 | 807.24 | 807.24 | 807.24 | 1614.48 | 807.24 | 834.92 |
| CASCAVEL - PR | 358557.09 | 307202.44 | 107138.80 | 298155.64 | 282175.64 | 304381.37 | 365823.74 | 526176.75 | 588554.50 | 339750.44 | 363982.99 | 641158.22 | 320570.27 | 330862.13 |
| CERRO AZUL - PR | 0.00 | 0.00 | 151271.31 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 121987.92 | 7175.76 | 7175.76 | 7175.76 | NA | NA |
| CIANORTE - PR | 175534.53 | 179166.49 | 178151.39 | 174548.46 | 178151.39 | 174761.42 | 177812.28 | 176920.39 | 175193.98 | 175118.29 | 175118.29 | 350236.58 | 470611.87 | 184104.59 |
| COLOMBO - PR | 471591.26 | 172693.27 | 182948.43 | 181641.72 | 180779.51 | 180310.63 | 0.00 | 363713.21 | 181029.66 | 181393.28 | 342976.80 | 363021.76 | 181279.04 | 187494.65 |
| CORBELIA - PR | 37055.76 | 37822.30 | 37822.30 | 37822.30 | 37822.30 | 37245.62 | 37822.30 | 37726.03 | 37519.77 | 37657.27 | 44115.75 | 75908.89 | 41689.62 | 39009.55 |
| CRUZEIRO DO OESTE - PR | 0.00 | 27668.48 | 12605.32 | 11199.38 | 0.00 | 25210.64 | 12605.32 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA |
| CURITIBA - PR | 1317446.69 | 1344699.81 | 0.00 | 0.00 | 1319070.69 | 1328419.83 | 1320969.61 | 1322966.31 | 1323016.21 | 1323970.78 | 1324853.13 | 2642742.12 | 1320051.80 | 1355393.99 |
| DIAMANTE DO NORTE - PR | 0.00 | 0.00 | 11223.68 | 11223.68 | 0.00 | 0.00 | 44667.21 | 44667.21 | 55505.74 | 100172.95 | 11223.68 | 22447.36 | NA | NA |
| ESTADO DO PARANA - PR | 7363869.10 | 9013479.46 | 8888642.99 | 8888077.77 | 8925224.06 | 8849126.87 | 8933547.52 | 8932222.72 | 8891785.04 | 8913805.30 | NA | NA | NA | NA |
| FAZENDA RIO GRANDE - PR | 11319.43 | 11553.62 | 11005.16 | 9268.38 | 11005.16 | 11005.16 | 0.00 | 0.00 | 11005.16 | 11005.16 | 0.00 | 0.00 | 11005.16 | 11382.50 |
| FLORESTA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 324.54 | 649.08 | NA | NA |
| FLORIDA - PR | 3564.80 | 0.00 | 909.64 | 454.82 | 454.82 | 454.82 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA |
| FOZ DO IGUACU - PR | 981841.51 | 313175.73 | 498025.13 | 525267.68 | 497219.05 | 941744.24 | 586306.32 | 758246.92 | 524869.20 | 521649.00 | 573660.71 | 1073856.07 | 1125371.24 | 549739.43 |
| FRANCISCO BELTRAO - PR | 86897.60 | 86548.44 | 91993.97 | 93312.18 | 86074.80 | 86074.80 | 115599.09 | 95447.93 | 95060.67 | 95224.46 | 95224.46 | 190448.92 | 95224.46 | 98489.14 |
| GUARANIACU - PR | 16503.82 | 16845.30 | 16508.38 | 15166.35 | 16508.38 | 16508.38 | 16425.85 | 16790.13 | 0.00 | 0.00 | 0.00 | 207787.10 | 16790.13 | 17365.90 |
| GUARAPUAVA - PR | 16953.72 | 361795.62 | 20030.50 | 20030.50 | 20030.50 | 67788.48 | 0.00 | 178403.66 | 22086.01 | 22086.01 | 25126.59 | 42862.94 | 21431.47 | 20271.73 |
| GUARATUBA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 17262.75 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| IBAITI - PR | 0.00 | 80440.48 | 0.00 | 0.00 | 102764.06 | 21615.35 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 21299.30 | 21260.55 |
| IBIPORA - PR | 43279.09 | 44174.33 | 44174.33 | 44174.33 | 44174.33 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| INACIO MARTINS - PR | 92159.51 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 3361.37 | 1513.70 | 3361.37 | 3361.37 | 6722.74 | 3361.37 | 3476.61 |
| IPORA - PR | 15296.85 | 15026.17 | 15026.17 | 14426.18 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| IRATI - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 540248.38 | 0.00 | 0.00 | 43703.82 | 14567.95 | 29135.90 | NA | NA |
| IVATUBA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 4256.25 | 1418.75 | 1418.75 | 1418.75 | 0.00 | 0.00 | 1418.75 | 2837.50 | 1278.94 | 1322.78 |
| JAPURA - PR | 3997.20 | 9784.97 | 9784.97 | 9784.97 | 9784.97 | 9784.97 | 9809.05 | 9603.22 | 9603.22 | 9603.22 | 9603.22 | 19206.44 | 9603.22 | 9932.51 |
| JARDIM OLINDA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 43538.69 | NA | NA |
| JUSSARA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 145757.60 | 3559.35 | 0.00 | 7272.06 | 3636.03 | 3636.03 | 7272.06 | 3636.03 | 3760.70 |
| LAPA - PR | 70036.81 | 70036.81 | 70036.81 | 70036.81 | 70036.81 | 70036.81 | 70036.81 | 70036.81 | 71036.81 | 69783.76 | 138858.96 | 69429.48 | 71809.96 | 71809.96 |
| LARANJEIRAS DO SUL - PR | 12674.83 | 12937.04 | 49618.08 | 13322.48 | 0.00 | 0.00 | 39967.44 | 13322.48 | 13322.48 | 13322.48 | 13322.48 | 26644.96 | 13322.48 | 13779.26 |
| LOANDA - PR | 17083.20 | 17436.64 | 17436.64 | 17436.64 | 17436.64 | 17436.64 | 17101.11 | 0.00 | 34092.69 | 18012.79 | 18012.79 | 36025.58 | 18012.79 | 18630.38 |
| LOBATO - PR | 0.00 | 0.00 | 17910.10 | 1791.01 | 1791.01 | 1791.01 | 1791.01 | 1791.01 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA |
| LONDRINA - PR | 714722.88 | 729513.06 | 721813.78 | 720150.39 | 717769.61 | 711556.29 | 710556.81 | 708558.09 | 705860.97 | 707492.04 | 1901955.66 | 2480256.77 | NA | NA |
| MANDAGUACU - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 734727.95 | 0.00 | 23525.46 | 1158137.15 | 23798.05 | 24614.04 |
| MARIA HELENA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 409418.52 | 7198.37 | 7198.37 | 7198.37 | 7198.37 | 14396.74 | 0.00 | 14538.06 |
| MARIALVA - PR | 0.00 | 292134.66 | 186836.20 | 143385.58 | 96339.07 | 67218.63 | 67218.63 | 0.00 | 67218.63 | 134603.62 | 191250.27 | 133764.14 | 66882.07 | 68151.91 |
| MARILUZ - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 120069.85 | 6598.87 | 9115.27 | 9115.27 | 9115.27 | 18230.54 | 9115.27 | 9427.81 |
| MARINGA - PR | 435306.67 | 499089.88 | 497180.21 | 438363.31 | 430473.98 | 884931.40 | 439904.11 | 1254629.34 | 444242.35 | 444187.79 | 443211.54 | 938251.79 | 496097.74 | 910426.81 |
| MEDIANEIRA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 56070.40 | 56070.40 | 56070.40 | 112140.80 | 56070.40 | 57992.87 |
| MOREIRA SALES - PR | 1678.04 | 10169.17 | 10169.17 | 10169.17 | 10169.17 | 10169.17 | 10169.17 | 10169.17 | 10169.17 | 10169.17 | 10006.88 | 213588.97 | 9682.31 | 10014.30 |
| NOVA AURORA - PR | 75284.33 | 28043.69 | 28043.69 | 28043.69 | 28043.69 | 28043.69 | 28043.69 | 0.00 | 27659.65 | 27713.57 | 27659.65 | 55427.14 | NA | NA |
| NOVA ESPERANCA - PR | 76553.62 | 23608.11 | 23608.11 | 23608.11 | 23608.11 | 23608.11 | 0.00 | 51112.33 | 22667.69 | 23608.11 | 23608.11 | 47216.22 | 23608.11 | 24417.64 |
| NOVO ITACOLOMI - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 85931.31 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| OURIZONA - PR | 356455.12 | 9757.28 | 9757.28 | 9757.28 | 200765.93 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 95709.16 | NA | NA |
| PALMEIRA - PR | 23258.43 | 223615.08 | 0.00 | 12193.92 | 25689.57 | 24728.39 | 25689.57 | 25689.57 | 25689.57 | 25689.57 | 8676.63 | 50121.94 | 24927.90 | 25349.74 |
| PALMITAL - PR | 0.00 | 0.00 | 0.00 | 268170.47 | 3610.79 | 3610.79 | 0.00 | 7221.58 | 3610.79 | 3610.79 | 3490.16 | 6739.04 | NA | NA |
| PALOTINA - PR | 70116.12 | 71566.95 | 71566.95 | 0.00 | 0.00 | 0.00 | 271732.52 | 69447.23 | 66390.76 | 29307.44 | NA | NA | NA | NA |
| PARANACITY - PR | 0.00 | 0.00 | 0.00 | 0.00 | 672835.63 | 15724.65 | 15724.65 | 15755.38 | 0.00 | 0.00 | 0.00 | 0.00 | NA | NA |
| PARANAVAI - PR | 52526.96 | 52526.96 | 83970.29 | 52805.92 | 51754.18 | 52805.92 | 52805.92 | 52805.92 | 0.00 | 0.00 | 105136.46 | 52568.23 | 53990.58 | 54370.83 |
| PEROLA - PR | 24768.05 | 25280.50 | 25280.50 | 25280.50 | 25280.50 | 25004.78 | 24341.79 | 25083.65 | 25083.65 | 25083.65 | NA | NA | NA | NA |
| PINHAIS - PR | 95890.23 | 97874.33 | 97874.33 | 97874.33 | 97874.33 | 97874.33 | 97874.33 | 97874.33 | 97874.33 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| PINHAO - PR | 3438.73 | 3509.87 | 3509.87 | 3509.87 | 3509.87 | 0.00 | 0.00 | 0.00 | 3417.32 | 3721.86 | NA | NA | NA | NA |
| PITANGA - PR | 2346.66 | 16769.24 | 4851.98 | 4851.98 | 4851.98 | 327514.97 | 822527.11 | 12325.87 | 105259.02 | 1965.95 | 11617.12 | 23234.24 | 1654081.83 | 0.00 |
| PLANALTO - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 362326.19 | NA | NA | NA | NA |
| PRUDENTOPOLIS - PR | 4453.87 | 0.00 | 0.00 | 2823.85 | 5067.55 | 5067.55 | 5067.55 | 5067.55 | 3705.34 | 0.00 | NA | NA | NA | NA |
| RENASCENCA - PR | 16786.06 | 14675.06 | 14675.06 | 14675.06 | 14675.06 | 14675.06 | 20613.62 | 22073.43 | 15367.22 | 15367.22 | 15367.22 | 0.00 | 0.00 | 0.00 |
| RIO AZUL - PR | 5173.83 | 5280.86 | 5280.86 | 5280.86 | 4848.44 | 3991.56 | 0.00 | 4809.13 | 9618.26 | 4809.13 | 4670.06 | 8783.82 | 4391.91 | 4083.57 |
| RIO BONITO DO IGUACU - PR | 937.79 | 0.00 | 1460.45 | 1460.45 | 1460.45 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1460.45 | 2920.90 | 1460.45 | 0.00 |
| RIO NEGRO - PR | 0.00 | 0.00 | 6337.71 | 9318.27 | 9318.27 | 9318.27 | 9318.27 | 9318.27 | 7052.77 | 7350.42 | 9318.27 | 18636.54 | 9318.27 | 9637.80 |
| RONCADOR - PR | 0.00 | 84684.35 | 12461.71 | 12461.71 | 12461.71 | 12461.71 | 12461.71 | 12461.71 | 12461.71 | 12461.71 | 24923.42 | 12461.71 | NA | NA |
| SAO JORGE DO PATROCINIO - PR | 0.00 | 0.00 | 0.00 | 1468.56 | 1468.56 | 1468.56 | 1468.56 | 1468.56 | 1468.56 | 1468.56 | 1468.56 | 2937.12 | NA | NA |
| TEIXEIRA SOARES - PR | 11175.44 | 11175.44 | 11175.44 | 11175.44 | 4648.40 | 11034.11 | 18151.17 | 11213.91 | 11213.91 | 12531.80 | 25063.60 | 12531.80 | 12531.80 | 12961.48 |
| TELEMACO BORBA - PR | 12649.67 | 472301.87 | 13459.30 | 61389.78 | 61389.78 | 61389.78 | 59850.36 | 61389.78 | 61389.78 | 136925.35 | 179547.93 | 1287362.90 | 89047.01 | 91380.75 |
| TERRA BOA - PR | 0.00 | 0.00 | 0.00 | 0.00 | 27966.67 | 13110.46 | 13227.44 | 36075.11 | 13933.58 | 13933.58 | 0.00 | 0.00 | NA | NA |
| TERRA ROXA - PR | 23472.17 | 23957.67 | 22739.86 | 23530.33 | 23530.33 | 23530.33 | 23530.33 | 0.00 | 46805.30 | 23380.09 | 31986.82 | 44766.30 | 23580.87 | 24277.95 |
| TIBAGI - PR | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 2050541.50 | 15741.73 | 15741.73 | 31483.46 | 15741.73 | 16281.47 |
| TOLEDO - PR | 326267.41 | 333018.55 | 330509.09 | 0.00 | 661574.73 | 432485.61 | 309735.61 | 330243.21 | 328269.48 | 328972.26 | 329355.07 | 657787.48 | 328893.74 | 339312.22 |
| UMUARAMA - PR | 7949.68 | 62340.31 | 62176.16 | 61716.59 | 61823.45 | 60599.68 | 61823.45 | 61823.45 | 61823.45 | 61823.45 | 61823.45 | 123646.90 | NA | NA |
| UNIAO DA VITORIA - PR | 2479.27 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Se quisermos exportar os dados:
setwd("..\\dados-produzidos")
write_xlsx(recebe_comprev2, "ReceitaCOMPREV-PR.xlsx")Se quisermos ver a evolução temporal da receita de COMPREV de um determinado RPPS, por exemplo Alto Paraná - PR, podermos fazer da seguinte forma:
ENTE <- "ALTO PARANA - PR"
dipr %>%
filter(ente == ENTE) %>%
select(ente, competencia, ing_comprev) %>%
mutate(competencia = as.Date(paste("01", competencia, sep="/"), "%d/%b/%Y")) %>%
group_by(ente, competencia) %>%
summarise(comprev = sum(ing_comprev, na.rm=TRUE)) %>%
ggplot(aes(x=competencia, y=comprev, group=1)) +
geom_line() +
geom_point()Como a quantidade de variáveis na base do DIPR é bem grande (91 variáveis) as possibilidades de análise são muitas mas o código aqui apresentado já dá uma boa ideia de como utilizar esses dados.
O objetivo da análise é identificar os RPPS com parcelamentos ativos, a quantidade de parcelamentos ativos, o valor consolidado dos parcelamentos e o saldo a pagar.
Para isso, será utilizado o arquivo PARCELAMENTOS_30042019.xlsx disponibilizado pela SPrev/ME.
1. Importação dos dados:
Como de costume, o prmeiro passo é realizar a importação da base de dados.
# Entes com parcelamentos
#-------------------------------------------------------------------------------
setwd("..\\dados")
parcel <- read_excel("PARCELAMENTOS_30042019.xlsx", skip = 3, col_names = FALSE)
names(parcel) <- c("ente", "uf", "tipo", "situacao", "num_acordo", "rubrica",
"lei", "dt_consol", "dt_assin", "dt_venc_1a", "compet_ini",
"compet_fin", "vlr_consolid", "qtd_parc", "vlr_parc_ini",
"sd_estim_satualiz", "sd_estim_catualiz", "comp_indice",
"comp_tipo_juros", "comp_txjuros", "comp_multa", "parcvinc_indice",
"parcvinc_tipojuros", "parcvinc_txjuros", "parcvinc_multa",
"parcatraso_indice", "parcatraso_tipojuros",
"parcatraso_txjuros", "parcatraso_multa")Vamos dar uma olhada na base de dados:
kable(head(parcel))| ente | uf | tipo | situacao | num_acordo | rubrica | lei | dt_consol | dt_assin | dt_venc_1a | compet_ini | compet_fin | vlr_consolid | qtd_parc | vlr_parc_ini | sd_estim_satualiz | sd_estim_catualiz | comp_indice | comp_tipo_juros | comp_txjuros | comp_multa | parcvinc_indice | parcvinc_tipojuros | parcvinc_txjuros | parcvinc_multa | parcatraso_indice | parcatraso_tipojuros | parcatraso_txjuros | parcatraso_multa |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Abadia de Goiás | GO | P | Aceito | 00198/2009 | OUTR | LEI MUNICIPAL 239/2004 C/C PORTARIA 402/2008 E 83/2009 | 27/03/2009 | 27/03/2009 | 30/04/2009 | 02/2007 | 12/2008 | 216.084,06 | 240 | 900,35 | 108.042,00 | 237.692,40 | SELIC | Simples | 1,00 | NA | SELIC | Simples | 1,00 | NA | SELIC | Simples | 1,00 | NA |
| Abadia de Goiás | GO | P | Aceito | 01121/2016 | CP60 | Lei Municipal n. 636/2016, de 16 de dezembro de 2016 | 21/12/2016 | 21/12/2016 | 30/12/2016 | 02/2016 | 10/2016 | 585.393,82 | 60 | 9.756,56 | 312.209,92 | 399.628,70 | IPCA | Simples | 0,50 | 1,00 | IPCA | Simples | 0,50 | NA | IPCA | Simples | 1,00 | 2,00 |
| Abadia de Goiás | GO | P | Aceito | 00138/2017 | CP60 | Lei Municipal n. 636/2016, de 16 de dezembro de 2016 | 03/02/2017 | 06/02/2017 | 01/03/2017 | 10/2016 | 10/2016 | 45.123,45 | 60 | 752,06 | 26.322,10 | 32.902,62 | IPCA | Simples | 0,50 | 1,00 | IPCA | Simples | 0,50 | NA | IPCA | Simples | 1,00 | 2,00 |
| Abadia de Goiás | GO | P | Aceito | 00645/2017 | CP60 | Lei Municipal n. 636/2016, de 16 de dezembro de 2016 | 24/07/2017 | 24/07/2017 | 31/08/2017 | 02/2017 | 06/2017 | 461.544,36 | 60 | 7.692,41 | 307.696,40 | 369.235,68 | IPCA | Simples | 0,50 | 1,00 | IPCA | Simples | 0,50 | NA | IPCA | Simples | 1,00 | 2,00 |
| Abadia de Goiás | GO | P | Aceito | 01426/2018 | CP60 | Lei Municipal n. 636/2016, de 16 de dezembro de 2016 | 21/12/2018 | 21/12/2018 | 30/01/2019 | 02/2018 | 10/2018 | 1.172.611,97 | 24 | 48.858,83 | 1.026.035,43 | 1.056.816,49 | IPCA | Simples | 0,50 | 1,00 | IPCA | Simples | 0,50 | NA | IPCA | Simples | 1,00 | 2,00 |
| Abadia de Goiás | GO | P | Aceito | 00143/2019 | CP60 | Lei Municipal n. 636/2016, de 16 de dezembro de 2016 | 08/02/2019 | 11/02/2019 | 31/03/2019 | 11/2018 | 12/2018 | 396.962,34 | 22 | 18.043,74 | 378.918,54 | 382.707,73 | IPCA | Simples | 0,50 | 1,00 | IPCA | Simples | 0,50 | NA | IPCA | Simples | 1,00 | 2,00 |
Feita a importação, quase sempre será necessário realizar algum pré-processamento da base de dados. Aqui será necessário converter algumas variáveis para o formato numérico. Especificamente vamos converter as variáveis vlr_consolid e sd_estim_satualiz. Também faremos uma pequena redução no nome de alguns Entes.
# Converter dados para o formato numérico
convNum <- function(x){
as.numeric(gsub(",", ".", gsub("\\.", "", x)))
}
colunas_converter <- c("vlr_consolid", "sd_estim_satualiz", "sd_estim_catualiz", "vlr_parc_ini")
parcel[, colunas_converter] <- sapply(parcel[, colunas_converter], convNum)
# Limpar os nomes dos entes:
parcel$ente <- gsub("^Governo do ", "", parcel$ente)Vamos salvar a base no formato .Rds do R para uso posterior:
setwd("..\\dados-produzidos")
saveRDS(parcel, file="Parcelamentos_DtGer30042019.Rds")2. Parcelamentos ativos
A variável situacao nos dá uma indicação da situação do parcelamento, muito provavelmente na data da geração da base de dados. Os valores possiveis dessa variável são:
unique(parcel$situacao)[1] "Aceito" "Não aceito" "Quitado" "Aguardando doc. assinado" "Aguardando análise" "Repactuado"
para servos conservadores em relação o montante de dívida oriunda de parcelamentos que os Entes possuem com seus RPPS, vamos retirar da base os acordos de parcelamento quitados e não aceitos.
parcel <- parcel %>%
filter(!(situacao %in% c("Quitado", "Não aceito")))3. Agregação dos parcelamentos
Vamos a seguir realizar uma agregação dos dados com vistas a mostrar, em relação aos Entes qual a situação em relação a quantidade e valor dos parcelamentos.
tab_parcelamentos <- parcel %>%
group_by(ente) %>%
summarise(qtd_acordos = n(),
valor_consolidado = sum(vlr_consolid, na.rm=TRUE),
sd_sem_atualiz = sum(sd_estim_satualiz, na.rm = TRUE),
percentual = round(sd_sem_atualiz / valor_consolidado * 100, 2)) %>%
arrange(desc(valor_consolidado))kable(head(tab_parcelamentos))| ente | qtd_acordos | valor_consolidado | sd_sem_atualiz | percentual |
|---|---|---|---|---|
| Estado do Amapá | 31 | 3447912889 | 2820625396 | 81.81 |
| Estado do Tocantins | 9 | 794717442 | 383913282 | 48.31 |
| Curitiba | 5 | 766061169 | 575421093 | 75.11 |
| Florianópolis | 24 | 765330461 | 518112744 | 67.70 |
| Betim | 13 | 635762214 | 451580074 | 71.03 |
| Campos dos Goytacazes | 15 | 558804387 | 382784397 | 68.50 |
Os fluxos atuariais são objeto do Capítulo VII da Portaria 464 de 19.11.2018. Um primeiro aspecto importante a ser considerado é que os mesmos são parte integrante da avaliação atuarial (art. 10).
Estes fluxos tem por objetivo evidenciar as projeções de todas as receitas e despesas do RPPS. Sua estrutura deverá seguir modelos aprovados pela Secretaria de Previdência.
Os modelos do fluxo atuarial e orientações quanto ao preenchimento dos mesmos podem ser obtidos nos seguintes links:
Modelos de planilhas: http://sa.previdencia.gov.br/site/2015/04/Fluxos-atuariais-Para-o-site-em-abril_2015_.zip
Instruções de preenchimento dos fluxos atuariais: http://sa.previdencia.gov.br/site/2015/04/2015-_Instru%C3%A7%C3%B5es-de-Preenchimento-dos-Fluxos-Atuariais.xlsx
Também de interesse são as orientações contidas no documento INSTRUÇÕES GERAIS PARA DOWNLOAD, PREPARAÇÃO E TRANSMISSÃO DOS FLUXOS ATUARIAIS que pode ser baixado no seguinte link: http://sa.previdencia.gov.br/site/2015/01/Instru%C3%A7%C3%B5es-gerais-para-download-prepara%C3%A7%C3%A3o-e-transmiss%C3%A3o-dos-Fluxos-Atuariais-23_jan_20151.pdf
De acordo com este documento, “os valores da linha 157 estão arredondados na casa dos centavos, de forma que os valores dessa linha devem corresponder aos valores informados na aba ‘Resultados / Valores dos Compromissos’ do DRAA”.
É vedado fazer alterações na planilha, de forma que a construção de rotinas de verificação automatizada das mesmas pode ser elaborada sem maiores complicadores.
O layout dos fluxos atuariais é apresentado a seguir:
Para a execução deste procedimento, vamos utilizar os seguintes conjuntos de dados:
2019_FLX_CIVIL_PREV_GA_cnpj - Com cálculo Duração.xlsx2019_FLX_CIVIL_PREV_GA_XXXXXXXXXXXXXX.csvComparativo de Receita Despesa.csvDesses arquivos o primeiro e o terceiro estão disponíveis no site da SPrev. O segundo contém os dados do fluxo atuarial a ser examinado e não consta do site. Estes arquivos devem ser requisitados aos RPPS.
O arquivo 2019_FLX_CIVIL_PREV_GA_cnpj - Com cálculo Duração.xlsx será utilizado apenas para obtenção dos dos nomes das variáveis e os correspondentes códigos, o que pode ser feito da seguinte forma:
# Gerar um data frame com os nomes e os códigos das varíaveis
dicionario <- read_excel("2019_FLX_CIVIL_PREV_GA_cnpj - Com cálculo Duração.xlsx", sheet="Flx_CIVIL_PREV_GA", range="A7:BQ8")
dicionario <- t(dicionario)
dicionario <- data.frame(cod = dimnames(dicionario)[[1]],
descr = unname(dicionario[, 1]))
dicionario$cod <- paste("V", dicionario$cod, sep = "")Obtido o dicionário de dados, vamos dar uma olhada:
# Mostrar o dicionário
knitr::kable(dicionario)| cod | descr |
|---|---|
| V100101 | Instante |
| V100201 | Ano |
| V100301 | Taxa de Juros (%) |
| V100401 | Fator de Desconto |
| V109001 | Base de Cálculo da Contribuição Normal |
| V111000 | Benefícios Concedidos - Contribuições dos Aposentados |
| V111101 | Benefícios Concedidos - Contribuições Futuras dos Aposentados - Aposentadorias Programadas |
| V111201 | Benefícios Concedidos - Contribuições Futuras dos Aposentados - Aposentadorias Especiais de Professores |
| V111301 | Benefícios Concedidos - Contribuições Futuras dos Aposentados - Outras Aposentadorias Especiais |
| V111401 | Benefícios Concedidos - Contribuições Futuras dos Aposentados - Aposentadorias por Invalidez |
| V112000 | Benefícios Concedidos - Contribuições dos Pensionistas |
| V119900 | Benefícios Concedidos - Compensação Previdenciária a Receber |
| V121000 | Benefícios a Conceder - Contribuições do Ente |
| V121100 | Benefícios a Conceder - Contribuições Futuras do Ente - Aposentadorias Programadas |
| V121200 | Benefícios a Conceder - Contribuições Futuras do Ente - Aposentadorias Especiais de Professores |
| V121300 | Benefícios a Conceder - Contribuições Futuras do Ente - Outras Aposentadorias Especiais |
| V121400 | Benefícios a Conceder - Contribuições Futuras do Ente - Aposentadorias por Invalidez |
| V121500 | Benefícios a Conceder - Contribuições Futuras do Ente - Pensões Por Morte de Servidores em Atividade |
| V121600 | Benefícios a Conceder - Contribuições Futuras do Ente - Pensões Por Morte de Aposentados |
| V121700 | Benefícios a Conceder - Contribuições Futuras do Ente - Outros Benefícios e Auxílios |
| V122000 | Benefícios a Conceder - Contribuições dos Segurados Ativos |
| V122100 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Aposentadorias Programadas |
| V122200 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Aposentadorias Especiais de Professores |
| V122300 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Outras Aposentadorias Especiais |
| V122400 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Aposentadorias por Invalidez |
| V122500 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Pensões Por Morte de Segurados em Atividade |
| V122600 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Pensões Por Morte de Aposentados |
| V122700 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Outros Benefícios e Auxílios |
| V123000 | Benefícios a Conceder - Contribuições dos Aposentados |
| V123100 | Benefícios a Conceder - Contribuições Futuras dos Aposentados - Aposentadorias Programadas |
| V123200 | Benefícios a Conceder - Contribuições Futuras dos Aposentados - Aposentadorias Especiais de Professores |
| V123300 | Benefícios a Conceder - Contribuições Futuras dos Aposentados - Outras Aposentadorias Especiais |
| V123400 | Benefícios a Conceder - Contribuições Futuras dos Aposentados - Aposentadorias por Invalidez |
| V124000 | Benefícios a Conceder - Contribuições dos Pensionistas |
| V124100 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas - Aposentadorias Programadas |
| V124200 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas - Aposentadorias Especiais de Professores |
| V124300 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas - Outras Aposentadorias Especiais |
| V124400 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas - Aposentadorias por Invalidez |
| V124500 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas - Pensões Por Morte de Segurados em Atividade |
| V129000 | Benefícios a Conceder - Compensação Previdenciária a Receber |
| V130101 | Plano de Amortização do Déficit Atuarial estabelecido em lei |
| V130201 | Parcelamentos de Débitos Previdenciários |
| V139901 | Valor Atual da Cobertura da Insuficiência Financeira (Outras Receitas) |
| V190000 | (A) TOTAL DAS RECEITAS COM CONTRIBUIÇÕES E COMPENSAÇÃO PREVIDENCIÁRIA |
| V210000 | Benefícios Concedidos - Encargos |
| V211001 | Benefícios Concedidos - Encargos - Aposentadorias Programadas |
| V212001 | Benefícios Concedidos - Encargos - Aposentadorias Especiais de Professores |
| V213001 | Benefícios Concedidos - Encargos - Outras Aposentadorias Especiais |
| V214001 | Benefícios Concedidos - Encargos - Aposentadorias por Invalidez |
| V215001 | Benefícios Concedidos - Encargos - Pensões Por Morte |
| V219901 | Benefícios Concedidos - Encargos - Compensação Previdenciária a Pagar |
| V220000 | Benefícios a Conceder - Encargos |
| V221000 | Benefícios a Conceder - Encargos - Aposentadorias Programadas |
| V222000 | Benefícios a Conceder - Encargos - Aposentadorias Especiais de Professores |
| V223000 | Benefícios a Conceder - Encargos - Outras Aposentadorias Especiais |
| V224000 | Benefícios a Conceder - Encargos - Aposentadorias por Invalidez |
| V225000 | Benefícios a Conceder - Encargos - Pensões Por Morte de Servidores em Atividade |
| V226000 | Benefícios a Conceder - Encargos - Pensões Por Morte de Aposentados |
| V227000 | Benefícios a Conceder - Encargos - Outros Benefícios e Auxílios |
| V229000 | Benefícios a Conceder - Encargos - Compensação Previdenciária a Pagar |
| V239901 | Outras Despesas |
| V240000 | (B) TOTAL DAS DESPESAS COM BENEFÍCIOS DO PLANO |
| V250001 | (C) INSUFICIÊNCIA OU EXCEDENTE FINANCEIRO (A-B) |
| V260001 | (D) SALDO ACUMULADO DO EXERCÍCIO A VALOR ATUAL |
| V270001 | (E) RENTABILIDADE ESPERADA (%) |
| V280001 | (F) Rentabilidade dos Ativos que compõem os Recursos Garantidores |
| V290001 | (G) EVOLUÇÃO DOS RECURSOS GARANTIDORES (Informar o valor acumulado na data da avaliação) |
| V310000 | ( H ) BENEFÍCIOS LÍQUIDOS A VALOR PRESENTE |
| V320000 | ( I ) BENEFÍCIOS LÍQUIDOS PONDERADOS PELO INSTANTE |
Os fluxos atuariais não estão, atualmente, disponíveis para download no site da Secretaria de Previdência do Ministério da Economia (SPrev/ME) nem no CADPREVWeb.
Conseguimos um exemplar que usaremos para demonstrar como realizar sua análise usando o R.
Vamos definir uma pequena função que calculará a o Fator de Desconto (V100401) a partir das Taxas de Juros (V100301) informadas no fluxo atuarial.
# Define uma função auxiliar para calcular as taxas de desconto
#--------------------------------------------------------------
calcula_tx_desconto <- function(i, postecipado = TRUE){
#--------------------
# i: Variável V100301
#--------------------
if(postecipado){
desconto <- 1 / (1 + i)
} else {
desconto <- c(1, 1 / (1 + i[2:length(i)]))
}
round(cumprod(desconto), 5)
}Vamos iniciar a análise do fluxo atuarial importando os dados contidos no aquivo 2019_FLX_CIVIL_PREV_GA_XXXXXXXXXXXXXX.csv.
A importação do conteúdo do arquivo é feito da seguintes forma:
# Importação dos dados
setwd("..\\dados")
flx_orig <- read.csv2("2019_FLX_CIVIL_PREV_GA_XXXXXXXXXXXXXX.csv", skip = 5, header=FALSE)
# Coloca nomes nas colunas
colfluxo <- c(100101, 100201, 100301, 100401, 109001, 111000, 111101, 111201, 111301,
111401, 112000, 119900, 121000, 121100, 121200, 121300, 121400, 121500,
121600, 121700, 122000, 122100, 122200, 122300, 122400, 122500, 122600,
122700, 123000, 123100, 123200, 123300, 123400, 124000, 124100, 124200,
124300, 124400, 124500, 129000, 130101, 130201, 139901, 190000, 210000,
211001, 212001, 213001, 214001, 215001, 219901, 220000, 221000, 222000,
223000, 224000, 225000, 226000, 227000, 229000, 239901, 240000, 250001,
260001, 270001, 280001, 290001)
if(ncol(flx_orig) == 67){
names(flx_orig) <- paste("V", colfluxo, sep="")
} else {
names(flx_orig) <- paste("V", c(colfluxo, 310000, 320000), sep="")
}Ao colocar os nomes das colunas estamos considerando a possibilide do fluxo atuarial conter ou não as variáveis V310000 e V320000 necessárias para o cálculo da Duração do Passivo, requisito introduzido com a Portaria MF 464/18.
Os comandos a seguir irão converter algumas variáveis numéricas que foram importadas como se fossem fatores.
# Conversão de variáveis para o formato numérico
numeros <- sapply(flx_orig, is.factor)
flx_orig[,numeros] <- sapply(flx_orig[,numeros], function(x) as.numeric(gsub(",", ".", gsub("\\.", "", x))))Feita a importação dos dados, será necessário obter os dados contidos nas linhas denominadas ** Totais de Controle:** e Totais de Controle a Valor Atual: e posteriormente excluí-las da base de dados. Isso é feito com os comandos a seguir:
# Reter as linhas de controle "Totais de Controle" e "Totais de Controle a Valor Atual"
linhas_controle <- filter(flx_orig, !grepl("^\\d+", V100101))
# e excluílas da base de dados
flx_orig <- filter(flx_orig, grepl("^\\d+", V100101))Feito isso, o próximo passo é realizar o “recálculo” de algumas variáveis conforme mostrado a seguir.
# Identifica se o fluxo é postecipado ou não.
postecipado <- ifelse(flx_orig$V100101[1] == 1, TRUE, FALSE)
# Obtém o ano do fluxo (ano inicial do fluxo...)
ano <- flx_orig$V100201[1]
# Recálculo de algumas variáveis...
flx_orig <- mutate(flx_orig,
V100401 = calcula_tx_desconto(i = flx_orig$V100301 / 100, postecipado = postecipado),
V111000 = V111101 + V111201 + V111301 + V111401 ,
V121000 = V121100 + V121200 + V121300 + V121400 + V121500 + V121600 + V121700,
V122000 = V122100 + V122200 + V122300 + V122400 + V122500 + V122600 + V122700,
V123000 = V123100 + V123200 + V123300 + V123400,
V124000 = V124100 + V124200 + V124300 + V124400 + V124500,
V190000 = V111000 + V112000 + V119900 + V121000 + V122000 + V123000 + V124000 + V129000 + V130101 + V139901,
V210000 = V211001 + V212001 + V213001 + V214001 + V215001 + V219901,
V220000 = V221000 + V222000 + V223000 + V224000 + V225000 + V226000 + V227000 + V229000 + V239901,
V240000 = V210000 + V220000,
V250001 = V190000 - V240000)Recalculadas as variáveis de interesse a partir dos dados informados no fluxo é necessário agora determinar o valor atual das mesmas e compará-las com os valores relativos aos Totais de Controle a Valor Atual que consta da planilha do fluxo atuarial o que mostramos no tópico a seguir.
Neste tópico o objetivo é apresentar as análises de consistência que serão realizadas no fluxo atuarial.
Uma primeira análise básica é a revisão de cálculos. Nas planilhas modelo do fluxo atuarial, algumas células são editáveis e outras são automaticamente calculadas pela planilha em função dos valores fornecidos. Essa análise consistirá apenas em checar se os valores da linha que contém os Totais de Controle a Valor Atual guardam conformidade com os valores recalculados a partir dos dados da planilha. Trata-se apenas de conferência de cálculo.
A seguir ilustramos como realizar esta conferência.
# Codigos a serem conferidos:
#----------------------------
codigos <- c("V109001", "V111000", "V111101", "V111201", "V111301", "V111401", "V112000",
"V119900", "V121000", "V121100", "V121200", "V121300", "V121400", "V121500",
"V121600", "V121700", "V122000", "V122100", "V122200", "V122300", "V122400",
"V122500", "V122600", "V122700", "V123000", "V123100", "V123200", "V123300",
"V123400", "V124000", "V124100", "V124200", "V124300", "V124400", "V124500",
"V129000", "V130101", "V130201", "V139901", "V190000", "V210000", "V211001",
"V212001", "V213001", "V214001", "V215001", "V219901", "V220000", "V221000",
"V222000", "V223000", "V224000", "V225000", "V226000", "V227000", "V229000",
"V239901", "V240000", "V250001")
# Obtenção dos valores da linha de controle calculados
#---------------------------------------------
soma_calculado <- apply(flx_orig[, codigos], 2, sum, na.rm=TRUE)
soma_vp_calculado <- apply(flx_orig[, codigos], 2, function(x) sum(x * flx_orig$V100401, na.rm = TRUE))
soma_calc <- as.data.frame(rbind(soma_calculado, soma_vp_calculado))
# Obtenção das linhas contendo os valores da linha de controle da planilha de fluxo
soma_fluxo <- linhas_controle[, codigos]
row.names(soma_fluxo) <- c("soma_fluxo", "soma_vp_fluxo")
## IDENTIFICAÇÃO DOS CÓDIGOS COM DIVERGÊNCIAS
##-------------------------------------------
dados <- as.data.frame(cbind(t(soma_calc), t(soma_fluxo)))
dados <- transform(dados,
dif_soma = soma_calculado - soma_fluxo,
dif_vp = soma_vp_calculado - soma_vp_fluxo)
dados <- subset(dados, dif_vp != 0)[, c("soma_vp_calculado", "soma_vp_fluxo", "dif_vp")]
dados$cod <- row.names(dados)
dados <- merge(dados, dicionario, by="cod")
dados <- dados[, c("cod", "descr", "soma_vp_calculado", "soma_vp_fluxo", "dif_vp")]
dados$dif_vp <- round(dados$dif_vp, 2)A tabela a seguir apresenta os códigos das colunas para as quais os valores presente das variáveis recalculadas (soma_vp_calculado) diferem do valor presente apresentados no arquivo do fluxo atuarial (soma_vp_fluxo).
knitr::kable(dados, format.args = list(decimal.mark = ",", big.mark = "."))| cod | descr | soma_vp_calculado | soma_vp_fluxo | dif_vp |
|---|---|---|---|---|
| V109001 | Base de Cálculo da Contribuição Normal | 102.526.743,93 | 102.526.271,37 | 472,56 |
| V119900 | Benefícios Concedidos - Compensação Previdenciária a Receber | 229.841,11 | 229.838,88 | 2,23 |
| V121000 | Benefícios a Conceder - Contribuições do Ente | 19.199.591,41 | 19.199.502,91 | 88,50 |
| V121100 | Benefícios a Conceder - Contribuições Futuras do Ente - Aposentadorias Programadas | 11.323.615,50 | 11.323.563,30 | 52,20 |
| V121200 | Benefícios a Conceder - Contribuições Futuras do Ente - Aposentadorias Especiais de Professores | 4.930.717,44 | 4.930.694,72 | 22,72 |
| V121400 | Benefícios a Conceder - Contribuições Futuras do Ente - Aposentadorias por Invalidez | 676.744,02 | 676.740,90 | 3,12 |
| V121500 | Benefícios a Conceder - Contribuições Futuras do Ente - Pensões Por Morte de Servidores em Atividade | 807.622,14 | 807.618,42 | 3,72 |
| V121600 | Benefícios a Conceder - Contribuições Futuras do Ente - Pensões Por Morte de Aposentados | 1.290.709,99 | 1.290.704,04 | 5,95 |
| V121700 | Benefícios a Conceder - Contribuições Futuras do Ente - Outros Benefícios e Auxílios | 170.182,32 | 170.181,53 | 0,79 |
| V122000 | Benefícios a Conceder - Contribuições dos Segurados Ativos | 9.908.542,97 | 9.908.500,68 | 42,29 |
| V122100 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Aposentadorias Programadas | 5.864.627,52 | 5.864.603,11 | 24,41 |
| V122200 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Aposentadorias Especiais de Professores | 2.553.674,28 | 2.553.663,26 | 11,02 |
| V122400 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Aposentadorias por Invalidez | 342.418,78 | 342.417,20 | 1,58 |
| V122500 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Pensões Por Morte de Segurados em Atividade | 408.640,46 | 408.638,58 | 1,88 |
| V122600 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Pensões Por Morte de Aposentados | 653.073,13 | 653.070,12 | 3,01 |
| V122700 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos - Outros Benefícios e Auxílios | 86.108,81 | 86.108,41 | 0,40 |
| V129000 | Benefícios a Conceder - Compensação Previdenciária a Receber | 6.203.528,16 | 6.203.468,14 | 60,02 |
| V130101 | Plano de Amortização do Déficit Atuarial estabelecido em lei | 3.485.348,78 | 3.485.303,50 | 45,28 |
| V190000 | (A) TOTAL DAS RECEITAS COM CONTRIBUIÇÕES E COMPENSAÇÃO PREVIDENCIÁRIA | 39.026.852,43 | 39.028.227,15 | -1.374,72 |
| V210000 | Benefícios Concedidos - Encargos | 1.331.527,92 | 1.331.519,17 | 8,75 |
| V211001 | Benefícios Concedidos - Encargos - Aposentadorias Programadas | 1.078.066,63 | 1.078.059,34 | 7,29 |
| V214001 | Benefícios Concedidos - Encargos - Aposentadorias por Invalidez | 192.998,75 | 192.997,35 | 1,40 |
| V215001 | Benefícios Concedidos - Encargos - Pensões Por Morte | 60.462,54 | 60.462,48 | 0,06 |
| V220000 | Benefícios a Conceder - Encargos | 64.156.893,39 | 64.156.346,48 | 546,91 |
| V221000 | Benefícios a Conceder - Encargos - Aposentadorias Programadas | 30.526.723,42 | 30.526.433,20 | 290,22 |
| V222000 | Benefícios a Conceder - Encargos - Aposentadorias Especiais de Professores | 23.287.782,34 | 23.287.543,91 | 238,43 |
| V224000 | Benefícios a Conceder - Encargos - Aposentadorias por Invalidez | 2.240.554,53 | 2.240.527,95 | 26,58 |
| V225000 | Benefícios a Conceder - Encargos - Pensões Por Morte de Servidores em Atividade | 2.673.855,76 | 2.673.832,24 | 23,52 |
| V226000 | Benefícios a Conceder - Encargos - Pensões Por Morte de Aposentados | 4.273.171,95 | 4.273.213,67 | -41,72 |
| V227000 | Benefícios a Conceder - Encargos - Outros Benefícios e Auxílios | 256.291,13 | 256.289,95 | 1,18 |
| V229000 | Benefícios a Conceder - Encargos - Compensação Previdenciária a Pagar | 898.514,25 | 898.505,56 | 8,69 |
| V240000 | (B) TOTAL DAS DESPESAS COM BENEFÍCIOS DO PLANO | 65.488.421,31 | 65.487.865,65 | 555,66 |
| V250001 | (C) INSUFICIÊNCIA OU EXCEDENTE FINANCEIRO (A-B) | -26.461.568,87 | -26.459.638,50 | -1.930,37 |
A tabela mostra diferencas desprezíveis. Para efeitos práticos pode-se, a meu ver, considerarmos que não há divergências. Parece razoável definirmos uma margem de tolerâncias para as divergências.
Os dados apresentados no fluxo atuarial devem, também, guardar correspondência com os dados apresentados no DRAA. Assim, nesse tópico nosso objetivo é comparar os valores apresentados no fluxo atuarial com os apresentados no DRAA.
Os dados do DRAA serão obtidos do arquivo Valores_Compromissos.csv disponibilizado pela SPrev.
A seguir faremos a importação da base de dados e seleção dos registros relativos ao Ente e ano a que se refere o fluxo atuarial objeto de nossa análise.
setwd("..\\dados")
passivo <- read.csv2("Valores_Compromissos.csv", stringsAsFactors = FALSE)
names(passivo) <- c("cnpj", "uf", "ente", "ano", "dt_envio", "situacao_draa",
"tipo_plano", "tipo_massa", "codigo", "descr", "categoria",
"vlr_geracao_atual", "vlr_geracao_futura")Feita a importação dos dados, será necessário realizar modificação no encoding das variáveis e converter variáveis para o formato numérico.
passivo[] <- sapply(passivo, iconv, from="utf-8", to="latin1")
passivo[,c("vlr_geracao_atual", "vlr_geracao_futura")] <- sapply(passivo[,c("vlr_geracao_atual", "vlr_geracao_futura")], function(x) as.numeric(gsub(",", ".", x)))Agora precisamos recuperar nessa base de dados as informações relativas ao ente e ao ano do fluxo atuarial que estamos examinando. Isso pode ser feito da seguinte forma:
passivo_ente <- passivo %>%
filter(uf=="XX", ano==2019, ente=="XX", tipo_plano == "Previdenciário") %>%
select(codigo, descr, vlr_geracao_atual) %>%
arrange(codigo)Nota: Substituir XX pela uf e ente desejados. Essa informação não consta do código acima para não divulgar o RPPS cujo fluxo estamos analisando.
Vamos examinar parte dos dados:
kable(head(passivo_ente, 10), format.args = list(decimal.mark = ",", big.mark = "."))| codigo | descr | vlr_geracao_atual |
|---|---|---|
| 109001 | Valor Atual dos Salários Futuros | 102.526.271,4 |
| 110000 | VALOR ATUAL DAS CONTRIBUIÇÕES FUTURAS E COMPENSAÇÕES A RECEBER - BENEFÍCIOS CONCEDIDOS | 229.838,9 |
| 111000 | Benefícios Concedidos - Contribuições Futuras dos Aposentados | 0,0 |
| 112000 | Benefícios Concedidos - Contribuições Futuras dos Pensionistas | 0,0 |
| 119900 | Benefícios Concedidos - Compensação Previdenciária a Receber | 229.838,9 |
| 120000 | VALOR ATUAL DAS CONTRIBUIÇÕES FUTURAS E COMPENSAÇÕES A RECEBER - BENEFÍCIOS A CONCEDER: | 35.311.471,7 |
| 121000 | Benefícios a Conceder - Contribuições Futuras do Ente | 19.199.502,9 |
| 122000 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos | 9.908.500,7 |
| 123000 | Benefícios a Conceder - Contribuições Futuras dos Aposentados | 0,0 |
| 124000 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas | 0,0 |
Agora temos que juntar estes dados ( DRAA ) com os dados relativos ao fluxo atuarial “conferido” e o “declarado”, que já foram obtidos anteriormente. Mas antes, será necessário uma pequena organização dos dados para que seja possível juntar as duas bases de dados.
soma_calc <- as.data.frame(t(soma_calc))
soma_calc$cod <- row.names(soma_calc)
soma_fluxo <- as.data.frame(t(soma_fluxo))
soma_fluxo$cod <- row.names(soma_fluxo)
dados_fluxo <- merge(soma_calc, soma_fluxo,
by.x="cod",
by.y="cod")Vamos agora juntar os dados oriundos do fluxo atuarial com os dados oriundos do DRAA:
passivo_ente$codigo <- paste("V", passivo_ente$codigo, sep = "")
conferencia <- merge(passivo_ente, dados_fluxo[,c("cod", "soma_vp_calculado", "soma_vp_fluxo")],
by.x = "codigo",
by.y = "cod")
# Calcula diferenças entre o DRAA e Fluxo Atuarial
conferencia <- transform(conferencia,
dif = round(vlr_geracao_atual - soma_vp_calculado, 2))Vamos olhar o resultado obtido:
# Apresentação do resultado (omitindo a variável "soma_vp_fluxo")
kable(conferencia[,c("codigo", "descr", "vlr_geracao_atual", "soma_vp_calculado", "dif")],
format.args = list(decimal.mark = ",", big.mark = "."))| codigo | descr | vlr_geracao_atual | soma_vp_calculado | dif |
|---|---|---|---|---|
| V109001 | Valor Atual dos Salários Futuros | 102.526.271,37 | 102.526.743,93 | -472,56 |
| V111000 | Benefícios Concedidos - Contribuições Futuras dos Aposentados | 0,00 | 0,00 | 0,00 |
| V112000 | Benefícios Concedidos - Contribuições Futuras dos Pensionistas | 0,00 | 0,00 | 0,00 |
| V119900 | Benefícios Concedidos - Compensação Previdenciária a Receber | 229.838,88 | 229.841,11 | -2,23 |
| V121000 | Benefícios a Conceder - Contribuições Futuras do Ente | 19.199.502,91 | 19.199.591,41 | -88,50 |
| V122000 | Benefícios a Conceder - Contribuições Futuras dos Segurados Ativos | 9.908.500,68 | 9.908.542,97 | -42,29 |
| V123000 | Benefícios a Conceder - Contribuições Futuras dos Aposentados | 0,00 | 0,00 | 0,00 |
| V124000 | Benefícios a Conceder - Contribuições Futuras dos Pensionistas | 0,00 | 0,00 | 0,00 |
| V129000 | Benefícios a Conceder - Compensação Previdenciária a Receber | 6.203.468,14 | 6.203.528,16 | -60,02 |
| V130101 | Valor Atual do Plano de Amortização do Déficit Atuarial estabelecido em lei | 3.485.303,50 | 3.485.348,78 | -45,28 |
| V130201 | Valor Atual dos Parcelamentos de Débitos Previdenciários | 1.613,04 | 1.613,04 | 0,00 |
| V210000 | VALOR ATUAL DOS BENEFÍCIOS FUTUROS - ENCARGOS DE BENEFÍCIOS CONCEDIDOS | 1.331.519,17 | 1.331.527,92 | -8,75 |
| V220000 | VALOR ATUAL DOS BENEFÍCIOS FUTUROS - ENCARGOS DE BENEFÍCIOS A CONCEDER: | 64.156.346,48 | 64.156.893,39 | -546,91 |
| V221000 | Benefícios a Conceder - Encargos - Aposentadorias Programadas | 30.526.433,20 | 30.526.723,42 | -290,22 |
| V222000 | Benefícios a Conceder - Encargos - Aposentadorias Especiais de Professores | 23.287.543,91 | 23.287.782,34 | -238,43 |
| V223000 | Benefícios a Conceder - Encargos - Outras Aposentadorias Especiais | 0,00 | 0,00 | 0,00 |
| V224000 | Benefícios a Conceder - Encargos - Aposentadorias por Invalidez | 2.240.527,95 | 2.240.554,53 | -26,58 |
| V225000 | Benefícios a Conceder - Encargos - Pensões Por Morte de Servidores em Atividade | 2.673.832,24 | 2.673.855,76 | -23,52 |
| V226000 | Benefícios a Conceder - Encargos - Pensões Por Morte de Aposentados | 4.273.213,67 | 4.273.171,95 | 41,72 |
| V227000 | Benefícios a Conceder - Encargos - Outros Benefícios e Auxílios | 256.289,95 | 256.291,13 | -1,18 |
| V229000 | Benefícios a Conceder - Encargos - Compensação Previdenciária a Pagar | 898.505,56 | 898.514,25 | -8,69 |
Lembrando que as variáveis são:
vlr_geracao_atual - Valor atual obtido do DRAA
soma_vp_calculado - Valor atual recalculado a partir do fluxo
soma_vp_fluxo - Valor atual apresentado no fluxo
Outro grupo de análises refere-se a análises de razoabilidade. Estas análises consistirão basicamente em análises gráficas. O objetivo é tentar identificar comportamentos anômalos de algumas varáveis.
Exemplo: em se tratando de Geração Atual, que é um grupo fechado, é razoável que a variável V109001 (Valor Atual dos Salários Futuros ou Base de Cálculo da Contribuição Normal) apresente um comportamento decrescente ao longo dos anos, fato que deverá ser conferido no gráfico dessa variável que apresentamos a seguir juntamente com o gráfico de outras variáveis.
ggplot(flx_orig, aes(x=V100201, y=V109001 / 1e6)) +
geom_line() +
ylab("Valor Atual dos Salários Futuros \n(Em Milhões)") +
xlab("Anos")O gráfico se comporta como esperado.
ggplot(flx_orig, aes(x=V100201, y=V190000 / 1e6)) +
geom_line() +
ylab("Total de Receitas com Contribuições e Comprev \n(Em Milhões)") +
xlab("Anos")Também esta variável se comporta conforme o esperado.
ggplot(flx_orig, aes(x=V100201, y=V240000 / 1e6)) +
geom_line() +
ylab("Total das Despesas com Benefícios do Plano \n(Em Milhões)") +
xlab("Anos")ggplot(flx_orig, aes(x=V100201, y=V250001 / 1e6)) +
geom_line() +
ylab("Resultado Financeiro \n(Em Milhões)") +
xlab("Anos")Nosso objetivo neste tópico é mostrar algumas possibilidades de análise do Indicador de Situação Previdenciária - ISP.
Em particular uma análise possível é verificar a posiçao do indicador de um Ente em relação aos demais Entes do Estado.
A importação dos dados pode ser feita da seguinte forma:
setwd("..\\dados")
isp <- read_excel("RESULTADO-ISP-2018.01.xlsx")
isp <- isp[, -c(31, 32, 33, 34)]
names(isp) <- c("ENTE", "UF", "REGIAO", "GRUPO", "ESCRITURA", "APLICFIN",
"CONTRIB", "COBSERVPUB", "CONCBENEF", "EQUILATUAR", "PARTSEG", "PARCELTEMP",
"REGRAS", "UTILRECPREV", "CONF", "CLASSIF_CONF", "ENDIVID", "SOLVFIN",
"RAZAOAI", "COMPROMATUAR", "SOLVATUAR", "EQUIL", "CLASSIF_EQUIL",
"DRAA", "DIPR", "DPIN", "DAIR", "TRANSP", "CLASSIF_TRANSP", "ISP201801")
isp$ENTE <- gsub("^GOVERNO DO ", "", isp$ENTE)Feita a importação dos dados, algumas análises com esse conjunto de dados são possíveis e serão aqui acrescidas à medida que o tempo permitir.
Podemos visualizar o indicador de um determinado RPPS em comparação com os dos demais RPPS de um mesmo Estado, ou comparar o indicador de um RPPS com os RPPS do mesmo porte.
Por exemplo, vamos ver como o RPPS do municipio de Campos dos Goytacazes no ERJ se compara com os demais RPPS do Estado do RJ com relação ao ISP:
ESTADO <- "RJ"
RPPS <- "CAMPOS DOS GOYTACAZES - RJ"
isp %>%
filter(UF == ESTADO) %>%
ggplot(aes(x=as.factor(UF), y=ISP201801)) +
geom_boxplot() +
labs(x="", y = "ISP") +
geom_dotplot(binaxis = "y", stackdir="center", fill="lightgray", color="lightgray") +
geom_point(y=isp$ISP201801[isp$ENTE == RPPS], color="blue", size=3, shape=8) +
theme_bw()Vê que o RPPS em questão está no quartil inferior da distribuição (marcado no gráfico com um asterisco azul).
Uma forma interativa de visualização do ISP pode ser obtida no seguinte site:https://marcosfs2006.shinyapps.io/Visualiza_ISP/
A Resolução Atricon 5/2018 orienta no sentido de se utilizar como referência o Indicador de Situação Previdenciária para efeito de definir os RPPS a serem avaliados nas Contas de Governo. (Item 24, m, III)
Este pode ser um ponto a ser desenvolvido posteriormente.