Прогноз сентимента
/forecasts/sentiment
Куда, вероятно, двинется сентимент актива в следующие 72 часа — диапазон исходов с их вероятностями. series даёт каждые 4 часа ожидаемое число бычьих, медвежьих и нейтральных постов и общее число постов на этом шаге, а также sentiment_signal в его конце, по шкале /sentiment. chance_higher_24h и chance_higher_72h дают вероятность того, что сигнал завершится выше current_sentiment_signal; их флаги _confident отмечают, когда эта вероятность явно склоняется в одну сторону.
Прогнозы обновляются в течение минуты после новых постов об активе и не реже, чем каждые 15 минут. refresh=true пересчитывает по последним данным примерно за 5 секунд; если это занимает больше 20, вы получаете последний прогноз с refreshed: false, за 5 кредитов. Активы без прогноза возвращают status: not_forecastable с reason; /forecasts/assets перечисляет активы, для которых прогноз есть.
Стоит 5 кредитов или 10 с refresh=true. Ответы not_forecastable бесплатны, до 30 в час на аккаунт; сверх этого эндпоинт возвращает 429, пока час не обнулится.
Оплата кошельком недоступна для этой операции; используйте аутентификацию аккаунта. Руководство по оплате x402.
Параметры
Asset ID из /assets или /search, например NVDA, GLD, SPX или bitcoin. Передавайте его вместе с возвращённым рядом с ним asset_class.
Example:NVDA
Класс актива, указанного в asset_id: equity (акции и ETF), commodity, index или crypto. Передавайте asset_class, который /assets или /search вернули вместе с asset_id.
equitycommodityindexcrypto
Example:equity
true пересчитывает прогноз по последним данным: 10 кредитов, около 5 секунд. По умолчанию false.
Example:false
Пример 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'
Ответы
Тип медиа application/json
as_of
Начало прогноза в UTC: конец последних полных 15 минут, по которым он был рассчитан. Null, если актив никогда не оценивался.
chance_higher_24h
Вероятность того, что сигнал сентимента будет выше current_sentiment_signal через 24 часа, от 0 до 1.
chance_higher_24h_confident
True, когда chance_higher_24h меньше 0.3 или больше 0.7: прогноз явно склоняется в одну сторону. Ближе к 0.5 трактуйте его как отсутствие чёткого направления.
chance_higher_72h
Вероятность того, что сигнал сентимента будет выше current_sentiment_signal через 72 часа, от 0 до 1.
chance_higher_72h_confident
True, когда chance_higher_72h меньше 0.3 или больше 0.7: прогноз явно склоняется в одну сторону. Ближе к 0.5 трактуйте его как отсутствие чёткого направления.
current_sentiment_signal
Сигнал сентимента на момент as_of по шкале /sentiment: бычьи посты минус медвежьи за последние 24 часа, причём недавние посты имеют больший вес. Здесь начинается каждая траектория, и относительно него измеряются вероятности. Он может немного отличаться от последней точки /sentiment, которая обновляется ежечасно.
horizon_hours
На сколько часов вперёд строится прогноз: всегда 72.
reason
Почему актив нельзя спрогнозировать: too_little_history, stale_data или missing_price. Null, когда status равен ok.
too_little_historystale_datamissing_pricenull
refreshed
True, когда этот запрос перезапустил прогноз (refresh=true и повторный расчёт успел завершиться); false, когда это последний прогноз по расписанию.
sample_paths
24 возможные траектории сигнала сентимента, каждая выровнена с series. Постройте их, чтобы показать разброс исходов.
series
array<object>
Прогноз каждые 4 часа от as_of: 18 шагов, от самого раннего к самому позднему.
series
Прогноз каждые 4 часа от as_of: 18 шагов, от самого раннего к самому позднему.
series[].bearish_posts
object
Ожидаемое число медвежьих постов только за этот 4-часовой шаг, без ботов: как interval posts в /sentiment, а не его счётчики за последние 24 часа.
series[].bearish_posts
Ожидаемое число медвежьих постов только за этот 4-часовой шаг, без ботов: как interval posts в /sentiment, а не его счётчики за последние 24 часа.
series[].bearish_posts.mean
Ожидаемое число медвежьих постов на этом шаге.
series[].bearish_posts.p10
10-й процентиль числа медвежьих постов на этом шаге.
series[].bearish_posts.p25
25-й процентиль числа медвежьих постов на этом шаге.
series[].bearish_posts.p50
50-й процентиль числа медвежьих постов на этом шаге.
series[].bearish_posts.p75
75-й процентиль числа медвежьих постов на этом шаге.
series[].bearish_posts.p90
90-й процентиль медвежьих постов на шаге.
series[].bullish_posts
object
Ожидаемое число бычьих постов именно на этом 4-часовом шаге, без ботов: как интервальные посты /sentiment, а не его скользящие 24-часовые счётчики.
series[].bullish_posts
Ожидаемое число бычьих постов именно на этом 4-часовом шаге, без ботов: как интервальные посты /sentiment, а не его скользящие 24-часовые счётчики.
series[].bullish_posts.mean
Ожидаемое число бычьих постов на шаге.
series[].bullish_posts.p10
10-й процентиль бычьих постов на шаге.
series[].bullish_posts.p25
25-й процентиль бычьих постов на шаге.
series[].bullish_posts.p50
50-й процентиль бычьих постов на шаге.
series[].bullish_posts.p75
75-й процентиль бычьих постов на шаге.
series[].bullish_posts.p90
90-й процентиль бычьих постов на шаге.
series[].neutral_posts
object
Ожидаемое число нейтральных постов именно на этом 4-часовом шаге, без ботов: как интервальные посты /sentiment, а не его скользящие 24-часовые счётчики.
series[].neutral_posts
Ожидаемое число нейтральных постов именно на этом 4-часовом шаге, без ботов: как интервальные посты /sentiment, а не его скользящие 24-часовые счётчики.
series[].neutral_posts.mean
Ожидаемое число нейтральных постов на шаге.
series[].neutral_posts.p10
10-й процентиль нейтральных постов на шаге.
series[].neutral_posts.p25
25-й процентиль нейтральных постов на шаге.
series[].neutral_posts.p50
50-й процентиль нейтральных постов на шаге.
series[].neutral_posts.p75
75-й процентиль нейтральных постов на шаге.
series[].neutral_posts.p90
90-й процентиль нейтральных постов на шаге.
series[].sentiment_signal
object
Сигнал настроения на конец шага по шкале /sentiment: где, вероятно, окажется линия.
series[].sentiment_signal
Сигнал настроения на конец шага по шкале /sentiment: где, вероятно, окажется линия.
series[].sentiment_signal.mean
Ожидаемый сигнал настроения на конец шага.
series[].sentiment_signal.p10
10-й процентиль сигнала настроения на конец шага.
series[].sentiment_signal.p50
50-й процентиль сигнала настроения на конец шага.
series[].sentiment_signal.p90
90-й процентиль сигнала настроения на конец шага.
series[].sentiment_signal.quantiles
21 квантиль сигнала настроения на конец шага: 0-й, 5-й, 10-й, ... 100-й процентили, от наименьшего. Интерполируйте между ними, чтобы получить вероятность попадания в любой диапазон.
series[].timestamp
Время UTC окончания шага: as_of плюс 4, 8, ... 72 часа.
series[].total_posts
object
Посты (бычьи, медвежьи и нейтральные вместе), ожидаемые именно на этом 4-часовом шаге, без ботов: как интервальные посты /sentiment, а не его скользящие 24-часовые счётчики. Их процентили относятся к самому итогу, поэтому они не являются суммой процентилей трёх видов.
series[].total_posts
Посты (бычьи, медвежьи и нейтральные вместе), ожидаемые именно на этом 4-часовом шаге, без ботов: как интервальные посты /sentiment, а не его скользящие 24-часовые счётчики. Их процентили относятся к самому итогу, поэтому они не являются суммой процентилей трёх видов.
series[].total_posts.mean
Ожидаемое число постов (бычьих, медвежьих и нейтральных вместе) на шаге.
series[].total_posts.p10
10-й процентиль постов (бычьих, медвежьих и нейтральных вместе) на шаге.
series[].total_posts.p25
25-й процентиль постов (бычьих, медвежьих и нейтральных вместе) на шаге.
series[].total_posts.p50
50-й процентиль постов (бычьих, медвежьих и нейтральных вместе) на шаге.
series[].total_posts.p75
75-й процентиль постов (бычьих, медвежьих и нейтральных вместе) на шаге.
series[].total_posts.p90
90-й процентиль постов (бычьих, медвежьих и нейтральных вместе) на шаге.
status
ok или not_forecastable, когда актив нельзя спрогнозировать (тогда поля сводки равны null, а series пуст; reason объясняет причину).
oknot_forecastable
turning
1, пока настроение разворачивается в бычью сторону (последние несколько часов заметно более бычьи, чем последний день), -1, пока оно разворачивается в медвежью сторону, иначе 0.
-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
}