Skip to main content

finbr

Coleção de utilitários Python para o mercado financeiro brasileiro.

finbr é um kit de ferramentas abrangente projetado para simplificar o trabalho com dados do mercado financeiro brasileiro. Ele fornece acesso fácil aos principais indicadores financeiros, preços de mercado e outros dados essenciais para análise e cálculos.

Instalação

pip install finbr

Exemplos de Uso

import finbr

# Preços de Ativos
dados_precos = finbr.precos(['PETR4', 'VALE3'])

# CDI
# Retorna a taxa CDI anualizada recente, ex: 0.1415 (14.15%)
cdi_anual = finbr.cdi()
cdi_diario = finbr.cdi(ao_ano=False)  # taxa diária

# Taxa SELIC
# Retorna a taxa SELIC anualizada recente, ex: 0.1425 (14.25%)
selic_anual = finbr.selic()
selic_diaria = finbr.selic(ao_ano=False)  # taxa diária

# IPCA
taxa_ipca = finbr.ipca()
print(taxa_ipca)
# a saída é um pd.DataFrame
            ipca
data
1980-02-01  0.0462
1980-03-01  0.0604
1980-04-01  0.0529
1980-05-01  0.0570
1980-06-01  0.0531
...            ...
2024-10-01  0.0056
2024-11-01  0.0039
2024-12-01  0.0052
2025-01-01  0.0016
2025-02-01  0.0131

finbr.sgs (SGS - Sistema Gerenciador de Séries Temporais do Banco Central)

O módulo sgs fornece acesso ao Sistema Gerenciador de Séries Temporais (SGS) do Banco Central do Brasil. Você pode encontrar mais informações aqui: https://www3.bcb.gov.br/sgspub/localizarseries/localizarSeries.do?method=prepararTelaLocalizarSeries

from finbr import sgs

# série temporal por código. Retorna um pandas DataFrame.
serie_cdi = sgs.get(12)  # CDI
serie_ipca = sgs.get(433)  # IPCA

# múltiplas séries de uma vez
indicadores = sgs.get([12, 433, 189])  # CDI, IPCA, Selic

# séries com nomes personalizados
series_nomeadas = sgs.get({12: 'cdi', 433: 'ipca', 189: 'selic'})

# limitar por intervalo de datas
cdi_2020 = sgs.get(12, data_inicio='2020-01-01', data_fim='2020-12-31')

# pesquisar por séries
resultados = sgs.pesquisar("IPCA")

# metadados para uma série específica
metadados = sgs.metadata(433)

finbr.dias_uteis

O módulo dias_uteis auxilia nos cálculos de dias úteis brasileiros, considerando feriados nacionais.

from datetime import date
import finbr.dias_uteis as dus

# verifica se uma data é um dia útil
eh_dia_util = dus.dia_util(date(2023, 5, 1))  # False (Dia do Trabalho)

# obtém próximo dia útil
proximo_dia_util = dus.proximo()  # Próximo dia útil a partir de hoje

# obtém dia útil anterior
dia_util_anterior = dus.ultimo()  # Dia útil anterior a hoje

# adiciona ou subtrai dias úteis a uma data
data = date(2023, 1, 2)
data_futura = dus.delta(data, 5)  # 5 dias úteis após 2 de janeiro
data_futura = dus.delta(data, -5)  # 5 dias úteis antes de 2 de janeiro

# dias úteis entre duas datas
dias_uteis_intervalo = dus.intervalo(date(2023, 1, 1), date(2023, 1, 31))

# todos os dias úteis em um ano
dias_uteis_do_ano = dus.dias_uteis_ano(2023)

# todos os feriados em um ano
feriados_do_ano = dus.feriados_ano(2023)

# calcula o número de dias úteis entre duas datas
diferenca_dias = dus.dif(date(2023, 1, 1), date(2023, 1, 31))

finbr.b3

O módulo finbr.b3.di1 fornece ferramentas para trabalhar com os contratos futuros DI1 (Depósito Interfinanceiro) da B3.

from finbr.b3 import di1

# verifica se um ticker é válido
di1.verifica_ticker('DI1F24')  # ticker válido, nenhuma exceção levantada
di1.verifica_ticker('DI1A24')  # ticker inválido, ValueError levantado

# obtém a data de vencimento de um contrato
di1.vencimento('DI1F24')  # retorna o primeiro dia útil de Jan 2024

# calcula o número de dias úteis ou corridos até o vencimento
di1.dias_vencimento('DI1F24')  # dias úteis até o vencimento
di1.dias_vencimento('DI1F24', dias_uteis=False)  # dias corridos

# calcula o preço unitário (PU) do contrato com base na taxa de juros
di1.preco_unitario('DI1F24', taxa=0.10)

# calcula a taxa de juros implícita a partir do preço
di1.taxa('DI1F24', preco_unitario=95000)

# calcula o DV01 (valor em reais de 1 ponto base)
di1.dv01('DI1F24', taxa=0.10)

O módulo finbr.b3.indices permite buscar preços históricos para índices da B3. Incluindo preços para o Índice IBOVESPA desde 1968.

from finbr.b3 import indices

# retorna dados históricos do Ibovespa
ibov = indices.preco_historico('IBOV')

