Ir al contenido
polysignals.net

Desarrolladores

API

Cada número de este sitio sale de unos pocos archivos JSON servidos por HTTPS con CORS abierto. Guarda caché por tu lado y no consultes más a menudo de lo que cambian los datos. Los asistentes de IA pueden usar en su lugar el servidor MCP.

sin clave ni registro
Gratis
solicitudes por IP, API y MCP juntos
50 / 10 s
sin garantía de disponibilidad ni nivel de servicio
Lo mejor posible
fuentes, señal combinada, puntuación de confianza
Versión 2
En esta página
  1. Endpoints
  2. Ejemplo
  3. Límites
  4. Campos de la lectura combinada
  5. Campos de la lectura de una fuente
  6. Por moneda
  7. Archivo de historial
  8. Campos de resultados
  9. Archivo de resultados por moneda

Endpoints

GET /api/v1/signals.json
Todo: lecturas combinadas y por fuente para cada moneda × ventana. Se escribe en cada tick (tick_seconds). Caché 10 s.
GET /api/v1/combined.json
Solo las lecturas combinadas. Se escribe una vez por minuto. Caché 30 s.
GET /api/v1/venues/{venue}.json
Las lecturas de una fuente. Fuentes: polymarket, kalshi, limitless, gemini, binance_options, deribit_options, bybit_options, okx_options. Se escribe una vez por minuto. Caché 30 s.
GET /api/v1/history/{coin}.json
Últimas 48 h: combinada con resolución de 1 minuto y por fuente de 5 minutos. Cualquier moneda que cubra una fuente en meta.json (ahora al menos BTC, ETH, SOL, XRP, DOGE, HYPE, BNB, ZEC, NEAR); una moneda con solo señal de régimen no tiene. Se reconstruye cada 5 min.
GET /api/v1/results.json
Backtest en vivo: por moneda y estrategia, lo que ha rendido seguir las señales en Coinbase USD frente a comprar y mantener (rendimiento neto y bruto, fills, operaciones, porcentaje de ganadoras, caída, posición abierta). Se escribe una vez por minuto. Caché 1 min.
GET /api/v1/results/{coin}.json
El backtest de una moneda con sus últimos 100 fills por estrategia y su curva de capital (cada 15 min durante 48 h, cada hora hasta 30 días, diaria después). Se escribe cada 5 min. Caché 5 min.
GET /api/v1/meta.json
Monedas encontradas en las fuentes, ventanas (5m, 15m, 1h, 4h, 1d), fuentes con cobertura en vivo, umbrales y versión de la metodología.
GET /api/v1/markets.json
Cada mercado de los exchanges de Cryptohopper que recibe las señales de tendencia diaria: por exchange su nombre, su número de mercados y los mercados de cada moneda. Se actualiza a diario. Caché 10 min.
GET /api/v1/deliveries.json
Las señales de tendencia diaria recientes del signaler, la más reciente primero: la moneda, compra o venta, y cuántos mercados aceptaron, rechazaron o dejaron caducar cada una, y mientras una decisión aún se envía, a cuántos le falta llegar (queued); totals cuenta cada señal desde que empezó el signaler. Se reescribe tras cada envío. Caché 1 min.
GET /api/v1/trend-history.json
La señal de tendencia diaria de cada moneda en los últimos 90 cierres, una letra por día (L long, F flat, - sin cierre) junto a la lista de fechas; se reescribe tras cada decisión de las 00:05 UTC. La página Cambios de tendencia la dibuja.
GET /api/v1/live/index.md
La señal global y la señal de tendencia diaria de cada moneda en markdown, para asistentes de IA y herramientas que no ejecutan JavaScript. Caché 30 s.
GET /api/v1/live/{coin}.md
Una moneda en markdown: cada ventana, cada fuente, su señal de tendencia diaria, los mercados de Cryptohopper que reciben sus señales y su última señal entregada, su backtest y los titulares más recientes que la mencionan. Un ticker en minúsculas redirige. Caché 30 s.
GET /api/v1/live/trend.md
Los cambios de tendencia diaria en markdown: las monedas que pasaron a long (una compra enviada a Cryptohopper) o a flat (una venta) en cada decisión de las 00:05 UTC, y la última decisión aunque no cambiara ninguna señal. Caché 5 min.
GET /api/v1/live/trend.xml
Los mismos cambios como feed Atom, una entrada por decisión. Caché 5 min.
GET /api/v1/live/trend/{coin}.xml
Los cambios de tendencia de una moneda como feed Atom. Caché 5 min.
GET /api/v1/live/markets.md
Cada mercado que recibe las señales de tendencia diaria en markdown: los exchanges con sus cifras y luego, por exchange, los mercados de cada moneda. Caché 1 h.
GET /api/v1/live/markets/{exchange}.md
Los mercados de un exchange por moneda en markdown, por su clave de Cryptohopper (binance, kraken2, crypto, etc., como en markets.json). Cada página de exchange enlaza la suya. Caché 1 h.
GET /api/v1/live/news.json
Los últimos titulares cripto de CoinArticle, con las monedas seguidas que menciona cada uno. Caché 5 min.
GET /api/v1/openapi.json
Descripción OpenAPI 3.1 de todo lo anterior.
POST /api/mcp
El servidor MCP (Streamable HTTP, solo lectura, sin clave) para Claude, ChatGPT, Cursor y otros asistentes de IA; la configuración está en la página MCP.

