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.
Documentação Oficial • Instalação • Quick Start • API Reference • Contribuir
🎯 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
asyncioe 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) eslow(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:
- Fork o projeto.
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature). - Implemente suas mudanças.
- Execute os testes e linters:
poetry run pre-commit run --all-files poetry run pytest
- 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
- Autor: Jordan Estralioto
- GitHub: @jor0105
- Email: estraliotojordan@gmail.com
- Issues: Reportar Bug
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
deb68daaa12169d46306286f59cdc13cdb1cc5cca29e20338c117a2f84dd0aa8
|
|
| MD5 |
8aa12ba122d329574dfcc248999ac8c8
|
|
| BLAKE2b-256 |
35b2cae984a81a1d26604ad5b80a0f02acdba8714937bba3b8eeaaccdef057f9
|
Provenance
The following attestation bundles were made for globaldatafinance-0.1.2.tar.gz:
Publisher:
publish.yml on jor0105/Global-Data-Finance
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
globaldatafinance-0.1.2.tar.gz -
Subject digest:
deb68daaa12169d46306286f59cdc13cdb1cc5cca29e20338c117a2f84dd0aa8 - Sigstore transparency entry: 729511547
- Sigstore integration time:
-
Permalink:
jor0105/Global-Data-Finance@525c0a4ae7f291068b7e1e9b2015a6c1820f5a63 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/jor0105
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@525c0a4ae7f291068b7e1e9b2015a6c1820f5a63 -
Trigger Event:
release
-
Statement type:
File details
Details for the file globaldatafinance-0.1.2-py3-none-any.whl.
File metadata
- Download URL: globaldatafinance-0.1.2-py3-none-any.whl
- Upload date:
- Size: 112.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f2d84d2094baa35dab39096d30e26bcee4e478caa8a01130484880b7d99df34
|
|
| MD5 |
c904e2a5144f3fe605334b8af7292f2f
|
|
| BLAKE2b-256 |
c15dde9e41e47579c336b6781f2c171c1bc561ca9983f8861c53fc9e3a4d2162
|
Provenance
The following attestation bundles were made for globaldatafinance-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on jor0105/Global-Data-Finance
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
globaldatafinance-0.1.2-py3-none-any.whl -
Subject digest:
6f2d84d2094baa35dab39096d30e26bcee4e478caa8a01130484880b7d99df34 - Sigstore transparency entry: 729511548
- Sigstore integration time:
-
Permalink:
jor0105/Global-Data-Finance@525c0a4ae7f291068b7e1e9b2015a6c1820f5a63 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/jor0105
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@525c0a4ae7f291068b7e1e9b2015a6c1820f5a63 -
Trigger Event:
release
-
Statement type: