Ir para o conteúdo

FAQ - Perguntas Frequentes

Respostas para as perguntas mais comuns sobre o Global-Data-Finance.


Instalação e Configuração

Como instalar o Global-Data-Finance?

pip install globaldatafinance

Veja o guia completo de instalação para mais detalhes.

Qual versão do Python é necessária?

Global-Data-Finance requer Python 3.12 ou superior. Versões anteriores não são suportadas.

Posso usar em ambiente virtual?

Sim, e é altamente recomendado! Use venv ou conda:

python -m venv venv
source venv/bin/activate  # Linux/macOS
pip install globaldatafinance

Uso Geral

Onde os arquivos são salvos?

Os arquivos são salvos no diretório especificado em destination_path. Por exemplo:

cvm.download(destination_path="/home/usuario/dados")
# Arquivos salvos em: /home/usuario/dados/

Como verificar quais documentos estão disponíveis?

Use os métodos get_available_*:

# Para CVM
cvm = FundamentalStocksDataCVM()
docs = cvm.get_available_docs()
years = cvm.get_available_years()

# Para B3
b3 = HistoricalQuotesB3()
assets = b3.get_available_assets()
years = b3.get_available_years()

Documentos CVM

Quais tipos de documentos posso baixar?

  • DFP: Demonstrações Financeiras Padronizadas
  • ITR: Informações Trimestrais
  • FRE: Formulário de Referência
  • FCA: Formulário Cadastral
  • CGVN: Código de Governança
  • VLMO: Valores Mobiliários
  • IPE: Informações Periódicas e Eventuais

Veja Documentos CVM para detalhes.

Como baixar apenas um tipo de documento?

cvm.download(
    destination_path="/data",
    list_docs=["DFP"],  # Apenas DFP
    initial_year=2022
)

O que é extração automática?

Com automatic_extractor=True, os arquivos ZIP são automaticamente extraídos e convertidos para formato Parquet:

cvm.download(
    destination_path="/data",
    list_docs=["DFP"],
    automatic_extractor=True  # Converte para Parquet
)

Como lidar com downloads interrompidos?

A biblioteca possui retry automático. Para maior robustez, implemente sua própria lógica de retry (veja estratégia de retry).


Cotações B3

Onde obter arquivos COTAHIST?

Baixe do site oficial da B3:
🔗 https://www.b3.com.br/pt_br/market-data-e-indices/servicos-de-dados/market-data/historico/mercado-a-vista/cotacoes-historicas/

Qual a diferença entre modo fast e slow?

Modo Performance CPU RAM Quando usar
fast Alta Alto ~2GB Máquinas com bons recursos (padrão)
slow Moderada Baixo ~500MB Recursos limitados
# Modo fast (padrão)
result = b3.extract(..., processing_mode="fast")

# Modo slow
result = b3.extract(..., processing_mode="slow")

Como extrair apenas ações?

result = b3.extract(
    path_of_docs="/data/cotahist",
    assets_list=["ações"],  # Apenas ações
    initial_year=2023
)

Posso extrair múltiplas classes de ativos?

Sim! Passe uma lista com as classes desejadas:

result = b3.extract(
    path_of_docs="/data/cotahist",
    assets_list=["ações", "etf", "opções"],
    initial_year=2023
)

Como personalizar o nome do arquivo de saída?

Use o parâmetro output_filename:

result = b3.extract(
    path_of_docs="/data/cotahist",
    assets_list=["ações"],
    output_filename="acoes_2023"  # Gera: acoes_2023.parquet
)

Performance

Como acelerar downloads?

O Global-Data-Finance já usa download paralelo por padrão (AsyncDownloadAdapterCVM), que é 3-5x mais rápido que download sequencial.

Como acelerar extração de cotações?

Use o modo "fast" (padrão):

result = b3.extract(..., processing_mode="fast")

Posso processar em paralelo?

Sim! Você pode executar múltiplas extrações em paralelo usando multiprocessing ou concurrent.futures:

from concurrent.futures import ProcessPoolExecutor
from globaldatafinance import HistoricalQuotesB3

def extract_year(year):
    b3 = HistoricalQuotesB3()
    return b3.extract(
        path_of_docs="/data/cotahist",
        assets_list=["ações"],
        initial_year=year,
        last_year=year,
        output_filename=f"acoes_{year}"
    )

