심리 예측
/forecasts/sentiment
향후 72시간 동안 자산의 심리가 어디로 향할 가능성이 있는지를 결과 범위와 그 확률로 나타냅니다. series는 4시간마다 해당 스텝에서 예상되는 강세, 약세, 중립, 전체 게시물 수와 스텝 끝의 sentiment_signal를 /sentiment 스케일로 제공합니다. chance_higher_24h와 chance_higher_72h는 신호가 current_sentiment_signal 위에서 마감할 확률을 제공하며, 각각의 _confident 플래그는 그 확률이 명확히 한쪽으로 기울 때를 표시합니다.
예측은 자산에 관한 새 게시물이 올라오면 1분 이내에, 그리고 최소 15분마다 갱신됩니다. refresh=true은 최신 데이터로 약 5초 만에 재계산합니다. 20초를 넘으면 refreshed: false와 함께 최신 예측을 받게 되며, 5크레딧이 청구됩니다. 예측이 없는 자산은 reason와 함께 status: not_forecastable을 반환합니다. 예측이 있는 자산은 /forecasts/assets에서 확인할 수 있습니다.
5크레딧이 들며, refresh=true을 사용하면 10크레딧입니다. not_forecastable 응답은 무료이며 계정당 시간당 최대 30건까지 가능합니다. 이를 초과하면 이 엔드포인트는 해당 시간이 지날 때까지 429를 반환합니다.
이 작업에는 지갑 결제를 사용할 수 없습니다. 계정 인증을 사용하세요. x402 결제 가이드.
파라미터
/assets 또는 /search에서 가져온 자산 ID입니다(예: NVDA, GLD, SPX, bitcoin). 함께 반환된 asset_class와 같이 보내세요.
Example:NVDA
asset_id로 지정된 자산의 클래스입니다: equity(주식 및 ETF), commodity, index, crypto 중 하나입니다. /assets 또는 /search가 asset_id와 함께 반환한 asset_class를 보내세요.
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
24시간 후 심리 신호가 current_sentiment_signal보다 높을 확률로, 0에서 1 사이의 값입니다.
chance_higher_24h_confident
chance_higher_24h가 0.3 미만이거나 0.7 초과이면 true입니다. 즉 예측이 명확히 한쪽으로 기울어 있습니다. 0.5에 가까울수록 뚜렷한 방향이 없는 것으로 해석하세요.
chance_higher_72h
72시간 후 심리 신호가 current_sentiment_signal보다 높을 확률로, 0에서 1 사이의 값입니다.
chance_higher_72h_confident
chance_higher_72h가 0.3 미만이거나 0.7 초과이면 true입니다. 즉 예측이 명확히 한쪽으로 기울어 있습니다. 0.5에 가까울수록 뚜렷한 방향이 없는 것으로 해석하세요.
current_sentiment_signal
as_of 시점의 심리 신호로, /sentiment 스케일을 따릅니다. 즉 최근 24시간 동안의 강세 게시물에서 약세 게시물을 뺀 값이며, 최근 게시물에 더 큰 가중치를 둡니다. 모든 경로가 여기서 시작하고, 확률은 이 값을 기준으로 측정됩니다. 이 값은 매시간 갱신되는 최신 /sentiment 포인트와 약간 다를 수 있습니다.
horizon_hours
예측이 얼마나 앞을 내다보는지(시간 단위)이며, 항상 72입니다.
reason
자산을 예측할 수 없는 이유로, too_little_history, stale_data, missing_price 중 하나입니다. status가 ok이면 null입니다.
too_little_historystale_datamissing_pricenull
refreshed
이 요청이 예측을 다시 실행한 경우(refresh=true이고 재실행이 제때 완료된 경우) true이며, 예약 실행된 최신 예측이면 false입니다.
sample_paths
심리 신호에 대한 24개의 가능한 경로로, 각각 series와 정렬됩니다. 이를 그려서 결과의 분포를 확인하세요.
series
array<object>
as_of부터 4시간마다의 예측으로, 18개 스텝이며 가장 오래된 것부터 정렬됩니다.
series
as_of부터 4시간마다의 예측으로, 18개 스텝이며 가장 오래된 것부터 정렬됩니다.
series[].bearish_posts
object
이 4시간 스텝에서만 예상되는 약세 게시물 수로, 봇은 제외됩니다. /sentiment의 구간 게시물과 같으며, 24시간 누적 집계와는 다릅니다.
series[].bearish_posts
이 4시간 스텝에서만 예상되는 약세 게시물 수로, 봇은 제외됩니다. /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
}