Skip to Content
Referência da APIClosing Line Value (CLV)

Closing Line Value (CLV)

Estatísticas agregadas de Closing Line Value para as previsões +EV avaliadas (graded) da SharpAPI. Para cada oportunidade +EV que o engine sinaliza, o sistema captura posteriormente a linha de fechamento da referência sharp e avalia o palpite contra ela — este endpoint serve essas avaliações, agregadas pela dimensão que você escolher (group_by), junto com os resultados realizados de vitória/derrota quando o resultado do jogo é conhecido.

GET /api/v1/historical/clv

Tier Enterprise obrigatório. Os endpoints agregados /api/v1/historical/* são controlados pela feature history. Tiers inferiores recebem 403 tier_restricted. Se você está no Pro ou Sharp e quer dados de linha de fechamento, use Closing Odds — preços de fechamento brutos por evento, disponíveis no seu tier.

Como o CLV é calculadoPermalink for this section

Quando um evento passa de pré-partida para ao vivo, a plataforma captura o último preço pré-partida de cada book como a linha de fechamento daquele evento. O preço de fechamento da referência sharp (devig_book — tipicamente a Pinnacle) é devigado com o método Power para uma probabilidade de fechamento no-vig, e cada previsão avaliada recebe a pontuação:

CLV% = (closing_no_vig_prob × entry_decimal_odds − 1) × 100

onde entry_decimal_odds é o preço no momento em que a SharpAPI sinalizou a oportunidade. CLV positivo significa que o preço sinalizado venceu o fechamento — você poderia ter apostado em odds melhores do que o valor justo final implícito pelo mercado.

Os dados são servidos a partir do armazenamento histórico em ClickHouse. As agregações são calculadas sobre previsões lógicas — snapshots de preço repetidos do mesmo palpite (mesmo evento, mercado, seleção, book, linha) são colapsados em uma única linha antes da contagem, de modo que um palpite reobservado em vários preços não é contado múltiplas vezes.

Parâmetros de QueryPermalink for this section

ParâmetroTipoPadrãoDescrição
fromstring7 dias atrásData inicial (YYYY-MM-DD ou ISO 8601). Limitada à janela de histórico do seu tier.
tostringhojeData final (YYYY-MM-DD ou ISO 8601).
group_bystringsportsbookDimensão de agregação. Uma de: sportsbook, sport, league, market, day, devig_book.
sportstringtodosFiltra por esporte(s), separados por vírgula (ex.: basketball,baseball).
leaguestringtodasFiltra por liga(s), separadas por vírgula (ex.: nba,mlb).
sportsbookstringtodosFiltra por sportsbook(s), separados por vírgula.
devig_bookstringtodasFiltra pela referência sharp contra a qual o palpite foi precificado (ex.: pinnacle).

Janela de histórico por tierPermalink for this section

Os intervalos de datas são limitados à janela de lookback do seu tier (refletida em meta.tier_window_days):

TierJanela
Free7 dias
Hobby30 dias
Pro90 dias
Sharp365 dias
EnterpriseIlimitada

Filtre por devig_book=pinnacle para obter o sinal que importa. A validade do CLV é dominada pela referência sharp contra a qual o palpite foi precificado. O CLV referenciado na Pinnacle é a série preditiva; palpites precificados contra referências de fallback (ex.: bookmaker) carregam CLV estruturalmente negativo e não devem ser lidos como vantagem (edge). Agrupe por devig_book para ver a separação.

Exemplos de RequisiçõesPermalink for this section

# CLV por sportsbook nos últimos 7 dias curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?group_by=sportsbook" \ -H "X-API-Key: YOUR_API_KEY" # Apenas CLV referenciado na Pinnacle, agrupado por esporte curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?devig_book=pinnacle&group_by=sport" \ -H "X-API-Key: YOUR_API_KEY" # CLV dia a dia para palpites na DraftKings em um intervalo de datas curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?sportsbook=draftkings&group_by=day&from=2026-06-01&to=2026-06-08" \ -H "X-API-Key: YOUR_API_KEY"

RespostaPermalink for this section

Sucesso (200)Permalink for this section

{ "success": true, "data": { "date_range": { "from": "2026-06-03T14:12:30.437", "to": "2026-06-10T14:12:30.437" }, "group_by": "sportsbook", "groups": [ { "group_key": "novig", "total_graded": 1294, "wins": 262, "losses": 200, "win_rate": 0.5670995670995671, "avg_clv_percent": 0.673342797764432, "avg_ev_percent": 1.613983921390446, "total_predictions": 1555 }, { "group_key": "prophetx", "total_graded": 964, "wins": 191, "losses": 214, "win_rate": 0.47160493827160493, "avg_clv_percent": 0.07641414602522267, "avg_ev_percent": 1.4343012769214647, "total_predictions": 1331 } ] }, "meta": { "filters": { "devig_book": null, "group_by": "sportsbook", "league": null, "sport": null, "sportsbook": null }, "source": "clickhouse", "tier_window_days": "unlimited", "updated_at": "2026-06-10T14:12:58.75061216Z" } }

Um array groups vazio é uma resposta válida quando não existem previsões avaliadas para os filtros e o intervalo de datas solicitados — não é um erro.

Três contagens diferentes — não misture denominadores. total_predictions conta cada palpite rastreado (incluindo os que nunca foram avaliados). total_graded conta palpites com uma nota de CLV (uma linha de fechamento foi capturada e comparada). wins + losses conta o subconjunto tipicamente menor cujo resultado do jogo também está liquidado — e win_rate é calculado apenas sobre esse subconjunto. Um grupo pode legitimamente exibir total_graded: 1294 ao lado de wins + losses: 462. win_rate é null quando um grupo não tem apostas liquidadas.

Respostas de ErroPermalink for this section

403 Tier Restricted

{ "error": { "code": "tier_restricted", "message": "This endpoint requires Enterprise tier or higher", "docs": "https://sharpapi.io/pricing", "tier": "pro", "required_tier": "enterprise" } }

400 Validation Error

{ "error": { "code": "validation_error", "message": "Invalid group_by. Must be one of: day, devig_book, league, market, sport, sportsbook" } }

Campos da RespostaPermalink for this section

Objeto dataPermalink for this section

CampoTipoDescrição
date_rangeobjectValores from/to efetivamente usados após o ajuste de tier
group_bystringA dimensão usada para agregação
groupsarrayArray de linhas de grupo

Campos da linha de grupoPermalink for this section

CampoTipoDescrição
group_keystringO identificador do grupo (nome do sportsbook, esporte, liga, tipo de mercado, data YYYY-MM-DD ou devig book)
total_gradedintegerPrevisões lógicas com nota de CLV (linha de fechamento capturada e comparada)
winsintegerPrevisões avaliadas cujo resultado do jogo liquidou como vitória
lossesintegerPrevisões avaliadas cujo resultado do jogo liquidou como derrota
win_ratenumber | nullwins / (wins + losses). Calculado apenas sobre o subconjunto liquidado; null quando não há apostas liquidadas no grupo
avg_clv_percentnumber | nullCLV% médio entre as previsões avaliadas. Positivo = os preços sinalizados venceram o fechamento em média. null quando não computável
avg_ev_percentnumber | nullValor esperado % médio no momento da detecção para as previsões do grupo. null quando não computável
total_predictionsintegerTodas as previsões rastreadas no grupo, incluindo as ainda não avaliadas

Objeto metaPermalink for this section

CampoTipoDescrição
filtersobjectEco dos filtros aplicados (sport, league, sportsbook, devig_book, group_by); null para filtros não usados
sourcestring"clickhouse" — o armazenamento de análises históricas
tier_window_daysinteger | stringLookback máximo para o seu tier (ex.: 90), ou "unlimited"
updated_atstringTimestamp ISO 8601 da resposta

Interpretando o CLVPermalink for this section

CLV%Interpretação
> +2%Os preços sinalizados venceram o fechamento consistentemente por margem ampla — forte valor capturado
+0,5% a +2%Os preços venceram o fechamento modestamente — típico de books recreativos contra uma referência sharp
-0,5% a +0,5%Próximo ao mercado — precificação eficiente ou resultados mistos
< -0,5%Os preços apertaram rumo ao fechamento — steam tardio ou ação do lado sharp

CLV não é ROI — leia-o com as ressalvas certas.

  • A eficiência de mercado varia. Nos mercados mais sharp e líquidos (por exemplo, spreads e totais da NBA, e player props das ligas principais), vencer o fechamento não se converte de forma confiável em lucro realizado — vitórias sobre a linha de fechamento nesses mercados frequentemente refletem ruído em um mercado eficiente, e não vantagem. Em mercados mais soft, CLV positivo continua sendo o melhor indicador antecedente de lucratividade no longo prazo.
  • Use win_rate junto com avg_clv_percent. O endpoint retorna resultados realizados exatamente por isso: um grupo com CLV positivo mas com histórico liquidado abaixo do breakeven em uma amostra grande está dizendo que o CLV ali não está se convertendo.
  • Atenção ao tamanho da amostra. Grupos com total_graded pequeno ou poucas apostas liquidadas (wins + losses) são ruído — compare grupos apenas em volume significativo.
  • A referência sharp importa. Apenas o CLV referenciado em book sharp (filtro devig_book=pinnacle) carrega esse significado; linhas referenciadas em fallback, não.

Endpoints RelacionadosPermalink for this section

Last updated on