URD ATLAS
StatusTrack RecordThresholdsGlossaryFAQAPI DocsMethodology
Account
ChainsStatusTrack RecordThresholdsGlossaryFAQAPI DocsMethodology
Account
© 2026 Urd Atlas.
AboutTermsPrivacy
No price data · No forecasts · No recommendations
What you actually get

JSON Schema Reference
Gold, Derived, Meta, and Briefs

Every field in every published JSON file — defined at two levels. This page exists so you know exactly what a subscription delivers before you subscribe.
← Back to API DocsGoldMetaDerivedBriefs
← API Docs
DatasetMethodology v1Published artifact contract
Each entry shows: the field name, type, whether it can be null, which chains it applies to, a plain-language description, and an Explain button for full Basic + Advanced + Traceability detail.
Layer 1

Gold

Raw daily aggregates from the blockchain — exactly what the network did on each day, in native units, with no statistical transformation applied. This is the authoritative source that all Meta and Derived computations are built from.

gold/<chain>/latest.jsongold/<chain>/last90d.jsongold/<chain>/YYYY-MM-DD.json
datestring (YYYY-MM-DD)
Explain
The calendar date this row represents. All metrics in the row are aggregated over this UTC day.

date

string (YYYY-MM-DD)
×
Basic
The calendar date this row represents. All metrics in the row are aggregated over this UTC day.
Advanced
The as-of date for all metrics in the row. Computed as a UTC calendar day. This is the temporal coordinate used for all downstream processing — z-score windows, percentile lookups, and moving average computations all anchor to this field. It is a string in ISO 8601 format (YYYY-MM-DD) rather than a timestamp to avoid timezone ambiguity.
Traceability
feature_daily_agg.py → build_gold_timeseries.py → published JSON
chainstring
Explain
Which blockchain this row belongs to. One of bitcoin, ethereum, arbitrum, or base.

chain

string
×
Basic
Which blockchain this row belongs to. One of bitcoin, ethereum, arbitrum, or base.
Advanced
Canonical chain identifier used as a routing key across the entire published artifact hierarchy. The chain field determines which metric profile applies — BTC uses a UTXO profile that suppresses EVM-specific fields; ETH L1 exposes the full EVM surface; L2s use a rollup-specific profile.
tx_count_dailynumbernullable
Explain
The number of confirmed transactions on this chain for this day. The most direct measure of how busy the network was.

tx_count_daily

number · nullable
×
Basic
The number of confirmed transactions on this chain for this day. The most direct measure of how busy the network was.
Advanced
Count of confirmed transactions from the AWS Public Blockchain Data transactions table for the given UTC day. On EVM chains this includes all transaction types; on Bitcoin this counts confirmed UTXO-model transactions. Used as the primary demand signal — feeds scorecard.dimensions.demand via log-normalised z-score.
Traceability
feature_daily_agg.py → tx_count_daily
block_count_dailynumbernullable
Explain
How many blocks were produced on this day. For most chains this is fairly stable (Bitcoin targets ~144/day). Deviations from the expected rate are more informative than the absolute value.

block_count_daily

number · nullable
×
Basic
How many blocks were produced on this day. For most chains this is fairly stable (Bitcoin targets ~144/day). Deviations from the expected rate are more informative than the absolute value.
Advanced
Count of distinct blocks from the AWS blocks table for the given UTC day. Used as a denominator for avg_block_time_sec and as a throughput normaliser. On Bitcoin, consistent deviation from the ~144/day target can indicate hash rate changes or difficulty adjustment effects. On EVM chains with near-instant block times, this number is much larger.
Traceability
feature_daily_agg.py → block_count_daily
value_transferred_nativenumbernullable
Explain
The total amount of the chain's native currency that moved between addresses on this day, summed across all transactions.

value_transferred_native

number · nullable
×
Basic
The total amount of the chain's native currency that moved between addresses on this day, summed across all transactions.
Advanced
Sum of the best-available native value field from the AWS transactions table. Interpretation varies by chain — on Bitcoin this is the sum of UTXO outputs; on EVM chains it reflects msg.value transfers. This field has known semantic limitations: it includes protocol-level movements, smart contract interactions where value is not economically meaningful, and internal transfers. It should be used for trend context rather than as a precise economic volume measure.
Traceability
feature_daily_agg.py → value_transferred_native
median_tx_value_nativenumbernullable
Explain
The median (middle value) amount moved per transaction on this day, in native token units. Less distorted by very large outlier transactions than the average.

median_tx_value_native

number · nullable
×
Basic
The median (middle value) amount moved per transaction on this day, in native token units. Less distorted by very large outlier transactions than the average.
Advanced
P50 of the transaction value distribution for the day. Used as a denominator in fee_burden_proxy = median_tx_fee_native / median_tx_value_native, which normalises fee cost relative to the typical economic size of a transaction. On EVM chains where many transactions have zero msg.value (smart contract calls), this can be near zero and the fee burden proxy may not be meaningful — the pipeline handles this gracefully via null fallback.
Traceability
feature_daily_agg.py → median_tx_value_native
median_tx_fee_nativenumbernullable
Explain
The typical fee paid per transaction on this day, in native token units. Median is used because a small number of very high-fee transactions would distort the average.