Ejemplo

curl -s https://polysignals.net/api/v1/combined.json | jq '.coins.BTC.overall'

curl -s https://polysignals.net/api/v1/signals.json | jq '.coins.ETH.timeframes["1h"].combined.current.confidence'

curl -s https://polysignals.net/api/v1/venues/kalshi.json | jq '.coins.SOL["15m"].current.prob_up'

signals.json, recortado a una moneda, una ventana y una fuente:

{
  "version": 2,
  "generated_at": "2026-09-30T20:26:05Z",
  "tick_seconds": 30,
  "venues": ["polymarket", "kalshi", "limitless", "gemini", "binance_options", "deribit_options", "bybit_options", "okx_options"],
  "coins": {
    "BTC": {
      "spot_usd": 83616.4,
      "overall": { "score": 9, "direction": "neutral", "confidence": 71 },
      "timeframes": {
        "1h": {
          "combined": {
            "current": {
              "prob_up": 0.511,
              "score": 2,
              "direction": "neutral",
              "late_window": false,
              "window_start": "2026-09-30T20:00:00Z",
              "window_end": "2026-09-30T21:00:00Z",
              "sources": ["polymarket", "kalshi", "limitless"],
              "merged_options": [],
              "divergence": 0.02,
              "raw_divergence": 0.05,
              "confidence": { "score": 88, "label": "high", "depth": 0.974, "agreement": 0.9, "timing": 1, "sources": 3, "independent_sources": 3, "qualifying_sources": 2, "divergence": 0.02 }
            },
            "next": null
          },
          "venues": {
            "kalshi": {
              "current": {
                "venue": "kalshi", "coin": "BTC", "timeframe": "1h",
                "window_start": "2026-09-30T20:00:00Z", "window_end": "2026-09-30T21:00:00Z",
                "prob_up": 0.51, "score": 2, "direction": "neutral",
                "spread": 0.01, "volume_usd": 333616, "liquidity_usd": null, "depth_usd": 12574,
                "derived": true, "stale": false, "late_window": false,
                "market_url": "https://kalshi.com/markets/kxbtcd/KXBTCD-26SEP3017",
                "confidence": { "score": 72, "label": "high", "quality": 0.72, "timing": 1 }
              },
              "next": null
            }
          }
        }
      }
    }
  }
}

Límites

Hasta 50 solicitudes cada 10 segundos por IP en todo /api/ (el JSON, el markdown en vivo y el servidor MCP juntos); por encima, la API responde 429 durante 10 segundos. Los archivos JSON se guardan en caché en el borde tanto tiempo como indica su Cache-Control y se ignoran las query strings, así que consultar más a menudo que los tiempos de caché de arriba devuelve el mismo archivo. Lee el historial de una moneda cada 5 minutos, no en cada tick.

Campos de la lectura combinada

