pnclENGINEObter acesso à API

HISTÓRICO DE ODDS

Armazene o histórico de odds da Pinnacle você mesmo.

A API de odds da Pinnacle serve os preços atuais e diz claramente que não tem arquivo histórico. O histórico de uma linha, um preço de fechamento, a forma de um mercado ao longo de uma semana: tudo isso só existe se você gravou enquanto fazia polling. Esta página traz um desenho de tabelas, uma regra de deduplicação e a aritmética de retenção para um armazenamento que continua pequeno.

O que gravar

Duas tabelas bastam. Uma guarda os eventos, escritos uma vez e atualizados quando o horário de início ou o status muda: event_id, sport_id, league, home, away e starts. A outra guarda as mudanças de preço, uma linha cada vez que o preço de uma seleção difere da última linha que você tem dela: qual evento, qual período, qual mercado, qual lado, o preço e quando você o observou.

CREATE TABLE price_changes (
  event_id    bigint      NOT NULL,
  period      smallint    NOT NULL,
  market      text        NOT NULL,   -- money_line, spread, total
  side        text        NOT NULL,   -- home, draw, away, over, under
  points      numeric(6,2),           -- spread or total line, else NULL
  price       numeric(8,3),           -- NULL when the market closed
  observed_at timestamptz NOT NULL,
  cursor_last bigint      NOT NULL,   -- the response's last value
  PRIMARY KEY (event_id, period, market, side, points, observed_at)
);

Armazene o preço como odds decimais exatamente como servido, e mantenha o nulo quando um mercado está suspenso ou fechado. Uma linha nula é informação: ela registra quando o mercado sumiu, que é o que uma consulta de preço de fechamento precisa.

Escreva só o que mudou

O cursor since já limita um polling aos eventos que mudaram, mas dentro de um evento alterado a maioria das seleções costuma estar igual a antes. Compare cada seleção com a última linha que você tem e insira só quando houver diferença. Um pequeno mapa em memória com o último preço por seleção torna a comparação gratuita; reconstrua-o a partir da tabela na inicialização. Sem essa regra, um quadro de futebol ao vivo escreve todas as seleções a cada polling, e a tabela cresce pela taxa de polling e não pelo movimento real do mercado.

Capturando o fechamento

O preço de fechamento é o último preço observado antes do horário de início do evento, e ele só existe no seu armazenamento se o poller estava rodando naquele momento. Faça polling dos quadros pré-jogo até o início, já que o cursor mantém o custo baixo, e deixe um job que roda alguns minutos depois de cada início marcar a última linha pré-jogo de cada seleção como o fechamento. Por que o fechamento merece uma coluna própria está explicado no guia de valor da linha de fechamento no pnclDATA: é a referência contra a qual a maioria dos apostadores mede seus preços.

Aritmética de retenção

O crescimento do armazenamento depende do movimento, não do polling, uma vez que a deduplicação está no lugar. Os números abaixo ilustram a aritmética, não medem o feed; substitua pelas suas próprias contagens depois de uma semana de registro.

PremissaValorResultado
Mudanças de preço escritas por dia, cinco esportes, ao vivo e pré-jogo200,000Linhas por dia
Bytes por linha com índice12024 MB por dia
Linhas brutas mantidas90 diasCerca de 2,2 GB
Último preço por hora por seleção além de 90 dias1 linha por horaBem abaixo de um décimo do tamanho bruto

Particione a tabela de mudanças por mês e descarte partições em vez de apagar linhas. Mantenha as linhas de eventos enquanto existirem as mudanças que as referenciam.

Lacunas continuam lacunas

Nada na API reproduz o passado. Um poller que ficou fora por uma hora tem uma hora sem linhas, e o polling seguinte devolve o estado atual, não o caminho que levou até ele. Registre as interrupções em uma tabela separada para que uma consulta ao histórico distinga um mercado parado de um mercado ausente, e trate o dia em que começou a gravar como o primeiro dia que seu histórico cobre. O que verificar antes de confiar no arquivo de outra pessoa com esses preços está no guia de dados históricos de odds no pnclAPI.

Obter acesso à API

Perguntas antes da primeira linha

O endpoint de quedas pode preencher o histórico retroativamente?

Só alguns minutos dele. O endpoint REST de quedas devolve movimentos recentes dentro de uma janela limitada, o que ajuda depois de uma interrupção curta e não além disso.

Devo armazenar a resposta inteira como JSON?

Guarde uma cópia comprimida das respostas brutas por alguns dias se quiser rederivar linhas depois de um bug no parser, mas consulte a tabela normalizada. O JSON bruto cresce com a taxa de polling; a tabela de mudanças cresce com o mercado.

A chave gratuita permite isso?

Para um quadro consultado a cada 15 minutos, sim, e o histórico será grosseiro. Um histórico de linha útil precisa dos planos REST pagos, cuja taxa por segundo é o número a partir do qual dimensionar.

A ausência de arquivo e o comportamento do cursor seguem a documentação publicada pelo fornecedor, conferida em 26 de setembro de 2026. Publicado em .