median_tx_fee_native

number · nullable
×
Basic
The typical fee paid per transaction on this day, in native token units. Median is used because a small number of very high-fee transactions would distort the average.
Advanced
P50 of the fee distribution for the day in native units. The primary friction input. On Ethereum, this reflects the median total fee (base + priority) post-EIP-1559. On Bitcoin, this is the median sat-denominated fee. The raw value in native units is published without conversion — unit interpretation depends on the chain.
Traceability
feature_daily_agg.py → median_tx_fee_native
failed_tx_ratenumber (0–1)nullableEVM only
Explain
The fraction of transactions that failed on this day — attempted but did not complete successfully. Higher values indicate more execution friction.

failed_tx_rate

number (0–1) · nullable · EVM only
×
Basic
The fraction of transactions that failed on this day — attempted but did not complete successfully. Higher values indicate more execution friction.
Advanced
Mean of (receipt_status != 1) for EVM transactions. Always null for Bitcoin, which has no analogous on-chain failure concept under the UTXO model. A rising failed_tx_rate alongside elevated fees suggests the network is under genuine execution strain rather than merely high demand. Feeds scorecard.dimensions.friction alongside fee_burden_proxy.
Traceability
feature_daily_agg.py → failed_tx_rate (EVM only)
gas_utilization_pctnumber (0–100)nullableETH L1 only
Explain
How full the Ethereum blocks were on average, expressed as a percentage of total gas capacity. 100% means every block was completely full.

gas_utilization_pct

number (0–100) · nullable · ETH L1 only
×
Basic
How full the Ethereum blocks were on average, expressed as a percentage of total gas capacity. 100% means every block was completely full.
Advanced
Mean of gas_used / gas_limit across all blocks for the day. Only meaningful for Ethereum L1 — hidden for Bitcoin (no gas model) and L2 chains (different capacity mechanics). Under EIP-1559, the target is 50% utilisation with a 2× burst ceiling. Values consistently above 50% indicate the base fee is rising; values near 100% indicate the network is running at its hard ceiling. The primary scorecard.dimensions.capacity input for ETH L1.
Traceability
feature_daily_agg.py → gas_utilization_pct (ETH L1 only)
unique_active_addressesnumbernullableEVM in practice
Explain
The number of distinct wallet addresses that sent or received a transaction on this day. A breadth-of-participation signal — how many different actors used the network.

unique_active_addresses

number · nullable · EVM in practice
×
Basic
The number of distinct wallet addresses that sent or received a transaction on this day. A breadth-of-participation signal — how many different actors used the network.
Advanced
Count of unique addresses appearing in either the sender or recipient field of transactions for the day, excluding nulls. On EVM chains this is generally available; on Bitcoin the UTXO model makes address-level aggregation less reliable and this field is often null. Used alongside tx_count_daily in the demand axis — together they distinguish broad shallow usage from concentrated deep usage via the derived tx_per_user ratio.
Traceability
feature_daily_agg.py → unique_active_addresses
avg_block_time_secnumbernullable
Explain
The average time between blocks on this day, in seconds. Bitcoin targets about 600 seconds (10 minutes). Ethereum targets about 12 seconds. Deviations from normal are more meaningful than the absolute value.

avg_block_time_sec

number · nullable
×
Basic
The average time between blocks on this day, in seconds. Bitcoin targets about 600 seconds (10 minutes). Ethereum targets about 12 seconds. Deviations from normal are more meaningful than the absolute value.
Advanced
Computed as (period duration in seconds) / block_count for the day. Used in the capacity axis not as a raw value but as input to a derived instability proxy: the pipeline computes how much the block time deviated from its own rolling median, then feeds that instability signal into the capacity scorecard. This avoids treating a slightly faster block time as uniformly better or worse — what matters is whether block production became erratic.
Traceability
feature_daily_agg.py → avg_block_time_sec → blocktime_instability (regime_engine.py)
Layer 2

Meta

The intelligence layer — regime classification, confidence scoring, three-axis scorecard, and ranked driver set. This is the primary product output and the layer most subscribers use for quantitative research.

meta/<chain>/latest.jsonmeta/<chain>/last90d.jsonmeta/<chain>/YYYY-MM-DD.json
Top-level fields
datestring (YYYY-MM-DD)
Explain
The as-of date this meta row describes.

date

string (YYYY-MM-DD)
×
Basic
The as-of date this meta row describes.
Advanced
Canonical date field — matches the Gold row this meta output was computed over. Used as the primary key for row-level lookups and time-series ordering.
chainstring
Explain
Which chain this row belongs to: bitcoin, ethereum, arbitrum, or base.

chain

