pyield 0.52.1__tar.gz → 0.52.2__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.52.1 → pyield-0.52.2}/PKG-INFO +2 -2
- {pyield-0.52.1 → pyield-0.52.2}/README.md +1 -1
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/types.py +2 -2
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/ntnb.py +12 -12
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/ntnf.py +55 -19
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/leiloes.py +11 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyproject.toml +1 -1
- {pyield-0.52.1 → pyield-0.52.2}/LICENSE +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/br_numbers.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/cache.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/converters.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/data_cache.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/_internal/retry.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/anbima/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/anbima/imaq.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/anbima/mercado_secundario.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/b3/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/b3/_contratos.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/b3/_validar_pregao.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/b3/boletim.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/b3/derivativos_intradia.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/b3/di_over.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/_olinda.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/leiloes.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/lft.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/sgs.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/tpf_intradia.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/bc/tpf_mensal.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/du/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/du/core.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/du/feriados/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/du/feriados/feriados_antigos_br.txt +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/du/feriados/feriados_br.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/du/feriados/feriados_novos_br.txt +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/futuro/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/futuro/contratos.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/futuro/di1.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/futuro/historico.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/futuro/intradia.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/fwd.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/interpolador.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/ipca/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/ipca/historico.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/ipca/projetado.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/py.typed +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/relogio.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/selic/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/selic/compromissada.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/selic/copom.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/selic/cpm.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/selic/probabilities.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/lft.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/ltn.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/ntnb1.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/ntnbprinc.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/_titulos/ntnc.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/benchmark.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/pre.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/rmd/__init__.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/rmd/_aba_1_3.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/rmd/_aba_2_1.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/rmd/_common.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/rmd/_download.py +0 -0
- {pyield-0.52.1 → pyield-0.52.2}/pyield/tpf/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pyield
|
|
3
|
-
Version: 0.52.
|
|
3
|
+
Version: 0.52.2
|
|
4
4
|
Summary: Polars-powered toolkit for Brazilian fixed income analysis
|
|
5
5
|
Keywords: fixed-income,brazil,finance,analysis,bonds
|
|
6
6
|
Author: Carlos Carvalho
|
|
@@ -120,7 +120,7 @@ documentação.
|
|
|
120
120
|
| `yd.ntnb1` | módulo | NTN-B1 | `datas_pagamento`, `fluxos_caixa`, `cotacao`, `pu`, `duration`, `dv01` |
|
|
121
121
|
| `yd.ntnbprinc` | módulo | NTN-B Principal | `pu`, `dv01` |
|
|
122
122
|
| `yd.ntnc` | módulo | NTN-C | `dados`, `datas_pagamento`, `fluxos_caixa`, `cotacao`, `pu`, `taxa`, `duration`, `duration_expr`, `dv01`, `dv01_expr` |
|
|
123
|
-
| `yd.ntnf` | módulo | NTN-F | `dados`, `vencimentos`, `datas_pagamento`, `fluxos_caixa`, `pu`, `taxa`, `taxas_zero`, `premio`, `premio_limpo`, `rentabilidade`, `rentabilidade_expr`, `duration`, `duration_expr`, `dv01`, `dv01_expr` |
|
|
123
|
+
| `yd.ntnf` | módulo | NTN-F | `dados`, `vencimentos`, `datas_pagamento`, `fluxos_caixa`, `pu`, `taxa`, `taxas_zero`, `premio`, `premio_limpo`, `premio_limpo_expr`, `rentabilidade`, `rentabilidade_expr`, `duration`, `duration_expr`, `dv01`, `dv01_expr` |
|
|
124
124
|
| `yd.selic` | módulo | Selic, COPOM e política monetária | `over`, `over_serie`, `meta`, `meta_serie`, `compromissadas`, `copom`, `cpm`, `probabilities` |
|
|
125
125
|
| `yd.ipca` | módulo | IPCA histórico e projetado | `indice`, `indices`, `indices_ultimos`, `taxa`, `taxas`, `taxas_ultimas`, `taxa_projetada` |
|
|
126
126
|
| `yd.ptax(data)` | função | PTAX para uma data | |
|
|
@@ -76,7 +76,7 @@ documentação.
|
|
|
76
76
|
| `yd.ntnb1` | módulo | NTN-B1 | `datas_pagamento`, `fluxos_caixa`, `cotacao`, `pu`, `duration`, `dv01` |
|
|
77
77
|
| `yd.ntnbprinc` | módulo | NTN-B Principal | `pu`, `dv01` |
|
|
78
78
|
| `yd.ntnc` | módulo | NTN-C | `dados`, `datas_pagamento`, `fluxos_caixa`, `cotacao`, `pu`, `taxa`, `duration`, `duration_expr`, `dv01`, `dv01_expr` |
|
|
79
|
-
| `yd.ntnf` | módulo | NTN-F | `dados`, `vencimentos`, `datas_pagamento`, `fluxos_caixa`, `pu`, `taxa`, `taxas_zero`, `premio`, `premio_limpo`, `rentabilidade`, `rentabilidade_expr`, `duration`, `duration_expr`, `dv01`, `dv01_expr` |
|
|
79
|
+
| `yd.ntnf` | módulo | NTN-F | `dados`, `vencimentos`, `datas_pagamento`, `fluxos_caixa`, `pu`, `taxa`, `taxas_zero`, `premio`, `premio_limpo`, `premio_limpo_expr`, `rentabilidade`, `rentabilidade_expr`, `duration`, `duration_expr`, `dv01`, `dv01_expr` |
|
|
80
80
|
| `yd.selic` | módulo | Selic, COPOM e política monetária | `over`, `over_serie`, `meta`, `meta_serie`, `compromissadas`, `copom`, `cpm`, `probabilities` |
|
|
81
81
|
| `yd.ipca` | módulo | IPCA histórico e projetado | `indice`, `indices`, `indices_ultimos`, `taxa`, `taxas`, `taxas_ultimas`, `taxa_projetada` |
|
|
82
82
|
| `yd.ptax(data)` | função | PTAX para uma data | |
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import datetime as dt
|
|
2
2
|
import math
|
|
3
|
-
from collections.abc import
|
|
3
|
+
from collections.abc import Sized
|
|
4
4
|
from typing import Any, TypeAlias, TypeGuard
|
|
5
5
|
|
|
6
6
|
import polars as pl
|
|
7
7
|
|
|
8
8
|
DateLike: TypeAlias = str | dt.datetime | dt.date
|
|
9
9
|
ArrayLike: TypeAlias = list[Any] | tuple[Any, ...] | pl.Series
|
|
10
|
-
DatesLike: TypeAlias =
|
|
10
|
+
DatesLike: TypeAlias = list[DateLike] | tuple[DateLike, ...] | pl.Series
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _is_empty(arg: Any) -> bool:
|
|
@@ -5,7 +5,7 @@ import polars as pl
|
|
|
5
5
|
|
|
6
6
|
import pyield._internal.converters as conversores
|
|
7
7
|
from pyield import du, fwd, interpolador
|
|
8
|
-
from pyield._internal.types import ArrayLike, DateLike, any_is_empty
|
|
8
|
+
from pyield._internal.types import ArrayLike, DateLike, DatesLike, any_is_empty
|
|
9
9
|
from pyield.tpf import utils
|
|
10
10
|
|
|
11
11
|
"""
|
|
@@ -367,7 +367,7 @@ def pu(
|
|
|
367
367
|
|
|
368
368
|
def _validar_entradas_taxas_zero(
|
|
369
369
|
data_liquidacao: DateLike,
|
|
370
|
-
vencimentos:
|
|
370
|
+
vencimentos: DatesLike,
|
|
371
371
|
taxas: ArrayLike,
|
|
372
372
|
) -> tuple[dt.date, pl.Series, pl.Series]:
|
|
373
373
|
# Processa e valida os dados de entrada
|
|
@@ -459,7 +459,7 @@ def _calcular_valor_presente_cupons(
|
|
|
459
459
|
|
|
460
460
|
def taxas_zero(
|
|
461
461
|
data_liquidacao: DateLike,
|
|
462
|
-
vencimentos:
|
|
462
|
+
vencimentos: DatesLike,
|
|
463
463
|
taxas: ArrayLike,
|
|
464
464
|
incluir_cupons: bool = False,
|
|
465
465
|
) -> pl.DataFrame:
|
|
@@ -471,7 +471,7 @@ def taxas_zero(
|
|
|
471
471
|
|
|
472
472
|
Args:
|
|
473
473
|
data_liquidacao (DateLike): Data de liquidação.
|
|
474
|
-
vencimentos (
|
|
474
|
+
vencimentos (DatesLike): Datas de vencimento dos títulos.
|
|
475
475
|
taxas (ArrayLike): TIRs correspondentes.
|
|
476
476
|
incluir_cupons (bool, optional): Se True, inclui datas intermediárias de cupom.
|
|
477
477
|
Padrão False.
|
|
@@ -586,9 +586,9 @@ def taxas_zero(
|
|
|
586
586
|
|
|
587
587
|
def implicitas( # noqa: PLR0913
|
|
588
588
|
data_liquidacao: DateLike,
|
|
589
|
-
vencimentos_tir:
|
|
589
|
+
vencimentos_tir: DatesLike,
|
|
590
590
|
taxas_tir: ArrayLike,
|
|
591
|
-
vencimentos_nominais:
|
|
591
|
+
vencimentos_nominais: DatesLike,
|
|
592
592
|
taxas_nominais: ArrayLike,
|
|
593
593
|
*,
|
|
594
594
|
extrapolar: bool = False,
|
|
@@ -601,12 +601,12 @@ def implicitas( # noqa: PLR0913
|
|
|
601
601
|
|
|
602
602
|
Args:
|
|
603
603
|
data_liquidacao (DateLike): Data de liquidação da operação.
|
|
604
|
-
vencimentos_tir (
|
|
604
|
+
vencimentos_tir (DatesLike): Vencimentos das NTN-B usadas como vértices
|
|
605
605
|
da curva de TIR real.
|
|
606
606
|
taxas_tir (ArrayLike): TIRs reais observadas das NTN-B correspondentes
|
|
607
607
|
aos vencimentos informados. A função calcula a curva zero real a
|
|
608
608
|
partir dessas taxas.
|
|
609
|
-
vencimentos_nominais (
|
|
609
|
+
vencimentos_nominais (DatesLike): Vencimentos da curva nominal de
|
|
610
610
|
referência.
|
|
611
611
|
taxas_nominais (ArrayLike): Taxas da curva nominal de referência. Pode
|
|
612
612
|
representar DI Futuro, curva soberana prefixada ou outra curva
|
|
@@ -709,9 +709,9 @@ def implicitas( # noqa: PLR0913
|
|
|
709
709
|
|
|
710
710
|
def curva( # noqa: PLR0913
|
|
711
711
|
data_liquidacao: DateLike,
|
|
712
|
-
vencimentos_tir:
|
|
712
|
+
vencimentos_tir: DatesLike,
|
|
713
713
|
taxas_tir: ArrayLike,
|
|
714
|
-
vencimentos_nominais:
|
|
714
|
+
vencimentos_nominais: DatesLike,
|
|
715
715
|
taxas_nominais: ArrayLike,
|
|
716
716
|
*,
|
|
717
717
|
extrapolar: bool = False,
|
|
@@ -725,12 +725,12 @@ def curva( # noqa: PLR0913
|
|
|
725
725
|
|
|
726
726
|
Args:
|
|
727
727
|
data_liquidacao (DateLike): Data de liquidação da operação.
|
|
728
|
-
vencimentos_tir (
|
|
728
|
+
vencimentos_tir (DatesLike): Vencimentos das NTN-B usadas como vértices
|
|
729
729
|
da curva de TIR real.
|
|
730
730
|
taxas_tir (ArrayLike): TIRs reais observadas das NTN-B correspondentes
|
|
731
731
|
aos vencimentos informados. A função calcula a curva zero real a
|
|
732
732
|
partir dessas taxas.
|
|
733
|
-
vencimentos_nominais (
|
|
733
|
+
vencimentos_nominais (DatesLike): Vencimentos da curva nominal de
|
|
734
734
|
referência.
|
|
735
735
|
taxas_nominais (ArrayLike): Taxas da curva nominal de referência. Pode
|
|
736
736
|
representar DI Futuro, curva soberana prefixada ou outra curva
|
|
@@ -7,7 +7,7 @@ import polars as pl
|
|
|
7
7
|
import pyield._internal.converters as cv
|
|
8
8
|
import pyield.interpolador as ip
|
|
9
9
|
from pyield import du
|
|
10
|
-
from pyield._internal.types import ArrayLike, DateLike, any_is_empty
|
|
10
|
+
from pyield._internal.types import ArrayLike, DateLike, DatesLike, any_is_empty
|
|
11
11
|
from pyield.futuro import di1
|
|
12
12
|
from pyield.tpf import utils
|
|
13
13
|
|
|
@@ -96,15 +96,12 @@ def dados(data: DateLike) -> pl.DataFrame:
|
|
|
96
96
|
# Calcula prêmios e rentabilidade para cada vencimento
|
|
97
97
|
df = df.with_columns(
|
|
98
98
|
premio=pl.col("taxa_indicativa") - pl.col("taxa_di"),
|
|
99
|
-
premio_limpo=
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
taxas_di=df_di["taxa_ajuste"],
|
|
106
|
-
),
|
|
107
|
-
return_dtype=pl.Float64,
|
|
99
|
+
premio_limpo=premio_limpo_expr(
|
|
100
|
+
data_liquidacao=data,
|
|
101
|
+
data_vencimento="data_vencimento",
|
|
102
|
+
taxa_ntnf="taxa_indicativa",
|
|
103
|
+
vencimentos_di=df_di["data_vencimento"],
|
|
104
|
+
taxas_di=df_di["taxa_ajuste"],
|
|
108
105
|
),
|
|
109
106
|
rentabilidade=rentabilidade_expr(
|
|
110
107
|
data_liquidacao=data,
|
|
@@ -343,9 +340,9 @@ def pu(
|
|
|
343
340
|
|
|
344
341
|
def taxas_zero( # noqa
|
|
345
342
|
data_liquidacao: DateLike,
|
|
346
|
-
vencimentos_ltn:
|
|
343
|
+
vencimentos_ltn: DatesLike,
|
|
347
344
|
taxas_ltn: ArrayLike,
|
|
348
|
-
vencimentos_ntnf:
|
|
345
|
+
vencimentos_ntnf: DatesLike,
|
|
349
346
|
taxas_ntnf: ArrayLike,
|
|
350
347
|
incluir_cupons: bool = False,
|
|
351
348
|
) -> pl.DataFrame:
|
|
@@ -360,11 +357,11 @@ def taxas_zero( # noqa
|
|
|
360
357
|
|
|
361
358
|
Args:
|
|
362
359
|
data_liquidacao (DateLike): Data de liquidação para o cálculo.
|
|
363
|
-
vencimentos_ltn (
|
|
360
|
+
vencimentos_ltn (DatesLike): Datas de vencimento das LTNs usadas como
|
|
364
361
|
vértices prefixados zero cupom.
|
|
365
362
|
taxas_ltn (ArrayLike): Taxas das LTNs. Como a LTN é zero cupom, essas
|
|
366
363
|
taxas são usadas diretamente como taxas zero no bootstrap.
|
|
367
|
-
vencimentos_ntnf (
|
|
364
|
+
vencimentos_ntnf (DatesLike): Datas de vencimento das NTN-F usadas no
|
|
368
365
|
bootstrap.
|
|
369
366
|
taxas_ntnf (ArrayLike): TIRs das NTN-F correspondentes aos vencimentos
|
|
370
367
|
informados.
|
|
@@ -524,7 +521,7 @@ def rentabilidade( # noqa
|
|
|
524
521
|
data_liquidacao: DateLike,
|
|
525
522
|
data_vencimento: DateLike,
|
|
526
523
|
taxa_ntnf: float,
|
|
527
|
-
vencimentos_di:
|
|
524
|
+
vencimentos_di: DatesLike,
|
|
528
525
|
taxas_di: ArrayLike,
|
|
529
526
|
) -> float:
|
|
530
527
|
"""
|
|
@@ -539,7 +536,7 @@ def rentabilidade( # noqa
|
|
|
539
536
|
data_liquidacao (DateLike): Data de liquidação para o cálculo.
|
|
540
537
|
data_vencimento (DateLike): Data de vencimento da NTN-F.
|
|
541
538
|
taxa_ntnf (float): TIR da NTN-F.
|
|
542
|
-
vencimentos_di (
|
|
539
|
+
vencimentos_di (DatesLike): Datas de vencimento da curva DI.
|
|
543
540
|
taxas_di (ArrayLike): Taxas DI correspondentes aos vencimentos.
|
|
544
541
|
|
|
545
542
|
Returns:
|
|
@@ -629,7 +626,7 @@ def rentabilidade_expr(
|
|
|
629
626
|
data_liquidacao: DateLike,
|
|
630
627
|
data_vencimento: pl.Expr | str,
|
|
631
628
|
taxa_ntnf: pl.Expr | str,
|
|
632
|
-
vencimentos_di:
|
|
629
|
+
vencimentos_di: DatesLike,
|
|
633
630
|
taxas_di: ArrayLike,
|
|
634
631
|
) -> pl.Expr:
|
|
635
632
|
"""Cria expressão Polars para a rentabilidade da NTN-F sobre a curva DI.
|
|
@@ -717,7 +714,7 @@ def premio_limpo( # noqa
|
|
|
717
714
|
data_liquidacao: DateLike,
|
|
718
715
|
data_vencimento: DateLike,
|
|
719
716
|
taxa_ntnf: float,
|
|
720
|
-
vencimentos_di:
|
|
717
|
+
vencimentos_di: DatesLike,
|
|
721
718
|
taxas_di: ArrayLike,
|
|
722
719
|
) -> float:
|
|
723
720
|
"""
|
|
@@ -731,7 +728,7 @@ def premio_limpo( # noqa
|
|
|
731
728
|
data_liquidacao (DateLike): Data de liquidação para o cálculo.
|
|
732
729
|
data_vencimento (DateLike): Data de vencimento do título.
|
|
733
730
|
taxa_ntnf (float): TIR do título.
|
|
734
|
-
vencimentos_di (
|
|
731
|
+
vencimentos_di (DatesLike): Vencimentos da curva DI.
|
|
735
732
|
taxas_di (ArrayLike): Série de taxas DI.
|
|
736
733
|
|
|
737
734
|
Returns:
|
|
@@ -796,6 +793,45 @@ def premio_limpo( # noqa
|
|
|
796
793
|
return utils.encontrar_raiz(diferenca_preco)
|
|
797
794
|
|
|
798
795
|
|
|
796
|
+
def premio_limpo_expr(
|
|
797
|
+
data_liquidacao: DateLike,
|
|
798
|
+
data_vencimento: pl.Expr | str,
|
|
799
|
+
taxa_ntnf: pl.Expr | str,
|
|
800
|
+
vencimentos_di: DatesLike,
|
|
801
|
+
taxas_di: ArrayLike,
|
|
802
|
+
) -> pl.Expr:
|
|
803
|
+
"""Cria expressão Polars para o prêmio limpo da NTN-F sobre a curva DI.
|
|
804
|
+
|
|
805
|
+
O cálculo é aplicado linha a linha porque o prêmio limpo depende dos fluxos
|
|
806
|
+
de caixa do título, da interpolação da curva DI e da resolução de raiz.
|
|
807
|
+
|
|
808
|
+
Args:
|
|
809
|
+
data_liquidacao: Data de liquidação para o cálculo.
|
|
810
|
+
data_vencimento: Nome de coluna ou expressão Polars com a data de
|
|
811
|
+
vencimento da NTN-F.
|
|
812
|
+
taxa_ntnf: Nome de coluna ou expressão Polars com a TIR da NTN-F.
|
|
813
|
+
vencimentos_di: Datas de vencimento da curva DI.
|
|
814
|
+
taxas_di: Taxas DI correspondentes aos vencimentos.
|
|
815
|
+
|
|
816
|
+
Returns:
|
|
817
|
+
pl.Expr: Expressão sem alias com o prêmio limpo da NTN-F sobre a curva
|
|
818
|
+
DI.
|
|
819
|
+
"""
|
|
820
|
+
return pl.struct(
|
|
821
|
+
utils.coluna_ou_expr(data_vencimento, "data_vencimento"),
|
|
822
|
+
utils.coluna_ou_expr(taxa_ntnf, "taxa_ntnf"),
|
|
823
|
+
).map_elements(
|
|
824
|
+
lambda row: premio_limpo(
|
|
825
|
+
data_liquidacao=data_liquidacao,
|
|
826
|
+
data_vencimento=row["data_vencimento"],
|
|
827
|
+
taxa_ntnf=row["taxa_ntnf"],
|
|
828
|
+
vencimentos_di=vencimentos_di,
|
|
829
|
+
taxas_di=taxas_di,
|
|
830
|
+
),
|
|
831
|
+
return_dtype=pl.Float64,
|
|
832
|
+
)
|
|
833
|
+
|
|
834
|
+
|
|
799
835
|
def duration(
|
|
800
836
|
data_liquidacao: DateLike,
|
|
801
837
|
data_vencimento: DateLike,
|
|
@@ -24,6 +24,7 @@ DEFINICOES_COLUNAS = [
|
|
|
24
24
|
("liquidacao_segunda_volta", "data_liquidacao_2v", pl.String),
|
|
25
25
|
("numero_edital", "numero_edital", pl.Int64),
|
|
26
26
|
("tipo_leilao", "tipo_leilao", pl.String),
|
|
27
|
+
("tipo_ocorrencia", "tipo_ocorrencia", pl.String),
|
|
27
28
|
("titulo", "titulo", pl.String),
|
|
28
29
|
("benchmark", "benchmark", pl.String),
|
|
29
30
|
("vencimento", "data_vencimento", pl.String),
|
|
@@ -31,6 +32,8 @@ DEFINICOES_COLUNAS = [
|
|
|
31
32
|
("quantidade_aceita", "quantidade_aceita_1v", pl.Int64),
|
|
32
33
|
("oferta_segunda_volta", "quantidade_ofertada_2v", pl.Int64),
|
|
33
34
|
("quantidade_aceita_segunda_volta", "quantidade_aceita_2v", pl.Int64),
|
|
35
|
+
("quantidade_liquidada", "quantidade_liquidada_1v", pl.Int64),
|
|
36
|
+
("quantidade_liquidada_segunda_volta", "quantidade_liquidada_2v", pl.Int64),
|
|
34
37
|
("financeiro_aceito", "financeiro_aceito_1v", pl.Float64),
|
|
35
38
|
("financeiro_aceito_segunda_volta", "financeiro_aceito_2v", pl.Float64),
|
|
36
39
|
("quantidade_bcb", "quantidade_bcb", pl.Int64),
|
|
@@ -50,6 +53,7 @@ ORDEM_FINAL_COLUNAS = [
|
|
|
50
53
|
"data_liquidacao_2v",
|
|
51
54
|
"numero_edital",
|
|
52
55
|
"tipo_leilao",
|
|
56
|
+
"tipo_ocorrencia",
|
|
53
57
|
"titulo",
|
|
54
58
|
"benchmark",
|
|
55
59
|
"data_vencimento",
|
|
@@ -62,6 +66,8 @@ ORDEM_FINAL_COLUNAS = [
|
|
|
62
66
|
"quantidade_aceita_1v",
|
|
63
67
|
"quantidade_aceita_2v",
|
|
64
68
|
"quantidade_aceita_total",
|
|
69
|
+
"quantidade_liquidada_1v",
|
|
70
|
+
"quantidade_liquidada_2v",
|
|
65
71
|
"financeiro_ofertado_1v",
|
|
66
72
|
"financeiro_ofertado_2v",
|
|
67
73
|
"financeiro_ofertado_total",
|
|
@@ -155,7 +161,9 @@ def _transformar_dados_brutos(dados_brutos: list[dict]) -> pl.DataFrame:
|
|
|
155
161
|
"liquidacao_segunda_volta": pl.String,
|
|
156
162
|
"oferta_segunda_volta": pl.Int64,
|
|
157
163
|
"financeiro_aceito_segunda_volta": pl.Float64,
|
|
164
|
+
"tipo_ocorrencia": pl.String,
|
|
158
165
|
"quantidade_liquidada": pl.Int64,
|
|
166
|
+
"quantidade_liquidada_segunda_volta": pl.Int64,
|
|
159
167
|
"quantidade_aceita_segunda_volta": pl.Int64,
|
|
160
168
|
}
|
|
161
169
|
|
|
@@ -371,6 +379,7 @@ def leiloes(
|
|
|
371
379
|
* data_liquidacao_2v (Date): data de liquidação financeira da 2ª volta.
|
|
372
380
|
* numero_edital (Int64): número do edital do leilão.
|
|
373
381
|
* tipo_leilao (String): tipo da operação.
|
|
382
|
+
* tipo_ocorrencia (String): classificação da ocorrência do leilão.
|
|
374
383
|
* titulo (String): código do título público leiloado.
|
|
375
384
|
* benchmark (String): descrição de referência do título.
|
|
376
385
|
* data_vencimento (Date): data de vencimento do título.
|
|
@@ -383,6 +392,8 @@ def leiloes(
|
|
|
383
392
|
* quantidade_aceita_1v (Int64): quantidade aceita na 1ª volta.
|
|
384
393
|
* quantidade_aceita_2v (Int64): quantidade aceita na 2ª volta.
|
|
385
394
|
* quantidade_aceita_total (Int64): quantidade aceita total.
|
|
395
|
+
* quantidade_liquidada_1v (Int64): quantidade liquidada na 1ª volta.
|
|
396
|
+
* quantidade_liquidada_2v (Int64): quantidade liquidada na 2ª volta.
|
|
386
397
|
* financeiro_ofertado_1v (Float64): financeiro ofertado na 1ª volta.
|
|
387
398
|
* financeiro_ofertado_2v (Float64): financeiro ofertado na 2ª volta.
|
|
388
399
|
* financeiro_ofertado_total (Float64): financeiro ofertado total.
|
|
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
|
|
File without changes
|
|
File without changes
|