# outros índices com intervalo de anos específico
smll = indices.preco_historico('SMLL', ano_inicio=2015, ano_fim=2023)

# obtém a composição atual de um índice
composicao_ibov = indices.composicao('IBOV')  # retorna DataFrame com ações e seus pesos no índice
composicao_small = indices.composicao('SMLL')  # composição do Small Caps

# Índices disponíveis incluem:
# - IBOV (Ibovespa)
# - SMLL (Small Caps)
# - IDIV (Dividendos)
# E muitos outros
# Veja mais em https://www.b3.com.br/pt_br/market-data-e-indices/indices/indices-de-segmentos-e-setoriais/

O módulo finbr.b3.cotahist processa os arquivos de dados históricos COTAHIST da B3 contendo informações de negociação.

from finbr.b3 import cotahist

# baixa dados para uma data específica
dados_diarios = cotahist.get('2023-05-15')

# baixa dados para um ano inteiro
dados_anuais = cotahist.get_ano(2022)

# leituras
dados_zip = cotahist.read_zip('caminho/para/COTAHIST_D20230515.ZIP') 
dados_txt = cotahist.read_txt('caminho/para/COTAHIST_D20230515.TXT')

# ou bytes
with open('caminho/para/arquivo.txt', 'rb') as f:
    dados_bytes = cotahist.read_bytes(f.read())

O módulo finbr.b3.plantao_noticias busca notícias corporativas do plantão de notícias da B3. https://sistemasweb.b3.com.br/PlantaoNoticias/Noticias/Index

from datetime import date
from finbr.b3 import plantao_noticias

# notícias de hoje
noticias_hoje = plantao_noticias.get()

# notícias a partir de uma data
noticias_data_especifica = plantao_noticias.get(inicio='2023-05-15')

# notícias para um intervalo de datas
noticias_intervalo_datas = plantao_noticias.get(inicio='2023-05-01', fim='2023-05-15')

# as notícias são um objeto NoticiaB3, com os seguintes atributos:
# informacoes, id_agencia, conteudo, data_hora, headline, titulo, id, empresa, ticker, ano, mes, dia, data, url

finbr.statusinvest (em desenvolvimento)

O módulo statusinvest.acao permite buscar informações de ações do site StatusInvest (https://statusinvest.com.br/). PS: a saída dos dados é uma lista de dicionários

from finbr.statusinvest import acao

detalhes_empresa = acao.detalhes('PETR4')
print(f"Empresa: {detalhes_empresa['nome']}")
print(f"CNPJ: {detalhes_empresa['cnpj']}")
print(f"Valor de Mercado: {detalhes_empresa['valor_de_mercado']}")

resultados_trimestrais = acao.resultados('PETR4') # padrão trimestral
resultados_anuais = acao.resultados('PETR4', periodo='anual')
resultados_intervalo = acao.resultados('PETR4', ano_inicio=2018, ano_fim=2022)

balanco_trimestral = acao.balanco('PETR4')
balanco_anual = acao.balanco('PETR4', periodo='anual')

dados_fluxo_caixa = acao.fluxo_de_caixa('PETR4')

dados_multiplos = acao.multiplos('PETR4')

historico_dividendos = acao.dividendos('PETR4')

historico_payout = acao.payouts('PETR4')

# dataframe com o screener de todas as ações
todas_acoes = acao.screener()

TODOs: FIIs, Ações, Fundos

finbr.fundamentus (em desenvolvimento)

O módulo fundamentus permite buscar informações de ações do site Fundamentus (https://fundamentus.com.br/).

from finbr import fundamentus

detalhes_empresa = fundamentus.detalhes('PETR4')
print(f"P/L: {detalhes_empresa['p_l']}")
print(f"ROE: {detalhes_empresa['roe']}")
print(f"Valor de Mercado: {detalhes_empresa['valor_de_mercado']}")

dividendos = fundamentus.proventos('PETR4')

trimestrais = fundamentus.resultados_trimestrais('PETR4')

apresentacoes = fundamentus.apresentacoes('PETR4')

Licença

MIT

Metadata

Release files for finbr 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for finbr 0.2.3
File Size Uploaded Provenance Actions
finbr-0.2.3.tar.gz 23.7 kB Without provenance Details for finbr-0.2.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for finbr 0.2.3
File Interpreter ABI Platform Actions
finbr-0.2.3-py3-none-any.whl Python 3 none any Details for finbr-0.2.3-py3-none-any.whl

Total release size: 53.1 kB

Release files / finbr-0.2.3.tar.gz

Download URL finbr-0.2.3.tar.gz
Size 23.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8cd2d599a57f4519e3563d0c9c69ffd84f91a47c5bdc3593e769387f2aa53aa3
BLAKE2b-256 checksum
How to use checksums
711a67ff23222503f3afc3f20e63435e70db89cf58b874695d7cbc89b9391820
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.1 Windows/11

Release files / finbr-0.2.3-py3-none-any.whl

Download URL finbr-0.2.3-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
162acdc3ff78cc3c48544b90ed62628d54f966e3ed6a15de74072f5b57fc13a9
BLAKE2b-256 checksum
How to use checksums
01c666ea0a7a95c704e32d6ecf13e1caad522d03b8e4d9b409896518b31e9c82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.1 Windows/11

Security for finbr 0.2.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page