string
×
Basic
Which chain this row belongs to: bitcoin, ethereum, arbitrum, or base.
Advanced
Chain identifier propagated from the Gold layer. Determines the metric profile applied during computation.
updated_throughstring (YYYY-MM-DD)nullable
Explain
The most recent Gold date whose data was included in this meta computation. Usually equal to date but may differ during partial rebuilds.

updated_through

string (YYYY-MM-DD) · nullable
×
Basic
The most recent Gold date whose data was included in this meta computation. Usually equal to date but may differ during partial rebuilds.
Advanced
The temporal ceiling of the evidence window used for this meta row. A date field rather than a timestamp to match the Gold schema convention. Critical for time-series analysis — use this as the observation date, not the pipeline run timestamp.
methodology_versionstringnullable
Explain
Which version of the analytical model produced this row. If methodology changes, this field changes.

methodology_version

string · nullable
×
Basic
Which version of the analytical model produced this row. If methodology changes, this field changes.
Advanced
Version string identifying the pipeline methodology. Required for comparability analysis: rows with different methodology_version values may have been produced under different threshold parameters, metric definitions, or scoring formulas. Changes to this field are documented at /methodology/changelog.
revision_idnumbernullable
Explain
This field is not currently part of the canonical public provenance model for archived Meta outputs. Public provenance is instead anchored in date, updated_through, methodology_version, dataset revision, and regime.determinism_hash where applicable.

revision_id

number · nullable
×
Basic
This field is not currently part of the canonical public provenance model for archived Meta outputs. Public provenance is instead anchored in date, updated_through, methodology_version, dataset revision, and regime.determinism_hash where applicable.
Advanced
Public provenance should be read via methodology_version, updated_through, dataset revision, and regime.determinism_hash. Do not treat revision_id as the sole or required public traceability anchor.
status — the published regime label
status.labelstring (enum)
Explain
The headline regime label: STABLE, HEATING, CONGESTED, CHEAP, or UNKNOWN/DEGRADED. The top-line answer to "what state is the network in right now?"

status.label

string (enum)
×
Basic
The headline regime label: STABLE, HEATING, CONGESTED, CHEAP, or UNKNOWN/DEGRADED. The top-line answer to "what state is the network in right now?"
Advanced
Deterministic output of the regime classification rule tree, applied after confidence gating. Rule evaluation order: (1) confidence < 0.40 → UNKNOWN/DEGRADED; (2) Capacity EXTREME_HIGH or (Capacity HIGH and Friction HIGH) → CONGESTED; (3) Friction LOW and Capacity LOW → CHEAP; (4) Demand HIGH and any axis HEATING → HEATING; (5) default → STABLE. The UI reads this field directly — it never recomputes the label.
Traceability
main.py → status object → status.label
status.colorstring (enum)
Explain
A colour hint for the badge — green, yellow, red, blue, or gray — corresponding to the regime label.

status.color

string (enum)
×
Basic
A colour hint for the badge — green, yellow, red, blue, or gray — corresponding to the regime label.
Advanced
Maps 1:1 to status.label: STABLE=green, HEATING=yellow, CONGESTED=red, CHEAP=blue, UNKNOWN/DEGRADED=gray. UI presentation field only — no analytical meaning beyond label mapping.
status.one_linerstringnullable
Explain
A short human-readable summary of the current state, e.g. 'Demand: High; Friction: Normal; Capacity: Normal'. Auto-generated by the pipeline.

status.one_liner

string · nullable
×
Basic
A short human-readable summary of the current state, e.g. 'Demand: High; Friction: Normal; Capacity: Normal'. Auto-generated by the pipeline.
Advanced
Pipeline-authored descriptive copy that compresses regime, scorecard levels, and chain context into one sentence ≤80 chars. Rendered directly on chain pages. Not an independent inference layer — it restates the scorecard levels in prose.
confidence — evidence quality for this row
confidence.confidence_scorenumber (0–1)nullable
Explain
How well-supported the current regime label is by the available data. Think of it as the strength of the weather forecast — closer to 1 means stronger, more consistent evidence.

confidence.confidence_score

number (0–1) · nullable
×
Basic
How well-supported the current regime label is by the available data. Think of it as the strength of the weather forecast — closer to 1 means stronger, more consistent evidence.
Advanced
Geometric mean of data_quality_score and label_confidence_score: √(dq × lc). The geometric mean ensures weakness in either component suppresses the composite. Hard gate: if score < 0.40 then status.label is forced to UNKNOWN/DEGRADED. Caution band 0.40–0.69: scorecard scores are degraded toward 50 via score = 50 + (score−50) × effective_confidence.
Traceability
confidence.confidence_score
confidence.data_quality_scorenumber (0–1)nullable
Explain
The data completeness side of confidence — do we have enough complete, recent, consistent data to evaluate this chain right now?

confidence.data_quality_score

