← Back to dashboard

Methodology

How we calculate the indices shown on Theta Simplified. This page explains every formula, weight, baseline, and data source — nothing is hidden.

1. Main Chain Activity Index

The Main Chain Activity Index measures observable on-chain activity on Theta's settlement layer. It combines four metrics into a single score. The index is uncapped — when the network exceeds its baselines, the score goes above 100.

FORMULA

index = txScore × 0.40 + volumeScore × 0.15 + walletScore × 0.35 + nodeScore × 0.10

Each component score = (observed value / baseline) × 100

Components

MetricWeightBaseline (=100)What it measuresWhy this weight
Daily transactions40%42,000Main-chain txs in 24hMost direct signal of on-chain usage
TFUEL 24h volume15%$12,000,000Dollar volume of TFUEL traded in 24hMarket interest signal; volatile, so lower weight
Wallet activity35%100%% of recent blocks containing user transactionsShows whether real users are transacting, not just validators
Staking participants10%22,000Number of active staking nodesStable metric; changes slowly so lower weight

Tier system

0 — 50QuietBaseline settlement layer activity — governance, staking, routine transfers
50 — 100ActiveIncreased cross-chain transfers, new subchain registrations, higher TFUEL trading
100 — 300ElevatedSustained high activity — ecosystem growth, heavy bridging, broad staking

Data sources

Transactions → explorer-api.thetatoken.org/api/transactions/number/24

TFUEL volume → explorer-api.thetatoken.org/api/price/all (volume_24h)

Wallet activity → explorer-api.thetatoken.org/api/blocks/top_blocks (1000 blocks sampled)

Staking nodes → explorer-api.thetatoken.org/api/stake/totalAmount

Known limitations

  • Baselines are calibrated against April 2026 data and will be recalibrated after 30 days of collection.
  • Does not capture subchain activity, video delivery, or AI compute.
  • TFUEL volume is exchange-reported and can be volatile.
  • Wallet activity is sampled from the most recent 1,000 blocks, not the full 24h window.

2. Metachain Utilization Index

The Metachain Utilization Index measures real application activity across the entire Theta ecosystem — not just the main chain. It combines data from 7 sources into one weighted composite score.

FORMULA

compositeScore = Σ (chainScorei × normalizedWeighti)

Weights are normalized so they always sum to 1. If a chain is unavailable, its weight is redistributed among available chains.

Chain components

ChainWeightBaseline (=100)What it measures
Main Chain1.042,000 txs/daySettlement layer — staking, governance, cross-chain transfers
Lavita AI0.7100,000 txs/dayHealth AI research and genomics data marketplace
TPulse0.7100,000 txs/dayEdgeCloud transparency — AI compute job logs and node activity
Passaways0.5100,000 txs/dayPLASM gaming and digital entertainment
Grove0.5100,000 txs/dayGroveWars Web3 gaming ecosystem
POGSexcluded — offline since March 2026Digital entertainment and gaming collectibles
Ecosystem Growth0.5Proxy signals: subchain registrations, cross-chain transfers, collateral activity

Raw weights are shown above. At runtime, all weights are normalized to sum to 1 (e.g., Main Chain 1.0 / 4.2 total ≈ 23.8%).

Inactivity exclusion: When a subchain's most recent block is older than 30 days, it is flagged as offline and removed from the composite score. Its weight is redistributed proportionally among the remaining active chains. If activity resumes, the chain automatically rejoins the composite. POGS is currently excluded under this rule.

How subchain scores are calculated

For each subchain, we fetch the 100 most recent blocks and count the transactions in them. We then extrapolate to a 24-hour estimate:

estimatedDailyTxs = (txsInSample / sampleTimeSpan) × 86,400

The score is then: (estimatedDailyTxs / 100,000) × 100. A subchain processing 100K txs/day scores exactly 100.

Ecosystem Growth proxy explained

The Ecosystem Growth component uses on-chain proxy signals from main-chain contracts to measure multi-chain expansion:

  • Subchains registered — count from ChainRegistrar.getAllSubchainIDs() (baseline: 15, weight: 35%)
  • Cross-chain transfers — total interactions across 4 Token Bank contracts (baseline: 1,000, weight: 35%)
  • ChainRegistrar activity — total smart contract interactions on the registrar (baseline: 30,000, weight: 30%)

These are cumulative counts, not daily. They grow monotonically as the ecosystem expands.

Tier system

0 — 50EarlyA handful of subchains active alongside the main chain — foundation in place
50 — 100GrowingMultiple subchains consistently active across gaming, AI, and health data
100 — 250ThrivingMost subchains exceed baselines, high cross-chain activity, diverse use cases
250 — 500MatureFull-scale multi-chain network — dozens of active subchains, heavy bridging

Known limitations

  • Cannot distinguish bot transactions from real user activity — transaction quality is unknown.
  • POGS has been inactive since March 2026 and is currently excluded from the composite score under the 30-day inactivity rule. Its weight is redistributed to the remaining active chains.
  • Ecosystem Growth proxy metrics (subchain count, cross-chain transfers, ChainRegistrar activity) are cumulative — they only go up, never down.
  • Off-chain activity (video delivery via Theta CDN, EdgeCloud GPU compute) is not captured.
  • Subchains without public explorer APIs cannot be included.
  • Subchain daily tx estimates are extrapolated from the 100 most recent blocks, which may not be representative during low-activity periods.

Coverage verification

