Universe Groups
Returns the latest group metric aggregations for all 5 dimensions (Region, Sector, Industry, Type, Country) within a universe. If a universe doesn’t define a dimension, metrics are computed using the macro universe’s config.
Request
# All dimensions for the macro universe
curl https://api.bytetree.io/api/universes/macro
# All dimensions for Global Trends
curl https://api.bytetree.io/api/universes/global-trends-200
# Time series
curl "https://api.bytetree.io/api/universes/macro?from=2026-01-01&to=2026-03-01"
Path Parameters
| Name | Type | Required | Description |
|---|
universe | string | Yes | Universe slug (e.g. macro, global-trends-200) — see Universes for the vocabulary. Out-of-scope slugs return 403. |
Query Parameters
| Name | Type | Required | Description |
|---|
from | string | No | Start date YYYY-MM-DD. Returns time series when provided. |
to | string | No | End date YYYY-MM-DD |
fields | string | No | Comma-separated metric fields to include |
Response
| Field | Type | Description |
|---|
universe | string | Universe key |
count | number | Total number of group records across all dimensions |
data | object | Groups organised by category: { region: [...], sector: [...], industry: [...], type: [...], country: [...] } |
Each group metric object contains:
Identification
| Field | Type | Description |
|---|
dimension | string | Universe/category slug (e.g. macro/region, global-trends-200/region) |
group | string | Group label (e.g. Europe, Americas, Technology) |
date | string | Aggregation date |
assetCount | number | Number of assets in this group |
ByteTrend Score Aggregates
Each of the four ByteTrend scores (see Latest Metrics) has a matching set of group-level aggregates. Window suffixes map to UI labels: 200w = Weekly, 30d = Daily.
| Field | Type | Description |
|---|
avgByteTrendLocal200w / avgByteTrendLocal30d | number | null | Mean Local (Weekly / Daily) score across the group |
avgByteTrendCapr200w / avgByteTrendCapr30d | number | null | Mean CAPR (Weekly / Daily) score |
medianByteTrendLocal200w / medianByteTrendLocal30d | number | null | Median Local (Weekly / Daily) score |
medianByteTrendCapr200w / medianByteTrendCapr30d | number | null | Median CAPR (Weekly / Daily) score |
pctScore5Local200w / pctScore0Local200w | number | null | Fraction of assets at Weekly Local score 5 / 0 |
pctScore5Local30d / pctScore0Local30d | number | null | Fraction at Daily Local score 5 / 0 |
pctScore5Capr200w / pctScore0Capr200w | number | null | Fraction at Weekly CAPR score 5 / 0 |
pctScore5Capr30d / pctScore0Capr30d | number | null | Fraction at Daily CAPR score 5 / 0 |
ByteTrend Score Bins
Per-variant histograms of the assets in the group, bucketed by their ByteTrend score (0–5). Useful for rendering distribution shape — a small admin component (ScoreHistogram) is the primary consumer. Each variant’s array is the bin count vector; bins[0] counts assets at score 0, bins[5] counts assets at score 5.
| Field | Type | Description |
|---|
byteTrendBins | object | undefined | Per-variant score histograms. See shape below. Omitted on rows aggregated before 2026-05-02 — see the Changelog. |
The byteTrendBins object:
| Key | Type | Description |
|---|
local200w | number[6] | Score histogram for Weekly Local — bins[i] = count of assets at Local Weekly score i |
local30d | number[6] | Score histogram for Daily Local |
capr200w | number[6] | Score histogram for Weekly CAPR |
capr30d | number[6] | Score histogram for Daily CAPR |
For each variant, sum(bins) ≤ assetCount — the sum equals assetCount minus the number of group members whose score for that variant is null (e.g. asset hasn’t accumulated enough history for the long window).
"byteTrendBins": {
"local200w": [4, 7, 27, 3, 17, 47],
"local30d": [11, 15, 16, 17, 10, 37],
"capr200w": [23, 16, 15, 16, 13, 22],
"capr30d": [40, 10, 18, 11, 4, 23]
}
(Sample: macro/region/North America, assetCount = 106 — sums of 105 / 106 / 105 / 106 reflect 1, 0, 1, 0 null-score members respectively.)
Trend Distribution
| Field | Type | Description |
|---|
trendDistribution | object | Count of assets per Weekly CAPR trend regime (e.g. { "Leading Trend": 3, "Neutral": 95, ... }) |
dominantTrend | string | null | Most common trend regime |
Returns
| Field | Type | Description |
|---|
avgReturnUsd1W … avgReturnUsd12M | number | null | Equal-weighted average USD returns |
capWtReturnUsd1W … capWtReturnUsd12M | number | null | Market-cap-weighted USD returns |
Risk
| Field | Type | Description |
|---|
avgVolatility30w | number | null | Average 30-week volatility |
avgSharpe52w | number | null | Average 52-week Sharpe ratio |
totalMarketCapUsd | number | null | Sum of market caps in USD |
avgDrawdown52w | number | null | Average 52-week drawdown |
avgRelStrengthCapped3M / avgRelStrengthCapped12M | number | null | Average capped relative strength |
{
"universe": "global-trends-200",
"count": 83,
"data": {
"region": [
{
"dimension": "global-trends-200/region",
"group": "Americas",
"date": "2026-04-22",
"assetCount": 80,
"avgByteTrendLocal200w": 3.2,
"avgByteTrendLocal30d": 2.9,
"avgByteTrendCapr200w": 2.8,
"avgByteTrendCapr30d": 2.4,
"medianByteTrendLocal200w": 4,
"pctScore5Local200w": 0.4,
"pctScore0Local200w": 0.05,
"totalMarketCapUsd": 45000000000000,
"dominantTrend": "Neutral",
"byteTrendBins": {
"local200w": [4, 7, 27, 3, 17, 47],
"local30d": [11, 15, 16, 17, 10, 37],
"capr200w": [23, 16, 15, 16, 13, 22],
"capr30d": [40, 10, 18, 11, 4, 23]
},
"..." : "..."
}
],
"sector": [
{ "dimension": "global-trends-200/sector", "group": "Technology", "assetCount": 25, "..." : "..." }
],
"industry": [ "..." ],
"type": [ "..." ]
}
}