number (0–1) · nullable
×
Basic
The data completeness side of confidence — do we have enough complete, recent, consistent data to evaluate this chain right now?
Advanced
Profile-aware composite of current required metric coverage, recent required metric coverage, recent density, history depth, and freshness versus the chain-specific publish policy. Structurally non-applicable metrics are excluded from the denominator and optional non-penalized metrics are documented separately. Weakness in data quality suppresses the full confidence score via the geometric mean.
Traceability
confidence.data_quality_score
confidence.label_confidence_scorenumber (0–1)nullable
Explain
The signal-clarity side of confidence — how sharply does the evidence point toward the specific label that was assigned, rather than toward an adjacent state?

confidence.label_confidence_score

number (0–1) · nullable
×
Basic
The signal-clarity side of confidence — how sharply does the evidence point toward the specific label that was assigned, rather than toward an adjacent state?
Advanced
Confidence v2 is label-specific and uses score_raw/regime evidence rather than confidence-degraded display scores. HEATING rewards demand rule margin, demand driver strength, trend strength, axis coherence, and available persistence. CONGESTED rewards friction/capacity pressure. CHEAP rewards low-friction evidence and absence of tight capacity. STABLE rewards genuine neutrality and lack of strong drivers. UNKNOWN/DEGRADED maps to 0. A materially lower label_confidence than data_quality indicates data is present but classification margin is thin.
Traceability
confidence.label_confidence_score
confidence.methodology_versionstring
Explain
The confidence methodology used for this row.

confidence.methodology_version

string
×
Basic
The confidence methodology used for this row.
Advanced
Confidence v2 uses profile-aware data quality and label-specific evidence scoring. Structurally non-applicable chain fields are excluded from data-quality denominators, while optional fields remain visible without reducing confidence. The public composite remains sqrt(data_quality_score × label_confidence_score).
Traceability
confidence.methodology_version
confidence.candidate_labelobjectnullable
Explain
The label supported by the evidence before the publish gate is applied.

confidence.candidate_label

object · nullable
×
Basic
The label supported by the evidence before the publish gate is applied.
Advanced
When confidence is below the product threshold, status/regime can be withheld as UNKNOWN/DEGRADED while candidate_label records the label that the evidence surface pointed toward, its label_confidence_score, and whether it was withheld by the confidence gate.
Traceability
confidence.candidate_label
confidence.lag_days_vs_utc_todaynumbernullable
Explain
How many days old the current published data is relative to today. Bitcoin and Ethereum should be 1–2 days. Arbitrum and Base are expected to be around 7 days.

confidence.lag_days_vs_utc_today

number · nullable
×
Basic
How many days old the current published data is relative to today. Bitcoin and Ethereum should be 1–2 days. Arbitrum and Base are expected to be around 7 days.
Advanced
Signed integer difference between UTC today (at page render) and the as-of date. Chain-specific policy: BTC/ETH expect 1-day lag; ARB/BASE expect 7-day lag. Staleness thresholds are calibrated relative to these expectations. Use as a freshness diagnostic — do not confuse with confidence_score, which is an evidence quality measure, not a recency measure.
Traceability
confidence.lag_days_vs_utc_today
confidence.missingbooleannullable
Explain
True if the confidence layer could not be computed for this row. When true, treat the regime label as unreliable.

confidence.missing

boolean · nullable
×
Basic
True if the confidence layer could not be computed for this row. When true, treat the regime label as unreliable.
Advanced
Set to true when the pipeline cannot produce a meaningful confidence value — typically due to insufficient data coverage or a broken pipeline stage. When true, the UI should surface a degraded state rather than presenting a spurious confidence number.
confidence.semanticsstring
Explain
A machine-readable label of what the confidence score means. Currently always evidence_sufficiency_asof_date.

confidence.semantics

string
×
Basic
A machine-readable label of what the confidence score means. Currently always evidence_sufficiency_asof_date.
Advanced
Exists to prevent semantic drift — as the confidence model evolves, this field signals what definition was in effect when the row was computed. Not intended for display; intended for programmatic consumers who need to distinguish confidence models across methodology versions.
scorecard.dimensions — three-axis structural decomposition
scorecard.dimensions.demand.scorenumber (0–100)
Explain
How strong current network usage looks relative to this chain's own recent history. 50 is neutral. Above 67 is High. Below 33 is Low.

scorecard.dimensions.demand.score

number (0–100)
×
Basic
How strong current network usage looks relative to this chain's own recent history. 50 is neutral. Above 67 is High. Below 33 is Low.
Advanced
Computed as 50 + 40 × tanh(z / 1.5) over the combined demand z-signal, then degraded toward 50 by effective_confidence = base_confidence × coverage_factor. Input metrics: tx_count_daily (log-normalised), unique_active_addresses, and tx_per_user ratio. Demand coverage factor is 3/3 when all inputs are present.
Traceability
scorecard.dimensions.demand.score
scorecard.dimensions.demand.levelstring (enum)
Explain
Qualitative band: High (score ≥ 67), Normal (34–66), or Low (≤ 33). Quick-read label for the score.

scorecard.dimensions.demand.level

