/rb3

Tratamento de arquivos públicos disponibilizados pela B3

Primary LanguageR

rb3

Leitura e tratamento dos arquivos com dados de mercado distribuídos pela B3. Os estes arquivos podem ser baixados da página de Dados Históricos da B3 através do link.

A BM&FBovespa disponibiliza publicamente diversos arquivos com informações sobre os contratos negociados diariamente. A maioria destes arquivos é referente ao fechamento do mercado e são utilizados pelos participantes do mercado para realizar a marcação a mercado dos contratos.

Os arquivos estão em diversos formatos de forma que esta biblioteca tenta tornar transparente o esforço de tratamento do arquivo provendo uma estrutura de dados melhor adaptada aos dados dos arquivos.

Cada arquivo possui um template associado que contém as regras para a leitura do arquivo, assim como as descrição dos dados providas pela BM&FBovespa.

Como instalar

devtools::install_github('wilsonfreitas/transmute')
devtools::install_github('wilsonfreitas/rb3')

Como usar

A função read_marketdata deve ser usada para ler os arquivos. Os arquivos são identificados pelos seus nomes, pois a maior parte do arquivos tem um nome fixo como Indic.txt e PUWEB.TXT, por exemplo. Estes arquivos são interpretados pela função read_marketdata que retorna um data.frame com o conteúdo do arquivo, como observa-se no código abaixo para o arquivo de indicadores financeiros.

indic <- read_marketdata('Indic.txt')
str(indic)
# 'data.frame':	480 obs. of  9 variables:
#  $ Identificação da transação : num  1 2 3 4 5 6 7 8 9 10 ...
#  $ Complemento da transação   : num  1 1 1 1 1 1 1 1 1 1 ...
#  $ Tipo de registro           : num  1 1 1 1 1 1 1 1 1 1 ...
#  $ Data de geração do arquivo : Date, format: "2014-12-11" "2014-12-12" ...
#  $ Grupo do indicador         : Factor w/ 6 levels "Indicadores agropecuários",..: 2 2 2 2 2 2 2 2 2 2 ...
#  $ Código do indicador        : chr  "DE11-B40" "DE11-B40" "DE13-A18" "DE13-A18" ...
#  $ Valor do indicador na data : num  107 107 110 110 102 ...
#  $ Número de decimais do valor: num  4 4 4 4 4 4 4 4 4 4 ...
#  $ Filler                     : chr  "" "" "" "" ...

Em outros casos os arquivos são dividos em partes como cabeçalho e corpo, e nestes casos read_marketdata retorna um list contendo um data.frame em cada elemento. O arquivo PUWEB.TXT (de preços referenciais para títulos públicos), no código abaixo, é um exemplo.

puweb <- read_marketdata('PUWEB.TXT')
str(puweb)
# List of 2
#  $ Cabeçalho:'data.frame':	1 obs. of  3 variables:
#   ..$ Tipo de registro          : int 1
#   ..$ Data de geração do arquivo: Date[1:1], format: "2015-09-25"
#   ..$ Nome do arquivo           : chr "PUWEB.TXT"
#  $ Corpo    :'data.frame':	170 obs. of  8 variables:
#   ..$ Tipo de registro                  : int [1:170] 2 2 2 2 2 2 2 2 2 2 ...
#   ..$ Código do título                  : int [1:170] 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 ...
#   ..$ Descrição do título               : Factor w/ 6 levels "LTN","NTNF","LFT",..: 1 1 1 1 1 1 1 1 1 1 ...
#   ..$ Data de emissão do título         : Date[1:170], format: "2014-07-04" "2012-01-06" ...
#   ..$ Data de vencimento do título      : Date[1:170], format: "2015-10-01" "2016-01-01" ...
#   ..$ Valor de mercado em PU            : num [1:170] 998 965 931 898 864 ...
#   ..$ Valor do PU em cenário de estresse: num [1:170] 998 962 924 886 849 ...
#   ..$ Valor de mercado em PU para D+1   : num [1:170] 998 965 932 898 864 ...

