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.
A documentação do pacote está disponível como github page.
devtools::install_github('wilsonfreitas/rb3')
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 ...
# ...
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 |
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.