Interpolator
Classe interpoladora para interpolação de taxas de juros.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
method
|
Literal['flat_forward', 'linear']
|
Método de interpolação a usar. Opções: "flat_forward" ou "linear". |
required |
known_bdays
|
ArrayLike
|
Sequência de dias úteis (DU) conhecidos. |
required |
known_rates
|
ArrayLike
|
Sequência de taxas de juros conhecidas. |
required |
extrapolate
|
bool
|
Se True, extrapola além dos dias úteis conhecidos usando a última taxa disponível. Padrão: False, retornando NaN para valores fora do intervalo. |
False
|
Raises:
| Type | Description |
|---|---|
ValueError
|
Se known_bdays e known_rates não tiverem o mesmo tamanho. |
ValueError
|
Se o método de interpolação não for reconhecido. |
Notes
- Esta classe usa convenção de 252 dias úteis por ano.
- Na API pública, os parâmetros mantêm o nome
bday/bdayspor compatibilidade, mas o conceito de negócio é DU (dias úteis). - Instâncias desta classe são imutáveis. Para modificar as configurações de interpolação, crie uma nova instância.
Examples:
Interpolação linear:
Interpolação flat forward:
Interpolação de array (polars mostra 6 casas decimais por padrão):
>>> fforward([15, 45, 75, 100])
shape: (4,)
Series: 'interpolated_rate' [f64]
[
0.045
0.048331
0.052997
null
]
Se extrapolação estiver habilitada, a última taxa conhecida é usada:
>>> fforward_extrap = Interpolator("flat_forward", dus, txs, extrapolate=True)
>>> print(fforward_extrap(100))
0.055
Source code in pyield/interpolator.py
linear(bday, k)
Realiza interpolação de taxa de juros usando o método linear.
A taxa interpolada é dada pela fórmula: y = y1 + (x - x1) * (y2 - y1) / (x2 - x1)
Onde: - (x, y) é o ponto a ser interpolado (du, tx_interpolada). - (x1, y1) é o ponto conhecido anterior (du_j, tx_j). - (x2, y2) é o próximo ponto conhecido (du_k, tx_k).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bday
|
int
|
Número de dias úteis (DU) para os quais a taxa será interpolada. |
required |
k
|
int
|
O índice tal que dus[k-1] < bday < dus[k]. |
required |
Returns:
| Type | Description |
|---|---|
float
|
Taxa de juros interpolada em forma decimal. |
Source code in pyield/interpolator.py
flat_forward(bday, k)
Realiza interpolação de taxa de juros usando o método flat forward.
Este método calcula a taxa de juros interpolada para um dado número de
dias úteis (bday) usando a metodologia flat forward, baseada em dois
pontos conhecidos: o ponto atual (k) e o ponto anterior (j).
Assumindo taxas de juros em forma decimal, a taxa interpolada é calculada. O tempo é medido em anos baseado em 252 dias úteis por ano.
Definindo os fatores simples:
- fⱼ = 1 + txⱼ
- fₖ = 1 + txₖ
A taxa interpolada é dada pela fórmula:
Onde os fatores usados na fórmula são definidos como:
- Fⱼ = fⱼ^auⱼ é o fator acumulado no ponto j.
- Fₖ = fₖ^auₖ é o fator acumulado no ponto k.
- fₜ = (au - auⱼ)/(auₖ - auⱼ) é o fator de tempo.
E as variáveis são definidas como:
- au = du/252 é o tempo em anos para o ponto interpolado. bday
é o número de dias úteis para o ponto interpolado (entrada deste método).
- k é o índice do ponto conhecido atual.
- auₖ = duₖ/252 é o tempo em anos do ponto k.
- txₖ é a taxa de juros (decimal) no ponto k.
- j é o índice do ponto conhecido anterior (k - 1).
- auⱼ = duⱼ/252 é o tempo em anos do ponto j.
- txⱼ é a taxa de juros (decimal) no ponto j.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bday
|
int
|
Número de dias úteis (DU) para os quais a taxa será interpolada. |
required |
k
|
int
|
Índice tal que |
required |
Returns:
| Type | Description |
|---|---|
float
|
Taxa de juros interpolada em forma decimal. |
Source code in pyield/interpolator.py
interpolate(bdays)
Interpola taxas para dia(s) útil(eis) fornecido(s).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bdays
|
int | ArrayLike
|
DU(s) para interpolação. Aceita int ou ArrayLike. |
required |
Returns:
| Type | Description |
|---|---|
float | Series
|
Taxa(s) interpolada(s). Float para entrada escalar, pl.Series para array. |