# Processar anos em paralelo
with ProcessPoolExecutor(max_workers=4) as executor:
    results = list(executor.map(extract_year, range(2020, 2024)))

Análise de Dados

Como ler os arquivos Parquet gerados?

Use Pandas ou Polars:

# Com Pandas
import pandas as pd
df = pd.read_parquet("cotahist_extracted.parquet")

# Com Polars (mais rápido)
import polars as pl
df = pl.read_parquet("cotahist_extracted.parquet")

Qual biblioteca é melhor: Pandas ou Polars?

  • Pandas: Mais popular, maior ecossistema, boa para datasets pequenos/médios
  • Polars: Muito mais rápido, menor uso de memória, ideal para grandes volumes

Para análise de dados financeiros (grandes volumes), recomendamos Polars.

Como filtrar dados de um ativo específico?

import polars as pl

df = pl.read_parquet("cotahist_extracted.parquet")

# Filtrar PETR4
petr4 = df.filter(pl.col('codigo_negociacao') == 'PETR4')

# Ou com Pandas
import pandas as pd
df = pd.read_parquet("cotahist_extracted.parquet")
petr4 = df[df['codigo_negociacao'] == 'PETR4']

Erros Comuns

“No module named ‘globaldatafinance’”

Causa: Biblioteca não instalada ou ambiente virtual não ativado.

Solução:

pip install globaldatafinance

“Python version not supported”

Causa: Python < 3.12.

Solução: Atualize para Python 3.12+.

“InvalidDocName”

Causa: Tipo de documento inválido.

Solução: Verifique tipos disponíveis:

docs = cvm.get_available_docs()
print(list(docs.keys()))

“EmptyDirectoryError”

Causa: Diretório vazio ou sem arquivos COTAHIST.

Solução: Verifique se os arquivos COTAHIST_AXXXX.ZIP estão no diretório.

“NetworkError” ou “TimeoutError”

Causa: Problemas de conexão.

Solução:

  1. Verifique sua conexão com a internet
  2. Tente novamente mais tarde
  3. Implemente retry logic (veja estratégia de retry)

Produção e Deploy

Posso usar em produção?

Sim! O Global-Data-Finance é estável e testado. Recomendações:

  • Use logging apropriado
  • Implemente tratamento de erros robusto
  • Configure retry logic para downloads
  • Monitore uso de disco e memória

Como agendar downloads automáticos?

Use cron (Linux/macOS) ou Task Scheduler (Windows):

# Crontab: executar todo dia às 2h da manhã
0 2 * * * /path/to/venv/bin/python /path/to/script.py

Como integrar com pipelines de dados?

Global-Data-Finance funciona bem com:

  • Apache Airflow: Crie DAGs para orquestração
  • Prefect: Use como tasks em flows
  • Luigi: Integre como tasks
  • Dagster: Use como ops/assets

Exemplo com Airflow:

from airflow import DAG
from airflow.operators.python import PythonOperator
from globaldatafinance import FundamentalStocksDataCVM

def download_cvm():
    cvm = FundamentalStocksDataCVM()
    cvm.download(
        destination_path="/data/cvm",
        list_docs=["DFP"],
        initial_year=2023
    )

with DAG('cvm_download', ...) as dag:
    task = PythonOperator(
        task_id='download',
        python_callable=download_cvm
    )

Contribuição

Como contribuir com o projeto?

Veja o guia de contribuição para detalhes completos.

Como reportar bugs?

Abra uma issue no GitHub:
🔗 https://github.com/jor0105/Global-Data-Finance/issues

Como sugerir novas funcionalidades?

Abra uma issue com a tag enhancement no GitHub.


Licença e Uso

Qual a licença do Global-Data-Finance?

Apache License 2.0.

Posso usar em projetos comerciais?

Sim! A licença Apache 2.0 permite uso comercial.

Os dados baixados têm restrições de uso?

Os dados são públicos e fornecidos pela CVM e B3. Consulte os termos de uso de cada instituição:


Suporte

Onde obter ajuda?

  1. Documentação: Leia a documentação completa
  2. GitHub Issues: Abra uma issue
  3. Email: estraliotojordan@gmail.com

Como reportar problemas de segurança?

Envie um email para: estraliotojordan@gmail.com


Não encontrou sua pergunta?

Abra uma issue no GitHub ou consulte a documentação completa.