Pular para conteúdo

Anbima

fetch_tpf(date)

Busca os dados do mercado secundário de TPF direto da fonte ANBIMA.

Retorna todas as colunas publicadas pela ANBIMA, sem cache e sem filtro de colunas. Indicado para uso em jobs e pipelines de dados.

Parameters:

Name Type Description Default
date DateLike

Data de referência (ex: '2024-06-14').

required

Returns:

Type Description
DataFrame

pl.DataFrame: DataFrame com todas as colunas da ANBIMA. Retorna DataFrame vazio se não houver dados.

Source code in pyield/anbima/tpf.py
def fetch_tpf(
    date: DateLike,
) -> pl.DataFrame:
    """Busca os dados do mercado secundário de TPF direto da fonte ANBIMA.

    Retorna todas as colunas publicadas pela ANBIMA, sem cache e sem
    filtro de colunas. Indicado para uso em jobs e pipelines de dados.

    Args:
        date (DateLike): Data de referência (ex: '2024-06-14').

    Returns:
        pl.DataFrame: DataFrame com todas as colunas da ANBIMA.
            Retorna DataFrame vazio se não houver dados.
    """
    date = converter_datas(date)

    if not data_referencia_valida(date):
        return pl.DataFrame()

    df = _buscar_dados_tpf(date)
    if df.is_empty():
        return pl.DataFrame()

    return df.sort("data_referencia", "titulo", "data_vencimento")

intraday_ettj()

Obtém e processa a curva de juros intradiária da ANBIMA.

Busca os dados mais recentes da curva de juros intradiária publicada pela ANBIMA, contendo taxas reais (indexadas ao IPCA), taxas nominais e inflação implícita em diversos vértices. A curva é publicada por volta das 12h30 BRT.

Returns:

Type Description
DataFrame

pl.DataFrame: DataFrame com os dados intradiários da ETTJ.

Output Columns
  • data_referencia (Date): data de referência da curva de juros.
  • vertice (Int64): vértice em dias úteis.
  • taxa_nominal (Float64): taxa de juros nominal zero-cupom.
  • taxa_real (Float64): taxa de juros real zero-cupom (indexada ao IPCA).
  • inflacao_implicita (Float64): taxa de inflação implícita (breakeven).
Notes

Todas as taxas são expressas em formato decimal (ex: 0.12 para 12%).

Source code in pyield/anbima/ettj_intraday.py
def intraday_ettj() -> pl.DataFrame:
    """Obtém e processa a curva de juros intradiária da ANBIMA.

    Busca os dados mais recentes da curva de juros intradiária publicada pela
    ANBIMA, contendo taxas reais (indexadas ao IPCA), taxas nominais e inflação
    implícita em diversos vértices. A curva é publicada por volta das 12h30 BRT.

    Returns:
        pl.DataFrame: DataFrame com os dados intradiários da ETTJ.

    Output Columns:
        - data_referencia (Date): data de referência da curva de juros.
        - vertice (Int64): vértice em dias úteis.
        - taxa_nominal (Float64): taxa de juros nominal zero-cupom.
        - taxa_real (Float64): taxa de juros real zero-cupom (indexada ao IPCA).
        - inflacao_implicita (Float64): taxa de inflação implícita (breakeven).

    Notes:
        Todas as taxas são expressas em formato decimal (ex: 0.12 para 12%).
    """
    texto_api = _buscar_texto_intraday()

    data_ref, tabela_pre, tabela_ipca = _extrair_data_e_tabelas(texto_api)

    df_pre = _parsear_tabela_intraday(tabela_pre, "taxa_nominal")
    df_ipca = _parsear_tabela_intraday(tabela_ipca, "taxa_real")
    expr_inflacao_impl = (pl.col("taxa_nominal") + 1) / (pl.col("taxa_real") + 1) - 1
    df = df_pre.join(df_ipca, on="vertice", how="right").with_columns(
        data_referencia=data_ref,
        inflacao_implicita=expr_inflacao_impl.round(6),
    )
    return df.select(
        "data_referencia", "vertice", "taxa_nominal", "taxa_real", "inflacao_implicita"
    )

last_ettj()

