Cluster profile
/clusters/profile
One cluster's behavioural traits, each ranked against every other cluster.
earliness(days): how far ahead of everyone else its posts arrive around hype-cycle peaks, within 24 hours of the market's peak hour. Positive is early. Needs 20 cycles.contrarian(share): assets where it and the market lean clearly opposite ways (both stances at least 0.1 from neutral).hype_fade(days): how far its bullish posts lead its posts overall around peaks. Positive means it cooled into the hype.conviction(days): average length of its same-direction runs on an asset.focus(share): posts on its 5 most-discussed assets.breadth(count): assets with 3 or more posts.bullishness(share): bullish ÷ (bullish + bearish) posts.discovery(share): posts on assets outside the market's 100 most-discussed.turnover(share): week-to-week change in its top 10 assets; 0 is unchanged, 1 all new.coverage(share): hype cycles it joined (3 or more posts within 7 days of the peak).
A hype cycle is an asset whose market posts peaked at 50 or more in a day and at least 3× its median day. rank 1 is the highest value, percentile runs from 0 to 1, and peer_values holds every other cluster's value. A trait is null when there is too little data.
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 the cluster, the market and peers.
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.
Parameters
The author cluster to analyse, as the cluster_id /clusters returns, for example smart_money, kols, macro_analyst, or wallstreetbets. Every id listed under the clusters parameter of /sentiment is accepted, including the caller lists (smart_money, dumb_money, top_degens) and the posting communities (wallstreetbets, reddit). An unknown id returns 400.
Example:smart_money
The markets to analyse: equity (stocks and ETFs), commodity, index, crypto, or any combination, for example asset_class=equity,index. Defaults to all four. Posting communities cover equities only, so with wallstreetbets or reddit the selection must include equity. Send several comma-separated.
Default:equity,commodity,index,crypto
How many complete UTC days to analyse, counting back from the latest complete day: 30 or 90. Longer windows see more hype cycles, so the cycle traits are steadier. 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.
3090
Default:90
cURL Example
curl --get \
--url 'https://nebula-api.hiddensystems.ai/api/v1/public/clusters/profile' \
--data-urlencode 'cluster_id=smart_money' \
--header 'X-API-Key: YOUR_API_KEY'
Responses
Media type application/json
active_clusters
Clusters active in the window: the population traits are ranked within.
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.
days
Window length in complete UTC days, ending at the latest complete day.
hype_cycles
Market hype cycles in the window: assets whose posts peaked at 50 or more in a day and at least 3× their median day.
traits
array<object>
One entry per trait, in the order earliness, contrarian, hype_fade, conviction, focus, breadth, bullishness, discovery, turnover, coverage.
traits
One entry per trait, in the order earliness, contrarian, hype_fade, conviction, focus, breadth, bullishness, discovery, turnover, coverage.
traits[].peer_values
Every other cluster's value for this trait, ascending.
traits[].percentile
From 0 (lowest) to 1 (highest) among clusters with a value. Null when value is null.
traits[].rank
1 is the highest value; tied clusters share the better rank. Null when value is null.
traits[].trait
The trait measured; the operation description defines each one.
earlinesscontrarianhype_fadeconvictionfocusbreadthbullishnessdiscoveryturnovercoverage
traits[].unit
days, share (0 to 1) or count; fixed per trait.
dayssharecount
traits[].value
The cluster's value for this trait, in unit; null when the cluster has too little data for it.
{
"active_clusters": 34,
"asset_classes": [
"equity",
"commodity",
"index",
"crypto"
],
"cluster_id": "smart_money",
"days": 90,
"hype_cycles": 41,
"traits": [
{
"peer_values": [
-1.8,
-0.64,
0.12,
0.87,
2.05
],
"percentile": 0.9394,
"rank": 3,
"trait": "earliness",
"unit": "days",
"value": 1.42
},
{
"peer_values": [
0.041,
0.083,
0.112,
0.204,
0.267
],
"percentile": 0.7576,
"rank": 9,
"trait": "contrarian",
"unit": "share",
"value": 0.1875
},
{
"peer_values": [
-1.1,
-0.3,
0.2,
0.9,
1.4
],
"percentile": 0.8182,
"rank": 7,
"trait": "hype_fade",
"unit": "days",
"value": 0.6
},
{
"peer_values": [
1.4,
1.9,
2.2,
2.8,
3.6
],
"percentile": 0.6667,
"rank": 12,
"trait": "conviction",
"unit": "days",
"value": 2.35
},
{
"peer_values": [
0.18,
0.24,
0.35,
0.47,
0.72
],
"percentile": 0.4242,
"rank": 20,
"trait": "focus",
"unit": "share",
"value": 0.31
},
{
"peer_values": [
41,
96,
188,
405,
1270
],
"percentile": 0.8485,
"rank": 6,
"trait": "breadth",
"unit": "count",
"value": 312
},
{
"peer_values": [
0.52,
0.64,
0.71,
0.78,
0.86
],
"percentile": 0.6061,
"rank": 14,
"trait": "bullishness",
"unit": "share",
"value": 0.7412
},
{
"peer_values": [
0.09,
0.17,
0.26,
0.38,
0.61
],
"percentile": 0.5152,
"rank": 17,
"trait": "discovery",
"unit": "share",
"value": 0.2837
},
{
"peer_values": [
0.18,
0.27,
0.36,
0.44,
0.58
],
"percentile": 0.3939,
"rank": 21,
"trait": "turnover",
"unit": "share",
"value": 0.3455
},
{
"peer_values": [
0.05,
0.22,
0.41,
0.63,
0.88
],
"percentile": 0.7879,
"rank": 8,
"trait": "coverage",
"unit": "share",
"value": 0.6585
}
]
}