Previsión de sentimiento
/forecasts/sentiment
Hacia dónde es probable que vaya el sentimiento de un activo en las próximas 72 horas, como un rango de resultados con sus probabilidades. series da, cada 4 horas, los posts alcistas, bajistas, neutrales y totales esperados en ese paso y el sentiment_signal al final del mismo, en la escala /sentiment. chance_higher_24h y chance_higher_72h dan la probabilidad de que la señal termine por encima de current_sentiment_signal; sus indicadores _confident marcan cuándo esa probabilidad se inclina claramente hacia un lado.
Las previsiones se actualizan en menos de un minuto desde que hay nuevas publicaciones sobre el activo, y como mínimo cada 15 minutos. refresh=true recalcula con los últimos datos en unos 5 segundos; si tarda más de 20, obtienes la última previsión con refreshed: false, cobrada a 5. Los activos sin previsión devuelven status: not_forecastable con un reason; /forecasts/assets enumera los activos que tienen una.
Cuesta 5 créditos, o 10 con refresh=true. Las respuestas de not_forecastable son gratuitas, hasta 30 por hora y cuenta; superado ese límite, este endpoint devuelve 429 hasta que se reinicie la hora.
El pago con cartera no está disponible para esta operación; usa la autenticación de cuenta. Guía de pago x402.
Parámetros
ID del activo de /assets o /search, como NVDA, GLD, SPX o bitcoin. Envíalo junto con el asset_class que se devolvió con él.
Example:NVDA
Clase del activo nombrado por asset_id: equity (acciones y ETF), commodity, index o crypto. Envía el asset_class que /assets o /search devolvió junto con el asset_id.
equitycommodityindexcrypto
Example:equity
true recalcula la previsión con los últimos datos: 10 créditos, unos 5 segundos. Por defecto es false.
Example:false
Ejemplo de cURL
curl --get \
--url 'https://nebula-api.hiddensystems.ai/api/v1/public/forecasts/sentiment' \
--data-urlencode 'asset_id=NVDA' \
--data-urlencode 'asset_class=equity' \
--header 'X-API-Key: YOUR_API_KEY'
Respuestas
Tipo de medio application/json
as_of
Inicio en UTC de la previsión: el final de los últimos 15 minutos completos a partir de los que se calculó. Null cuando el activo nunca se ha puntuado.
chance_higher_24h
La probabilidad de que la señal de sentimiento esté más alta que current_sentiment_signal dentro de 24 horas, de 0 a 1.
chance_higher_24h_confident
True cuando chance_higher_24h es inferior a 0.3 o superior a 0.7: el pronóstico se inclina claramente hacia un lado. Más cerca de 0.5, interprétalo como una dirección poco clara.
chance_higher_72h
La probabilidad de que la señal de sentimiento esté más alta que current_sentiment_signal dentro de 72 horas, de 0 a 1.
chance_higher_72h_confident
True cuando chance_higher_72h es inferior a 0.3 o superior a 0.7: el pronóstico se inclina claramente hacia un lado. Más cerca de 0.5, interprétalo como una dirección poco clara.
current_sentiment_signal
La señal de sentimiento en as_of, en la escala /sentiment: posts alcistas menos bajistas durante las 24 horas anteriores, con más peso en los posts recientes. Cada trayectoria empieza aquí, y las probabilidades se miden contra este valor. Puede diferir ligeramente del último punto de /sentiment, que es horario.
horizon_hours
Con cuánta antelación se ejecuta el pronóstico, en horas: siempre 72.
reason
Por qué no se puede pronosticar el activo: too_little_history, stale_data o missing_price. Null cuando status es ok.
too_little_historystale_datamissing_pricenull
refreshed
True cuando esta solicitud volvió a ejecutar el pronóstico (refresh=true y la re-ejecución terminó a tiempo); false cuando es el último pronóstico programado.
sample_paths
24 trayectorias posibles para la señal de sentimiento, cada una alineada con series. Dibújalas para mostrar la dispersión de los resultados.
series
array<object>
El pronóstico cada 4 horas desde as_of: 18 pasos, del más antiguo al más reciente.
series
El pronóstico cada 4 horas desde as_of: 18 pasos, del más antiguo al más reciente.
series[].bearish_posts
object
Los posts bajistas esperados en este paso de 4 horas únicamente, excluidos los bots: como los posts por intervalo de /sentiment, no sus recuentos de las 24 horas anteriores.
series[].bearish_posts
Los posts bajistas esperados en este paso de 4 horas únicamente, excluidos los bots: como los posts por intervalo de /sentiment, no sus recuentos de las 24 horas anteriores.
series[].bearish_posts.mean
El número esperado de posts bajistas en el paso.
series[].bearish_posts.p10
El percentil 10 de los posts bajistas en el paso.
series[].bearish_posts.p25
El percentil 25 de los posts bajistas en el paso.
series[].bearish_posts.p50
El percentil 50 de los posts bajistas en el paso.
series[].bearish_posts.p75
El percentil 75 de los posts bajistas en el paso.
series[].bearish_posts.p90
El percentil 90 de las publicaciones bajistas del paso.
series[].bullish_posts
object
Las publicaciones alcistas esperadas solo en este paso de 4 horas, excluidos los bots: igual que las publicaciones por intervalo de /sentiment, no que sus recuentos móviles de 24 horas.
series[].bullish_posts
Las publicaciones alcistas esperadas solo en este paso de 4 horas, excluidos los bots: igual que las publicaciones por intervalo de /sentiment, no que sus recuentos móviles de 24 horas.
series[].bullish_posts.mean
El número esperado de publicaciones alcistas en el paso.
series[].bullish_posts.p10
El percentil 10 de las publicaciones alcistas del paso.
series[].bullish_posts.p25
El percentil 25 de las publicaciones alcistas del paso.
series[].bullish_posts.p50
El percentil 50 de las publicaciones alcistas del paso.
series[].bullish_posts.p75
El percentil 75 de las publicaciones alcistas del paso.
series[].bullish_posts.p90
El percentil 90 de las publicaciones alcistas del paso.
series[].neutral_posts
object
Las publicaciones neutrales esperadas solo en este paso de 4 horas, excluidos los bots: igual que las publicaciones por intervalo de /sentiment, no que sus recuentos móviles de 24 horas.
series[].neutral_posts
Las publicaciones neutrales esperadas solo en este paso de 4 horas, excluidos los bots: igual que las publicaciones por intervalo de /sentiment, no que sus recuentos móviles de 24 horas.
series[].neutral_posts.mean
El número esperado de publicaciones neutrales en el paso.
series[].neutral_posts.p10
El percentil 10 de las publicaciones neutrales del paso.
series[].neutral_posts.p25
El percentil 25 de las publicaciones neutrales del paso.
series[].neutral_posts.p50
El percentil 50 de las publicaciones neutrales del paso.
series[].neutral_posts.p75
El percentil 75 de las publicaciones neutrales del paso.
series[].neutral_posts.p90
El percentil 90 de las publicaciones neutrales del paso.
series[].sentiment_signal
object
La señal de sentimiento al final del paso, en la escala de /sentiment: dónde es probable que esté la línea.
series[].sentiment_signal
La señal de sentimiento al final del paso, en la escala de /sentiment: dónde es probable que esté la línea.
series[].sentiment_signal.mean
La señal de sentimiento esperada al final del paso.
series[].sentiment_signal.p10
El percentil 10 de la señal de sentimiento al final del paso.
series[].sentiment_signal.p50
El percentil 50 de la señal de sentimiento al final del paso.
series[].sentiment_signal.p90
El percentil 90 de la señal de sentimiento al final del paso.
series[].sentiment_signal.quantiles
21 cuantiles de la señal de sentimiento al final del paso: los percentiles 0, 5, 10, ... 100, de menor a mayor. Interpola entre ellos para obtener la probabilidad de caer en cualquier rango.
series[].timestamp
Hora UTC a la que termina el paso: as_of más 4, 8, ... 72 horas.
series[].total_posts
object
Las publicaciones (alcistas, bajistas y neutrales en conjunto) esperadas solo en este paso de 4 horas, excluidos los bots: igual que las publicaciones por intervalo de /sentiment, no que sus recuentos móviles de 24 horas. Sus percentiles son del total en sí, por lo que no son las sumas de los percentiles de los tres tipos.
series[].total_posts
Las publicaciones (alcistas, bajistas y neutrales en conjunto) esperadas solo en este paso de 4 horas, excluidos los bots: igual que las publicaciones por intervalo de /sentiment, no que sus recuentos móviles de 24 horas. Sus percentiles son del total en sí, por lo que no son las sumas de los percentiles de los tres tipos.
series[].total_posts.mean
El número esperado de publicaciones (alcistas, bajistas y neutrales en conjunto) en el paso.
series[].total_posts.p10
El percentil 10 de las publicaciones (alcistas, bajistas y neutrales en conjunto) del paso.
series[].total_posts.p25
El percentil 25 de las publicaciones (alcistas, bajistas y neutrales en conjunto) del paso.
series[].total_posts.p50
El percentil 50 de las publicaciones (alcistas, bajistas y neutrales en conjunto) del paso.
series[].total_posts.p75
El percentil 75 de las publicaciones (alcistas, bajistas y neutrales en conjunto) del paso.
series[].total_posts.p90
El percentil 90 de las publicaciones (alcistas, bajistas y neutrales en conjunto) del paso.
status
ok, o not_forecastable cuando no se puede pronosticar el activo (los campos de resumen son entonces null y la serie está vacía; reason indica por qué).
oknot_forecastable
turning
1 mientras el sentimiento se inclina al alza (las últimas horas apuntan claramente más al alza que el último día), -1 mientras se inclina a la baja, 0 en caso contrario.
-101null
{
"as_of": "2026-09-14T09:15:00Z",
"chance_higher_24h": 0.74,
"chance_higher_24h_confident": true,
"chance_higher_72h": 0.61,
"chance_higher_72h_confident": false,
"current_sentiment_signal": 128.6,
"horizon_hours": 72,
"reason": null,
"refreshed": false,
"sample_paths": [
[
133.2,
141.7
],
[
126.4,
118.9
]
],
"series": [
{
"bearish_posts": {
"mean": 18,
"p10": 9.9,
"p25": 13.5,
"p50": 17.1,
"p75": 21.6,
"p90": 27.9
},
"bullish_posts": {
"mean": 46,
"p10": 25.3,
"p25": 34.5,
"p50": 43.7,
"p75": 55.2,
"p90": 71.3
},
"neutral_posts": {
"mean": 29,
"p10": 16,
"p25": 21.8,
"p50": 27.6,
"p75": 34.8,
"p90": 45
},
"sentiment_signal": {
"mean": 131.4,
"p10": 92.9,
"p50": 129.6,
"p90": 175.5,
"quantiles": [
21.6,
70.2,
92.9,
104.8,
113.1,
119.4,
124.2,
127.6,
130.5,
132.7,
134.5,
136.4,
138.7,
141.3,
144.9,
149.2,
155.1,
163.8,
179.4,
202.6,
287.3
]
},
"timestamp": "2026-09-14T13:15:00Z",
"total_posts": {
"mean": 93,
"p10": 51.2,
"p25": 69.8,
"p50": 88.4,
"p75": 111.6,
"p90": 144.2
}
},
{
"bearish_posts": {
"mean": 19,
"p10": 10.5,
"p25": 14.3,
"p50": 18.1,
"p75": 22.8,
"p90": 29.5
},
"bullish_posts": {
"mean": 50,
"p10": 27.5,
"p25": 37.5,
"p50": 47.5,
"p75": 60,
"p90": 77.5
},
"neutral_posts": {
"mean": 31,
"p10": 17.1,
"p25": 23.3,
"p50": 29.5,
"p75": 37.2,
"p90": 48.1
},
"sentiment_signal": {
"mean": 137.6,
"p10": 99.1,
"p50": 135.79999999999998,
"p90": 181.7,
"quantiles": [
21.6,
70.2,
92.9,
104.8,
113.1,
119.4,
124.2,
127.6,
130.5,
132.7,
134.5,
136.4,
138.7,
141.3,
144.9,
149.2,
155.1,
163.8,
179.4,
202.6,
287.3
]
},
"timestamp": "2026-09-14T17:15:00Z",
"total_posts": {
"mean": 100,
"p10": 55,
"p25": 75,
"p50": 95,
"p75": 120,
"p90": 155
}
}
],
"status": "ok",
"turning": 0
}