Cluster rotation
/clusters/rotation
Where one cluster's attention is moving: the assets gaining and losing share of its posts against the previous window, in basis points, and how its posts split across markets, people, and events.
Parameter rules:
- Send
cluster_id. cluster_idnames one cluster; to compare several, call once per cluster or use /clusters for every cluster at once.- Posting communities (
wallstreetbets,reddit) cover equities only: with one of them,asset_classmust includeequity.
Wallet payment available at https://nebula-api.hiddensystems.ai/api/v1/x402/clusters/rotation. No Nebula account or API key required; check the payment offer before signing. x402 payment guide.
Parameters
The cluster to analyse, as /clusters returns it, for example smart_money or wallstreetbets. Any id from the clusters parameter of /sentiment.
Example:smart_money
The markets to analyse: any of equity, commodity, index, and crypto, comma-separated. Defaults to all four. Send several comma-separated.
Default:equity,commodity,index,crypto
The window to compare with the window of the same length before it: 24 (the last 24 hours), 168 (the last 7 complete days), or 720 (the last 30 complete days). Free plans reach back 90 days; further returns 403.
24168720
Default:168
Maximum gainers returned, and separately maximum losers.
Default:6
cURL Example
curl --get \
--url 'https://nebula-api.hiddensystems.ai/api/v1/public/clusters/rotation' \
--data-urlencode 'cluster_id=smart_money' \
--header 'X-API-Key: YOUR_API_KEY'
Responses
Media type application/json
asset_classes
The markets analysed, in the order equity, commodity, index, crypto: the asset_class values requested, or all four when asset_class was omitted.
cluster_id
The cluster analysed, as its canonical cluster_id.
gainers
array<object>
Assets whose share of the cluster's posts rose most, largest gain first. Only assets whose share rose are listed.
gainers
Assets whose share of the cluster's posts rose most, largest gain first. Only assets whose share rose are listed.
gainers[].asset_class
The asset's class: equity (stocks and ETFs), commodity, index, or crypto. Send it with asset_id on every asset-scoped request.
equitycommodityindexcrypto
gainers[].asset_id
Canonical public asset identifier: the ticker or market symbol for stocks, commodities, and indices, and the CoinGecko slug (or, without one, a numeric id) for crypto.
gainers[].current_share
Posts as a fraction of all the cluster's posts about the selected asset classes in the current window, from 0 to 1.
gainers[].name
Human-readable name.
gainers[].previous_share
The asset's posts as a fraction of all the cluster's posts in the comparison window, from 0 to 1.
gainers[].share_change_bps
current_share minus the share in the comparison window, in basis points: 100 is one percentage point. Negative means the share fell.
gainers[].symbol
Display ticker or market symbol.
hours
Lookback window represented by the response, in hours.
losers
array<object>
Assets whose share of the cluster's posts fell most, largest fall first. Only assets whose share fell are listed.
losers
Assets whose share of the cluster's posts fell most, largest fall first. Only assets whose share fell are listed.
losers[].asset_class
The asset's class: equity (stocks and ETFs), commodity, index, or crypto. Send it with asset_id on every asset-scoped request.
equitycommodityindexcrypto
losers[].asset_id
Canonical public asset identifier: the ticker or market symbol for stocks, commodities, and indices, and the CoinGecko slug (or, without one, a numeric id) for crypto.
losers[].current_share
Posts as a fraction of all the cluster's posts about the selected asset classes in the current window, from 0 to 1.
losers[].name
Human-readable name.
losers[].previous_share
The asset's posts as a fraction of all the cluster's posts in the comparison window, from 0 to 1.
losers[].share_change_bps
current_share minus the share in the comparison window, in basis points: 100 is one percentage point. Negative means the share fell.
losers[].symbol
Display ticker or market symbol.
topic_changes
array<object>
Each topic's share of the current window and its change against the previous one, in the order equity, commodity, index, crypto, people, events.
topic_changes
Each topic's share of the current window and its change against the previous one, in the order equity, commodity, index, crypto, people, events.
topic_changes[].current_share
The topic's share of the cluster's posts in the current window, from 0 to 1.
topic_changes[].share_change_bps
Change in share against the previous window, in basis points (100 is one percentage point).
topic_changes[].topic
equity, commodity, index, crypto, people (people and their accounts) or events (places, themes and events).
equitycommodityindexcryptopeopleevents
topic_series
array<object>
Each topic's share of the cluster's posts per complete UTC day, oldest first.
topic_series
Each topic's share of the cluster's posts per complete UTC day, oldest first.
topic_series[].timestamp
UTC start of the day: 00:00.
topic_series[].topics
array<object>
Each topic's share of the cluster's posts that day, in the order of topic_changes. The shares add up to 1 when the cluster posted that day.
topic_series[].topics
Each topic's share of the cluster's posts that day, in the order of topic_changes. The shares add up to 1 when the cluster posted that day.
topic_series[].topics[].topic
equity, commodity, index, crypto, people (people and their accounts) or events (places, themes and events).
equitycommodityindexcryptopeopleevents
topic_series[].topics[].topic_share
The topic's share of the cluster's posts that day, from 0 to 1.
{
"asset_classes": [
"equity",
"commodity",
"index",
"crypto"
],
"cluster_id": "smart_money",
"gainers": [
{
"asset_class": "equity",
"asset_id": "NVDA",
"current_share": 0.0687,
"name": "NVIDIA Corporation",
"previous_share": 0.0412,
"share_change_bps": 275,
"symbol": "NVDA"
}
],
"hours": 168,
"losers": [
{
"asset_class": "equity",
"asset_id": "TSLA",
"current_share": 0.0318,
"name": "Tesla, Inc.",
"previous_share": 0.0521,
"share_change_bps": -203,
"symbol": "TSLA"
}
],
"topic_changes": [
{
"current_share": 0.52,
"share_change_bps": 120,
"topic": "equity"
},
{
"current_share": 0.03,
"share_change_bps": -15,
"topic": "commodity"
},
{
"current_share": 0.04,
"share_change_bps": 10,
"topic": "index"
},
{
"current_share": 0.14,
"share_change_bps": -115,
"topic": "crypto"
},
{
"current_share": 0.11,
"share_change_bps": 35,
"topic": "people"
},
{
"current_share": 0.16,
"share_change_bps": -35,
"topic": "events"
}
],
"topic_series": [
{
"timestamp": "2026-09-10T00:00:00Z",
"topics": [
{
"topic": "equity",
"topic_share": 0.5
},
{
"topic": "commodity",
"topic_share": 0.03
},
{
"topic": "index",
"topic_share": 0.04
},
{
"topic": "crypto",
"topic_share": 0.15
},
{
"topic": "people",
"topic_share": 0.11
},
{
"topic": "events",
"topic_share": 0.17
}
]
},
{
"timestamp": "2026-09-11T00:00:00Z",
"topics": [
{
"topic": "equity",
"topic_share": 0.53
},
{
"topic": "commodity",
"topic_share": 0.03
},
{
"topic": "index",
"topic_share": 0.04
},
{
"topic": "crypto",
"topic_share": 0.13
},
{
"topic": "people",
"topic_share": 0.11
},
{
"topic": "events",
"topic_share": 0.16
}
]
}
]
}