Skip to main content

Py Finanças é um pacote python que simplifica obtenção e uso de dados do sistema financeiro brasileiro.

Project description

py_financas

Py Finanças é um pacote python que simplifica obtenção e uso de dados do sistema financeiro brasileiro.

Permite coletar dados do sistema de séries temporais do Banco Central do Brasil, dos Fundos de Investimento regulados pela Comissão de Valores Mobiliários (CVM) e processar informações de Notas de Corretagem/Negociação em Bolsa de Valores/B3.

Notas de corretagem no formato SINACOR

O Sistema Integrado de Administração de Corretoras (SINACOR) é uma plataforma presente em 95% das corretoras do Brasil, que simplifica e padroniza a comunicação entre corretoras e investidores.

O pacote py_financas permite a leitura de notas de corretagem em arquivos PDF, contanto que estejam no formato SINACOR. Para obter seu histórico de notas de corretagem no formato SINACOR, entre em contato com sua corretora e peça, explicitamente, para que enviem seu histórico de notas de corretagem no formato SINACOR, em um ou mais arquivos PDF.

Parsing de Notas de Corretagem

Parsing é o processo de ler dados em formatos de difícil acesso, e obter resultados que podem ser tratados mais facilmente. Os arquivos PDF com notas de negociação no formato SINACOR são lidos e processados pelo pacote py_financas, e os resultados são retornados em uma lista de objetos NotaCorretagem.

from py_financas.sinacor import parse_notas_corretagem

lista_arquivos_pdf = ['Insira aqui seus arquivos PDF de notas de corretagem no formato SINACOR.pdf']

objetos_nota_corretagem = parse_notas_corretagem(lista_arquivos_pdf)

Um Objeto NotaCorretagem contém informações sobre uma nota de corretagem, incluindo seus impostos, custos, corretora e operações realizadas.

from py_financas import NotaCorretagem

Parsing automático de Posições

Posições são conjuntos de ações do mesmo título, caracterizadas pela quantidade e pelo valor médio de compra das ações ao longo do tempo. O objeto Posicao pode ser gerado a partir de objetos NotaCorretagem

from py_financas.sinacor import parse_notas_corretagem
from py_financas.sinacor import parse_posicoes_de_notas_de_corretagem

objetos_nota_corretagem = parse_notas_corretagem(lista_arquivos_pdf)

posicoes = parse_posicoes_de_notas_de_corretagem(objetos_nota_corretagem)

for pos in posicoes:
    print(pos.sumario())

Parsing Híbrido de Posições

Por vezes, posições podem requerer informações que não estão presentes nas notas de corretagem, como por exemplo Ofertas Públicas, Subscrições e Desdobramentos (Stock Splits). Por isso, pode ser necessário inserir operações manuais para completar as informações de uma posição.

O pacote py_financas pode combinar informações de notas de corretagem com informações manuais para gerar um relatório completo de posições.

As informações manuais devem ser inseridas por meio de arquivos Excel, no formato exato do modelo anexo

from py_financas.sinacor import parse_posicoes

lista_arquivos_pdf = ['Insira aqui seus arquivos PDF de notas de corretagem no formato SINACOR.pdf']
lista_arquivos_excel = ['Insira aqui seus arquivos EXCEL de operações manuais no formato do template fornecido.xlsx']

posicoes = parse_posicoes(lista_arquivos_pdf, lista_arquivos_excel)

for pos in posicoes:
    print(pos.sumario())

Indices, Indicadores e Indexadores

Indices, indicadores e indexadores são considerados neste pacote como sinônimos, e todos os dados são obtidos diretamente a partir dos webservices do Sistema Gerenciador de Séries Temporais do Banco Central do Brasil, um sistema público mantido pelo orgão do governo brasileiro, no qual não é necessário criar usuário e senha para recuperar dados.

SERÁ NECESSÁRIO CONEXÃO COM A INTERNET PARA A RECUPERAÇÃO DE DADOS DE INDICES, UMA VEZ QUE OS MESMOS SÃO OBTIDOS A PARTIR DE UM WEBSERVICE

import datetime
import py_financas

# As datas de inicio e fim da busca devem ser objetos DateTime, sem necessidade de especificar o fuso horario.
# O fuso horario sempre sera assumido como o Horario Python de Sao Paulo (America/Sao_Paulo)
data_inicio_busca = datetime.datetime.strptime('01/01/2014', '%d/%m/%Y')
data_fim_busca = datetime.datetime.strptime('10/01/2014', '%d/%m/%Y')

