Cluster comparison
/clusters/comparison
Every author cluster side by side: its posts and their change, how bullish it is against the market, the asset it turned to more than the market did, and its posts day by day.
Per cluster: posts, bullish and bearish posts, and activity_change_pct, the change in posts against the previous window of the same length (null when that window is not wholly inside the data or held no posts). cluster_bullish_share is bullish ÷ (bullish + bearish) posts, and market_bullish_share is the same for the market the cluster reads over the same days and asset classes, so their difference is the cluster's stance against the market. trending_asset is the asset the cluster turned to more than the market did over the last 7 complete days, whatever the window: the rise in its share of the cluster's posts against the 7 days before, less the rise in its share of the market's posts. It needs 3 or more cluster posts in the last 7 days, and is null when the cluster out-gains the market on no asset. series is every complete day of the window, days without posts included. Clusters come most posts first.
Built from a daily per-cluster rollup of complete UTC days (today excluded, refreshed every few hours). The market is every author except bots; asset_class filters every cluster and the market. Posting communities (wallstreetbets, reddit) cover equities only, so they are absent unless equity is selected.
Parameters
The markets to compare the clusters across: equity (stocks and ETFs), commodity, index, crypto, or any combination, for example asset_class=equity,index. Defaults to all four. Send several comma-separated.
Default:equity,commodity,index,crypto
How many complete UTC days to compare, counting back from the latest complete day: 7, 30, or 90. activity_change_pct compares with the same number of days before. Free plans read up to 90 days back; Pro plans up to this parameter's maximum. A value reaching past your plan's window returns 403 and is not charged.
73090
Default:30
cURL Example
curl --request GET \
--url 'https://nebula-api.hiddensystems.ai/api/v1/public/clusters/comparison' \
--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.
clusters
array<object>
Every cluster with posts in the window, most posts first.
clusters
Every cluster with posts in the window, most posts first.
clusters[].activity_change_pct
Percent change in posts against the previous window of equal length (76 posts after 84 is -9.52); absent when no comparison is possible.
clusters[].bearish_posts
The cluster's bearish posts over the window.
clusters[].bullish_posts
The cluster's bullish posts over the window.
clusters[].cluster_bullish_share
The cluster's bullish ÷ (bullish + bearish) posts over the window, from 0 to 1. Null with no bullish or bearish posts.
clusters[].cluster_id
Canonical author-cluster identifier.
clusters[].market_bullish_share
The same share for the market the cluster reads, over the same days and asset classes (the equity market for a posting community): the baseline cluster_bullish_share compares with. Null with no bullish or bearish posts.
clusters[].posts
The cluster's posts over the window.
clusters[].series
array<object>
Every complete UTC day of the window, oldest first, days without posts included.
clusters[].series
Every complete UTC day of the window, oldest first, days without posts included.
clusters[].series[].bearish_posts
The cluster's bearish posts on the day.
clusters[].series[].bullish_posts
The cluster's bullish posts on the day.
clusters[].series[].posts
The cluster's posts on the day.
clusters[].series[].timestamp
UTC start of the day: 00:00.
clusters[].trending_asset
object
The asset the cluster turned to more than the market did over the last 7 complete days; null when there is none.
clusters[].trending_asset
The asset the cluster turned to more than the market did over the last 7 complete days; null when there is none.
clusters[].trending_asset.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
clusters[].trending_asset.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.
clusters[].trending_asset.name
Human-readable name.
clusters[].trending_asset.symbol
Display ticker or market symbol.
days
Window length in complete UTC days, ending at the latest complete day.
{
"asset_classes": [
"equity",
"commodity",
"index",
"crypto"
],
"clusters": [
{
"activity_change_pct": 7.61,
"bearish_posts": 13550,
"bullish_posts": 61240,
"cluster_bullish_share": 0.8188,
"cluster_id": "media",
"market_bullish_share": 0.7812,
"posts": 173412,
"series": [
{
"bearish_posts": 480,
"bullish_posts": 2210,
"posts": 6120,
"timestamp": "2026-09-11T00:00:00Z"
},
{
"bearish_posts": 512,
"bullish_posts": 2102,
"posts": 5874,
"timestamp": "2026-09-12T00:00:00Z"
}
],
"trending_asset": {
"asset_class": "equity",
"asset_id": "NVDA",
"name": "NVIDIA Corporation",
"symbol": "NVDA"
}
},
{
"activity_change_pct": 171.42,
"bearish_posts": 18860,
"bullish_posts": 20480,
"cluster_bullish_share": 0.5206,
"cluster_id": "wallstreetbets",
"market_bullish_share": 0.7035,
"posts": 88034,
"series": [
{
"bearish_posts": 702,
"bullish_posts": 790,
"posts": 3310,
"timestamp": "2026-09-11T00:00:00Z"
},
{
"bearish_posts": 681,
"bullish_posts": 655,
"posts": 2987,
"timestamp": "2026-09-12T00:00:00Z"
}
],
"trending_asset": {
"asset_class": "equity",
"asset_id": "ORCL",
"name": "Oracle Corporation",
"symbol": "ORCL"
}
}
],
"days": 30
}