pnclPULSEObtener acceso a la API

NOTAS SOBRE ALERTAS DE CAÍDA

Umbrales de caída por deporte en un solo stream SSE

El min_drop se define por conexión y tienes una conexión por stream. Fija el suelo bajo y aplica umbrales por deporte en tu propio código.

Un stream de caídas de la API de cuotas de Pinnacle acepta un umbral, min_drop, definido cuando la conexión se abre. El stream no tiene parámetro de deporte, y cada cuenta mantiene una conexión por stream, así que una segunda conexión en vivo con la misma clave cierra la primera. Si quieres fútbol al 5% y tenis al 3%, la respuesta no son dos streams. Es un stream ajustado bajo, con reglas por deporte en tu propio código.

La restricción, dicha con claridad

Tres hechos documentados enmarcan el problema, como la guía de configuración SSE los indica, verificado el 2026-09-29. Primero, min_drop es un ajuste de la conexión: el ejemplo documentado usa 5 y baja hasta 1. Segundo, el stream no tiene filtro de deporte. Tercero, una conexión por stream por cuenta.

Cualquier diseño que necesite dos umbrales distintos en el lado del servidor en mercados en vivo a la vez queda fuera. Lo que queda es el filtrado en el cliente, que resulta ser el mejor diseño de todos modos.

Fija el suelo bajo, luego filtra hacia arriba

Abre el stream con min_drop en el umbral más bajo que pienses usar en cualquier parte, hasta el suelo de 1 si eso es lo que tu deporte más sensible necesita. El stream entonces entrega cada bajada igual o superior a ese suelo, y tu código aplica la regla real por alerta:

RULES = {"Soccer": 5.0, "Tennis": 3.0}  # percent, per sport
DEFAULT = 4.0

def passes(alert):
    limit = RULES.get(alert["sport"], DEFAULT)
    was, now = alert["from_price"], alert["to_price"]
    drop_pct = 100 * (was - now) / was
    return drop_pct >= limit

Cada alerta es autocontenida: nombra el deporte, la liga, el mercado y el lado, y lleva el precio antes y después de la bajada, así que el filtro no necesita una segunda solicitud. La fórmula del porcentaje, la bajada dividida entre el precio antiguo, es la misma que aplica el feed, como documenta la guía de alertas de caída.

Los umbrales por fase vienen gratis

Las caídas en vivo y las prepartido llegan en streams separados, y una conexión en vivo y una prepartido pueden correr lado a lado en una cuenta. Eso significa que la división de umbrales más importante, en vivo frente a prepartido, sí obtiene su propio min_drop por conexión. Úsala: el tamaño y la cadencia de los movimientos difieren tanto entre las dos fases que la mayoría de las aplicaciones las ejecutan como reglas separadas de todos modos. El refinamiento por deporte ocurre entonces dentro de cada manejador de fase con el filtro de arriba.

Lo que cuesta el suelo bajo

Un min_drop más bajo significa más entregas, y cada alerta entregada es trabajo para tu filtro, tu almacén de deduplicación y tus logs. Las claves y los cooldowns descritos en la guía de deduplicación no cambian; corren sobre lo que sobrevive a tu regla de umbral, exactamente como antes.

Mide durante una semana antes de ajustar. Registra cuántas alertas llegaron por deporte, cuántas pasaron tu regla y en cuántas actuaste. Si un deporte inunda el log sin producir una sola decisión, sube su número en tu tabla de reglas, no en la conexión. Si todo el stream es ruido, sube min_drop y deja que el servidor filtre otra vez.

Una conexión, un suelo, muchas reglas. El stream entrega; tu código decide.