Market Data

Market Data

client.marketdata expõe helpers REST para metadados de instrumento, último trade e busca de papéis. Para atualizações contínuas, veja Streaming.

Definitions

Busca metadados de um ou mais papéis. Útil para descobrir tick size, lot size, moeda, bolsa, etc.

async with AsyncInvestflexClient.from_env() as client:
    defs = await client.marketdata.definitions(["PETR4", "VALE3", "WINQ19"])
    for d in defs:
        print(d.symbol, d.tick_size, d.lot_size, d.exchange)

O resultado é uma lista de Definition:

Campo Tipo Observações
symbol str Código do instrumento.
security_id str | None Id interno.
exchange str | None ex.: XBSP, XBMF.
currency str | None ex.: BRL.
tick_size float | None Incremento mínimo de preço.
lot_size int | None Tamanho do lote-padrão.
description str | None Nome legível.

Campos desconhecidos / futuros são preservados em model_extra, então backends mais novos não quebram clientes mais antigos.

Último trade

O último negócio impresso para um papel — útil como referência de preço ao dimensionar ou validar ordens.

async with AsyncInvestflexClient.from_env() as client:
    t = await client.marketdata.last_trade("PETR4")
    print(t.symbol, t.price, t.qty, t.timestamp)

Campos de Trade:

Campo Tipo Observações
symbol str
price float Preço do último negócio.
qty int Quantidade do negócio.
side Side | None Lado agressor, quando disponível.
trade_id str | None Id do negócio na bolsa.
timestamp datetime | None Horário.

Lista de papéis

Pesquisa a lista de papéis da plataforma. Os filtros são enviados como query params; o conjunto exato depende do backend, mas os mais comuns são exchange, query (substring), currency e active.

async with AsyncInvestflexClient.from_env() as client:
    matches = await client.marketdata.security_list(
        exchange="XBSP", query="PETR"
    )
    for d in matches[:10]:
        print(d.symbol, d.description)

A resposta é uma lista de Definition — mesmo formato de definitions().

Livro de ofertas

O livro agregado MBP é entregue por streaming, não REST — veja Streaming para o modelo Book e subscribe_book().

Quando usar REST x streaming

  • Helpers REST são point-in-time. Baratos de chamar esporadicamente: preencher um autocomplete, validar um símbolo, mostrar um preço de referência ao lado de um formulário.
  • Streams mantêm estado sincronizado. Use-os para dashboards ao vivo, loops de decisão de algos ou para alimentar uma escada de livro na UI.

Para a maioria dos algos só REST basta: a engine lê market data no servidor. O serviço de marketdata é principalmente para lógica no cliente.