# pip install python-bcb
from bcb import sgs

# Existe restrição da API para baixar séries longas
# 2) Janela limitada (até 10 anos)

# Buscando a série 11 (Selic)
selic_10y = sgs.get(
    {'selic': 11}, 
    start='2016-03-19', 
    end='2026-03-18'
)
# Buscando a série 12 (CDI)
cdi_10y = sgs.get(
    {'cdi': 12}, 
    start='2016-03-19', 
    end='2026-03-18'
)

# Exibindo as primeiras linhas para conferência
print("Selic:")
## Selic:
print(selic_10y.head())
##                selic
## Date                
## 2016-03-21  0.052531
## 2016-03-22  0.052531
## 2016-03-23  0.052531
## 2016-03-24  0.052531
## 2016-03-28  0.052531
print("\nCDI:")
## 
## CDI:
print(cdi_10y.head())
##                  cdi
## Date                
## 2016-03-21  0.052461
## 2016-03-22  0.052461
## 2016-03-23  0.052461
## 2016-03-24  0.052461
## 2016-03-28  0.052461
# plotar com matplotlib
import matplotlib.pyplot as plt
# Cria uma figura com 2 gráficos (2 linhas, 1 coluna)
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))

# Gráfico 1: Selic
ax1.plot(selic_10y.index, selic_10y['selic'], color='blue', label='Selic')
ax1.set_title('Histórico da Taxa Selic (10 anos)')
ax1.set_ylabel('Taxa (%)')
ax1.grid(True) # Adiciona linhas de grade para facilitar a leitura

# Gráfico 2: CDI
ax2.plot(cdi_10y.index, cdi_10y['cdi'], color='green', label='CDI')
ax2.set_title('Histórico da Taxa CDI (10 anos)')
ax2.set_ylabel('Taxa (%)')
ax2.set_xlabel('Ano')
ax2.grid(True)
# Ajusta o espaçamento para os gráficos não ficarem colados
plt.tight_layout()

# SALVANDO A IMAGEM AQUI (Antes do show!) 
# Usamos o 'r' antes das aspas para o Python ler as barras 
# invertidas do Windows corretamente 
caminho_arquivo = r'D:\disciplinas\pratica extensionista\2026_1\atividades\juros_py\grafico_selic_cdi.png' 
# 
plt.savefig(caminho_arquivo, dpi=300, bbox_inches='tight') 
print(f"Gráfico salvo com sucesso em: {caminho_arquivo}")
## Gráfico salvo com sucesso em: D:\disciplinas\pratica extensionista\2026_1\atividades\juros_py\grafico_selic_cdi.png
# Exibe o gráfico
plt.show()