prob_up
Media ponderada por calidad de las probabilidades Up de las fuentes (0 a 1). null cuando ninguna fuente cumple.
score
(prob_up - 0,5) × 200, redondeado. De -100 a +100. Sobre todo una lectura del movimiento desde que se abrió la ventana, no un pronóstico (ver la metodología).
direction
strong_up · up · neutral · down · strong_down.
late_window
true cuando queda menos del 20% de la ventana.
window_start / window_end
ISO-8601 UTC.
reference_price / reference_source / move_since_open / time_left
El precio de la ventana en la apertura y su origen (venue, collector_spot o candle), el precio actual ÷ ese - 1, y la fracción de la ventana que queda. La referencia es null para la ventana siguiente y para una que se abrió antes de guardar una referencia.
sources
Ids de las fuentes combinadas en esta lectura (calidad > 0, o toda fuente con precio en el respaldo ponderado por igual); una lectura de opciones fusionada lista cada fuente de opciones que contiene.
merged_options
Fuentes de opciones fusionadas en una sola lectura antes de combinar: su prob_up mediana, contada como una fuente. Una fuente de opciones a más de 0,30 de la mediana de las demás se excluye y se marca outlier. Vacío si no se fusionó ninguna.
divergence
max - min de prob_up entre las fuentes que cumplen (calidad ≥ 0,2); null si cumplen menos de dos.
raw_divergence
max - min de prob_up entre todas las fuentes con precio, sin importar la calidad; null si tienen precio menos de dos.
confidence
{ score, label, depth, agreement, timing, sources, independent_sources, qualifying_sources, divergence }; score = round(100 × depth × agreement × timing). depth se calcula sobre las fuentes independientes (las fuentes de opciones fusionadas en una). agreement = clamp(1 - divergence / 0,20, 0, 1) con dos o más fuentes que cumplen, si no 0,7.

Campos de la lectura de una fuente

prob_up / score / direction
Como arriba, solo para esta fuente.
spread
Mejor ask - mejor bid de la participación Up. null para fuentes AMM.
volume_usd
El volumen tal como lo publica el sitio de la fuente, actualizado en cada tick (Kalshi cuenta contratos que pagan $1 cada uno).
depth_usd
Tamaño de las órdenes en reposo a menos de 0,05 del precio medio, a ambos lados, en USD, con datos que la fuente ya devuelve: libro completo en Polymarket, mejor nivel en Kalshi; null para Limitless, Gemini y las fuentes de opciones.
liquidity_usd
Liquidez del pool en fuentes AMM, si no null.
derived
true cuando se interpola a partir de una escalera de strikes (Kalshi por hora, todas las lecturas de opciones).
stale
true cuando la cotización no pudo actualizarse y se muestra el valor anterior (calidad 0).
market_url
El mercado en el sitio de la fuente.
bid / ask / options
El mejor bid y ask de la participación Up cuando la fuente cotiza la ventana directamente (null para escaleras y opciones). Las fuentes de opciones añaden options: { p_at_spot, atm_iv, rr25, forward_usd, basis, method }, cada uno null si la fuente no da el dato; method indica si prob_up y p_at_spot salen de la volatilidad implícita (iv) o de las diferencias de precio de las calls (curve).
flags
Solo presente en una lectura que se publica pero nunca se combina: outlier (una fuente de opciones a más de 0,30 de la mediana de las otras fuentes de opciones en su ventana) o degenerate_curve (las probabilidades implícitas de la escalera de opciones abarcan menos de 0,50, así que prob_up es null).
confidence
{ score, label, quality, timing }; score = round(100 × quality × timing).

Por moneda

overall es la media ponderada por confianza de las puntuaciones actuales combinadas de las ventanas 1h, 4h y 1d, con su propia confidence; venue_overall.{venue} es lo mismo calculado con las lecturas de una fuente (también devuelto como overall en venues/{venue}.json); spot_usd es un precio spot de Coinbase solo para mostrar.

