Coletar dados de curvas de juros (ettj).
Project description
pyettj é uma biblioteca Python para capturar dados públicos das curvas de juros, curva a termo ou estrutura a termo da taxa de juros (ETTJ) da B3 (Brasil, Bolsa e Balcão).
Instalação
Basta acionar o comando abaixo:
pip install pyettj
Exemplo de Uso
Para caputar todos os dados disponíveis, basta informar a data:
import pyettj.ettj as ettj
data = '18/05/2021'
ettj_dataframe = ettj.get_ettj(data)
Caso deseje apenas uma curva específica, basta informá-la:
import pyettj.ettj as ettj
data = '18/05/2021'
ettj_dataframe = ettj.get_ettj(data, curva="PRE")
Se for necessário usar proxy, passe a informação à função:
Caso deseje apenas uma curva específica, basta informá-la:
import pyettj.ettj as ettj
import getpass
USER = getpass.getuser()
PWD = getpass.getpass("Senha de rede: ")
PROXY = "servidor"
PORTA = 4300
proxies = {"http":f'http://{USER}:{PWD}@{PROXY}:{PORTA}',
"https":f'https://{USER}:{PWD}@{PROXY}{PORTA}'}
ettj_dataframe = ettj.get_ettj(data, curva="PRE", proxies=proxies)
E para plotar o gráfico da curva, invoque a função de plotagem da biblioteca:
curva = "DI x pré 252"
ettj.plot_ettj(ettj_dataframe, curva, data)
Para coletar várias datas, chame a função listar_dias_uteis
informando as datas iniciais e finais. Assim, ela retornará somente os dias úteis neste intervalo.
import pandas as pd
de = '13/05/2021'
ate ='18/05/2021'
datas = ettj.listar_dias_uteis(de, ate)
todas_datas = pd.DataFrame()
for dat in datas:
ano, mes, dia = dat.split("-")
data = "/".join([dia, mes, ano])
dados = ettj.get_ettj(data)
todas_datas=pd.concat([dados, todas_datas])
A variável todas_datas
possuirá todas as curvas em cada data do intervalo. Para identificar as datas, basta o comando:
todas_datas.Data.unique().tolist()
Você pode obter dados os dados da ANBIMA - Estrutura a Termo das Taxas de Juros Estimada disponível em: https://www.anbima.com.br/informacoes/est-termo/CZ.asp
import pyettj.modelo_ettj as modelo_ettj
parametros_curva, ettj, taxa, erros = modelo_ettj.get_ettj_anbima("15/09/2022")
A partir dos parâmetros estimados pela ANBIMA, você pode obter usar a equação de Svensson:
curva = parametros_curva.loc["PREFIXADOS", :].str.replace(",",".").astype(float)
beta1, beta2, beta3, beta4 = curva[:4]
lambda1, lambda2 = curva[4:]
t = 21/252 #em anos
taxa = modelo_ettj.svensson(beta1, beta2, beta3, beta4, lambda1, lambda2, t)
print(taxa)
Para coletar as taxas em diversas maturidades:
maturidades = [1,21,42,63,126,252,504,1008,1260,1890,2520]
taxas = []
for x in maturidades:
taxa = modelo_ettj.svensson(beta1, beta2, beta3, beta4, lambda1, lambda2, x/252)
taxas.append(taxa)
pd.DataFrame(np.array([taxas]), columns=[x/252 for x in maturidades]).T.multiply(100).plot()
Caso você não possua os parâmetros da curva Svensson, pode-se estimá-los conforme script a seguir:
data = '20/03/2023'
ettj_dataframe = ettj.get_ettj(data, curva="PRE")
t = ettj_dataframe[ettj_dataframe.columns[0]].divide(252).values
y = ettj_dataframe[ettj_dataframe.columns[1]].divide(100).values
beta1, beta2, beta3, beta4, lambda1, lambda2 = modelo_ettj.calibrar_curva_svensson(t, y)
maturidades = [1,21,42,63,126,252,504,1008,1260,1890,2520]
taxas = []
for x in maturidades:
taxa = modelo_ettj.svensson(beta1, beta2, beta3, beta4, lambda1, lambda2, x/252)
taxas.append(taxa)
ettj_pre = pd.DataFrame(np.array([taxas]), columns=[x/252 for x in maturidades]).T.multiply(100)
plt.figure(figsize=(10,5))
plt.plot(ettj_pre)
plt.title("ETTJ PREFIXADA")
plt.show()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyettj-0.3.1.tar.gz
.
File metadata
- Download URL: pyettj-0.3.1.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b9532b5396a05b3e5e1f8e11c5ceda539193128609d4f1a49c87bdcfa55f7a4 |
|
MD5 | 728dec024d2ff534dd71748f5d257bc4 |
|
BLAKE2b-256 | 206cab7e82b77de1d2c3980dbf48dfc67fae425c9350f37250b1bd1cff9e54e5 |
File details
Details for the file pyettj-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: pyettj-0.3.1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3baf0645bbbf05c590cf04f6256c49834ca2d0eb7231342116d2da9f455136de |
|
MD5 | 913855cf055852b0435c1cf7911e4732 |
|
BLAKE2b-256 | 81ad8ef184098b6f5549ced5e730679d5af498c7102edafb5cdacd113c68d5bb |