Futuros
available_dates(contract_code)
Retorna as datas de negociação disponíveis no dataset histórico PR.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
contract_code
|
str
|
Código do contrato futuro na B3 (ex.: DI1, DOL). |
required |
Returns:
| Type | Description |
|---|---|
Series
|
Series ordenada de datas (Date) para as quais há dados de ajuste. |
Examples:
>>> from pyield.b3.futures import available_dates
>>> available_dates("DI1").head(3)
shape: (3,)
Series: 'data_referencia' [date]
[
2018-01-02
2018-01-03
2018-01-04
]
Source code in pyield/b3/futures/__init__.py
futures(date, contract_code, full_report=False)
Busca dados de um contrato futuro da B3 para a data de referência.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
DateLike | ArrayLike
|
Data de referência para consulta ou coleção de datas. Quando uma coleção é fornecida, os dados são buscados para cada data individualmente e concatenados. Datas inválidas (feriados, fins de semana, futuras) são silenciosamente ignoradas. |
required |
contract_code
|
str | list[str]
|
Código do contrato futuro na B3 ou coleção de códigos. Aceita qualquer código de contrato futuro listado na B3. Contratos com histórico pré-cacheado (desde 2018) são retornados instantaneamente: - Juros: DI1, DDI, FRC, FRO, DAP - Moedas: DOL, WDO - Índices: IND, WIN Para os demais contratos (OC1, IAP, EUR, GBR, JAP, CNY, ISP, WSP, BGI, CCM, ICF, SJC, SOY, ETH, GLD, etc.), os dados são baixados diretamente da B3 a cada chamada. |
required |
full_report
|
bool
|
Controla a fonte de dados quando o dado não está no cache. Se False (padrão), tenta o simplified price report (SPR, ~2 KB) primeiro e faz fallback para o price report completo (PR, ~2 MB). Se True, usa apenas o PR — indicado para processos batch noturnos. |
False
|
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame Polars com os dados do contrato informado. |
Examples:
Lista de datas:
>>> df = futures(["29-05-2024", "31-05-2024"], "DI1")
>>> df["data_referencia"].unique().sort().to_list()
[datetime.date(2024, 5, 29), datetime.date(2024, 5, 31)]
Véspera de Natal e Ano Novo não têm pregão:
Data futura e fim de semana retornam DataFrame vazio:
>>> import datetime as dt
>>> amanha = dt.date.today() + dt.timedelta(days=1)
>>> futures(amanha, "DI1").is_empty()
True
>>> futures("04-01-2025", "DI1").is_empty() # sábado
True