Previsione del sentiment

GET /forecasts/sentiment
GetSentimentForecast

Dove è probabile che vada il sentiment di un asset nelle prossime 72 ore, come intervallo di esiti con le relative probabilità. series fornisce, ogni 4 ore, i post bullish, bearish, neutral e totali attesi in quel passo e il sentiment_signal alla sua fine, sulla scala /sentiment. chance_higher_24h e chance_higher_72h forniscono la probabilità che il segnale chiuda sopra current_sentiment_signal; i loro flag _confident indicano quando tale probabilità pende chiaramente da una parte.

Le previsioni si aggiornano entro un minuto dalla pubblicazione di nuovi post sull'asset e almeno ogni 15 minuti. refresh=true ricalcola sui dati più recenti in circa 5 secondi; se impiega più di 20, ricevi la previsione più recente con refreshed: false, al costo di 5. Gli asset senza previsione restituiscono status: not_forecastable con un reason; /forecasts/assets elenca gli asset che ne hanno una.

Costa 5 crediti, o 10 con refresh=true. Le risposte not_forecastable sono gratuite, fino a 30 all'ora per account; oltre tale soglia questo endpoint restituisce 429 fino al cambio dell'ora.

Il pagamento tramite wallet non è disponibile per questa operazione; usa l'autenticazione dell'account. guida al pagamento x402.

Parametri

asset_id string QUERY obbligatorio

Asset ID da /assets o /search, ad esempio NVDA, GLD, SPX o bitcoin. Va inviato con l'asset_class restituito insieme ad esso.

Example:NVDA

asset_class string QUERY obbligatorio

Classe dell'asset indicato da asset_id: equity (azioni ed ETF), commodity, index o crypto. Va inviata l'asset_class restituita da /assets o /search insieme all'asset_id.

Valori consentiti
equitycommodityindexcrypto

Example:equity

refresh boolean QUERY

true ricalcola la previsione sui dati più recenti: 10 crediti, circa 5 secondi. Il valore predefinito è false.

Example:false

Esempio 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'

Risposte

200 OK
400 Richiesta non valida
401 Non autorizzato
402 Crediti esauriti; la risposta include i tempi di rinnovo e il saldo dei crediti acquistati
403 Vietato
404 Non trovato
405 Metodo non consentito; l'header Allow elenca il metodo supportato
429 Troppe richieste
500 Errore interno del server
503 Servizio non disponibile

Tipo di media application/json

as_of
string (date-time) obbligatorio

Inizio UTC della previsione: la fine degli ultimi 15 minuti completi su cui è stata calcolata. Null quando l'asset non è mai stato valutato.

chance_higher_24h
number (double) obbligatorio

La probabilità che il segnale di sentiment sia superiore a current_sentiment_signal tra 24 ore, da 0 a 1.

chance_higher_24h_confident
boolean obbligatorio

True quando chance_higher_24h è inferiore a 0.3 o superiore a 0.7: la previsione pende chiaramente da una parte. Più vicino a 0.5, interpretala come assenza di una direzione chiara.

chance_higher_72h
number (double) obbligatorio

La probabilità che il segnale di sentiment sia superiore a current_sentiment_signal tra 72 ore, da 0 a 1.

chance_higher_72h_confident
boolean obbligatorio

True quando chance_higher_72h è inferiore a 0.3 o superiore a 0.7: la previsione pende chiaramente da una parte. Più vicino a 0.5, interpretala come assenza di una direzione chiara.

current_sentiment_signal
number (double) obbligatorio

Il segnale di sentiment ad as_of, sulla scala /sentiment: post bullish meno post bearish nelle 24 ore precedenti, con i post recenti pesati di più. Ogni percorso parte da qui e le probabilità si misurano rispetto a questo valore. Può differire leggermente dall'ultimo punto di /sentiment, che è orario.

horizon_hours
integer obbligatorio

Quanto avanti si spinge la previsione, in ore: sempre 72.

reason
string obbligatorio

Perché l'asset non può essere previsto: too_little_history, stale_data o missing_price. Null quando status è ok.

Valori consentiti
too_little_historystale_datamissing_pricenull
refreshed
boolean obbligatorio

True quando questa richiesta ha rieseguito la previsione (refresh=true e la riesecuzione è terminata in tempo); false quando è l'ultima previsione pianificata.

sample_paths
array<array<number (double)>> obbligatorio

24 percorsi possibili per il segnale di sentiment, ciascuno allineato con series. Tracciali per mostrare l'ampiezza degli esiti.

series
array<object> obbligatorio

La previsione ogni 4 ore da as_of: 18 passi, dal più vecchio.

series[].bearish_posts
object obbligatorio

I post bearish attesi in questo singolo passo di 4 ore, bot esclusi: come i post dell'intervallo di /sentiment, non i suoi conteggi sulle 24 ore precedenti.

series[].bearish_posts.mean
number (double) obbligatorio

Il numero atteso di post bearish nel passo.

series[].bearish_posts.p10
number (double) obbligatorio

Il 10° percentile dei post bearish nel passo.

