PYield 0.46.0__tar.gz → 0.46.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyield-0.46.0 → pyield-0.46.1}/PKG-INFO +1 -1
- pyield-0.46.1/pyield/__about__.py +1 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/difusao.py +2 -2
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/ima.py +2 -2
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/imaq.py +2 -2
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/auction.py +52 -84
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/ptax_api.py +20 -2
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/trades_intraday.py +2 -2
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/trades_monthly.py +4 -4
- pyield-0.46.0/pyield/__about__.py +0 -1
- {pyield-0.46.0 → pyield-0.46.1}/.gitignore +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/LICENSE +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/README.md +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/br_numbers.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/cache.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/converters.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/data_cache.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/retry.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/_internal/types.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/ettj_intraday.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/ettj_last.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/anbima/tpf.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/_contracts.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/_validar_pregao.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/di1.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/di_over.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/futures/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/futures/common.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/futures/historical.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/futures/intraday.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/intraday_derivatives.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/b3/price_report.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/copom.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/rates.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/repo.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bc/vna.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bday/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bday/core.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bday/holidays/br_holidays_new.txt +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bday/holidays/br_holidays_old.txt +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/bday/holidays/brholidays.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/clock.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/fwd.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/interpolator.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/ipca/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/ipca/historical.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/ipca/projected.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/py.typed +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/rmd.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/selic/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/selic/cpm.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/selic/probabilities.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/__init__.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/auctions.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/benchmark.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/lft.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/ltn.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/ntnb.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/ntnb1.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/ntnbprinc.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/ntnc.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/ntnf.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/pre.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyield/tn/utils.py +0 -0
- {pyield-0.46.0 → pyield-0.46.1}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyield
|
|
3
|
-
Version: 0.46.
|
|
3
|
+
Version: 0.46.1
|
|
4
4
|
Summary: A Python library for analysis of fixed income instruments in Brazil
|
|
5
5
|
Project-URL: Homepage, https://github.com/crdcj/PYield
|
|
6
6
|
Project-URL: Documentation, https://crdcj.github.io/PYield
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.46.1"
|
|
@@ -109,7 +109,7 @@ def _processar_csv(data_ref: dt.date, df: pl.DataFrame) -> pl.DataFrame:
|
|
|
109
109
|
provedor=pl.col("Provedor"),
|
|
110
110
|
titulo=pl.col("Título"),
|
|
111
111
|
data_vencimento=pl.col("data_vencimento"),
|
|
112
|
-
|
|
112
|
+
isin=pl.col("Código ISIN"),
|
|
113
113
|
dias_uteis=bday.count_expr(data_ref, "data_vencimento"),
|
|
114
114
|
taxa_indicativa_anterior=taxa_br("Fech D-1"),
|
|
115
115
|
taxa_indicativa_superior=taxa_br("Indicativo Superior"),
|
|
@@ -142,7 +142,7 @@ def tpf_difusao(data_referencia: DateLike) -> pl.DataFrame:
|
|
|
142
142
|
- provedor (string): Provedor dos dados.
|
|
143
143
|
- titulo (string): Nome do título (ex: LFT, LTN).
|
|
144
144
|
- data_vencimento (date): Data de vencimento do título.
|
|
145
|
-
-
|
|
145
|
+
- isin (string): código ISIN do título.
|
|
146
146
|
- dias_uteis (int): Dias úteis entre a data de referência e o vencimento.
|
|
147
147
|
- taxa_indicativa_anterior (float): Taxa indicativa de fechamento D-1 (decimal).
|
|
148
148
|
- taxa_indicativa_superior (float): Limite superior da banda indicativa (decimal).
|
|
@@ -59,7 +59,7 @@ def _processar_df(df: pl.DataFrame) -> pl.DataFrame:
|
|
|
59
59
|
titulo=pl.col("Títulos"),
|
|
60
60
|
data_vencimento=pl.col("Data de Vencimento").str.to_date("%d/%m/%Y"),
|
|
61
61
|
codigo_selic=pl.col("Código SELIC").cast(pl.Int64),
|
|
62
|
-
|
|
62
|
+
isin=pl.col("Código ISIN"),
|
|
63
63
|
dias_uteis=pl.col("Prazo (d.u.)").cast(pl.Int64),
|
|
64
64
|
duration=pl.col("duration"),
|
|
65
65
|
taxa_indicativa=pl.col("taxa_indicativa"),
|
|
@@ -100,7 +100,7 @@ def last_ima(ima_type: TiposIMA | None = None) -> pl.DataFrame:
|
|
|
100
100
|
- titulo (String): título (ex: 'LTN', 'NTN-B').
|
|
101
101
|
- data_vencimento (Date): data de vencimento do título.
|
|
102
102
|
- codigo_selic (Int64): código do título no sistema SELIC.
|
|
103
|
-
-
|
|
103
|
+
- isin (String): código ISIN.
|
|
104
104
|
- dias_uteis (Int64): dias úteis até o vencimento.
|
|
105
105
|
- duration (Float64): duration do título em anos úteis (252 d.u./ano).
|
|
106
106
|
- taxa_indicativa (Float64): taxa indicativa em decimal (ex: 0.10 para 10%).
|
|
@@ -102,7 +102,7 @@ def _processar_df(df: pl.DataFrame, data_referencia: dt.date) -> pl.DataFrame:
|
|
|
102
102
|
titulo=pl.col("Título"),
|
|
103
103
|
data_vencimento=pl.col("Data de Vencimento").str.to_date(format="%d/%m/%Y"),
|
|
104
104
|
codigo_selic=pl.col("Codigo Selic").cast(pl.Int64),
|
|
105
|
-
|
|
105
|
+
isin=pl.col("Código ISIN"),
|
|
106
106
|
pu=float_br("PU (R$)"),
|
|
107
107
|
quantidade_mercado=inteiro_m("Quantidade em Mercado (1.000 Títulos)"),
|
|
108
108
|
valor_mercado=inteiro_m("Valor de Mercado (R$ Mil)"),
|
|
@@ -129,7 +129,7 @@ def imaq(date: DateLike) -> pl.DataFrame:
|
|
|
129
129
|
- titulo (String): tipo do título (LTN, NTN-B, NTN-F, LFT, …).
|
|
130
130
|
- data_vencimento (Date): data de vencimento do título.
|
|
131
131
|
- codigo_selic (Int64): código SELIC do título.
|
|
132
|
-
-
|
|
132
|
+
- isin (String): código ISIN.
|
|
133
133
|
- pu (Float64): PU do título em R$.
|
|
134
134
|
- quantidade_mercado (Int64): quantidade em mercado (unidades).
|
|
135
135
|
- valor_mercado (Int64): valor de mercado em R$.
|
|
@@ -280,54 +280,62 @@ def auctions(
|
|
|
280
280
|
end: DateLike | None = None,
|
|
281
281
|
auction_type: Literal["sell", "buy"] | None = None,
|
|
282
282
|
) -> pl.DataFrame:
|
|
283
|
-
"""
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
da data de `start` **até a data mais recente disponível**.
|
|
291
|
-
Exemplo: `auctions(start='2024-10-20')`
|
|
292
|
-
- Se apenas `end` for fornecido, a API do BC retornará dados de leilão **desde a
|
|
293
|
-
data mais antiga disponível até a data de `end`**.
|
|
294
|
-
Exemplo: `auctions(end='2024-10-27')`
|
|
295
|
-
|
|
296
|
-
**Série histórica completa:**
|
|
297
|
-
- Para recuperar a série histórica completa de leilões (desde 12/11/2012 até o
|
|
298
|
-
último dia útil), chame a função sem fornecer os parâmetros `start` e `end`.
|
|
299
|
-
Exemplo: `auctions()`
|
|
300
|
-
|
|
301
|
-
Busca dados de leilões da API do BC para as datas de início e fim especificadas,
|
|
302
|
-
filtrando os resultados diretamente na API pelo tipo de leilão, se especificado.
|
|
303
|
-
O comportamento da função em relação aos parâmetros `start` e `end` segue o padrão
|
|
304
|
-
da API do Banco Central:
|
|
305
|
-
- Se `start` for fornecido e `end` não, a função retorna dados de `start` até o fim.
|
|
306
|
-
- Se `end` for fornecido e `start` não, a API retorna dados do início até `end`.
|
|
307
|
-
- Se ambos `start` e `end` forem omitidos, a API retorna a série histórica completa.
|
|
308
|
-
|
|
309
|
-
Os dados podem ser filtrados pelo tipo de leilão especificado ("Sell" ou "Buy").
|
|
310
|
-
Leilões de "Sell" são aqueles em que o Tesouro Nacional vende títulos ao mercado.
|
|
311
|
-
Leilões de "Buy" são aqueles em que o Tesouro Nacional compra títulos do mercado.
|
|
283
|
+
"""Dados de leilões de títulos públicos federais do BCB.
|
|
284
|
+
|
|
285
|
+
Fonte: Banco Central do Brasil. Disponível desde 12/11/2012.
|
|
286
|
+
|
|
287
|
+
Se ambos `start` e `end` forem omitidos, retorna a série
|
|
288
|
+
histórica completa. Se apenas um for informado, a API do BCB
|
|
289
|
+
usa o início ou fim do histórico como limite.
|
|
312
290
|
|
|
313
291
|
Args:
|
|
314
|
-
start
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
Padrão é `None`.
|
|
319
|
-
end (DateLike, opcional): A data de fim para a consulta de dados de leilão.
|
|
320
|
-
Se `end` for fornecido e `start` for `None`, a API retornará dados de
|
|
321
|
-
leilão desde a data mais antiga disponível até a data de `end`.
|
|
322
|
-
Se `start` e `end` forem `None`, a série histórica completa será retornada.
|
|
323
|
-
Padrão é `None`.
|
|
324
|
-
auction_type (Literal["sell", "buy"], opcional): O tipo de leilão para filtrar
|
|
325
|
-
diretamente na API. Padrão é `None` (retorna todos os tipos de leilão).
|
|
292
|
+
start: Data de início. Padrão é ``None``.
|
|
293
|
+
end: Data de fim. Padrão é ``None``.
|
|
294
|
+
auction_type: Tipo de leilão (``"sell"`` = venda,
|
|
295
|
+
``"buy"`` = compra). Padrão é ``None`` (todos).
|
|
326
296
|
|
|
327
297
|
Returns:
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
298
|
+
DataFrame com dados de leilões, ou DataFrame vazio
|
|
299
|
+
se não houver dados.
|
|
300
|
+
|
|
301
|
+
Output Columns:
|
|
302
|
+
* data_leilao (Date): data do leilão.
|
|
303
|
+
* data_liquidacao (Date): data de liquidação.
|
|
304
|
+
* tipo_leilao (String): "Venda" ou "Compra".
|
|
305
|
+
* numero_edital (Int64): edital normativo.
|
|
306
|
+
* tipo_publico (String): categoria do comprador.
|
|
307
|
+
* titulo (String): sigla do título (LTN, LFT, NTN-B, NTN-F).
|
|
308
|
+
* codigo_selic (Int64): código no sistema Selic.
|
|
309
|
+
* data_vencimento (Date): data de vencimento.
|
|
310
|
+
* dias_uteis (Int32): dias úteis até o vencimento.
|
|
311
|
+
* duration (Float64): duração de Macaulay em anos.
|
|
312
|
+
* prazo_medio (Float64): prazo médio em anos.
|
|
313
|
+
* pu_medio (Float64): PU médio no leilão.
|
|
314
|
+
* pu_corte (Float64): PU de corte.
|
|
315
|
+
* taxa_media (Float64): taxa média (decimal).
|
|
316
|
+
* taxa_corte (Float64): taxa de corte (decimal).
|
|
317
|
+
* dv01_1v (Float64): DV01 da 1ª volta em R$.
|
|
318
|
+
* dv01_2v (Float64): DV01 da 2ª volta em R$.
|
|
319
|
+
* dv01_total (Float64): DV01 total em R$.
|
|
320
|
+
* ptax (Float64): PTAX (venda) para conversão USD.
|
|
321
|
+
* dv01_1v_usd (Float64): DV01 da 1ª volta em USD.
|
|
322
|
+
* dv01_2v_usd (Float64): DV01 da 2ª volta em USD.
|
|
323
|
+
* dv01_total_usd (Float64): DV01 total em USD.
|
|
324
|
+
* quantidade_liquidada_1v (Int64): qtd liquidada 1ª volta.
|
|
325
|
+
* quantidade_liquidada_2v (Int64): qtd liquidada 2ª volta.
|
|
326
|
+
* quantidade_liquidada_total (Int64): qtd total liquidada.
|
|
327
|
+
* quantidade_ofertada_1v (Int64): qtd ofertada 1ª volta.
|
|
328
|
+
* quantidade_ofertada_2v (Int64): qtd ofertada 2ª volta.
|
|
329
|
+
* quantidade_ofertada_total (Int64): qtd total ofertada.
|
|
330
|
+
* quantidade_aceita_1v (Int64): qtd aceita 1ª volta.
|
|
331
|
+
* quantidade_aceita_2v (Int64): qtd aceita 2ª volta.
|
|
332
|
+
* quantidade_aceita_total (Int64): qtd total aceita.
|
|
333
|
+
* financeiro_1v (Int64): financeiro 1ª volta em R$.
|
|
334
|
+
* financeiro_2v (Int64): financeiro 2ª volta em R$.
|
|
335
|
+
* financeiro_total (Int64): financeiro total em R$.
|
|
336
|
+
|
|
337
|
+
Notes:
|
|
338
|
+
1v = primeira volta (rodada), 2v = segunda volta.
|
|
331
339
|
|
|
332
340
|
Examples:
|
|
333
341
|
>>> from pyield import bc
|
|
@@ -344,46 +352,6 @@ def auctions(
|
|
|
344
352
|
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 194 ┆ … ┆ 500542 ┆ 2071654327 ┆ 2245673 ┆ 2073900000 │
|
|
345
353
|
│ 2025-08-19 ┆ 2025-08-20 ┆ Venda ┆ 194 ┆ … ┆ 500000 ┆ 2010700000 ┆ 0 ┆ 2010700000 │
|
|
346
354
|
└─────────────┴─────────────────┴─────────────┴───────────────┴───┴─────────────────────────┴───────────────┴───────────────┴──────────────────┘
|
|
347
|
-
|
|
348
|
-
Notes:
|
|
349
|
-
1v = Primeira Volta (Rodada)
|
|
350
|
-
2v = Segunda Volta (Rodada)
|
|
351
|
-
|
|
352
|
-
Colunas do DataFrame:
|
|
353
|
-
- data_leilao (Date): data do leilão.
|
|
354
|
-
- data_liquidacao (Date): data de liquidação do leilão.
|
|
355
|
-
- tipo_leilao (String): tipo de leilão (ex: "Venda" ou "Compra").
|
|
356
|
-
- numero_edital (Int64): edital normativo associado ao leilão.
|
|
357
|
-
- tipo_publico (String): categoria do comprador.
|
|
358
|
-
- titulo (String): tipo do título (ex: "LTN", "LFT", "NTN-B", "NTN-F").
|
|
359
|
-
- codigo_selic (Int64): código do título no sistema Selic.
|
|
360
|
-
- data_vencimento (Date): data de vencimento do título.
|
|
361
|
-
- dias_uteis (Int32): dias úteis entre a liquidação e o vencimento.
|
|
362
|
-
- duration (Float64): duração de Macaulay em anos.
|
|
363
|
-
- prazo_medio (Float64): prazo médio do título em anos.
|
|
364
|
-
- pu_medio (Float64): preço unitário médio no leilão.
|
|
365
|
-
- pu_corte (Float64): preço unitário de corte.
|
|
366
|
-
- taxa_media (Float64): taxa de juros média (formato decimal).
|
|
367
|
-
- taxa_corte (Float64): taxa de corte (formato decimal).
|
|
368
|
-
- dv01_1v (Float64): DV01 da 1ª volta em R$.
|
|
369
|
-
- dv01_2v (Float64): DV01 da 2ª volta em R$.
|
|
370
|
-
- dv01_total (Float64): DV01 total do leilão em R$.
|
|
371
|
-
- ptax (Float64): taxa PTAX utilizada na conversão para USD.
|
|
372
|
-
- dv01_1v_usd (Float64): DV01 da 1ª volta em USD.
|
|
373
|
-
- dv01_2v_usd (Float64): DV01 da 2ª volta em USD.
|
|
374
|
-
- dv01_total_usd (Float64): DV01 total em USD.
|
|
375
|
-
- quantidade_liquidada_1v (Int64): quantidade liquidada na 1ª volta.
|
|
376
|
-
- quantidade_liquidada_2v (Int64): quantidade liquidada na 2ª volta.
|
|
377
|
-
- quantidade_liquidada_total (Int64): quantidade total liquidada.
|
|
378
|
-
- quantidade_ofertada_1v (Int64): quantidade ofertada na 1ª volta.
|
|
379
|
-
- quantidade_ofertada_2v (Int64): quantidade ofertada na 2ª volta.
|
|
380
|
-
- quantidade_ofertada_total (Int64): quantidade total ofertada.
|
|
381
|
-
- quantidade_aceita_1v (Int64): quantidade aceita na 1ª volta.
|
|
382
|
-
- quantidade_aceita_2v (Int64): quantidade aceita na 2ª volta.
|
|
383
|
-
- quantidade_aceita_total (Int64): quantidade total aceita.
|
|
384
|
-
- financeiro_1v (Int64): valor financeiro da 1ª volta em R$.
|
|
385
|
-
- financeiro_2v (Int64): valor financeiro da 2ª volta em R$.
|
|
386
|
-
- financeiro_total (Int64): valor financeiro total em R$.
|
|
387
355
|
"""
|
|
388
356
|
url = _montar_url(inicio=start, fim=end, tipo_leilao=auction_type)
|
|
389
357
|
dados = _buscar_csv(url)
|
|
@@ -9,10 +9,14 @@ cotacaoCompra, cotacaoVenda, dataHoraCotacao
|
|
|
9
9
|
2814 , 2828 , 1984-12-03 11:29:00.0
|
|
10
10
|
2814 , 2828 , 1984-12-03 16:38:00.0
|
|
11
11
|
2867 , 2881 , 1984-12-04 11:17:00.0
|
|
12
|
+
"0,843" , "0,845" , 1995-01-02 18:20:00.0
|
|
12
13
|
...
|
|
13
14
|
"5,4272" , "5,4278" , 2025-09-08 13:09:40.608
|
|
14
15
|
"5,4272" , "5,4278" , 2025-09-09 13:07:27.786
|
|
15
16
|
"5,4117" , "5,4123" , 2025-09-10 13:06:29.196
|
|
17
|
+
|
|
18
|
+
ATENÇÃO: a fração de segundo varia entre .0 (datas antigas) e .608
|
|
19
|
+
(datas recentes). Usar %.f (variável) no parsing, nunca %.3f (fixo).
|
|
16
20
|
"""
|
|
17
21
|
|
|
18
22
|
import datetime as dt
|
|
@@ -60,7 +64,7 @@ def _processar_df(df: pl.DataFrame) -> pl.DataFrame:
|
|
|
60
64
|
cotacao_compra=float_br("cotacaoCompra"),
|
|
61
65
|
cotacao_venda=float_br("cotacaoVenda"),
|
|
62
66
|
data_hora=pl.col("dataHoraCotacao").str.to_datetime(
|
|
63
|
-
format="%Y-%m-%d %H:%M:%S%.
|
|
67
|
+
format="%Y-%m-%d %H:%M:%S%.f", strict=False
|
|
64
68
|
),
|
|
65
69
|
)
|
|
66
70
|
.with_columns(
|
|
@@ -121,13 +125,27 @@ def ptax_series(
|
|
|
121
125
|
┌────────────┬─────────────────────────┬────────────────┬───────────────┬───────────────┐
|
|
122
126
|
│ data ┆ data_hora ┆ cotacao_compra ┆ cotacao_venda ┆ cotacao_media │
|
|
123
127
|
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
|
|
124
|
-
│ date ┆ datetime[
|
|
128
|
+
│ date ┆ datetime[μs] ┆ f64 ┆ f64 ┆ f64 │
|
|
125
129
|
╞════════════╪═════════════════════════╪════════════════╪═══════════════╪═══════════════╡
|
|
126
130
|
│ 2025-04-22 ┆ 2025-04-22 13:09:35.629 ┆ 5.749 ┆ 5.7496 ┆ 5.7493 │
|
|
127
131
|
│ 2025-04-23 ┆ 2025-04-23 13:06:30.443 ┆ 5.6874 ┆ 5.688 ┆ 5.6877 │
|
|
128
132
|
│ 2025-04-24 ┆ 2025-04-24 13:04:29.639 ┆ 5.6732 ┆ 5.6738 ┆ 5.6735 │
|
|
129
133
|
│ 2025-04-25 ┆ 2025-04-25 13:09:26.592 ┆ 5.684 ┆ 5.6846 ┆ 5.6843 │
|
|
130
134
|
└────────────┴─────────────────────────┴────────────────┴───────────────┴───────────────┘
|
|
135
|
+
|
|
136
|
+
>>> bc.ptax_series(start="02-01-1995", end="06-01-1995")
|
|
137
|
+
shape: (5, 5)
|
|
138
|
+
┌────────────┬─────────────────────┬────────────────┬───────────────┬───────────────┐
|
|
139
|
+
│ data ┆ data_hora ┆ cotacao_compra ┆ cotacao_venda ┆ cotacao_media │
|
|
140
|
+
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
|
|
141
|
+
│ date ┆ datetime[μs] ┆ f64 ┆ f64 ┆ f64 │
|
|
142
|
+
╞════════════╪═════════════════════╪════════════════╪═══════════════╪═══════════════╡
|
|
143
|
+
│ 1995-01-02 ┆ 1995-01-02 18:20:00 ┆ 0.843 ┆ 0.845 ┆ 0.844 │
|
|
144
|
+
│ 1995-01-03 ┆ 1995-01-03 18:25:00 ┆ 0.844 ┆ 0.846 ┆ 0.845 │
|
|
145
|
+
│ 1995-01-04 ┆ 1995-01-04 18:12:00 ┆ 0.844 ┆ 0.846 ┆ 0.845 │
|
|
146
|
+
│ 1995-01-05 ┆ 1995-01-05 18:07:00 ┆ 0.842 ┆ 0.844 ┆ 0.843 │
|
|
147
|
+
│ 1995-01-06 ┆ 1995-01-06 18:12:00 ┆ 0.839 ┆ 0.841 ┆ 0.84 │
|
|
148
|
+
└────────────┴─────────────────────┴────────────────┴───────────────┴───────────────┘
|
|
131
149
|
"""
|
|
132
150
|
if start:
|
|
133
151
|
start = cv.converter_datas(start)
|
|
@@ -49,7 +49,7 @@ def _processar_df(df: pl.DataFrame) -> pl.DataFrame:
|
|
|
49
49
|
"""Filtra registros, converte tipos e reordena colunas."""
|
|
50
50
|
agora = clock.now()
|
|
51
51
|
return df.filter(pl.col("//1") == "1").select(
|
|
52
|
-
|
|
52
|
+
data_hora_consulta=agora,
|
|
53
53
|
data_liquidacao=agora.date(),
|
|
54
54
|
titulo=pl.col("sigla").str.strip_chars(),
|
|
55
55
|
codigo_selic=inteiro_br("código título"),
|
|
@@ -106,7 +106,7 @@ def tpf_intraday_trades() -> pl.DataFrame:
|
|
|
106
106
|
estiver fechado ou ocorrer erro.
|
|
107
107
|
|
|
108
108
|
Output Columns:
|
|
109
|
-
-
|
|
109
|
+
- data_hora_consulta (Datetime): data e hora da consulta (BRT).
|
|
110
110
|
- data_liquidacao (Date): data de liquidação à vista.
|
|
111
111
|
- titulo (String): sigla do título (ex.: LFT, LTN, NTN-B).
|
|
112
112
|
- codigo_selic (Int64): código SELIC do título.
|
|
@@ -72,7 +72,7 @@ def _processar_df(df: pl.DataFrame) -> pl.DataFrame:
|
|
|
72
72
|
data_liquidacao=pl.col("DATA MOV").str.to_date("%d/%m/%Y", strict=False),
|
|
73
73
|
titulo=pl.col("SIGLA"),
|
|
74
74
|
codigo_selic=pl.col("CODIGO").cast(pl.Int64),
|
|
75
|
-
|
|
75
|
+
isin=pl.col("CODIGO ISIN"),
|
|
76
76
|
data_emissao=pl.col("EMISSAO").str.to_date("%d/%m/%Y", strict=False),
|
|
77
77
|
data_vencimento=pl.col("VENCIMENTO").str.to_date("%d/%m/%Y", strict=False),
|
|
78
78
|
operacoes=pl.col("NUM DE OPER").cast(pl.Int64),
|
|
@@ -120,7 +120,7 @@ def tpf_monthly_trades(target_date: DateLike, extragroup: bool = False) -> pl.Da
|
|
|
120
120
|
- data_liquidacao (Date): data de liquidação da negociação.
|
|
121
121
|
- titulo (str): sigla do título (ex: LFT, LTN, NTN-B, NTN-F).
|
|
122
122
|
- codigo_selic (Int64): código único no sistema Selic.
|
|
123
|
-
-
|
|
123
|
+
- isin (str): código ISIN.
|
|
124
124
|
- data_emissao (Date): data de emissão do título.
|
|
125
125
|
- data_vencimento (Date): data de vencimento do título.
|
|
126
126
|
- operacoes (Int64): número total de operações realizadas.
|
|
@@ -130,11 +130,11 @@ def tpf_monthly_trades(target_date: DateLike, extragroup: bool = False) -> pl.Da
|
|
|
130
130
|
- pu_medio (Float64): preço unitário médio.
|
|
131
131
|
- pu_maximo (Float64): preço unitário máximo.
|
|
132
132
|
- pu_lastro (Float64): PU lastro.
|
|
133
|
-
- valor_par (Float64): valor
|
|
133
|
+
- valor_par (Float64): valor par do título.
|
|
134
134
|
- taxa_minima (Float64): taxa mínima.
|
|
135
135
|
- taxa_media (Float64): taxa média.
|
|
136
136
|
- taxa_maxima (Float64): taxa máxima.
|
|
137
|
-
- operacoes_corretagem (Int64): subconjunto de
|
|
137
|
+
- operacoes_corretagem (Int64): subconjunto de operações com corretagem.
|
|
138
138
|
- quantidade_corretagem (Int64): subconjunto de quantidade com corretagem.
|
|
139
139
|
|
|
140
140
|
Notes:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.46.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|