PYield: Toolkit de Renda Fixa Brasileira
Português | English
PYield é uma biblioteca Python voltada para análise de títulos públicos
brasileiros. Ela busca e processa dados da ANBIMA, BCB, IBGE, B3 e Tesouro
Nacional, retornando tipos nativos do Python, polars.Series ou
polars.DataFrame, conforme a operação.
Embora inclua dados e ferramentas de outros mercados, como DI1, DAP e PTAX, esses recursos apoiam o objetivo central da biblioteca: análise, precificação e acompanhamento de títulos públicos brasileiros.
Instalação
Com pip:
pip install pyield
Em um projeto gerenciado pelo uv:
uv add pyield
Próximos passos
- Quickstart: primeiros usos da biblioteca.
- Documentação completa: conceitos e referência por módulo.
- Mapa da API: namespaces e funções públicas.
- Desenvolvimento e publicação: ambiente, verificações, build e PyPI.
- Notebook no Colab: exploração interativa.
- Pacote no PyPI.
Mapa da API
| Componente | Tipo | Finalidade | Funções públicas |
|---|---|---|---|
yd.du |
módulo | Dias úteis e calendário brasileiro | contar, deslocar, eh_dia_util, gerar, ultimo_dia_util, contar_expr, deslocar_expr, eh_dia_util_expr |
yd.Interpolador |
classe | Interpolação escalar e em pipelines Polars | interpolar, interpolar_expr, linear, flat_forward |
yd.interpolar(...) |
função | Interpolação vetorizada flat-forward, curva única ou multi-curva | |
yd.forward(...) |
função | Taxa a termo entre dois vértices | |
yd.forwards(...) |
função | Curva de taxas a termo | |
yd.futuro |
módulo | Contratos futuros da B3 | di1, historico, intradia, datas_disponiveis, vencimento, enriquecer, vencimento_expr |
yd.di1 |
módulo | Curva DI1 e interpolação | dados, interpolar_taxas, interpolar_taxa, datas_disponiveis |
yd.tpf |
módulo | Títulos públicos federais | taxas, taxas_historicas, vencimentos, estoque, leiloes, leiloes_bcb, benchmarks, curva_pre, premios_pre, secundario |
yd.rmd(aba) |
função | Relatório Mensal da Dívida do Tesouro Nacional | |
yd.lft |
módulo | LFT | dados, vencimentos, cotacao, pu, taxa, rentabilidade, rentabilidade_expr |
yd.ltn |
módulo | LTN | dados, vencimentos, pu, taxa, duration_expr, dv01, dv01_expr, rentabilidade, rentabilidade_expr, taxas_forward |
yd.ntnb |
módulo | NTN-B | dados, vencimentos, datas_pagamento, fluxos_caixa, cotacao, pu, taxa, taxas_zero, duration, dv01, dv01_expr, implicitas, curva |
yd.ntnb1 |
módulo | NTN-B1 (Educa+ e Renda+) | NomeComercial, datas_pagamento, fluxos_caixa, cotacao, cotacao_curva_zero, taxa_curva_zero, pu, duration, dv01 |
yd.ntnbp |
módulo | NTN-B Principal | cotacao, taxa, pu, dv01 |
yd.ntnc |
módulo | NTN-C | dados, datas_pagamento, fluxos_caixa, cotacao, pu, taxa, duration, duration_expr, dv01, dv01_expr |
yd.ntnf |
módulo | NTN-F | dados, vencimentos, datas_pagamento, fluxos_caixa, pu, taxa, taxas_zero, taxas_zero_forwards, premio, premio_limpo, premio_limpo_expr, rentabilidade, rentabilidade_expr, duration, duration_expr, dv01, dv01_expr |
yd.vna |
módulo | Valores nominais atualizados dos títulos públicos | valor, historico, projetado, vigencia |
yd.copom |
módulo | Calendário automático do Copom | calendario, proxima_reuniao |
yd.compromissadas(...) |
função | Leilões de operações compromissadas do BCB | inicio, fim |
yd.selic |
módulo | Selic e política monetária | over, over_serie, meta, meta_serie |
yd.cpm |
módulo | Opções digitais do COPOM e análises derivadas | contratos, probabilidades |
yd.ipca |
módulo | IPCA histórico e projetado | indice, indice_serie, taxa, taxa_serie, taxa_projetada |
yd.igpm |
módulo | Taxas mensais do IGP-M via SGS/BCB | taxa, taxa_serie |
yd.ptax(data) |
função | PTAX para uma data | |
yd.ptax_serie(inicio, fim) |
função | Série histórica da PTAX | |
yd.di_over(data) |
função | Taxa DI Over | |
yd.hoje() |
função | Data atual no Brasil | |
yd.agora() |
função | Data e hora atual no Brasil |
O mapa completo da API inclui a documentação detalhada e as assinaturas públicas.
Compatibilidade da API
Séries do IPCA
As consultas históricas do IPCA seguem o padrão das séries de Selic e PTAX:
taxa(data) e indice(data) retornam um valor; taxa_serie e indice_serie
retornam séries por intervalo ou pelos últimos meses.
Para migrar, substitua ipca.taxas(inicio, fim) por
ipca.taxa_serie(inicio, fim) e ipca.indices(inicio, fim) por
ipca.indice_serie(inicio, fim). Substitua ipca.taxas_ultimas(n) por
ipca.taxa_serie(ultimos=n) e ipca.indices_ultimos(n) por
ipca.indice_serie(ultimos=n). Os nomes antigos foram removidos; colunas,
unidades e valores retornados permanecem iguais.
Nas séries, fim=None usa a data atual no Brasil. Informe inicio ou
ultimos; quando informado, ultimos tem prioridade sobre as datas.
taxa_projetada permanece inalterada.
Taxas e DV01 analíticos — 0.59.0
As funções taxa de yd.ltn, yd.ntnf, yd.ntnb, yd.ntnc e yd.lft
passam a retornar float sem truncamento, em vez de Decimal truncado em oito
casas. Entradas inválidas retornam float("nan"); use math.isnan no lugar de
.is_nan().
taxa e dv01 de todos os títulos descontam os fluxos com dias úteis / 252,
sem os truncamentos intermediários da STN. Os valores mudam levemente em
relação à versão anterior, e taxa(pu(...)) recupera a taxa original apenas
aproximadamente. pu e cotacao seguem a metodologia oficial e não mudaram.
Cotações em base 100 — 0.58.0
As funções escalares de cálculo dos títulos também aceitam taxas percentuais
explícitas, como "5.75%" ou "5,75%", equivalentes a 0.0575.
Números continuam em formato decimal; strings sem % são rejeitadas.
As funções cotacao de yd.lft, yd.ntnb, yd.ntnc, yd.ntnbp e
yd.ntnb1 passam a retornar base 100 com quatro casas decimais:
0.993651 passa a ser 99.3651. As funções pu desses títulos recebem a
cotação nessa mesma base e aplicam VNA * cotacao / 100.
A coluna valor_pagamento de fluxos_caixa de NTN-B, NTN-C e NTN-B1 e o
retorno de ntnb1.cotacao_curva_zero também passam para base 100. Esta última
mantém a soma sem truncamento para calibrar a TIR equivalente.
Para migrar, multiplique cotações e fluxos antigos armazenados por 100, remova
multiplicações por 100 usadas apenas para exibir cotações e ajuste cálculos
manuais de PU para dividir por 100. A composição pu(vna, cotacao(...))
preserva a unidade e as regras de precisão do preço. Taxas continuam em formato
decimal, e VNA e PU continuam em reais.
As funções yd.ltn.dv01 e yd.ntnf.dv01 não recebem mais um PU de referência:
calculam a redução do PU teórico para um aumento de 1 ponto-base na taxa.
Demais alterações
Este resumo parte da API da 0.56.0. Mudanças que já faziam parte dessa versão
ou de versões anteriores estão no histórico das
releases do GitHub.
| Antes | Agora |
|---|---|
ntnbp.taxas_zero(...) |
ntnb.taxas_zero(...), sem incluir_vertices |
ntnb.taxas_zero(..., incluir_cupons=...) |
ntnb.taxas_zero(...), sem incluir_cupons |
ntnb.taxas_zero(..., percentual=...) |
ntnb.taxas_zero(...), com taxas em formato decimal |
yd.tpf.ntnb |
yd.ntnb ou from pyield import ntnb |
yd.tpf.rmd(aba) |
yd.rmd(aba) ou from pyield import rmd |
pyield.tpf.vna.calcular_vna(...) |
yd.vna.calcular_vna(...) |
yd.ntnb.vna(data) |
yd.vna.valor("NTN-B", data) |
yd.ntnb.vnas() |
yd.vna.historico("NTN-B") |
vna_projetado(...) nos módulos de títulos |
yd.vna.projetado(titulo, data, vna_base, inflacao); para LFT, use selic= |
vigencia(data) nos módulos de títulos |
yd.vna.vigencia(titulo, data) |
O namespace público segue a autonomia semântica do conceito que o usuário
precisa conhecer, e não apenas a fonte dos dados ou sua relação temática com
outro domínio. Por isso, conceitos como yd.ltn, yd.ntnb, yd.vna e yd.rmd
ficam na raiz, enquanto as implementações podem continuar agrupadas
internamente por domínio para manter o código coeso.
Consulte as releases para o
histórico completo.
Projeto
Metadata
Release files for pyield 0.59.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyield-0.59.0.tar.gz | 137.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyield-0.59.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 327.1 kB
Release files / pyield-0.59.0.tar.gz
| Download URL | pyield-0.59.0.tar.gz |
|---|---|
| Size | 137.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f92f3381086c922181296b9ddaa8eadb8f47589481a134dae1e351ae5ec470ab
|
|
BLAKE2b-256 checksum How to use checksums |
1773e59765eb2021793827197bb14d58ce2aca5cbd5d24128e76c008acd91a88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / pyield-0.59.0-py3-none-any.whl
| Download URL | pyield-0.59.0-py3-none-any.whl |
|---|---|
| Size | 190.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5e7d93feb9ae9168f07263d65b27bb6bdc5ddddb153e39479593a03f060fe8c1
|
|
BLAKE2b-256 checksum How to use checksums |
676c7733c662c7ed278110aeeefe32eb4a988d3d3e589ccdebc494f2544851ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|