Skip to main content

Library for extracting, normalizing and processing global financial and economic data — including market data from exchanges worldwide, regulatory filings, company fundamentals and historical quotes; optimized for high-performance storage and analysis (e.g., Parquet).

Project description

📊 Global-Data-Finance

Biblioteca Python profissional para extração e processamento de dados financeiros globais com arquitetura limpa e alto desempenho.

Python PyPI version License Code style: black Checked with mypy

Documentação OficialInstalaçãoQuick StartAPI ReferenceContribuir


🎯 Sobre

Global-Data-Finance é uma solução robusta e de alto desempenho para engenharia de dados financeiros. Projetada para desenvolvedores, cientistas de dados e analistas quantitativos, a biblioteca abstrai a complexidade de extrair e normalizar dados de fontes regulatórias (CVM) e de mercado (B3).

Construída sobre os princípios de Clean Architecture e SOLID, a biblioteca garante não apenas performance excepcional, mas também um código manutenível, testável e extensível.

🌟 Por que escolher Global-Data-Finance?

  • 🚀 Performance Extrema: Utiliza asyncio e processamento paralelo para downloads até 10x mais rápidos que métodos tradicionais.
  • 🛡️ Robustez: Sistema inteligente de retries, monitoramento de recursos e tratamento de erros granular.
  • 💾 Otimização de Dados: Extração nativa para Parquet, garantindo eficiência de armazenamento e leitura rápida para Pandas/Polars.
  • 🧩 Arquitetura Modular: Design desacoplado que permite fácil substituição de componentes (adapters) e extensão de funcionalidades.
  • ✨ Developer Experience: Type hints completos, logging detalhado e API intuitiva.

✨ Funcionalidades

📈 Fontes de Dados Suportadas

Fonte Tipo de Dado Detalhes Status
CVM Documentos Regulatórios DFP, ITR, FRE, FCA, CGVN, VLMO, IPE ✅ Produção
B3 Cotações Históricas Ações, ETFs, BDRs, Opções, Termo, Futuros ✅ Produção

⚙️ Destaques Técnicos

  • Download Manager Assimétrico:
    • Gerenciamento automático de concorrência.
    • Backoff exponencial para falhas de rede.
    • Validação de integridade de arquivos (ZIP/MD5).
  • Processamento de Cotações (B3):
    • Parser otimizado para arquivos posicionais legados.
    • Modos de execução: fast (in-memory) e slow (low-memory).
    • Filtragem avançada por tipo de ativo (Ações, Opções, etc.).

🚀 Instalação

Requer Python 3.12+.

Via Pip (Recomendado)

pip install globaldatafinance

Via Poetry

poetry add globaldatafinance

💡 Quick Start

1. Dados Fundamentais (CVM)

Baixe demonstrações financeiras (DFP, ITR) e formulários de referência de forma massiva e resiliente.

from globaldatafinance import FundamentalStocksDataCVM
import logging

# (Opcional) Configurar logging para ver o progresso detalhado
logging.basicConfig(level=logging.INFO)

# Inicializar cliente
cvm = FundamentalStocksDataCVM()

# Baixar e extrair automaticamente para Parquet
cvm.download(
    destination_path="./dados_cvm",
    list_docs=["DFP", "ITR"],    # Tipos de documentos
    initial_year=2023,           # Ano inicial
    last_year=2024,              # Ano final
    automatic_extractor=True     # Converte ZIP -> Parquet
)

2. Cotações Históricas (B3)

Processe a série histórica da B3, transformando arquivos de texto complexos em DataFrames prontos para análise.

from globaldatafinance import HistoricalQuotesB3

# Inicializar cliente
b3 = HistoricalQuotesB3()

# Extrair cotações de Ações e ETFs
result = b3.extract(
    path_of_docs="./dados_brutos_b3",  # Onde estão os ZIPs da B3 (COTAHIST_A2023.ZIP)
    destination_path="./dados_processados",
    assets_list=["ações", "etf"],
    initial_year=2023,
    processing_mode="fast"  # Modo otimizado
)

print(f"Processamento concluído! Registros extraídos: {result['total_records']:,}")
print(f"Arquivo salvo em: {result['output_file']}")

3. Analisando os Dados

Os dados são salvos em formato Parquet, ideal para análise com Pandas ou Polars.

import pandas as pd

# Ler o arquivo gerado
df = pd.read_parquet("./dados_processados/cotahist_extracted.parquet")