string (enum)
×
Basic
Qualitative band: High (score ≥ 67), Normal (34–66), or Low (≤ 33). Quick-read label for the score.
Advanced
Discretisation of the continuous score. The regime engine uses these band values — not the raw score — in its classification rules. HEATING requires Demand = HIGH.
scorecard.dimensions.demand.coverage_factornumber (0–1)
Explain
What fraction of the expected demand inputs were available for this row. 1.0 means all three inputs were present.

scorecard.dimensions.demand.coverage_factor

number (0–1)
×
Basic
What fraction of the expected demand inputs were available for this row. 1.0 means all three inputs were present.
Advanced
Demand expects 3 components (tx_count, active_addresses, tx_per_user). coverage_factor = available / 3. Multiplied by base_confidence to produce effective_confidence for this axis. Low coverage pulls the demand score toward 50 to avoid over-interpretation.
scorecard.dimensions.demand.effective_confidencenumber (0–1)
Explain
The actual epistemic weight behind the demand score, combining overall confidence and how many demand inputs were available.

scorecard.dimensions.demand.effective_confidence

number (0–1)
×
Basic
The actual epistemic weight behind the demand score, combining overall confidence and how many demand inputs were available.
Advanced
Computed as base_confidence × coverage_factor. This is the value used to degrade the raw demand score toward 50. A demand score of 80 under effective_confidence 0.9 is much more assertive than the same score under effective_confidence 0.3.
scorecard.dimensions.friction.scorenumber (0–100)
Explain
How expensive or difficult it currently is to use this chain relative to its own history. Above 67 means fees and friction are elevated. Below 33 means it is cheap and smooth.

scorecard.dimensions.friction.score

number (0–100)
×
Basic
How expensive or difficult it currently is to use this chain relative to its own history. Above 67 means fees and friction are elevated. Below 33 means it is cheap and smooth.
Advanced
Input metrics: fee_burden_proxy (median_tx_fee / median_tx_value) and failed_tx_rate. Both are log-normalised and z-scored before aggregation. CONGESTED requires Friction HIGH alongside Capacity HIGH. CHEAP requires Friction LOW.
Traceability
scorecard.dimensions.friction.score
scorecard.dimensions.friction.coverage_factornumber (0–1)
Explain
What fraction of the expected friction inputs were available. 1.0 means both fee burden and failed transaction rate were present.

scorecard.dimensions.friction.coverage_factor

number (0–1)
×
Basic
What fraction of the expected friction inputs were available. 1.0 means both fee burden and failed transaction rate were present.
Advanced
Friction expects 2 components. On Bitcoin, failed_tx_rate is always null (no EVM failure concept), so Bitcoin friction coverage is structurally capped at 0.5 for that component. The pipeline handles this gracefully — Bitcoin's friction profile only uses the fee component.
scorecard.dimensions.capacity.scorenumber (0–100)
Explain
How close the network is to its operational limits. High means stretched. Low means plenty of room. The specific metrics used depend on which chain — Bitcoin, Ethereum, and L2s each use different capacity proxies.

scorecard.dimensions.capacity.score

number (0–100)
×
Basic
How close the network is to its operational limits. High means stretched. Low means plenty of room. The specific metrics used depend on which chain — Bitcoin, Ethereum, and L2s each use different capacity proxies.
Advanced
Input metrics vary by chain profile: ETH L1 uses gas_utilization_pct and blocktime_instability; BTC uses blocktime_instability only (no gas); L2s use capacity_util_pct and blocktime_instability. The chain-specific profile prevents L1 gas semantics from being applied to non-L1 chains.
Traceability
scorecard.dimensions.capacity.score
regime — classification evidence and reproducibility
regime.labelstring (enum)
Explain
Redundant copy of status.label. The primary field is status.label; regime.label is kept for historical compatibility.

regime.label

string (enum)
×
Basic
Redundant copy of status.label. The primary field is status.label; regime.label is kept for historical compatibility.
Advanced
Fallback field used when status.label is unavailable. The UI resolution order is: status.label → regime.label → UNKNOWN/DEGRADED. In well-formed rows both are identical.
regime.asof_datestring (YYYY-MM-DD)nullable
Explain
The date the regime classification was computed for. Typically identical to date.

regime.asof_date

string (YYYY-MM-DD) · nullable
×
Basic
The date the regime classification was computed for. Typically identical to date.
Advanced
The temporal anchor of the regime computation, distinct from the pipeline run timestamp. Used in the asof resolution hierarchy alongside updated_through.
regime.determinism_hashstring (12-char hex)
Explain
A fingerprint for this classification. If the hash matches, the label was produced by the same inputs and methodology. If it changes, something changed.

regime.determinism_hash