We independently verified our coverage by comparing tracked transactions against Theta Explorer's official transaction history endpoint (/transactions/history), the same data source used by the official Theta Explorer graphs. As of April 2026, our four tracked subchains (Lavita, TPulse, Passaways, Grove) represent approximately 94% of all subchain activity. The remaining ~6% consists of inactive chains (POGS) and minor developer/testnet activity. Main chain activity is excluded from this comparison as it is tracked separately via the Main Chain Activity Index.

3. TFUEL Economics (net absorption)

The TFUEL Economics widget shows how much of daily block issuance is absorbed by burns and fees. Block rewards are the only source of new TFUEL — fixed at 1,238,400 per day. Edge Network jobs and EdgeCloud payments move existing tokens, they do not mint new ones. We therefore show "net absorption" — how much of block issuance is offset by all burn sources combined (gas, 25% of Edge payments, etc.). Days where the reported supply grew faster than 1,238,400 are data artifacts — most often the snapshot being taken at a slightly different time of day than the previous one, or a rare token unlock — not negative burn.

Daily issuance — protocol constant

TFUEL is created as block rewards at a fixed rate defined by the Theta protocol. This number is a hard constant and does not change unless Theta upgrades its protocol.

blocksPerDay = 86,400s / 6s = 14,400
tfuelPerBlock = 86 (38 TFUEL staking + 48 THETA staking)
dailyIssuance = 14,400 × 86 = 1,238,400 TFUEL / day

Source: Theta protocol block reward specification.

Net absorption — supply-delta method

Instead of sampling individual transaction fees, we derive net absorption from the actual change in TFUEL circulating supply. This captures all burn sources automatically — on-chain gas, Edge Network payment burns (25%), and any other mechanism — without sampling individual transactions.

supplyChange[N] = supply[N] − supply[N-1]

rawAbsorption[N] = blockIssuance − supplyChange[N]

// 3-day centered rolling average corrects snapshot timing drift

smoothed[N] = (rawAbsorption[N-1] + rawAbsorption[N] + rawAbsorption[N+1]) / 3

absorption[N] = max(0, smoothed[N])

absorptionRate[N] = absorption[N] / blockIssuance

The first and last day of the series have no neighbour on one side and fall back to a 2-day trailing average. Days that are pre-flagged as known artifacts (see below) are skipped when their neighbours compute the average, so a bad raw value can't bleed into surrounding days' smoothed result.

Why "net absorption" instead of "burn"

We can't measure burn directly from the chain API — we infer it from the supply delta. Since block rewards are the only way new TFUEL enters circulation, anything missing from the expected daily growth is assumed to be burn. The metric we show — net absorption — is the portion of block issuance that is verifiably absorbed, calculated from a one-sided supply difference. It is a lower bound on real burn when snapshot timing is imperfect.

Supply data comes from Theta's /api/supply/tfuel endpoint, stored daily in our database. Snapshot-timing drift is corrected by the 3-day centered smoothing above, not by the 7-day chart average. The displayed 7-day trend line is computed from the smoothed values and explicitly excludes any day flagged as an artifact, so a single bad snapshot can't pull the trend down.

Known data artifacts

Some specific dates are pre-flagged because the raw value was provably wrong and would otherwise bias the trend. Flagged days are clamped to absorption: 0 and rendered as a muted bar on the chart so the history stays visible without misleading the eye. Each entry below names the date, the raw anomaly, and the cause.

  • 2026-04-21 — raw absorption was −22.9% (supply growth exceeded one day's issuance). Pre-fix snapshot timing drift — consecutive snapshots were >24 h apart, so a single day's denominator was applied to two days of growth.
  • 2026-04-24 — raw absorption was +78.5%. Bug-fix transition day: the Apr 24 snapshot was the last write before the 21:14 UTC fix in 9f0c2aa, and Apr 25 was the first clean cron at 00:05 UTC. The interval was only a few hours, so the full daily denominator was applied to a tiny supply delta, producing a phantom spike.
  • 2026-04-27 — raw absorption was −5.5% with snapshots ~24 h apart on both sides, so this is not timing drift. No on-chain unlock or treasury distribution has been identified; treated as a suspected supply-API artifact (stale or incorrect value at one of the snapshots) until a concrete cause is found.

Known limitations

  • Supply endpoint timing. Theta's circulating supply endpoint does not update at exact midnight UTC. Single-day values can fluctuate depending on when the snapshot was taken. The 7-day rolling average mitigates this.
  • Snapshot-timing drift is corrected by 3-day centered smoothing. Daily snapshots are never taken at exactly the same time, and the upstream supply endpoint updates on its own cadence. That splits real issuance across multiple reported deltas — one day shows too little growth, the next too much. We show each bar as the average of three days (the day before, the day itself, the day after). Drift errors come in pairs, so having both neighbours in the window cancels them from both sides. The first and last day of the series fall back to a 2-day trailing average since they have no neighbour on one side. Days where the smoothed value is still negative (rare) are flagged as artifacts; specific dates with documented causes are also pre-flagged — see "Known data artifacts" above. Artifact days are excluded from the 7-day average. Going forward, we also store the exact UTC timestamp of each supply snapshot so future calculations can normalise by the actual interval length.
  • Requires accumulated history. The calculation needs at least 2 days of stored supply data. The 7-day average needs 8 days. New deployments will show limited data initially.

Last updated: 2026-04-30 (absorption-rate methodology revised to reflect 3-day centered smoothing, edge-fallback handling, and known data artifacts). Baselines will be recalibrated after 30 days of data collection.

These indices are transparent, best-effort tools — not financial indicators. We show exactly what we measure, how we measure it, and what we cannot see. Use them to follow trends, not to make investment decisions.