# Todos os dados de indices sao recuperados no formato Pandas Dataframe
df = py_financas.indices.recupera_indice(

    # Voce pode selecionar qualquer quantidade de indices para recuperar, com seus nomes escritos de varias formas
    ['indice geral de precos do mercado',
     'taxa selic',
     'dollar',
     'euro',
     'IBOVESPA',
     'NASDAQ',
     'di de um dia'],

    # As datas de inicio da busca da serie temporal devem ser objetos DateTime
    data_inicio_busca,
    data_fim_busca
)

print(df)

#             indice GERAL de precos do mercado  taxa selic  dollar    euro  IBOVESPA  NASDAQ  di de um dia
# 2014-01-01                               0.48         NaN     NaN     NaN       NaN     NaN           NaN
# 2014-01-02                                NaN    0.037468  2.3969  3.2703   50341.0  4143.0      0.036998
# 2014-01-03                                NaN    0.037468  2.3734  3.2300   50981.0  4132.0      0.036998
# 2014-01-06                                NaN    0.037468  2.3783  3.2385   50973.0  4114.0      0.036998
# 2014-01-07                                NaN    0.037468  2.3628  3.2184   50430.0  4153.0      0.036998
# 2014-01-08                                NaN    0.037468  2.3773  3.2329   50576.0  4166.0      0.036998
# 2014-01-09                                NaN    0.037468  2.3954  3.2508   49321.0  4156.0      0.036998
# 2014-01-10                                NaN    0.037468  2.3813  3.2564   49696.0  4175.0      0.036998

# Os titulos das colunas do DataFrame sao iguais aos nomes dos indices buscados
# O valor do IGM-M (Indice Geral de Precos - Mercado) somente e divulgado no primeiro dia de cada mes.

# O mesmo DataFrame acima, com uma nomeclatura e ordenacao de colunas diferente:
df_normal = py_financas.indices.recupera_indice(
    ['IGP-M',
     'SELIC',
     'CDI',
     'USD',
     'EUR',
     'IBOVESPA',
     'NASDAQ'],
    data_inicio_busca,
    data_fim_busca
)
print(df_normal)

#             IGP-M     SELIC       CDI     USD     EUR  IBOVESPA  NASDAQ
# 2014-01-01   0.48       NaN       NaN     NaN     NaN       NaN     NaN
# 2014-01-02    NaN  0.037468  0.036998  2.3969  3.2703   50341.0  4143.0
# 2014-01-03    NaN  0.037468  0.036998  2.3734  3.2300   50981.0  4132.0
# 2014-01-06    NaN  0.037468  0.036998  2.3783  3.2385   50973.0  4114.0
# 2014-01-07    NaN  0.037468  0.036998  2.3628  3.2184   50430.0  4153.0
# 2014-01-08    NaN  0.037468  0.036998  2.3773  3.2329   50576.0  4166.0
# 2014-01-09    NaN  0.037468  0.036998  2.3954  3.2508   49321.0  4156.0
# 2014-01-10    NaN  0.037468  0.036998  2.3813  3.2564   49696.0  4175.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_financas-1.0.1.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

py_financas-1.0.1-py3-none-any.whl (37.4 kB view details)

Uploaded Python 3

File details

Details for the file py_financas-1.0.1.tar.gz.

File metadata

  • Download URL: py_financas-1.0.1.tar.gz
  • Upload date:
  • Size: 27.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for py_financas-1.0.1.tar.gz
Algorithm Hash digest
SHA256 8231239939ad635b3b09197935fe430630439044b4045b55b2de8dc8099a6dc0
MD5 793bb4ce95731887c7561d45fd0198e5
BLAKE2b-256 1996c36e450df66a125076ba958e835f760d41e52ae166f04bfdb992e3f5fbb0

See more details on using hashes here.

File details

Details for the file py_financas-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: py_financas-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 37.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for py_financas-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0a717f148acdda6c789112f97bd5fbdcf14ef7de3b31c697380550a3b7d56cfc
MD5 06e4b67c7c260c54b3c26ae1227563ac
BLAKE2b-256 196428df526442ed1fc32a9cb62f6c94ce0159dda6beebe217752ff47f53fba3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page