Caso os arquivos sejam renomeados, o template associado deve ser definido para que o arquivo seja lido corretamente, como é o caso do arquivo BDIN com informações do mercados de ações da BM&FBovespa.

> bdin <- read_marketdata('inst/extdata/BDIN.txt', template='BDIN')
> str(bdin)
# List of 11
#  $ Header                                      :'data.frame':	1 obs. of  9 variables:
#   ..$ Tipo de registro          : int 0
#   ..$ Código do arquivo         : chr "BDIN"
#   ..$ Código do usuário         : int 9999
#   ..$ Código da origem          : chr "BOVESPA"
#   ..$ Código do destino         : int 9999
#   ..$ Data de geração do arquivo: Date[1:1], format: "2015-11-19"
#   ..$ Data do pregão            : Date[1:1], format: "2015-11-19"
#   ..$ Hora de geração           : POSIXct[1:1], format: "2016-02-12 17:24:00"
#   ..$ Reserva                   : chr ""
#  $ Resumo Diário dos Índices                   :'data.frame':	23 obs. of  38 variables:
#   ..$ Tipo de registro                                                 : int [1:23] 1 1 1 1 1 1 1 1 1 1 ...
#   ..$ Identificação do índice                                          : int [1:23] 1 2 3 4 6 8 9 10 11 12 ...
#   ..$ Nome do índice                                                   : chr [1:23] "IBOVESPA" "IEELETRICA" "IVBX2" "IBRX BRASIL" ...
#   ..$ Índice de abertura do pregão                                     : int [1:23] 47437 26829 7726 19749 8048 7601 2247 10695 130 68 952 ...
# ...

Arquivos Tratados

Arquivo Template Mercado Descrição
BDIN BDIN Mercado de Ações Cotações do Horário Regular
BD_Arbit.txt BD_Arbit Mercado de Derivativos Negócios Realizados em Pregão - Parcial
BDPrevia.txt BD_Arbit Mercado de Derivativos Negócios Realizados em Pregão - Preliminar
BD_Final.txt BD_Arbit Mercado de Derivativos Negócios Realizados em Pregão - Final
BDAfterHour.txt BD_Arbit Mercado de Derivativos Negócios Realizados em Pregão - After-Hours (D+1)
BDAtual.txt BD_Arbit Mercado de Derivativos Negócios Realizados em Pregão - Atualização de Contratos em Aberto
BDAjuste.txt BD_Arbit Mercado de Derivativos Negócios Realizados em Pregão - Ajustes
Indica.txt Indic Mercado de Derivativos Indicadores Econômicos e Agropecuários - Parcial
Indic.txt Indic Mercado de Derivativos Indicadores Econômicos e Agropecuários - Final
CONTRCAD.txt ContrCad Mercado de Derivativos Contratos Cadastrados
CONTRCAD-IPN.txt ContrCad Mercado de Derivativos Contratos Cadastrados Nova Clearing
TaxaSwap.txt TaxaSwap Mercado de Derivativos Taxas de Mercado para Swaps
PUWEB.TXT PUWEB Mercado de Títulos Públicos Preços Referenciais para Títulos Públicos
Premio.txt Premio Mercado de Derivativos Prêmio de Referência para Opções
SupVol.txt SupVol Mercado de Derivativos Superfície de Volatilidade por Delta
Eletro.txt Eletro Mercado de Derivativos Negócios Realizados no Mercado de Balcão
CodISIND.txt ISIND Mercado de Derivativos Relação de Códigos ISIN para Contratos Derivativos
CodISINS.txt ISINS Mercado de Derivativos Relação de Códigos ISIN para Contratos de Swap
DeltaOpcoes.txt DeltaOpcoes Mercado de Derivativos Volatilidades implícitas das opções sobre derivativos financeiros em Deltas padronizados

Ajuda

Divesos arquivos ainda não são tratados, caso você tenha interesse em algum arquivo específico entre em contato para que possamos priorizar a criação do template ou se quiser pode enviar o template pronto que será incluído no pacote.