series[].bearish_posts.p25
number (double) obbligatorio

Il 25° percentile dei post bearish nel passo.

series[].bearish_posts.p50
number (double) obbligatorio

Il 50° percentile dei post bearish nel passo.

series[].bearish_posts.p75
number (double) obbligatorio

Il 75° percentile dei post bearish nel passo.

series[].bearish_posts.p90
number (double) obbligatorio

Il 90° percentile dei post ribassisti nello step.

series[].bullish_posts
object obbligatorio

I post rialzisti attesi in questo singolo step di 4 ore, bot esclusi: come i post per intervallo di /sentiment, non i suoi conteggi sulle 24 ore precedenti.

series[].bullish_posts.mean
number (double) obbligatorio

Il numero atteso di post rialzisti nello step.

series[].bullish_posts.p10
number (double) obbligatorio

Il 10° percentile dei post rialzisti nello step.

series[].bullish_posts.p25
number (double) obbligatorio

Il 25° percentile dei post rialzisti nello step.

series[].bullish_posts.p50
number (double) obbligatorio

Il 50° percentile dei post rialzisti nello step.

series[].bullish_posts.p75
number (double) obbligatorio

Il 75° percentile dei post rialzisti nello step.

series[].bullish_posts.p90
number (double) obbligatorio

Il 90° percentile dei post rialzisti nello step.

series[].neutral_posts
object obbligatorio

I post neutrali attesi in questo singolo step di 4 ore, bot esclusi: come i post per intervallo di /sentiment, non i suoi conteggi sulle 24 ore precedenti.

series[].neutral_posts.mean
number (double) obbligatorio

Il numero atteso di post neutrali nello step.

series[].neutral_posts.p10
number (double) obbligatorio

Il 10° percentile dei post neutrali nello step.

series[].neutral_posts.p25
number (double) obbligatorio

Il 25° percentile dei post neutrali nello step.

series[].neutral_posts.p50
number (double) obbligatorio

Il 50° percentile dei post neutrali nello step.

series[].neutral_posts.p75
number (double) obbligatorio

Il 75° percentile dei post neutrali nello step.

series[].neutral_posts.p90
number (double) obbligatorio

Il 90° percentile dei post neutrali nello step.

series[].sentiment_signal
object obbligatorio

Il segnale di sentiment alla fine dello step, sulla scala di /sentiment: dove è probabile che si trovi la linea.

series[].sentiment_signal.mean
number (double) obbligatorio

Il segnale di sentiment atteso alla fine dello step.

series[].sentiment_signal.p10
number (double) obbligatorio

Il 10° percentile del segnale di sentiment alla fine dello step.

series[].sentiment_signal.p50
number (double) obbligatorio

Il 50° percentile del segnale di sentiment alla fine dello step.

series[].sentiment_signal.p90
number (double) obbligatorio

Il 90° percentile del segnale di sentiment alla fine dello step.

series[].sentiment_signal.quantiles
array<number (double)> obbligatorio

21 quantili del segnale di sentiment alla fine dello step: i percentili 0, 5, 10, ... 100, dal più basso. Interpola tra di essi per ottenere la probabilità di ricadere in un qualsiasi intervallo.

series[].timestamp
string (date-time) obbligatorio

Ora UTC in cui termina lo step: as_of più 4, 8, ... 72 ore.

series[].total_posts
object obbligatorio

I post (rialzisti, ribassisti e neutrali insieme) attesi in questo singolo step di 4 ore, bot esclusi: come i post per intervallo di /sentiment, non i suoi conteggi sulle 24 ore precedenti. I suoi percentili si riferiscono al totale stesso, quindi non sono la somma dei percentili dei tre tipi.

series[].total_posts.mean
number (double) obbligatorio

Il numero atteso di post (rialzisti, ribassisti e neutrali insieme) nello step.

series[].total_posts.p10
number (double) obbligatorio

Il 10° percentile dei post (rialzisti, ribassisti e neutrali insieme) nello step.

series[].total_posts.p25
number (double) obbligatorio

Il 25° percentile dei post (rialzisti, ribassisti e neutrali insieme) nello step.

series[].total_posts.p50
number (double) obbligatorio

Il 50° percentile dei post (rialzisti, ribassisti e neutrali insieme) nello step.

series[].total_posts.p75
number (double) obbligatorio

Il 75° percentile dei post (rialzisti, ribassisti e neutrali insieme) nello step.

series[].total_posts.p90
number (double) obbligatorio

Il 90° percentile dei post (rialzisti, ribassisti e neutrali insieme) nello step.

status
string obbligatorio

ok, oppure not_forecastable quando l'asset non può essere previsto (i campi di riepilogo sono allora null e la serie è vuota; reason ne indica il motivo).

Valori consentiti
oknot_forecastable
turning
integer obbligatorio

1 mentre il sentiment sta virando al rialzo (le ultime ore sono chiaramente più rialziste dell'ultimo giorno), -1 mentre sta virando al ribasso, 0 altrimenti.

Valori consentiti
-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
}