string (12-char hex)
×
Basic
A fingerprint for this classification. If the hash matches, the label was produced by the same inputs and methodology. If it changes, something changed.
Advanced
SHA-256 of the canonical JSON serialisation of (chain, label, asof_date, drivers, window_days), truncated to 12 hex characters. Computed as stable_sha256_12(json_dumps_canonical(det_payload)). Enables tamper detection: retroactive reclassification of a historical label would produce a different hash. Use this for backtesting integrity validation.
Traceability
regime.determinism_hash
regime.window_daysnumber
Explain
How many days of historical data were used in the computation — the lookback window.

regime.window_days

number
×
Basic
How many days of historical data were used in the computation — the lookback window.
Advanced
The rolling window used for z-score baselines, percentile rank computation, and moving averages. Typically 7 days for the current row computation (most sensitive to recent conditions), though longer windows are used internally for percentile rank (90 days) and z-score baseline (180 days).
regime.drivers[]array of objects
Explain
The list of metrics that most strongly explain why the current regime label was assigned. Each driver shows how unusual that metric is right now and in which direction.

regime.drivers[]

array of objects
×
Basic
The list of metrics that most strongly explain why the current regime label was assigned. Each driver shows how unusual that metric is right now and in which direction.
Advanced
Ranked subset of the full evidence surface, ordered by a composite driver score: weight × (|z_robust| + 0.75 × |pct_dist| + 0.50 × |momentum|). Only the top drivers that are label-consistent are surfaced. Absence from the driver list does not mean a metric was uninformative — it means it ranked below the display threshold.
regime.drivers[].metricstring
Explain
The name of the metric being described, e.g. tx_count_daily or median_tx_fee_native.

regime.drivers[].metric

string
×
Basic
The name of the metric being described, e.g. tx_count_daily or median_tx_fee_native.
Advanced
Canonical metric key matching the Gold field name. For derived signals like blocktime_instability or fee_burden_proxy, the key identifies the computed signal rather than a raw Gold field.
regime.drivers[].axisstring (enum)
Explain
Which scorecard axis this driver belongs to: demand, friction, or capacity.

regime.drivers[].axis

string (enum)
×
Basic
Which scorecard axis this driver belongs to: demand, friction, or capacity.
Advanced
The axis assignment reflects the metric's role in the scorecard, not just its statistical properties. A metric with a high z-score assigned to demand tells you demand is the primary driver of the current state — not that the metric happens to be elevated.
regime.drivers[].z_robustnumber
Explain
How unusual the current reading is relative to recent history. 0 means perfectly normal. ±2 means notably unusual. ±3+ means very rare.

regime.drivers[].z_robust

number
×
Basic
How unusual the current reading is relative to recent history. 0 means perfectly normal. ±2 means notably unusual. ±3+ means very rare.
Advanced
MAD-based robust z-score: 0.6745 × (x − median) / MAD. The 0.6745 factor makes it asymptotically equivalent to a standard z-score under Gaussian assumptions while inheriting outlier robustness. Fallback: if MAD=0 use standard z; if std=0 return 0.
regime.drivers[].pct_90dnumber (0–100)
Explain
Where today's value ranks in the last 90 days. 95 means it's higher than 95% of recent days. 5 means it's lower than 95% of recent days.

regime.drivers[].pct_90d

number (0–100)
×
Basic
Where today's value ranks in the last 90 days. 95 means it's higher than 95% of recent days. 5 means it's lower than 95% of recent days.
Advanced
Empirical percentile rank of the current observation within the trailing 90-day sample. Minimum 30 non-null observations required; suppressed otherwise. Orthogonal to z_robust: pct answers 'where does this sit in the recent distribution?' while z answers 'how many robust standard deviations from the median?'
regime.drivers[].momentum_7d_vs_30dnumber
Explain
Whether the metric is accelerating (positive) or decelerating (negative) compared to its recent baseline. Near zero means no clear direction.

regime.drivers[].momentum_7d_vs_30d

number
×
Basic
Whether the metric is accelerating (positive) or decelerating (negative) compared to its recent baseline. Near zero means no clear direction.
Advanced
Defined as z_robust(mean_7d) − z_robust(mean_30d). Removes level effects by standardising both windows against the same 180-day baseline before differencing. Threshold: ≥ 0.15 is HEATING trend; ≤ −0.15 is COOLING; otherwise FLAT.
regime.drivers[].currentnumbernullable
Explain
The raw observed value of this metric on the as-of date, in native units.

regime.drivers[].current

number · nullable
×
Basic
The raw observed value of this metric on the as-of date, in native units.
Advanced
Direct observation from the Gold layer carried into the driver row for auditability. Allows downstream consumers to verify that z-scores and percentiles are computed over a sensible underlying level. Required for cross-validation against independent data sources.
regime.drivers[].trendstring (enum)
Explain
HEATING (momentum ≥ 0.15), COOLING (≤ −0.15), or FLAT.

regime.drivers[].trend

string (enum)
×
Basic
HEATING (momentum ≥ 0.15), COOLING (≤ −0.15), or FLAT.
Advanced
Categorical summary of momentum_7d_vs_30d. Used in regime rule evaluation — HEATING label requires at least one axis driver showing HEATING trend alongside Demand HIGH.
regime.drivers[].bandstring (enum)
Explain
Which band this metric is in: EXTREME_HIGH, HIGH, NORMAL, LOW, or EXTREME_LOW.

