tesouro-direto-fetcher — Baixar, Analisar e Plotar Dados do Tesouro Direto Brasileiro¶
tesouro-direto-fetcher é um pacote Python que simplifica o download, a leitura e a visualização de dados históricos do programa Tesouro Direto brasileiro. Alavanca a API CKAN oficial (Tesouro Transparente) para buscar os datasets mais atualizados.
Pegadinhas da fonte oficial
- Nome de arquivo carrega timestamp. Cada download fica como
[email protected]. Não tente um nome estável — passe um diretório de destino e useglobpara encontrar o mais recente. - Um dataset, vários CSVs. Preços, estoque, investidores, operações são datasets CKAN separados. Use o
reader.read_prices,read_stock,read_investors— não tente um único parser genérico. - Datas vêm em pt-BR.
dd/mm/aaaacom decimal,. Os leitores já tratam isso; se você ler compl.read_csvcru, vai apanhar. - Licença GPL-3.0. Este é o único pacote da Quantilica que não é MIT. Se você for embarcar em produto fechado, atente.
asyncio.runreinicia event loop. Em Jupyter, prefiraawait downloader.download(...)direto na célula comnest_asyncioou use o CLI.
Recursos¶
- Downloads Automatizados: Busque datasets diretamente da API CKAN do Governo
- Leitores Especializados: Funções dedicadas para ler e fazer parse de CSVs para Preços, Estoque, Investidores, Operações, Vendas, Recompras/Resgate, e mais
- Dados Padronizados: Todos os DataFrames vêm com nomes de coluna consistentes e amigáveis para analistas, definidos em um esquema robusto
- Visualização: Módulo de plotagem integrado que retorna gráficos Altair para análise de séries temporais, distribuição e demografia (nenhum Matplotlib/Seaborn necessário)
- CLI: Uma interface de linha de comando conveniente para busca rápida de dados
Instalação¶
Este pacote está disponível via GitHub. Você pode instalá-lo usando pip:
Apenas download (dependências mínimas):
pip install "git+https://github.com/Quantilica/tesouro-direto-fetcher#egg=tesouro-direto-fetcher"
Instalação completa com recursos de leitura, análise e plotagem:
pip install "git+https://github.com/Quantilica/tesouro-direto-fetcher#egg=tesouro-direto-fetcher[analysis]"
A instalação mínima inclui apenas httpx e tqdm para download de dados. Os extras [analysis] adicionam polars (parsing CSV, analytics) e altair[save] (gráficos).
Uso¶
O tesouro-direto-fetcher CLI¶
O pacote instala um comando tesouro-direto-fetcher com três subcomandos:
tesouro-direto-fetcher <command> [options]
Comandos:
download [-o OUTPUT_DIR] [--dataset DATASET]
Baixar um dataset CKAN. DATASET ∈ {prices, operations, investors,
stock, buybacks, sales, all}. Padrão: prices.
info [-o OUTPUT_DIR] [--dataset DATASET]
Imprimir recursos, tamanhos, Last-Modified, e se cada arquivo seria
baixado — sem escrever nada.
convert FILE [--type {prices,operations,investors,stock,buybacks,sales,maturities,infer}]
Converter um CSV baixado para Parquet. `--type infer` (padrão) detecta
o dataset do nome do arquivo. Requer os extras `analysis`.
OUTPUT_DIR padrão é data.
# Inspecionar, baixar, converter
tesouro-direto-fetcher info --dataset prices -o ./data
tesouro-direto-fetcher download --dataset prices -o ./data
tesouro-direto-fetcher convert ./data/taxas-dos-titulos-ofertados-pelo-tesouro-direto@*.csv
# Baixar cada dataset
tesouro-direto-fetcher download --dataset all -o ./data
O tesouro-direto-fetcher Pacote Python¶
Você pode usar tesouro-direto-fetcher como uma biblioteca em seus scripts Python ou Notebooks Jupyter.
Baixando Dados¶
downloader.download é assíncrono; envolva com asyncio.run ou await dentro de uma coroutine.
import asyncio
from pathlib import Path
from tesouro_direto_fetcher import downloader
asyncio.run(
downloader.download(
dest_dir=Path("./data"),
dataset_id="taxas-dos-titulos-ofertados-pelo-tesouro-direto",
max_concurrency=3,
)
)
# Inspecionar o que seria baixado sem escrever nada
infos = asyncio.run(
downloader.get_download_info(
dest_dir=Path("./data"),
dataset_id="taxas-dos-titulos-ofertados-pelo-tesouro-direto",
)
)
Lendo Dados¶
O módulo tesouro_direto_fetcher.reader fornece funções especializadas para cada tipo de dataset.
from pathlib import Path
from tesouro_direto_fetcher import reader
# Ler Preços/Taxas
df_prices = reader.read_prices(
Path(
".", "data",
"taxas-dos-titulos-ofertados-pelo-tesouro-direto@20251230T102010.csv"
)
)
# Ler Estoque
df_stock = reader.read_stock(
Path(
".", "data",
"[email protected]"
)
)
# Ler Investidores
df_investors = reader.read_investors(
Path(
".", "data",
"[email protected]"
)
)
Plotagem de Dados¶
Módulo tesouro_direto_fetcher.plot retorna gráficos Altair (alt.Chart). Exiba-os em um notebook com chart.display() ou salve com chart.save("nome.png") / .html / .svg.
from tesouro_direto_fetcher import plot
from tesouro_direto_fetcher.constants import Column
# 1. Plotar Histórico de Preços
plot.plot_prices(
df_prices,
bond_type="Tesouro Selic",
variable=Column.BASE_PRICE.value,
).save("prices_tesouro-selic.html")
# 2. Plotar Evolução de Estoque por Tipo de Título
plot.plot_stock(df_stock, by_bond_type=True).save("stock_evolution_by_type.html")
# 3. Plotar Demografia de Investidores (Pirâmide Populacional)
plot.plot_investors_population_pyramid(df_investors).save("investors_pyramid.html")
# 4. Plotar Demografia de Investidores (ex. gráfico de barras de Profissão)
plot.plot_investors_demographics(
df_investors,
column=Column.PROFESSION.value,
).save("investors_profession.html")
Outros helpers de plotagem expostos por tesouro_direto_fetcher.plot: plot_investors_evolution, plot_operations, plot_sales, plot_buybacks, plot_maturities, plot_interest_coupons.
Fonte de Dados¶
Todos os dados são buscados do oficial Tesouro Transparente através de sua API CKAN.
- Preços:
taxas-dos-titulos-ofertados-pelo-tesouro-direto - Estoque:
estoque-do-tesouro-direto - Investidores:
investidores-do-tesouro-direto - Operações:
operacoes-do-tesouro-direto - Vendas:
vendas-do-tesouro-direto - Recompras:
recompras-do-tesouro-direto
Saiba Mais¶
- Visão Geral do Tesouro Direto — Todas as ferramentas do Tesouro Direto
- Guia de Retornos de Portfólio — Como calcular retornos de títulos
- Arquitetura do Ecossistema — Design do sistema
- Tesouro Transparente — Fonte de dados oficial