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.2.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

py_financas-1.0.2-py3-none-any.whl (37.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py_financas-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 bc4d5b9e35040f4acfe17f66f8a6b2413f1f384080507f605692188ff83b6cc8
MD5 e9520f94beb64ca3b084fd8243e780ad
BLAKE2b-256 d819c30949fd97b7c99cde7ddf6535e20cceaec7b9e3c8be1a5926b722555bee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_financas-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 37.5 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d79d78f8f52330ab52060882028d967398a72681855b8e3d423a05b23fae6659
MD5 3ab48a82595cd5d02c56fe0f3e0354eb
BLAKE2b-256 8a03e8dd25307724130d94eb2d12f517e745576ba03af8bb8932d5aeb27909aa

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