regime.drivers[].band

string (enum)
×
Basic
Which band this metric is in: EXTREME_HIGH, HIGH, NORMAL, LOW, or EXTREME_LOW.
Advanced
Result of the dual-criterion band classification: HIGH if pct_90d ≥ 80 OR z_robust ≥ 1.5; EXTREME_HIGH if pct_90d ≥ 95 OR z_robust ≥ 2.5; LOW if pct_90d ≤ 20 OR z_robust ≤ −1.5; EXTREME_LOW if pct_90d ≤ 5 OR z_robust ≤ −2.5; otherwise NORMAL.
regime.axes.demand / friction / capacityobject
Explain
A per-axis summary showing whether each dimension is currently elevated, depressed, or normal, and whether it is trending up or down.

regime.axes.demand / friction / capacity

object
×
Basic
A per-axis summary showing whether each dimension is currently elevated, depressed, or normal, and whether it is trending up or down.
Advanced
Each axis object contains band_high (NORMAL/HIGH/EXTREME_HIGH), band_low (NORMAL/LOW/EXTREME_LOW), and trend (HEATING/FLAT/COOLING). These are computed as aggregates over the axis's driver signals rather than from a single metric. Used internally in regime rule evaluation.
profileobject
Explain
Information about which chain type profile was applied during computation — determines which metrics are used and which are hidden.

profile

object
×
Basic
Information about which chain type profile was applied during computation — determines which metrics are used and which are hidden.
Advanced
Contains type (btc/eth_l1/l2), label, hidden_metrics[] (metrics suppressed for this chain type), capacity_proxy (which metrics proxy capacity for this chain), and an optional note. The profile field makes chain-specific behaviour explicit in the published artifact rather than requiring consumers to know which metrics apply to which chains.
Layer 3

Derived

Smoothed rolling averages of Gold metrics — 7-day (MA7) and 30-day (MA30) — used to draw the trend charts on chain pages. Useful for distinguishing brief spikes from sustained structural changes.

derived/<chain>/latest.jsonderived/<chain>/last90d.jsonderived/<chain>/YYYY-MM-DD.json
datestring (YYYY-MM-DD)
Explain
The as-of date this derived row describes. Matches the corresponding Gold row.

date

string (YYYY-MM-DD)
×
Basic
The as-of date this derived row describes. Matches the corresponding Gold row.
Advanced
Temporal anchor for all derived values in this row. All moving averages are computed as backward-looking windows terminating at this date.
chainstring
Explain
Which chain this row belongs to.

chain

string
×
Basic
Which chain this row belongs to.
Advanced
Propagated from Gold. Determines which metrics are present in the derived.metrics object for this row.
derived.metrics.<metric>__ma7numbernullable
Explain
The 7-day rolling average of the named metric, ending on this row's date. Smoother than the daily value — useful for seeing the short-term trend direction without day-to-day noise.

derived.metrics.<metric>__ma7

number · nullable
×
Basic
The 7-day rolling average of the named metric, ending on this row's date. Smoother than the daily value — useful for seeing the short-term trend direction without day-to-day noise.
Advanced
Arithmetic mean over the last 7 non-null observations of the corresponding Gold metric, computed with min_periods=1 (so early rows in the series still get a value, just with a smaller window). Naming convention: tx_count_daily__ma7, median_tx_fee_native__ma7, etc. All numeric Gold fields get both MA7 and MA30 variants. The 7-day window is the short-horizon smoother used for momentum calculation in the regime engine.
Traceability
derived.metrics.<metric>__ma7
derived.metrics.<metric>__ma30numbernullable
Explain
The 30-day rolling average of the named metric. A slower-moving baseline that shows the broader trend. When the MA7 rises above the MA30 and stays there, that is a meaningful signal.

derived.metrics.<metric>__ma30

number · nullable
×
Basic
The 30-day rolling average of the named metric. A slower-moving baseline that shows the broader trend. When the MA7 rises above the MA30 and stays there, that is a meaningful signal.
Advanced
Arithmetic mean over the last 30 non-null observations, with min_periods=1. The 30-day window is the medium-horizon baseline used in momentum computation: momentum_7d_vs_30d = z_robust(mean_7d) − z_robust(mean_30d). For chart reading, the MA30 slope over the visible window is the most reliable indicator of structural regime change — short spikes in MA7 above MA30 without sustained elevation are typically noise.
Traceability
derived.metrics.<metric>__ma30
derived.meta_confidenceobjectnullable
Explain
A copy of the confidence score from the corresponding Meta row, included in Derived for convenience so chart rendering code can access confidence without loading a separate file.

derived.meta_confidence