Obtém e processa a última curva de juros (ETTJ) publicada pela ANBIMA.

Busca os dados mais recentes da curva de juros de fechamento publicada pela ANBIMA, contendo taxas reais (indexadas ao IPCA), taxas nominais e inflação implícita em diversos vértices.

Returns:

Type Description
DataFrame

pl.DataFrame: DataFrame com os dados da ETTJ de fechamento.

Output Columns
  • data_referencia (Date): data de referência da curva de juros.
  • vertice (Int64): vértice em dias úteis.
  • taxa_nominal (Float64): taxa de juros nominal zero-cupom.
  • taxa_real (Float64): taxa de juros real zero-cupom (indexada ao IPCA).
  • inflacao_implicita (Float64): taxa de inflação implícita (breakeven).
Notes

Todas as taxas são expressas em formato decimal (ex: 0.12 para 12%).

Source code in pyield/anbima/ettj_last.py
def last_ettj() -> pl.DataFrame:
    """Obtém e processa a última curva de juros (ETTJ) publicada pela ANBIMA.

    Busca os dados mais recentes da curva de juros de fechamento publicada pela
    ANBIMA, contendo taxas reais (indexadas ao IPCA), taxas nominais e inflação
    implícita em diversos vértices.

    Returns:
        pl.DataFrame: DataFrame com os dados da ETTJ de fechamento.

    Output Columns:
        - data_referencia (Date): data de referência da curva de juros.
        - vertice (Int64): vértice em dias úteis.
        - taxa_nominal (Float64): taxa de juros nominal zero-cupom.
        - taxa_real (Float64): taxa de juros real zero-cupom (indexada ao IPCA).
        - inflacao_implicita (Float64): taxa de inflação implícita (breakeven).

    Notes:
        Todas as taxas são expressas em formato decimal (ex: 0.12 para 12%).
    """
    texto = _buscar_texto_ultima_ettj()
    data_ref, tabela = _extrair_data_e_tabela(texto)
    return _processar_tabela(tabela, data_ref)

last_ima(ima_type=None)

Obtém os últimos dados de composição de carteira IMA disponíveis na ANBIMA.

Busca e processa os dados do arquivo IMA completo publicado pela ANBIMA, retornando um DataFrame estruturado.

Parameters:

Name Type Description Default
ima_type str

Tipo de índice IMA para filtrar os dados. Se None, retorna todos os índices. Padrão é None.

None

Returns:

Type Description
DataFrame

pl.DataFrame: DataFrame com os dados do IMA.

Output Columns
  • data_referencia (Date): data de referência.
  • indice (String): índice IMA (ex: 'IMA-B', 'IRF-M').
  • titulo (String): título (ex: 'LTN', 'NTN-B').
  • data_vencimento (Date): data de vencimento do título.
  • codigo_selic (Int64): código do título no sistema SELIC.
  • isin (String): código ISIN.
  • dias_uteis (Int64): dias úteis até o vencimento.
  • duration (Float64): duration do título em anos úteis (252 d.u./ano).
  • taxa_indicativa (Float64): taxa indicativa em decimal (ex: 0.10 para 10%).
  • pu (Float64): preço unitário (PU) em R$.
  • pu_juros (Float64): PU de juros em R$.
  • dv01 (Float64): DV01 em R$.
  • pmr (Float64): prazo médio de repactuação.
  • peso (Float64): peso do título no índice (%).
  • convexidade (Float64): convexidade do título.
  • quantidade_teorica (Float64): quantidade teórica (em 1.000 títulos).
  • operacoes (Int64): número de operações.
  • quantidade_negociada (Int64): quantidade negociada (unidades).
  • valor_negociado (Int64): valor negociado em R$.
  • dv01_mercado (Int64): DV01 de mercado em R$.
  • quantidade_mercado (Int64): quantidade em carteira (unidades).
  • valor_mercado (Int64): valor de mercado em R$.

Examples:

>>> yd.anbima.last_ima("IMA-B")
Source code in pyield/anbima/ima.py
def last_ima(ima_type: TiposIMA | None = None) -> pl.DataFrame:
    """Obtém os últimos dados de composição de carteira IMA disponíveis na ANBIMA.

    Busca e processa os dados do arquivo IMA completo publicado pela ANBIMA,
    retornando um DataFrame estruturado.

    Args:
        ima_type (str, optional): Tipo de índice IMA para filtrar os dados.
            Se None, retorna todos os índices. Padrão é None.

    Returns:
        pl.DataFrame: DataFrame com os dados do IMA.

    Output Columns:
        - data_referencia (Date): data de referência.
        - indice (String): índice IMA (ex: 'IMA-B', 'IRF-M').
        - titulo (String): título (ex: 'LTN', 'NTN-B').
        - data_vencimento (Date): data de vencimento do título.
        - codigo_selic (Int64): código do título no sistema SELIC.
        - isin (String): código ISIN.
        - dias_uteis (Int64): dias úteis até o vencimento.
        - duration (Float64): duration do título em anos úteis (252 d.u./ano).
        - taxa_indicativa (Float64): taxa indicativa em decimal (ex: 0.10 para 10%).
        - pu (Float64): preço unitário (PU) em R$.
        - pu_juros (Float64): PU de juros em R$.
        - dv01 (Float64): DV01 em R$.
        - pmr (Float64): prazo médio de repactuação.
        - peso (Float64): peso do título no índice (%).
        - convexidade (Float64): convexidade do título.
        - quantidade_teorica (Float64): quantidade teórica (em 1.000 títulos).
        - operacoes (Int64): número de operações.
        - quantidade_negociada (Int64): quantidade negociada (unidades).
        - valor_negociado (Int64): valor negociado em R$.
        - dv01_mercado (Int64): DV01 de mercado em R$.
        - quantidade_mercado (Int64): quantidade em carteira (unidades).
        - valor_mercado (Int64): valor de mercado em R$.

    Examples:
        >>> yd.anbima.last_ima("IMA-B")  # doctest: +SKIP
    """
    texto_ima = _buscar_texto_ultimo_ima()
    df = _parsear_df(texto_ima)
    df = _processar_df(df)
    if ima_type:
        df = df.filter(pl.col("indice") == ima_type)
    return df.sort("indice", "titulo", "data_vencimento")

tpf_maturities(date, bond_type)

Recupera os vencimentos existentes para um tipo de título na data especificada.

Parameters:

Name Type Description Default
date DateLike

A data de referência para os vencimentos.

required
bond_type BOND_TYPES

O tipo de título para filtrar (ex: 'PRE' para 'LTN' e 'NTN-F', ou especifique 'LTN' ou 'NTN-F' diretamente).

required

Returns:

Type Description
Series

pl.Series: Uma Series contendo as datas de vencimento únicas para o(s) tipo(s) de título especificado(s).

Examples:

>>> from pyield import anbima
>>> anbima.tpf_maturities(date="22-08-2025", bond_type="PRE")
shape: (18,)
Series: 'data_vencimento' [date]
[
    2025-10-01
    2026-01-01
    2026-04-01
    2026-07-01
    2026-10-01

    2030-01-01
    2031-01-01
    2032-01-01
    2033-01-01
    2035-01-01
]
Source code in pyield/anbima/tpf.py
def tpf_maturities(
    date: DateLike,
    bond_type: BOND_TYPES,
) -> pl.Series:
    """Recupera os vencimentos existentes para um tipo de título na data especificada.

    Args:
        date (DateLike): A data de referência para os vencimentos.
        bond_type (BOND_TYPES): O tipo de título para filtrar (ex: 'PRE' para 'LTN'
            e 'NTN-F', ou especifique 'LTN' ou 'NTN-F' diretamente).

    Returns:
        pl.Series: Uma Series contendo as datas de vencimento únicas para o(s)
            tipo(s) de título especificado(s).

    Examples:
        >>> from pyield import anbima
        >>> anbima.tpf_maturities(date="22-08-2025", bond_type="PRE")
        shape: (18,)
        Series: 'data_vencimento' [date]
        [
            2025-10-01
            2026-01-01
            2026-04-01
            2026-07-01
            2026-10-01

            2030-01-01
            2031-01-01
            2032-01-01
            2033-01-01
            2035-01-01
        ]
    """
    return tpf(date, bond_type)["data_vencimento"].unique().sort()