regime (solo en signals.json) es la señal de la estrategia de régimen diaria, decidida una vez al día a las 00:05 UTC con el cierre en Coinbase del día que acaba de terminar, sin datos de las fuentes: { as_of, call, close, sma50, sigma20, upper, lower, distance_sigmas, days_in_state, next_decision_at, intraday }. call pasa a long cuando el cierre supera upper = sma50 × (1 + sigma20) y a flat cuando queda por debajo de lower = sma50 × (1 - sigma20). null para una moneda con menos de 200 cierres diarios o sin el cierre de ese día. intraday: { call, as_of } es la variante simulada de cuatro horas (estrategia regime_4h, no retransmitida): el precio en vivo de Coinbase Exchange frente a la misma banda en cada límite de 4 horas UTC, partiendo de la señal diaria; null antes de su primera comprobación. La regla está en la metodología.

Cuando ninguna fuente supera el umbral de calidad (normalmente una ventana poco líquida sin volumen declarado), la lectura combinada se rellena igualmente con los precios disponibles, ponderados por igual, con confidence.score 0, de modo que cada ventana con precio muestra una dirección y la confianza indica cuánto fiarse de ella.

Archivo de historial

{ coin, generated_at, resolution: { combined: "1m", venues: "5m" }, range_hours: 48, timeframes: { "1h": { combined: [{ t, prob_up, score, confidence }], venues: { kalshi: [ … ] } } } }. Los minutos sin lectura utilizable simplemente no aparecen.

Campos de resultados

results.json contiene, por moneda y estrategia (5m, 15m, 1h, 4h, 1d, overall, regime, regime_4h), lo que ha rendido seguir las señales en el mercado Coinbase USD de la moneda, solo en largo. Una señal leída en un minuto se ejecuta 1 minuto después al mejor ask (compra) o bid (venta) de Coinbase Exchange; el capital se valora al último precio negociado. Fracciones en todo momento. Esta es la versión de resultados 2: reinició la simulación desde cero y se descartaron las cifras anteriores. meta.json thresholds.results contiene fee, fillDelayMin y altFee (0.001), la comisión más baja con la que la página de resultados también muestra los mismos fills: (1 + gross_return) × (1 - altFee)^fills - 1.

return
Capital actual ÷ capital inicial - 1, neto de una comisión de 0.006 por fill. buy_hold.return: comprado al ask de started_at con una comisión y mantenido.
gross_return
Los mismos fills sin comisiones: capital ÷ capital inicial - 1 antes de comisiones (el diferencial bid/ask sí se paga).
fills
Fills hasta ahora, compras más ventas; cada uno pagó la comisión.
trades
Operaciones completas (una compra seguida de una venta). win_rate y avg_trade se calculan sobre ellas; null si no hay ninguna.
max_drawdown
La mayor caída del capital de pico a valle.
time_in_market
Parte de los minutos con precio en que se mantuvo la moneda.
fees_paid
Comisiones pagadas hasta ahora, en unidades del capital inicial.
position / since / entry_price
La posición abierta: coin desde since a entry_price, o usd.
call
La señal que mantiene ahora la estrategia (buy, sell o hold).
results_version
Las reglas de la simulación ("2"); cuando cambian, la simulación empieza de cero.
methodology_version
La metodología con la que se leen las señales ("5").

Archivo de resultados por moneda

results/{coin}.json es el bloque de la moneda de results.json más trades (por estrategia, los últimos 100 fills, del más antiguo al más reciente: { side, t, price, equity, return? }, siendo el precio el ask en una compra y el bid en una venta) y curve, cuyas columns son t, spot, 5m, 15m, 1h, 4h, 1d, overall, regime, regime_4h, buy_hold, 5m_gross, 15m_gross, 1h_gross, 4h_gross, 1d_gross, overall_gross, regime_gross, regime_4h_gross: el capital neto por estrategia, comprar y mantener, y luego el capital bruto (sin comisiones) de cada estrategia. Hay filas cada 15 minutos durante las últimas 48 horas, cada hora hasta 30 días y diarias después.

No es asesoramiento financiero. Sin relación con Polymarket, Kalshi, Limitless, Gemini, Binance, Deribit, Bybit ni OKX. El feed puede cambiar o detenerse sin aviso. El uso está sujeto a los términos.