object · nullable
×
Basic
A copy of the confidence score from the corresponding Meta row, included in Derived for convenience so chart rendering code can access confidence without loading a separate file.
Advanced
Contains confidence_score (same value as meta.confidence.confidence_score for this date). Published alongside the derived metrics so UI components that render charts with confidence overlays do not require a separate Meta fetch.
derived.context_blocksarray
Explain
Historical analog periods for context — currently empty in all published data. This field is reserved for a future feature and should be ignored for now.

derived.context_blocks

array
×
Basic
Historical analog periods for context — currently empty in all published data. This field is reserved for a future feature and should be ignored for now.
Advanced
Placeholder for the analog engine output (compute_analogs_and_forward_stats). The analog engine is implemented in the pipeline but context_blocks are not yet populated in published reference data artifacts. When the feature ships, this array will contain historical periods whose on-chain signature most closely resembled the current state, along with forward statistics for each analog period.
Layer 4

Briefs

Short descriptive JSON summaries built from the latest Meta context. Briefs are designed for fast reading, reporting, and non-pipeline workflows while preserving the same daily, non-predictive, non-advisory boundaries as the rest of Urd Atlas.

briefs/chains/<chain>/latest.jsonbriefs/site/latest.jsonbriefs/cross-chain/latest.jsonbriefs/manifest.json
schemastring
Explain
Identifies the Briefs schema family so consumers can route the file correctly.

schema

string
×
Basic
Identifies the Briefs schema family so consumers can route the file correctly.
Advanced
Expected values include schema identifiers such as urd_atlas.chain_brief.v1 or urd_atlas.site_briefs_bundle.v1, depending on whether the file is a per-chain brief or a site-level bundle.
Traceability
scripts/build_briefs/* → published briefs JSON
brief_statusstring enum
Explain
Publication state for the brief. Typical values are published, degraded, or unavailable.

brief_status

string enum
×
Basic
Publication state for the brief. Typical values are published, degraded, or unavailable.
Advanced
The status separates the availability of the readable narrative layer from the underlying technical Meta artifact. A degraded brief can still preserve structured facts while replacing unsafe or invalid narrative text with fallback language.
chainstringchain briefs
Explain
Canonical chain identifier: bitcoin, ethereum, arbitrum, or base.

chain

string · chain briefs
×
Basic
Canonical chain identifier: bitcoin, ethereum, arbitrum, or base.
Advanced
Used for entitlement routing and for joining the brief back to the Gold, Derived, and Meta technical artifacts for the same chain.
updated_throughstring (YYYY-MM-DD)nullable
Explain
The latest data date represented by the brief. This mirrors the underlying Meta freshness boundary.

updated_through

string (YYYY-MM-DD) · nullable
×
Basic
The latest data date represented by the brief. This mirrors the underlying Meta freshness boundary.
Advanced
Briefs are daily context, not intraday commentary. updated_through should be read as the as-of boundary of the underlying data used to generate the brief.
labelstring enumnullable
Explain
Latest regime label summarized by the brief: STABLE, HEATING, CONGESTED, CHEAP, or UNKNOWN/DEGRADED.

label

string enum · nullable
×
Basic
Latest regime label summarized by the brief: STABLE, HEATING, CONGESTED, CHEAP, or UNKNOWN/DEGRADED.
Advanced
Carried from the Meta regime context. Briefs do not create a separate label; they make the existing Meta label readable and easy to consume.
headlinestringnullable
Explain
A short readable summary of the latest published chain context.

headline

string · nullable
×
Basic
A short readable summary of the latest published chain context.
Advanced
Generated from deterministic templates and validated against the Briefs language policy. It should remain descriptive and avoid predictive, advisory, or trading-oriented language.
confidenceobjectnullable
Explain
Compact confidence context for the latest brief, such as latest confidence, 7-day average, or direction when available.

confidence

object · nullable
×
Basic
Compact confidence context for the latest brief, such as latest confidence, 7-day average, or direction when available.
Advanced
Derived from the latest and recent Meta confidence values. It helps the reader understand whether the brief is based on high-support or low-support context without replacing the full Meta confidence object.
guardrailsobjectnullable
Explain
Explicit product boundaries: daily cadence, not intraday; descriptive context, not prediction; not investment advice.

guardrails

object · nullable
×
Basic
Explicit product boundaries: daily cadence, not intraday; descriptive context, not prediction; not investment advice.
Advanced
The Briefs layer is validated so the narrative stays inside the same methodological boundaries as the technical JSON. Consumers should preserve these guardrails when displaying or redistributing brief text.
Related
API Docs
Endpoints and authentication
→
Glossary
All terms defined at two levels
→
Methodology
How the model works
→
Thresholds
Classification parameters
→
Data contract and traceability
Gold source: feature_daily_agg.py → build_gold_timeseries.py → published JSON
Meta source: main.py (regime_engine + market_scorecard + confidence) → published JSON
Derived source: publish_artifacts.py (rolling_mean, windows=[7,30]) → published JSON
Briefs source: scripts/build_briefs/* → published JSON
Methodology version: v1