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

Valor de la Línea de Cierre (CLV)

Estadísticas agregadas de Valor de la Línea de Cierre para las predicciones +EV calificadas de SharpAPI. Para cada oportunidad +EV que el motor detecta, el sistema captura posteriormente la línea de cierre de la referencia sharp y califica la selección contra ella — este endpoint sirve esas calificaciones, agregadas según la dimensión que elijas (group_by), junto con los resultados realizados de victoria/derrota cuando se conoce el resultado del partido.

GET /api/v1/historical/clv

Se requiere nivel Enterprise. Los endpoints agregados /api/v1/historical/* están restringidos por la funcionalidad history. Los niveles inferiores reciben 403 tier_restricted. Si estás en Pro o Sharp y quieres datos de líneas de cierre, usa Cuotas de cierre — precios de cierre brutos por evento, disponibles en tu nivel.

Cómo se calcula el CLVPermalink for this section

Cuando un evento pasa de pre-match a en directo, la plataforma captura el último precio pre-match de cada casa como la línea de cierre de ese evento. El precio de cierre de la referencia sharp (devig_book — normalmente Pinnacle) se devigea con el método Power para obtener una probabilidad de cierre sin margen (no-vig), y cada predicción calificada se puntúa como:

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

donde entry_decimal_odds es el precio en el momento en que SharpAPI detectó la oportunidad. Un CLV positivo significa que el precio detectado batió al cierre — podrías haber apostado a mejores cuotas que las que implicaba el valor justo final del mercado.

Los datos se sirven desde el almacén histórico ClickHouse. Los agregados se calculan sobre predicciones lógicas — los snapshots de precio repetidos de la misma selección (mismo evento, mercado, selección, casa, línea) se colapsan en una sola fila antes de contar, de modo que una selección re-observada a varios precios no se cuenta varias veces.

Parámetros de consultaPermalink for this section

ParámetroTipoPor defectoDescripción
fromstringhace 7 díasFecha de inicio (YYYY-MM-DD o ISO 8601). Limitada a la ventana de histórico de tu nivel.
tostringhoyFecha de fin (YYYY-MM-DD o ISO 8601).
group_bystringsportsbookDimensión de agregación. Una de: sportsbook, sport, league, market, day, devig_book.
sportstringtodosFiltrar por deporte(s), separados por comas (p. ej. basketball,baseball).
leaguestringtodasFiltrar por liga(s), separadas por comas (p. ej. nba,mlb).
sportsbookstringtodasFiltrar por casa(s) de apuestas, separadas por comas.
devig_bookstringtodasFiltrar por la referencia sharp contra la que se valoró la selección (p. ej. pinnacle).

Ventana de histórico por nivelPermalink for this section

Los rangos de fechas se limitan a la ventana de retroceso de tu nivel (reflejada en meta.tier_window_days):

NivelVentana
Free7 días
Hobby30 días
Pro90 días
Sharp365 días
EnterpriseIlimitada

Filtra por devig_book=pinnacle para obtener la señal significativa. La validez del CLV está dominada por la referencia sharp contra la que se valoró la selección. El CLV referenciado a Pinnacle es la serie predictiva; las selecciones valoradas contra referencias de respaldo (p. ej. bookmaker) presentan un CLV estructuralmente negativo y no deben interpretarse como ventaja. Agrupa por devig_book para ver la diferencia.

Ejemplos de solicitudesPermalink for this section

# CLV por casa de apuestas durante los últimos 7 días curl -X GET "https://api.sharpapi.io/api/v1/historical/clv?group_by=sportsbook" \ -H "X-API-Key: YOUR_API_KEY" # Solo CLV referenciado a Pinnacle, agrupado por deporte 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 día a día para las selecciones de DraftKings en un rango de fechas 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"

RespuestaPermalink for this section

Éxito (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" } }

Un array groups vacío es una respuesta válida cuando no existen predicciones calificadas para los filtros y el rango de fechas solicitados — no es un error.

Tres recuentos distintos — no mezcles denominadores. total_predictions cuenta todas las selecciones rastreadas (incluidas las que nunca se calificaron). total_graded cuenta las selecciones con una calificación de CLV (se capturó y comparó una línea de cierre). wins + losses cuenta el subconjunto, normalmente más pequeño, cuyo resultado del partido también está liquidado — y win_rate se calcula solo sobre ese subconjunto. Un grupo puede mostrar legítimamente total_graded: 1294 junto a wins + losses: 462. win_rate es null cuando un grupo no tiene apuestas liquidadas.

Respuestas de errorPermalink 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 de la respuestaPermalink for this section

Objeto dataPermalink for this section

CampoTipoDescripción
date_rangeobjectfrom/to reales utilizados tras la limitación por nivel
group_bystringLa dimensión utilizada para la agregación
groupsarrayArray de filas de grupo

Campos de la fila de grupoPermalink for this section

CampoTipoDescripción
group_keystringEl identificador del grupo (nombre de la casa de apuestas, deporte, liga, tipo de mercado, fecha YYYY-MM-DD o devig book)
total_gradedintegerPredicciones lógicas con una calificación de CLV (línea de cierre capturada y comparada)
winsintegerPredicciones calificadas cuyo resultado del partido se liquidó como victoria
lossesintegerPredicciones calificadas cuyo resultado del partido se liquidó como derrota
win_ratenumber | nullwins / (wins + losses). Calculado solo sobre el subconjunto liquidado; null cuando no existen apuestas liquidadas en el grupo
avg_clv_percentnumber | nullCLV% medio de las predicciones calificadas. Positivo = los precios detectados batieron al cierre en promedio. null cuando no es calculable
avg_ev_percentnumber | nullValor esperado % medio en el momento de la detección para las predicciones del grupo. null cuando no es calculable
total_predictionsintegerTodas las predicciones rastreadas en el grupo, incluidas las que (todavía) no han sido calificadas

Objeto metaPermalink for this section

CampoTipoDescripción
filtersobjectEco de los filtros aplicados (sport, league, sportsbook, devig_book, group_by); null para los filtros no utilizados
sourcestring"clickhouse" — el almacén de analítica histórica
tier_window_daysinteger | stringRetroceso máximo para tu nivel (p. ej. 90), o "unlimited"
updated_atstringMarca de tiempo de la respuesta en formato ISO 8601

Interpretación del CLVPermalink for this section

CLV%Interpretación
> +2%Los precios detectados batieron sistemáticamente al cierre por un margen amplio — alto valor capturado
+0,5% a +2%Los precios batieron modestamente al cierre — típico de las casas soft frente a una referencia sharp
-0,5% a +0,5%Próximo al mercado — precios eficientes o resultados mixtos
< -0,5%Los precios se ajustaron hacia el cierre — steam tardío o acción del lado sharp

El CLV no es ROI — léelo con las salvedades adecuadas.

  • La eficiencia del mercado varía. En los mercados más sharp y líquidos (por ejemplo los spreads y totales de la NBA, y los props de jugador de las grandes ligas), batir al cierre no se convierte de forma fiable en beneficio realizado — allí, batir la línea de cierre suele reflejar ruido en un mercado eficiente más que ventaja. En mercados más soft, un CLV positivo sigue siendo el mejor indicador adelantado de rentabilidad a largo plazo.
  • Usa win_rate junto con avg_clv_percent. El endpoint devuelve resultados realizados exactamente por esta razón: un grupo con CLV positivo pero con un historial liquidado por debajo del punto de equilibrio sobre una muestra grande te está diciendo que el CLV ahí no se está convirtiendo.
  • Cuidado con el tamaño de la muestra. Los grupos con un total_graded pequeño o pocas apuestas liquidadas (wins + losses) son ruido — compara grupos solo con un volumen significativo.
  • La referencia sharp importa. Solo el CLV referenciado a una casa sharp (filtra devig_book=pinnacle) tiene este significado; las filas referenciadas a respaldos no.

Endpoints relacionadosPermalink for this section

Last updated on