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/odds/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.

La URL ha cambiado. Este endpoint se servía anteriormente en /api/v1/historical/clv. La ruta antigua sigue funcionando pero está obsoleta — sus respuestas incluyen Deprecation: true, Sunset: Wed, 30 Sep 2026 00:00:00 GMT y una cabecera Link: </api/v1/historical/odds/clv>; rel="successor-version". Migra a /api/v1/historical/odds/clv antes de la fecha de sunset.

Cambiado 2026-09-19 — win_rate ahora cubre todas las apuestas liquidadas. Hasta esta versión, wins, losses y win_rate contaban solo las selecciones liquidadas que además tenían una línea de cierre capturada. Ahora cuentan todas las selecciones liquidadas, se haya capturado o no una línea de cierre. Dos consecuencias: como liquidar una apuesta no requiere una línea de cierre capturada, wins + losses supera habitualmente a total_graded, y win_rate se mueve — en el conjunto de la serie +EV reciente queda alrededor de dos puntos por debajo, aunque un grupo concreto puede moverse en cualquier dirección. total_graded, avg_clv_percent y avg_ev_percent no cambian, y no se ha añadido, eliminado ni renombrado ningún campo. Si has usado la win_rate antigua como referencia, rehaz tu línea base a partir de esta fecha.

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óricoPermalink for this section

Este endpoint es exclusivo de Enterprise, y la ventana de histórico de Enterprise es ilimitada (meta.tier_window_days = "unlimited"). from toma por defecto hace 7 días cuando se omite; no hay un límite superior impuesto sobre cuánto puedes retroceder en la consulta.

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/odds/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/odds/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/odds/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": 767, "losses": 635, "win_rate": 0.5470756062767475, "avg_clv_percent": 0.673342797764432, "avg_ev_percent": 1.613983921390446, "total_predictions": 1555 }, { "group_key": "prophetx", "total_graded": 964, "wins": 500, "losses": 608, "win_rate": 0.45126353790613716, "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 todas las selecciones cuyo resultado del partido está liquidado, se haya capturado o no una línea de cierre — y win_rate se calcula sobre esa población. Ambos son independientes, no anidados: liquidar no requiere línea de cierre, y una selección calificada por CLV puede no haberse liquidado todavía. Ninguno de los dos es un subconjunto del otro, y wins + losses supera habitualmente a total_graded. Un grupo puede mostrar legítimamente total_graded: 1294 junto a wins + losses: 1402. 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 cuyo resultado del partido se liquidó como victoria. Se cuentan sobre todas las predicciones liquidadas, no solo las calificadas por CLV
lossesintegerPredicciones cuyo resultado del partido se liquidó como derrota. Se cuentan sobre todas las predicciones liquidadas, no solo las calificadas por CLV
win_ratenumber | nullwins / (wins + losses). Calculado sobre todas las predicciones liquidadas — una población distinta de la de total_graded, con la que no comparte denominador; 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. Léelo como una dirección, no como una comparación equivalente: avg_clv_percent cubre las selecciones calificadas por CLV mientras que win_rate cubre todas las selecciones liquidadas, así que ambos se calculan sobre poblaciones distintas.
  • 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