Visão Geral
auctions(start=None, end=None, auction_type=None)
Dados de leilões de títulos públicos federais do BCB.
Fonte: Banco Central do Brasil. Disponível desde 12/11/2012.
Se ambos start e end forem omitidos, retorna a série
histórica completa. Se apenas um for informado, a API do BCB
usa o início ou fim do histórico como limite.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
DateLike | None
|
Data de início. Padrão é |
None
|
end
|
DateLike | None
|
Data de fim. Padrão é |
None
|
auction_type
|
Literal['sell', 'buy'] | None
|
Tipo de leilão ( |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com dados de leilões, ou DataFrame vazio |
DataFrame
|
se não houver dados. |
Output Columns
- data_leilao (Date): data do leilão.
- data_liquidacao (Date): data de liquidação.
- tipo_leilao (String): "Venda" ou "Compra".
- numero_edital (Int64): edital normativo.
- tipo_publico (String): categoria do comprador.
- titulo (String): sigla do título (LTN, LFT, NTN-B, NTN-F).
- codigo_selic (Int64): código no sistema Selic.
- data_vencimento (Date): data de vencimento.
- dias_uteis (Int32): dias úteis até o vencimento.
- duration (Float64): duração de Macaulay em anos.
- prazo_medio (Float64): prazo médio em anos.
- pu_medio (Float64): PU médio no leilão.
- pu_corte (Float64): PU de corte.
- taxa_media (Float64): taxa média (decimal).
- taxa_corte (Float64): taxa de corte (decimal).
- dv01_1v (Float64): DV01 da 1ª volta em R$.
- dv01_2v (Float64): DV01 da 2ª volta em R$.
- dv01_total (Float64): DV01 total em R$.
- ptax (Float64): PTAX (venda) para conversão USD.
- dv01_1v_usd (Float64): DV01 da 1ª volta em USD.
- dv01_2v_usd (Float64): DV01 da 2ª volta em USD.
- dv01_total_usd (Float64): DV01 total em USD.
- quantidade_liquidada_1v (Int64): qtd liquidada 1ª volta.
- quantidade_liquidada_2v (Int64): qtd liquidada 2ª volta.
- quantidade_liquidada_total (Int64): qtd total liquidada.
- quantidade_ofertada_1v (Int64): qtd ofertada 1ª volta.
- quantidade_ofertada_2v (Int64): qtd ofertada 2ª volta.
- quantidade_ofertada_total (Int64): qtd total ofertada.
- quantidade_aceita_1v (Int64): qtd aceita 1ª volta.
- quantidade_aceita_2v (Int64): qtd aceita 2ª volta.
- quantidade_aceita_total (Int64): qtd total aceita.
- financeiro_1v (Int64): financeiro 1ª volta em R$.
- financeiro_2v (Int64): financeiro 2ª volta em R$.
- financeiro_total (Int64): financeiro total em R$.
Notes
1v = primeira volta (rodada), 2v = segunda volta.
Examples:
>>> from pyield import bc
>>> bc.auctions(start="19-08-2025", end="19-08-2025")
shape: (5, 34)
┌─────────────┬─────────────────┬─────────────┬───────────────┬───┬─────────────────────────┬───────────────┬───────────────┬──────────────────┐
│ data_leilao ┆ data_liquidacao ┆ tipo_leilao ┆ numero_edital ┆ … ┆ quantidade_aceita_total ┆ financeiro_1v ┆ financeiro_2v ┆ financeiro_total │
│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ date ┆ str ┆ i64 ┆ ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════════════╪═════════════════╪═════════════╪═══════════════╪═══╪═════════════════════════╪═══════════════╪═══════════════╪══════════════════╡
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 192 ┆ … ┆ 150000 ┆ 2572400000 ┆ 0 ┆ 2572400000 │
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 192 ┆ … ┆ 751003 ┆ 12804476147 ┆ 17123853 ┆ 12821600000 │
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 193 ┆ … ┆ 300759 ┆ 1289936461 ┆ 3263539 ┆ 1293200000 │
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 194 ┆ … ┆ 500542 ┆ 2071654327 ┆ 2245673 ┆ 2073900000 │
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 194 ┆ … ┆ 500000 ┆ 2010700000 ┆ 0 ┆ 2010700000 │
└─────────────┴─────────────────┴─────────────┴───────────────┴───┴─────────────────────────┴───────────────┴───────────────┴──────────────────┘
Source code in pyield/bc/auction.py
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | |
di_over(date, annualized=True)
Taxa DI Over para uma data específica.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
DateLike
|
Data de referência. |
required |
annualized
|
bool
|
Se |
True
|
Returns:
| Type | Description |
|---|---|
float
|
Taxa DI Over ou |
Examples:
Source code in pyield/bc/rates.py
di_over_series(start, end=None, annualized=True)
Taxa DI Over (série SGS 11).
Taxa de juros média dos empréstimos interbancários.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
DateLike
|
Data inicial. |
required |
end
|
DateLike | None
|
Data final. Se |
None
|
annualized
|
bool
|
Se |
True
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com colunas data e taxa, ou DataFrame vazio. |
Examples:
>>> from pyield import bc
>>> # Retorna todos os dados desde 29-01-2025
>>> bc.di_over_series("29-01-2025").head(5) # Primeiras 5 linhas
shape: (5, 2)
┌────────────┬────────┐
│ data ┆ taxa │
│ --- ┆ --- │
│ date ┆ f64 │
╞════════════╪════════╡
│ 2025-01-29 ┆ 0.1215 │
│ 2025-01-30 ┆ 0.1315 │
│ 2025-01-31 ┆ 0.1315 │
│ 2025-02-03 ┆ 0.1315 │
│ 2025-02-04 ┆ 0.1315 │
└────────────┴────────┘
Source code in pyield/bc/rates.py
ptax(date)
Cotação PTAX média de fechamento para uma data específica.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
DateLike
|
Data desejada. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Taxa média (cotacao_media) do dia, ou |
float
|
houver cotação (feriado, fim de semana ou data futura). |
Examples:
Source code in pyield/bc/ptax_api.py
ptax_series(start=None, end=None)
Cotações de fechamento do Dólar PTAX (taxa de câmbio).
Fonte: Banco Central do Brasil (BCB). Frequência diária.
Se start não for informado, usa 28.11.1984 (primeira data
disponível). Se end não for informado, usa a data de hoje.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
DateLike | None
|
Data de início da consulta. Padrão é |
None
|
end
|
DateLike | None
|
Data de fim da consulta. Padrão é |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com as cotações do período, ou DataFrame vazio |
DataFrame
|
se não houver dados. |
Output Columns
- data (Date): data da cotação.
- hora (Time): hora da cotação.
- cotacao_compra (Float64): taxa de compra em R$.
- cotacao_venda (Float64): taxa de venda em R$.
- cotacao_media (Float64): média de compra/venda (5 casas).
Notes
Disponível desde 28.11.1984; refere-se às taxas administradas até março de 1990 e às taxas livres a partir de então (Resolução 1690, de 18.3.1990). A partir de março de 1992, essa taxa recebeu a denominação PTAX. Desde 1 de julho de 2011 (Circular 3506), a PTAX corresponde à média aritmética das taxas obtidas em quatro consultas diárias aos dealers de câmbio.
Documentação da API: https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/documentacao
Examples:
>>> from pyield import bc
>>> bc.ptax_series(start="20-04-2025", end="25-04-2025")
shape: (4, 5)
┌────────────┬──────────────┬────────────────┬───────────────┬───────────────┐
│ data ┆ hora ┆ cotacao_compra ┆ cotacao_venda ┆ cotacao_media │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ time ┆ f64 ┆ f64 ┆ f64 │
╞════════════╪══════════════╪════════════════╪═══════════════╪═══════════════╡
│ 2025-04-22 ┆ 13:09:35.629 ┆ 5.749 ┆ 5.7496 ┆ 5.7493 │
│ 2025-04-23 ┆ 13:06:30.443 ┆ 5.6874 ┆ 5.688 ┆ 5.6877 │
│ 2025-04-24 ┆ 13:04:29.639 ┆ 5.6732 ┆ 5.6738 ┆ 5.6735 │
│ 2025-04-25 ┆ 13:09:26.592 ┆ 5.684 ┆ 5.6846 ┆ 5.6843 │
└────────────┴──────────────┴────────────────┴───────────────┴───────────────┘
>>> bc.ptax_series(start="02-01-1995", end="06-01-1995")
shape: (5, 5)
┌────────────┬──────────┬────────────────┬───────────────┬───────────────┐
│ data ┆ hora ┆ cotacao_compra ┆ cotacao_venda ┆ cotacao_media │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ time ┆ f64 ┆ f64 ┆ f64 │
╞════════════╪══════════╪════════════════╪═══════════════╪═══════════════╡
│ 1995-01-02 ┆ 18:20:00 ┆ 0.843 ┆ 0.845 ┆ 0.844 │
│ 1995-01-03 ┆ 18:25:00 ┆ 0.844 ┆ 0.846 ┆ 0.845 │
│ 1995-01-04 ┆ 18:12:00 ┆ 0.844 ┆ 0.846 ┆ 0.845 │
│ 1995-01-05 ┆ 18:07:00 ┆ 0.842 ┆ 0.844 ┆ 0.843 │
│ 1995-01-06 ┆ 18:12:00 ┆ 0.839 ┆ 0.841 ┆ 0.84 │
└────────────┴──────────┴────────────────┴───────────────┴───────────────┘
Source code in pyield/bc/ptax_api.py
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | |
repos(start=None, end=None)
Consulta e retorna leilões de operações compromissadas (repos) do BCB.
Semântica dos parâmetros de período (API OData): - start somente: dados de start até o fim da série. - end somente: dados do início da série até end. - ambos omitidos: série histórica completa.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
DateLike | None
|
Data inicial (inclusive) ou None. |
None
|
end
|
DateLike | None
|
Data final (inclusive) ou None. |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com colunas normalizadas em português e tipos |
DataFrame
|
enriquecidos (frações decimais, inteiros, datas). |
Output Columns
- data_leilao (Date): data de ocorrência do leilão.
- data_liquidacao (Date): data de liquidação (início da operação).
- data_retorno (Date): data de recompra / término da operação.
- hora_inicio (Time): horário de início do leilão.
- prazo_dias_corridos (Int64): dias corridos até a data de retorno.
- prazo_dias_uteis (Int64): dias úteis entre liquidação e retorno (bday.count).
- numero_comunicado (Int64): número do comunicado/aviso do BC (pode ser nulo).
- tipo_oferta (String): classif. do tipo de oferta (ex: Tomador, Compromissada 1047).
- publico_permitido (String): escopo de participantes (SomenteDealer, TodoMercado).
- volume_aceito (Int64): volume aceito no leilão em reais (convertido de milhares).
- taxa_corte (Float64): taxa de corte (ex. 0.1490 = 14,90%). Nula se volume_aceito = 0.
- percentual_aceito (Float64): percentual do volume ofertado efetivamente aceito (0-100). 100 = nenhuma rejeição. 0 indica nada aceito (volume_aceito = 0).
Notes
- Dados ordenados por: data_leilao, hora_inicio, tipo_oferta.
Examples:
>>> from pyield import bc
>>> bc.repos(start="21-08-2025", end="21-08-2025")
shape: (2, 12)
┌─────────────┬─────────────────┬──────────────┬─────────────┬───┬───────────────────┬───────────────┬────────────┬───────────────────┐
│ data_leilao ┆ data_liquidacao ┆ data_retorno ┆ hora_inicio ┆ … ┆ publico_permitido ┆ volume_aceito ┆ taxa_corte ┆ percentual_aceito │
│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │
│ date ┆ date ┆ date ┆ time ┆ ┆ str ┆ i64 ┆ f64 ┆ f64 │
╞═════════════╪═════════════════╪══════════════╪═════════════╪═══╪═══════════════════╪═══════════════╪════════════╪═══════════════════╡
│ 2025-08-21 ┆ 2025-08-21 ┆ 2025-08-22 ┆ 09:00:00 ┆ … ┆ SomenteDealer ┆ 647707406000 ┆ 0.149 ┆ 100.0 │
│ 2025-08-21 ┆ 2025-08-22 ┆ 2025-11-21 ┆ 12:00:00 ┆ … ┆ TodoMercado ┆ 5000000000 ┆ 0.9978 ┆ 35.87 │
└─────────────┴─────────────────┴──────────────┴─────────────┴───┴───────────────────┴───────────────┴────────────┴───────────────────┘
Source code in pyield/bc/repo.py
selic_over(date)
Taxa SELIC Over para uma data específica.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
DateLike
|
Data de referência. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Taxa SELIC Over ou |
Examples:
Source code in pyield/bc/rates.py
selic_over_series(start, end=None)
Taxa SELIC Over (série SGS 1178).
Taxa de juros média diária praticada no mercado interbancário, com títulos públicos como garantia.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
DateLike
|
Data inicial. |
required |
end
|
DateLike | None
|
Data final. Se |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com colunas data e taxa, ou DataFrame vazio. |
Examples:
>>> from pyield import bc
>>> # Sem dados em 26-01-2025 (domingo). Selic mudou por reunião do Copom.
>>> bc.selic_over_series("26-01-2025").head(5) # Primeiras 5 linhas
shape: (5, 2)
┌────────────┬────────┐
│ data ┆ taxa │
│ --- ┆ --- │
│ date ┆ f64 │
╞════════════╪════════╡
│ 2025-01-27 ┆ 0.1215 │
│ 2025-01-28 ┆ 0.1215 │
│ 2025-01-29 ┆ 0.1215 │
│ 2025-01-30 ┆ 0.1315 │
│ 2025-01-31 ┆ 0.1315 │
└────────────┴────────┘
>>> # Buscando dados para um intervalo específico
>>> bc.selic_over_series("14-09-2025", "17-09-2025")
shape: (3, 2)
┌────────────┬───────┐
│ data ┆ taxa │
│ --- ┆ --- │
│ date ┆ f64 │
╞════════════╪═══════╡
│ 2025-09-15 ┆ 0.149 │
│ 2025-09-16 ┆ 0.149 │
│ 2025-09-17 ┆ 0.149 │
└────────────┴───────┘
Source code in pyield/bc/rates.py
selic_target(date)
Taxa SELIC Meta para uma data específica.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
DateLike
|
Data de referência. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Taxa SELIC Meta ou |
Examples:
Source code in pyield/bc/rates.py
selic_target_series(start, end=None)
Taxa SELIC Meta (série SGS 432).
Taxa de juros oficial definida pelo COPOM.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start
|
DateLike
|
Data inicial. |
required |
end
|
DateLike | None
|
Data final. Se |
None
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com colunas data e taxa, ou DataFrame vazio. |
Examples:
>>> from pyield import bc
>>> bc.selic_target_series("31-05-2024", "31-05-2024")
shape: (1, 2)
┌────────────┬───────┐
│ data ┆ taxa │
│ --- ┆ --- │
│ date ┆ f64 │
╞════════════╪═══════╡
│ 2024-05-31 ┆ 0.105 │
└────────────┴───────┘
Source code in pyield/bc/rates.py
tpf_intraday_trades()
Obtém dados intradiários de negociações secundárias da dívida pública federal (TPF - títulos públicos federais) no Banco Central do Brasil (BCB).
Os dados ficam disponíveis apenas durante o horário do SELIC (09:00–22:00 BRT) em dias úteis. Retorna DataFrame vazio fora desse período.
Returns:
| Type | Description |
|---|---|
DataFrame
|
pl.DataFrame: DataFrame com negociações intradiárias. Vazio se o mercado estiver fechado ou ocorrer erro. |
Output Columns
- data_hora_consulta (Datetime): data e hora da consulta (BRT).
- data_liquidacao (Date): data de liquidação à vista.
- titulo (String): sigla do título (ex.: LFT, LTN, NTN-B).
- codigo_selic (Int64): código SELIC do título.
- data_vencimento (Date): data de vencimento do título.
- pu_minimo (Float64): menor preço negociado.
- pu_medio (Float64): preço médio negociado.
- pu_maximo (Float64): maior preço negociado.
- pu_ultimo (Float64): último preço negociado.
- taxa_minima (Float64): menor taxa negociada (decimal).
- taxa_media (Float64): taxa média negociada (decimal).
- taxa_maxima (Float64): maior taxa negociada (decimal).
- taxa_ultima (Float64): última taxa negociada (decimal).
- operacoes (Int64): total de operações liquidadas.
- quantidade (Int64): quantidade total de títulos negociados.
- financeiro (Float64): valor financeiro total negociado (BRL).
- operacoes_corretagem (Int64): operações liquidadas via corretagem.
- quantidade_corretagem (Int64): títulos negociados via corretagem.
- termo_pu_minimo (Float64): menor preço a termo negociado.
- termo_pu_medio (Float64): preço médio a termo negociado.
- termo_pu_ultimo (Float64): último preço a termo negociado.
- termo_pu_maximo (Float64): maior preço a termo negociado.
- termo_taxa_ultima (Float64): última taxa a termo negociada (decimal).
- termo_taxa_minima (Float64): menor taxa a termo negociada (decimal).
- termo_taxa_media (Float64): taxa média a termo negociada (decimal).
- termo_taxa_maxima (Float64): maior taxa a termo negociada (decimal).
- termo_operacoes (Int64): total de operações a termo contratadas.
- termo_quantidade (Int64): total de títulos a termo negociados.
- termo_financeiro (Float64): valor financeiro total a termo (BRL).
- termo_operacoes_corretagem (Int64): operações a termo via corretagem.
- termo_quantidade_corretagem (Int64): títulos a termo via corretagem.
Notes
Retorna DataFrame vazio fora do horário do SELIC (09:00–22:00 BRT).
Examples:
Source code in pyield/bc/trades_intraday.py
tpf_monthly_trades(target_date, extragroup=False)
Consulta negociações mensais no mercado secundário de TPF registradas no sistema Selic do BCB.
Baixa os dados mensais de negociação do site do BCB para o mês correspondente à data fornecida. Os dados são baixados como arquivo ZIP, extraídos e carregados em um DataFrame Polars. Contém todas as negociações do mês, separadas por data de liquidação (data_liquidacao).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
target_date
|
DateLike
|
Data de referência. Apenas ano e mês são utilizados para baixar o arquivo correspondente. |
required |
extragroup
|
bool
|
Se True, busca apenas negociações extragrupo (entre grupos econômicos distintos). Se False, busca todas. Default é False. Negociações extragrupo são aquelas em que o conglomerado da contraparte cedente difere do conglomerado da contraparte cessionária, ou quando ao menos uma das contrapartes não pertence a um conglomerado. No caso de fundos, considera-se o conglomerado do administrador. |
False
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame com dados de negociação do mês especificado. Em caso de erro |
DataFrame
|
retorna DataFrame vazio e registra log da exceção. |
Output Columns
- data_liquidacao (Date): data de liquidação da negociação.
- titulo (str): sigla do título (ex: LFT, LTN, NTN-B, NTN-F).
- codigo_selic (Int64): código único no sistema Selic.
- isin (str): código ISIN.
- data_emissao (Date): data de emissão do título.
- data_vencimento (Date): data de vencimento do título.
- operacoes (Int64): número total de operações realizadas.
- quantidade (Int64): quantidade total negociada.
- financeiro (Float64): valor financeiro (quantidade × pu_medio).
- pu_minimo (Float64): preço unitário mínimo.
- pu_medio (Float64): preço unitário médio.
- pu_maximo (Float64): preço unitário máximo.
- pu_lastro (Float64): PU lastro.
- valor_par (Float64): valor par do título.
- taxa_minima (Float64): taxa mínima.
- taxa_media (Float64): taxa média.
- taxa_maxima (Float64): taxa máxima.
- operacoes_corretagem (Int64): subconjunto de operações com corretagem.
- quantidade_corretagem (Int64): subconjunto de quantidade com corretagem.
Notes
- Dados ordenados por: data_liquidacao, titulo, data_vencimento.
Examples:
Source code in pyield/bc/trades_monthly.py
vna_lft(date)
Obtém o VNA (Valor Nominal Atualizado) da LFT no site do BCB.
Baixa o arquivo diário do BCB (SELIC), extrai a tabela com os valores VNA e retorna o valor correspondente à data informada.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
DateLike
|
Data de referência. Aceita string, date ou datetime,
convertidos internamente por |
required |
Returns:
| Name | Type | Description |
|---|---|---|
float |
float
|
Valor do VNA para a data especificada. Retorna |
Raises:
| Type | Description |
|---|---|
ValueError
|
Se os valores VNA extraídos do site do BCB forem inconsistentes (nem todos iguais), indicando possível divergência nos dados da fonte. A mensagem inclui o link do BCB para verificação manual. |
HTTPError
|
Se a requisição HTTP ao site do BCB falhar (problemas de rede, site indisponível ou dados não encontrados para a data informada). |
Examples: