Skip to Content
Referencia de la APIClosing Line Value (CLV)

Valor de la Línea de Cierre (CLV)

Analiza cómo se comparan las cuotas de cierre de una casa de apuestas con la probabilidad sin margen (devigged) de Pinnacle. Un CLV positivo significa que la casa cerró con precios más laxos que Pinnacle — un indicador histórico de ventaja.

GET /api/v1/historical/clv

Se requiere nivel Sharp o superior. Los niveles Pro e inferiores reciben un error 403 tier_restricted. Este endpoint está restringido por la funcionalidad closing_lines.

Ventana de datos de la Fase 1: Las líneas de cierre se capturan en tiempo real cuando los partidos pasan a estar en directo. El almacén Valkey conserva los datos durante 30 días. Los datos históricos anteriores a 30 días aún no están disponibles.

Cómo se capturan las líneas de cierre

Cuando un partido pasa de pre-match a en directo, el servidor captura las últimas cuotas pre-match de cada casa como la línea de cierre de ese evento. El precio de cierre se devigea utilizando el método Power (el mismo que en el cálculo de EV) para producir una probabilidad sin margen por selección.

El CLV se calcula entonces como:

CLV% = (pin_no_vig_prob - book_no_vig_prob) / book_no_vig_prob × 100

Donde pin_no_vig_prob es la probabilidad devigeada de Pinnacle (la referencia sharp) y book_no_vig_prob es la probabilidad devigeada de la casa soft. Un CLV% positivo significa que la casa soft cerró a un precio más favorable que la línea justa de Pinnacle.

Autenticación

Requiere API key. Se requiere nivel Sharp o superior (funcionalidad closing_lines).

Parámetros de consulta

ParámetroTipoPor defectoDescripción
fromstringhace 7 díasFecha de inicio (YYYY-MM-DD o ISO 8601). Limitada a una ventana de 30 días.
tostringhoyFecha de fin (YYYY-MM-DD o ISO 8601).
group_bystringsportsbookDimensión de agregación. Una de: sportsbook, sport, league, market, day.
sportstringtodosFiltrar por deporte(s), separados por comas (p. ej. basketball,football).
leaguestringtodasFiltrar por liga(s), separadas por comas (p. ej. nba,nfl).
sportsbookstringtodasFiltrar por casa(s) de apuestas, separadas por comas.

Ventana de fechas

El nivel Sharp permite hasta 30 días de histórico (la ventana de retención actual para los datos de líneas de cierre). Las fechas solicitadas fuera de esta ventana se limitan silenciosamente a la fecha más antigua disponible.

Ejemplos de solicitudes

# CLV por casa de apuestas durante los últimos 7 días curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?from=2026-04-10&to=2026-04-17&group_by=sportsbook" \ -H "X-API-Key: YOUR_API_KEY" # CLV agrupado por deporte, solo NBA curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?league=nba&group_by=sport" \ -H "X-API-Key: YOUR_API_KEY" # CLV agrupado por día para DraftKings curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?sportsbook=draftkings&group_by=day" \ -H "X-API-Key: YOUR_API_KEY"

Respuesta

Éxito (200)

{ "success": true, "data": { "group_by": "sportsbook", "groups": [ { "group_key": "draftkings", "samples": 312, "avg_clv_percent": 1.42, "avg_abs_clv_percent": 2.18, "distinct_books": 1, "distinct_sports": 4 }, { "group_key": "fanduel", "samples": 289, "avg_clv_percent": 0.87, "avg_abs_clv_percent": 1.95, "distinct_books": 1, "distinct_sports": 4 }, { "group_key": "betmgm", "samples": 201, "avg_clv_percent": -0.21, "avg_abs_clv_percent": 1.74, "distinct_books": 1, "distinct_sports": 3 } ], "date_range": { "from": "2026-04-10T00:00:00.000", "to": "2026-04-17T00:00:00.000" }, "total_events": 58, "comparable_events": 51, "sharp_reference": "pinnacle" }, "meta": { "source": "valkey:closing_line", "tier_window_days": 30, "phase": "1", "filters": { "sport": null, "league": null, "sportsbook": null, "group_by": "sportsbook" }, "updated_at": "2026-04-17T20:00:00.000000000Z" } }

Resultado vacío (sin datos de línea de cierre todavía):

{ "success": true, "data": { "group_by": "sportsbook", "groups": [], "date_range": { "from": "...", "to": "..." }, "total_events": 0, "comparable_events": 0, "sharp_reference": "pinnacle" }, "meta": { "source": "valkey:closing_line", "phase": "1", ... } }

Un array groups vacío es una respuesta válida cuando no se han capturado datos de línea de cierre para el rango de fechas solicitado — no es un error.

Respuestas de error

403 Tier Restricted

{ "error": { "code": "tier_restricted", "message": "The 'closing_lines' feature requires Sharp or higher.", "required_tier": "sharp", "docs": "https://docs.sharpapi.io/en/pricing" } }

400 Validation Error

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

Campos de la respuesta

Objeto data

CampoTipoDescripción
group_bystringLa dimensión utilizada para la agregación
groupsarrayArray de filas de grupo, ordenadas por samples de forma descendente
date_rangeobjectfrom/to reales utilizados tras la limitación por nivel
total_eventsintegerTotal de eventos encontrados en el rango de fechas (antes del filtro de Pinnacle)
comparable_eventsintegerEventos con una línea de cierre de Pinnacle disponible para comparación
sharp_referencestringCasa sharp utilizada como referencia de cuotas justas ("pinnacle")

Campos de la fila de grupo

CampoTipoDescripción
group_keystringEl identificador del grupo (nombre de la casa de apuestas, deporte, liga, tipo de mercado o fecha YYYY-MM-DD)
samplesintegerNúmero de comparaciones de líneas de cierre en este grupo
avg_clv_percentnumberCLV% medio de todas las muestras. Positivo = la casa cerró más laxa que Pinnacle.
avg_abs_clv_percentnumberCLV% absoluto medio (medida de eficiencia de mercado independiente de la dirección)
distinct_booksintegerNúmero de casas de apuestas distintas en este grupo
distinct_sportsintegerNúmero de deportes distintos en este grupo

Objeto meta

CampoTipoDescripción
sourcestringSiempre "valkey:closing_line" (backend de la Fase 1)
tier_window_daysintegerDías máximos de retroceso para tu nivel (Sharp = 30)
phasestring"1" — captura en tiempo real desde las transiciones a en directo. Backfill desde ClickHouse previsto para la Fase 2.
updated_atstringMarca de tiempo de la respuesta en formato ISO 8601

Interpretación del CLV

CLV%Interpretación
> +2%La casa cerró sistemáticamente con precios significativamente más laxos que las líneas sharp — alto valor capturado
+0,5% a +2%La casa cerró ligeramente laxa — típico de las casas recreativas
-0,5% a +0,5%Cierre próximo al mercado — eficiente o mixto
< -0,5%La casa se ajustó hacia el cierre — puede indicar persecución de steam o acción del lado sharp

Un CLV medio positivo en tus apuestas es el indicador más sólido de que estás apostando a precios ineficientes. Sobre una muestra grande, un CLV positivo predice fuertemente un ROI positivo.

Endpoints relacionados

Last updated on