# Analisar
print(df.head())
print(df.groupby("cod_negociacao")["preco_fechamento"].mean())

🏗️ Arquitetura

A arquitetura do projeto é um diferencial chave, separando claramente responsabilidades para garantir longevidade e qualidade do software.

graph TD
    User[Usuário / Script] --> Presentation

    subgraph "Global-Data-Finance"
        Presentation[Presentation Layer<br>FundamentalStocksDataCVM / HistoricalQuotesB3]

        Presentation --> Application

        subgraph "Core Logic"
            Application[Application Layer<br>Use Cases & Interfaces]
            Domain[Domain Layer<br>Entities & Business Rules]
            Application --> Domain
        end

        Application --> Infrastructure

        subgraph "Infrastructure"
            Infrastructure[Infrastructure Layer<br>Adapters, Parsers, IO]
        end
    end

    Infrastructure --> External[Web / File System]

Estrutura de Diretórios

src/
└── globaldatafinance/
    ├── brazil/
    │   ├── cvm/
    │   │   └── fundamental_stocks_data/  # Módulo CVM
    │   └── b3/
    │       └── historical_quotes/        # Módulo B3
    ├── core/                             # Logging, Config, Utils
    └── macro_infra/                      # Adapters Genéricos (HTTP, FileIO)

📊 API Reference

FundamentalStocksDataCVM

Gerenciador de downloads de documentos da CVM.

Método Assinatura Descrição
download (destination_path: str, list_docs: list[str]=None, initial_year: int=None, last_year: int=None, automatic_extractor: bool=False) -> None Realiza o download e opcionalmente a extração dos documentos.
get_available_docs () -> dict Retorna lista de documentos disponíveis e suas descrições.
get_available_years () -> dict Retorna o intervalo de anos disponíveis para download.

HistoricalQuotesB3

Extrator de cotações históricas da B3.

Método Assinatura Descrição
extract (path_of_docs: str, assets_list: list[str], initial_year: int=None, last_year: int=None, destination_path: str=None, output_filename: str="cotahist_extracted", processing_mode: str="fast") -> dict Processa arquivos ZIP da B3 e gera um arquivo Parquet consolidado.
get_available_assets () -> list[str] Retorna tipos de ativos suportados (ex: 'ações', 'opções').
get_available_years () -> dict Retorna o intervalo de anos disponíveis para os dados históricos.

🤝 Contribuindo

Contribuições são muito bem-vindas! Se você deseja adicionar novas fontes de dados, melhorar a performance ou corrigir bugs:

  1. Fork o projeto.
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature).
  3. Implemente suas mudanças.
  4. Execute os testes e linters:
    poetry run pre-commit run --all-files
    poetry run pytest
    
  5. Abra um Pull Request.

Consulte o Guia de Contribuição para mais detalhes.


📄 Licença

Este projeto é distribuído sob a licença Apache 2.0. Consulte o arquivo LICENSE para mais informações.


📞 Suporte e Contato


Copyright © 2025 Jordan Estralioto • Licensed under Apache 2.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

globaldatafinance-0.1.2.tar.gz (78.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

globaldatafinance-0.1.2-py3-none-any.whl (112.7 kB view details)

Uploaded Python 3

File details

Details for the file globaldatafinance-0.1.2.tar.gz.

File metadata

  • Download URL: globaldatafinance-0.1.2.tar.gz
  • Upload date:
  • Size: 78.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for globaldatafinance-0.1.2.tar.gz
Algorithm Hash digest
SHA256 deb68daaa12169d46306286f59cdc13cdb1cc5cca29e20338c117a2f84dd0aa8
MD5 8aa12ba122d329574dfcc248999ac8c8
BLAKE2b-256 35b2cae984a81a1d26604ad5b80a0f02acdba8714937bba3b8eeaaccdef057f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for globaldatafinance-0.1.2.tar.gz:

Publisher: publish.yml on jor0105/Global-Data-Finance

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file globaldatafinance-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for globaldatafinance-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6f2d84d2094baa35dab39096d30e26bcee4e478caa8a01130484880b7d99df34
MD5 c904e2a5144f3fe605334b8af7292f2f
BLAKE2b-256 c15dde9e41e47579c336b6781f2c171c1bc561ca9983f8861c53fc9e3a4d2162

See more details on using hashes here.

Provenance

The following attestation bundles were made for globaldatafinance-0.1.2-py3-none-any.whl:

Publisher: publish.yml on jor0105/Global-Data-Finance

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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