Glossary
What each metric means, its exact formula, the API request behind it, and why it can differ from other explorers.
For AI agents: llms.txt
- 1H / 24H / 7D / 30D / 90D %
How much the price has moved over the trailing window: current spot against the closing price at the start of the window.
Formula((spot − close) / close) × 100, close = the last candle close before the window opensAnchored by clock time, not by block, and the two families anchor differently: 1H and 24H take the last minute-candle close inside a one-hour-wide window ending an hour (or a day) ago, while 7D / 30D / 90D take the last candle of the calendar day N days ago in UTC, so 7D is not a rolling 7 × 24 h. It compares a noisy live spot against a candle close, which is why it can differ from explorers doing spot-to-spot. A missing or zero baseline shows 0%.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].price_evolution_{h_1,h_24,d_7,d_30,d_90}- 7D Trend (sparkline)
The inline 7-day price line drawn in the table.
Formulathe last close of each 4-hour bucket over 7 days (~42 points, oldest → newest, 6 significant digits)null when the subnet has fewer than two points in the window, which is the exact "too little history to draw a line" condition.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].sparkline_7d- ADR (Alpha Distribution Ratio)
How much alpha holders own compared with how much the pool holds. Above 1, holders own more than the pool can absorb, so a rush for the exit sells at a steep discount. Below 1, the pool cushions exits.
Formula(alpha_stake − alpha_burned_counter/1e9) / alpha_in_pool (unitless, pivot at 1.0)Burned alpha stays inside the staked reserve on-chain, so it is subtracted here through the same helper that backs market cap, and the two therefore net burns identically; they can only disagree for a single sync cycle, if a burn-counter read fails. The numerator still includes the owner's own locked and self-staked alpha. History rows before 2026-05-28 keep the raw un-netted ratio, because the chain had no burn counter before then. null for root or an empty pool.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].adr- APY (α / τ / $)
Your annualised return over a trailing window. α counts only the alpha you earned, τ adds what the alpha did against TAO, $ adds what TAO did against the dollar.
FormulaA gain annualises linearly: ((end − start) / start) × 365 / days × 100. A loss compounds: ((end / start)^(365/days) − 1) × 100, floored at −100%. Deposits and withdrawals are removed by rebuilding the end value as if they had never happened, both legs priced at the end of the window.The asymmetry is deliberate: a linear gain stays readable on a young position, while a compounded loss cannot print below −100%, which is the real floor. The starting point is the first day in the window on which the wallet actually held something, so a dust prefix is skipped and "days observed" can be shorter than the window you picked. The three dimensions answer three different questions and diverge on purpose: a positive α with a negative τ means you earned tokens while their price fell. All three come back empty when the alpha return exceeds 1000%, which is how emission-funded and faucet wallets are kept from printing nonsense, and the absolute change is shown instead; on top of that the app flags a short sample below 14 observed days on the 30-day window and shows nothing at all below 4 days on the 7-day window.
API request
GET https://api.taoswap.org/portfolio-pnl-apy/?account=<coldkey>Response field
apy.alpha, apy.tao, apy.usd, apy.days_observed (each keyed 7d / 30d / all)The confidence rules on top of it are ours.
- APY / APR 7D (validator)
What delegating to this validator has returned over the last 7 days, annualised: APR without compounding, APY with.
Formularate per epoch = Σ dividends paid to delegators / Σ stake that earned them, over the last 7 complete UTC days. epochs per year = 7200 × 365 / the subnet tempo. APR = rate × epochs per year × 100; APY = ((1 + rate)^(epochs per year) − 1) × 100. Both ×100 and clamped to [0, 10000].The series is what the chain actually paid delegators, already net of the validator take and of childkey redistribution, measured against the exact stake the chain used as the denominator. The only difference between the two figures is the compounding assumption: APR is the number most explorers publish, often labelled APY, while APY is the more honest one for a passive alpha staker, since dividends restake into the pool. Annualisation uses each subnet's own tempo rather than a flat epoch count. Exactly 10000 means the real figure was clamped, not that it is precisely 10000%. A hotkey with no dividends in the window reads 0, and stale values are never carried forward. The list figure is the stake-weighted average of the validator's per-subnet rows.
API request
GET https://api.taoswap.org/validators/Response field
results[].apy_7d / results[].apr_7d- Burn
The share of the miner reward pool that never reaches independent miners, because it was directed at the owner's own neurons and then destroyed.
FormulaΣ (owner neurons' incentive) / Σ (all incentive) × 100 (weighted by mechanism split on multi-mechanism subnets)The owner does not pocket this emission. The chain withholds any incentive aimed at an owner or "immune" hotkey and then either burns or recycles it, depending on the subnet's setting, and the value is deliberately identical either way. That withheld share matters because the chain scales the subnet's whole emission allocation by (1 − burn), so a high burn actively costs the subnet. An "owner neuron" is any neuron whose coldkey is the subnet owner, plus the subnet owner hotkey. Below 100% means at least one independent miner is earning. The figure is recomputed from the live metagraph rather than read from the chain's own per-tempo ratio; the two agree within a hundredth of a point on every subnet, the only exception being subnets with emission switched off, where the chain value is a stale default and nothing is being distributed anyway.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].emission_miner_burn- Burned
The best-known amount of alpha destroyed for good, valued in TAO. Most subnets never burn anything.
Formulamax(alpha_burned_counter, total_alpha_burned) / 1e9 × (moving_price || price)Two overlapping sources, neither complete on its own: the on-chain counter covers every burn path (the burn extrinsic, the incentive burn during emission, the swap-fee burn) but only exists since 2026-05-28, while the extrinsic-only total reaches back to genesis but is blind to the other paths. Taking the larger of the two is the tightest lower bound on the real total. Burning is not recycling: a burn destroys the tokens while leaving the reserve and the issuance counter untouched, whereas recycling reduces both, and recycled alpha is not counted here.
Data source
GET https://api.taoswap.org/v2/subnets/Response field
results[].alpha_burned_counter, results[].total_alpha_burnedValued in TAO as max(counter, total) / 1e9 × (moving_price || price).
- Chain Buys (Excess TAO emission)
TAO the protocol spends buying alpha on the open pool, rather than injecting it as fresh liquidity. It is real buy pressure paid by the network.
FormulaSubnetExcessTao (RAO/1e9, halving-adjusted); τ/block, shown ×7200 for τ/day. Invariant: emission_value = tao_in_emission + excess_tao_emission.Each block the chain wants to inject the subnet's TAO emission as matching TAO + alpha liquidity, but the alpha side is capped at root_proportion × the block's alpha emission. As a subnet ages its alpha issuance grows, that cap falls, and the TAO that can no longer be paired is spent buying alpha in the pool instead. That is the whole mechanism, and it is why older subnets drift from liquidity injection towards chain buys. Replaces the old emission_chain_buys estimate (a τ/day price proxy), so historical values diverge sharply. null for root; ≤ 0 means no chain buy this block. The field records what actually executed, so on a rare partial-injection block the two legs sum below the allocated emission.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].excess_tao_emission- Chain Buys %
This subnet's share of all the chain buying happening across the network.
Formulasubnet excess / Σ excess over non-root subnets with excess > 0 × 100A normalised share, so it sums to 100 across non-root subnets. There is no smoothing whatsoever: the chain clears the underlying counter every block, so the value is whatever the latest block happened to do, which makes it very spiky. Use the history series for a stable view.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].excess_tao_emission_percent- Challenger stake
What the leading challenger has actually put at risk: the realizable TAO value of the alpha they have locked. Bigger means a more committed challenger.
Formulathe king's locked α, valued through the pool after fee and slippage (tao_slippage), not at flat spotShown at realizable value on purpose, because face value overstates the commitment on a thin pool. Only meaningful when the leader is an outsider (`king_is_owner` false).
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].conviction.owner_locked_value.tao_slippage- Conviction
How much of the subnet the current leader of the ownership race has locked up, as a share of supply. Locking alpha is how a key stakes its claim to owning the subnet.
Formula(king_conviction / 1e9) / total_supply × 100Despite the field name this is the LEADER's position, and the leader ("king") is not always the owner, so check `king_is_owner`, and never infer it by comparing `king` (a hotkey) to `owner` (a coldkey). The companion fields are king_conviction (raw score, never display it), owner_conviction_pct (share of the conviction battle, 100% = unchallenged) and total_conviction. Conviction decays over time and the chain serves it already decayed, so the value you read is current; perpetually locked alpha never loses mass and its conviction converges upward to that mass instead. Two half-lives drive it, today about 90 days for the unlock schedule and about 30 for maturation, but both are governance parameters and one has already been moved off its default, so read unlock_half_life_days / maturity_half_life_days rather than trusting those numbers.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].conviction.owner_conviction_pct_supply- Cost basis (WAC / FIFO) & USD method
Two ways of deciding what a token cost you. WAC averages every purchase into one blended price. FIFO matches each sale against your oldest purchases. Then two ways of putting that in dollars: "throughout" records the dollar value at every trade, "then" computes the result in TAO and converts it at today's rate.
FormulaWAC = Σ(amount × price) / Σ amount; FIFO = chronological matching, oldest lot firstWAC is smoother and easier to read; FIFO is what most tax regimes expect. Likewise "throughout" is the rigorous accounting answer and the only one that adds up over time, while "then" reprices your whole history at today's rate. Never read a difference between two dates in "then" mode: a week in which you did not trade at all can show a dollar gain or loss purely from the TAO/USD move, sometimes with the opposite sign to your TAO result. All four are available; the toggles only pick which one you see.
API request
GET https://api.taoswap.org/portfolio-pnl-apy/?account=<coldkey>Response field
pnl.*.tao.{wac,fifo}, pnl.*.{usd_throughout,usd_then}- Delegator / Validator Earnings per Day
What the validator paid out over the last full day, in TAO: the first figure is what its delegators shared, the second what it kept as commission.
FormulaΣ TAO paid over the last complete UTC day, split at the take: the delegators' side is net of it, the validator's side is the take itself.A single day, not a rate, so it moves with the stake behind the hotkey and with what its subnets emitted that day: a large validator out-earns a small one at the same APY. The childkey-take slice is counted inside these figures, not on top of them. A validator running a 0% take reads 0 on its own line while still paying its delegators in full. Only the validator's own page carries them, so a list of validators compares yields instead.
API request
GET https://api.taoswap.org/validators/<hotkey>/Response field
delegator_daily_earning / validator_daily_earning- Delegators
How many delegators are staking to the validator.
API request
GET https://api.taoswap.org/validators/Response field
results[].count_delegators- Depth ±2% / ±5%
How much TAO it takes to push the price up (+, buying) or down (−, selling) by 2% or 5%. Bigger numbers mean a deeper, harder-to-move pool.
Formulaup = root_in_pool × (√(1+δ) − 1) / (1 − fee); down = root_in_pool × (1 − √(1−δ)); δ = 0.02 or 0.05, fee ≈ 0.0005The down side reads slightly larger than the up side, and that is arithmetic rather than a bug: since √ is concave, the same percentage move needs marginally more TAO on the way down. The up leg is a gross input with the pool fee added on top, while the down leg is the net TAO leaving the pool, so the fee actually narrows the gap instead of widening it: as served, the down side is 0.95% larger at ±2% and 2.5% larger at ±5%. It is computed on the plain constant-product curve, which matches the chain because live pools are balanced 0.5 / 0.5. There is no concentrated liquidity, because user-provided liquidity is permanently disabled on-chain. Root (SN0) is null, having no pool.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].depth_{up,down}_{2,5}pct (+ *_usd)- Deregistration risk
How exposed a subnet is to being removed from the network. A subnet is only ever removed when someone registers a new one while the network is at its cap, and the victim is the surviving subnet with the lowest price EMA.
Formulaprune_rank orders the non-immune subnets by price EMA, lowest first and oldest first on a tie; rank 1 is the one the next registration would remove. risk_level = immune, then critical (price EMA of 0, or rank ≤ 5), high (≤ 15), medium (≤ 40), low beyond that.Immune subnets cannot be removed at all and carry no rank. A subnet whose owner never called start_call has a price EMA frozen at 0, which puts it at the very front of the queue the moment its immunity ends. The bands are a presentation choice, not a chain concept: on-chain, only rank 1 means anything, and since registrations have historically arrived about weekly the rank reads roughly as weeks of headroom. The envelope `dereg_context` tells you whether the network is actually at capacity, and none of this matters while it is not.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].dereg.risk_level, .prune_rank; envelope dereg_context- Dominance
What proportion of all validator stake on the network this one validator controls.
Formulatotal_stake / Σ total_stake (chain-wide) × 100Same slippage-aware valuation as Total Stake. The list only sums validators with at least 1000 τ, so the visible set adds to ~100%. A validator's own page can read slightly lower than the list, because the two do not always count the same set. Validators under 1000 τ have no page of their own.
API request
GET https://api.taoswap.org/validators/Response field
results[].dominance- EMA %
The subnet's share of realized per-block emission. It is the same number as Emission %: the name is legacy, and no EMA is involved any more.
Formulaemission_value / Σ emission_value (non-root, emission_value > 0) × 100Two names for one metric: they are the same number, to within rounding. The "EMA" is pure back-compat: there is no 30-day half-life and no net stake/unstake flow involved since emission switched from flow-based to price-based in June 2026. What it tracks now is the chain emission share, which the chain builds from moving_price × (1 − miner burn), renormalised over the emission-enabled non-root subnets. Until runtime spec 425 that weighting also carried a root_proportion factor; spec 425 removed it. Root (SN0) is null. The old flow EMA now only survives in the Inflow / Outflow fields.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].emission_ema_percent- EMA Inflow / Outflow
The two halves of one signed average of net TAO flow (stake minus unstake) into the pool. A subnet shows one or the other, never both.
Formulainflow = max(EMA_net_tao_flow, 0); outflow = |min(EMA_net_tao_flow, 0)| (chain EMA in TAO, ~30-day half-life)Only direct user stake/unstake counted; emission-driven swaps were excluded. IMPORTANT: these values are FROZEN. Since emission switched to price-based weighting in June 2026 the chain code that advanced this EMA is no longer called at all, so the storage is still readable but never updated. Any explorer showing a live 24h/7d net flow is computing something else.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].inflow / results[].outflow- Emission %
The share of the network's per-block TAO emission that goes to this subnet. Across emission-enabled subnets it adds up to ~100%.
Formulaemission_value / Σ emission_value (non-root) × 100, emission_value = tao_in_emission + excess_tao_emission (τ/block)It is a share, not an absolute amount, so the halving cancels out of it entirely. `emission_ema_percent` is the same number under an older name (see EMA %). A subnet reads 0 when emission is switched off for it (its share is redistributed on-chain), and a freshly registered subnet starts switched off until it is enabled. A subnet is also skipped entirely while registration is closed on it or its subtoken is disabled. Root (SN0) is null. Since the chain records what was actually injected, rare partial-injection blocks read slightly low.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].emission_percent- FDV
Fully Diluted Valuation: what the subnet would be worth if every alpha token that can ever exist had already been emitted.
Formula21,000,000 × (moving_price || price)Every subnet has the same 21M alpha hard cap as TAO itself, so FDV is always ≥ market cap. Same EMA-vs-spot gap as market cap. Root falls back to spot.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].fdv (fdv_usd for the USD value)- Fees (take)
The commission the validator keeps out of its delegators' rewards.
API request
GET https://api.taoswap.org/validators/Response field
results[].take- Free
TAO sitting in the wallet, not staked anywhere.
API request
GET https://api.taoswap.org/accounts/Response field
results[].free- Global rank
Where the wallet sits in the network-wide wealth ranking, 1 being the largest.
Formulaposition by total_tao (free + root stake + alpha stake) descending, ties broken by address order. rank_alpha ranks on alpha stake alone.It ranks every coldkey in the latest complete daily balance snapshot, so it is a ranking of the indexed set rather than of the whole chain, and it is anchored to the last fully computed snapshot so a partial sync cannot silently drop the top of the table. Alpha carries the same exit-value pricing as everywhere else, which can reorder large alpha-heavy wallets compared with a flat-price ranking.
API request
GET https://api.taoswap.org/accounts/Response field
results[].rank (results[].rank_alpha for the alpha-only ranking)- HHI (concentration)
How concentrated the holders are, on a 0–100% scale. 0% means the stake is spread perfectly evenly, 100% means one holder owns everything. Lower is healthier.
Formula(HHI − 1/N) / (1 − 1/N), clamped 0..1, ×100 for display. HHI = Σ(share²) over positive holdersN counts the positive holders left after the owner's own position is removed. The exclusion is per position, not per wallet: a position drops out only when the holder, the validator it is staked to and the subnet owner are the same coldkey, so the owner's delegations to outside validators are still counted. Most explorers publish the raw HHI rather than this min-normalised form, so the numbers are not comparable. Returns 0 below 2 holders.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].hhi_normalized- Holders
How many distinct wallets (coldkeys) hold any alpha of this subnet.
Formulacount(distinct nominator coldkeys with stake > 0)There is no minimum or dust floor (any non-zero position counts), and unlike the concentration metrics this one does NOT exclude the owner. The asymmetry is deliberate: this answers "how many wallets hold this alpha", while HHI, Nakamoto and Top 10% answer "how is the tradable float distributed". An explorer with a min-stake floor, or one counting per (coldkey, hotkey) pair instead of per coldkey, will differ.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].holders_count- Immunity
A grace period after registration during which a subnet cannot be deregistered, whatever its price.
Formulais_immune = current_block < immunity_end_block; immunity_ends_at is the ISO timestamp of that blockThe comparison is strict, so the subnet becomes prunable exactly on its end block. The fields are only set while the subnet is actually immune. The window length is a chain parameter, served alongside as `immunity_period_blocks`.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].dereg.is_immune, .immunity_end_block, .immunity_ends_at- In Pool (τ) / (α)
The two sides of the subnet pool: how much TAO and how much alpha it currently holds.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].root_in_pool / results[].alpha_in_pool- Locked (conviction)
The alpha locked across every participant in the ownership race, shown both at face value and at what it would actually fetch if sold.
Formulatotal_locked = perpetual + decaying (α). Face value = α × price; realizable = the same α sold through the pool, after fee and slippage.Perpetual locks never release their alpha; decaying locks give it back gradually. Realizable values are single AMM exits, so per-holder figures do NOT add up to the subnet total, so use the subnet-level value for "everything sold at once".
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].conviction.total_locked, .total_locked_value- Market Cap
Value of the alpha actually in circulation: what sits in the pool plus what is staked, minus what has been burned, priced at the smoothed (EMA) price.
Formula(alpha_in_pool + max(alpha_stake − alpha_burned_counter/1e9, 0)) × (moving_price || price)Three things make it differ from other explorers: the price is the EMA moving price (spot only as a fallback); the base is circulating alpha, not the 21M cap (that is FDV); and burned alpha is subtracted. On-chain, burning destroys the tokens but leaves them inside the staked reserve, so without that subtraction the destroyed alpha would still be valued. Recycled alpha is not subtracted again, because the chain already removed it from the reserve, and the subtraction is clamped at zero (a missing burn counter subtracts nothing), so it can never over-correct. Supply, below, deliberately keeps burns, so on burn-heavy subnets supply × price sits above market cap. Root (SN0) falls back to spot because its moving price is 0.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].market_cap- Mechs
How many mechanisms (sub-mechanisms) the subnet runs.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].mechanism_count- MEV Shield
Submits your swap encrypted, so nobody can read it while it waits in the queue and trade in front of it. It is only decrypted once its place in a block is fixed.
Formulathe swap is wrapped in an encrypted envelope and revealed a couple of blocks later, either through a relay (1 signature, relay pays the outer fee) or straight from your wallet (2 signatures)It costs a couple of blocks of latency, and in self-custody mode roughly twice the network fee, since two transactions are signed. The relay never sees the contents of your order. Each mode can be turned off on the server side, so the toggle is not always available.
- Miners
How many independent miners are currently earning something, excluding the owner's own neurons.
Formulacount(neurons where incentive > 0 and not an owner neuron)"Active" here means incentive strictly above 0, with no validator-permit, vtrust or stake threshold applied, so explorers using a permit or axon heuristic will report different numbers. A Burn below 100% implies at least one of these miners is earning.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].active_miners- Minimum received
The worst outcome you have agreed to: the least you can walk away with once your slippage tolerance is fully used up.
Formulaexpected output × (1 − slippage tolerance / 100)A floor, not a forecast: a normal trade lands on the expected output, not on this. If the market moves past it, the chain rejects the trade rather than filling it worse, unless partial fill is on.
Data source
GET https://api.taoswap.org/v2/subnets/Response field
results[].root_in_pool, results[].alpha_in_poolDerived from the simulated output.
- Moving Price
A slow-moving average of the price, used as the basis for market cap and FDV so a single trade cannot move a valuation.
Formulachain-native EMA of min(spot, 1 τ), spot as fallbackComputed on-chain, not by TaoSwap: the smoothing factor is 0.000003 per block, which takes about 30 days to close half the gap to spot and ~3.5 months to close 90%, and a young subnet ramps in gradually from its first emission block. The chain feeds the EMA min(spot, 1 τ), so the moving price can never exceed 1 τ even if spot does. It should match any explorer reading the same chain value; small gaps come from the ~2-min snapshot block.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].moving_price- Nakamoto coefficient
The smallest number of top holders who together own more than half of the stake. Lower means more concentrated.
Formulasmallest k whose cumulative share of the stake exceeds 0.5 (integer)Same owner exclusion as HHI. Returns 0 (not 1) for an empty or single-holder subnet.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].nakamoto_coefficient- Network fee
What the blockchain charges to include your transaction. TaoSwap takes no fee of its own.
Formulaestimated from the chain for the exact transaction being signed, doubled when MEV Shield runs in self-custody mode (two transactions)Not to be confused with the pool fee, which is the ~0.05% the subnet takes out of the token you put in and which is already inside every quote on the page. That pool fee is a per-subnet chain parameter, so it is not necessarily the same everywhere. The network fee is paid even when the trade is rejected for exceeding your slippage tolerance.
- Nominators / Validator / Childkey 7D (τ)
The TAO a validator earned on one subnet over the last 7 days, split three ways: what went to its nominators, what it kept as commission, and the part that came from childkey take.
FormulaΣ TAO earned on that subnet over the last 7 complete UTC days. Nominators is net of the take, validator is the take itself, childkey is the childkey-take slice of the two.Amounts, not rates: they scale with the stake behind the hotkey, which is why the APY sitting beside them can be high on a small line and modest on a large one. Blank until the subnet has synced, which is not the same as zero. The childkey figure is a slice of the other two, so adding all three double-counts it.
API request
GET https://api.taoswap.org/validators/<hotkey>/Response field
monitoring[].nominator_return_7d_tao / validator_return_7d_tao / childkey_return_7d_tao- PnL (Realized / Unrealized)
Realized is the profit or loss you have actually booked by closing positions. Unrealized is what you are up or down on what you still hold.
Formularealized = proceeds − cost basis on disposals; unrealized = current value − cost basis on open positions, marked at the latest hourly close of each subnet (root 1:1)Unrealized marks your alpha at the hourly closing price, with no fee and no slippage, so it reads higher than the exit-value pricing used for validator and account totals: it answers "what is it worth", not "what would I get". Sending stake to another wallet books a real disposal at the market price inside Realized, and receiving it opens a fresh position at the price on arrival rather than inheriting the sender's basis. Both figures come in a WAC and a FIFO flavour (see Cost basis) and in two USD flavours. The 24h variants are the change since the previous daily snapshot rather than a rolling 24 hours, so they step once a day when the nightly sync runs; the baseline is anchored to the snapshot date, so a late sync shifts the window instead of breaking it.
API request
GET https://api.taoswap.org/portfolio-pnl-apy/?account=<coldkey>Response field
pnl.realized, pnl.unrealized (each: tao.wac, tao.fifo, usd_throughout, usd_then)Computed over your whole trade history.
- Price ($)
The same spot price, converted to dollars.
Formulaprice × the live TAO/USD rateData source
GET https://api.taoswap.org/v2/subnets/Response field
results[].priceUSD = price × the live TAO/USD rate.
- Price (τ)
What one alpha token is worth in TAO right now, quoted by the subnet's own liquidity pool.
Formularoot_in_pool / alpha_in_pool (chain spot price)The pool is technically a weighted (Balancer) AMM, so the exact chain formula is (w_base / w_quote) × root_in_pool / alpha_in_pool, but every live subnet sits at 0.5 / 0.5 to within a rounding error, which makes the plain ratio of the two reserves exact for any practical purpose. This is the spot price, not the EMA moving price used for market cap and FDV, so explorers that display the EMA read differently.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].price- Price EMA (deregistration)
The value the chain compares when it has to pick which subnet to remove: the same smoothed moving price shown elsewhere, not the spot price.
Formulathe chain moving price (see Moving Price); lowest non-immune subnet is the one removed, older subnets losing tiesUsing the EMA rather than spot is deliberate: it makes the choice unforgeable by a single trade. A subnet that never started emission sits at 0 and is therefore always the first candidate.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].moving_price- Price impact
How much worse your effective price is than the quoted pool price, because your own trade moves the pool. It grows with your size and shrinks with pool depth.
Formula(output at the current pool price − output through the pool curve) / output through the pool curve × 100The number shown covers the subnet fee as well as the curve movement, which is the whole cost of trading and therefore a safe floor for a slippage setting. It is not a fee paid to anyone: the difference stays in the pool, which is why splitting a large order into smaller ones genuinely costs less. Above ~1% the swap warns you, and above 5% it is worth splitting. Free TAO and root trade 1:1, so their impact is 0.
Data source
GET https://api.taoswap.org/v2/subnets/Response field
results[].root_in_pool, results[].alpha_in_pool, results[].fee_rateSimulated against the live pool reserves.
- Root Proportion
The share of this subnet's validator emission that flows to root (SN0) stakers instead of to its own alpha stakers.
Formulaγ·R / (γ·R + alpha issuance), fraction in [0, 1), multiply by 100 for display. alpha issuance = alpha_in_pool + alpha_stake + the protocol alpha reserve. R = TAO staked on root, γ = the chain tao weight (~0.18, read live).The denominator is the subnet's whole alpha issuance, the pool side included; netting it against the staked side alone overstates the proportion by several points. The third term is protocol liquidity the AMM could not inject without pushing the pool weights out of range: it is zero on every subnet today and drains as soon as an injection fits, so in practice the value is set by the two alpha stocks. The proportion falls as a subnet ages and its own alpha issuance grows, which is also what shifts the subnet from liquidity injection to chain buys (see Chain Buys). It is a fraction, not a percentage. null for root or when there is no data. Do not confuse γ with `conviction.owner_emission_share`, which also sits near 0.18 but is the unrelated owner cut.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].root_proportion- Root stake / Alpha stake (validator)
The two halves of a validator's total stake: TAO staked on root, and alpha staked across subnets (valued in TAO).
Formulatotal_stake_root + total_stake_alpha = total_stakeThe alpha half carries the same slippage-aware valuation as Total Stake, so it moves with pool depth as well as with price.
API request
GET https://api.taoswap.org/validators/Response field
results[].total_stake_root / results[].total_stake_alpha- Root weight (validator)
The validator's root stake counted the way the chain counts it for emission, where TAO on root does not weigh 1:1 against alpha.
Formulatotal_stake_root × γ, γ being the chain tao weight (~0.18, read live)A scaled TAO amount, not a ratio and not a second stake bucket, so never add it to the stake columns. Same γ as the subnet Root Proportion.
API request
GET https://api.taoswap.org/validators/Response field
results[].root_weight- Slippage tolerance
How far the price may move against you between signing and inclusion before the chain refuses the trade. Default 0.5%, minimum 0.1%.
Formulaprice limit = expected execution price × (1 ± tolerance), sent to the chain as the limit on the extrinsicIt is applied on top of the expected execution price, which already contains the fee and your own price impact, so the tolerance only has to cover market movement, not the cost of the trade. Set it too low and ordinary movement makes the transaction fail. The chain enforces the limit, so a rejected swap costs you the network fee and nothing else, and with partial fill enabled it executes as much as fits inside the limit instead of rejecting everything.
Data source
GET https://api.taoswap.org/v2/subnets/Response field
results[].root_in_pool, results[].alpha_in_poolThe price limit is derived from the reserves and sent with the transaction.
- Spot vs Realizable
Spot prices your tokens at the pool price, as if size did not matter. Realizable estimates what you would actually receive selling them through the pool, fee and slippage included.
Formulaspot = balance × pool price; realizable = the same amount pushed through the weighted pool curve, after the subnet feeThe gap between the two is the honest cost of your own size: it widens with the position and with how thin the pool is. Positions are simulated per subnet, and because the curve is non-linear per-position figures do not add up to the portfolio figure. For reference the chain refuses any single swap larger than 1000× the input-side reserve, but that guard is far beyond any real position and the simulation here does not model it.
Data source
GET https://api.taoswap.org/v2/subnets/Response field
results[].root_in_pool, results[].alpha_in_poolRealizable is simulated against the pool reserves, read live from the chain.
- Stake (root) / Stake (alpha)
TAO staked on root, and all alpha across subnets valued in TAO.
Formulastaked_tao (root stake, 1:1) / staked_alpha_in_tao (alpha through the pool, with slippage)staked_tao is root stake only and excludes free TAO (the Total column adds it back). Alpha is valued at what it would actually fetch on exit, so it reads lower than flat-price or EMA-based figures.
API request
GET https://api.taoswap.org/accounts/Response field
results[].staked_tao / results[].staked_alpha_in_tao- Stake (α)
All the alpha staked on the subnet, i.e. everything held outside the pool.
Formulathe chain alpha-out reserve (α)This is the raw reserve: it INCLUDES the owner's locked and self-staked alpha, and it still includes burned alpha (a burn does not shrink the reserve). The owner-excluded distribution behind HHI / Nakamoto / Top 10% is a separate calculation.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].alpha_stake- Stake transfers (in / out)
Alpha or TAO you moved to or received from another wallet, valued at the price when it moved. Shown for context, never added on top of your totals.
Formulatransfer_stake_* covers cross-coldkey alpha moves; transfer_tao_* covers plain TAO transfers (global only, always 0 per subnet)A transfer out is already counted inside Realized as a disposal at market price, which is why adding these on top would double-count. On the receiving side the alpha arrives with a fresh cost basis at the market price of the day rather than the sender's basis, so moving stake between two wallets you both own resets your entry price. Moving alpha between your own hotkeys or subnets is a different operation and is not counted here at all.
API request
GET https://api.taoswap.org/portfolio-pnl-apy/?account=<coldkey>Response field
pnl.transfer_stake_in / _out, pnl.transfer_tao_in / _outCumulative, all-time, valued at the market price when the transfer happened.
- Supply
All the alpha in circulation for this subnet: what sits in the pool plus what is staked.
Formulaalpha_in_pool + alpha_stakeBurned alpha is deliberately NOT removed here: on-chain a burn destroys the tokens but leaves the reserve untouched, and it is tracked separately (see Burned). Market cap, by contrast, does remove it, which is why supply × price sits above market cap on burn-heavy subnets. Recycled alpha IS already excluded, because the chain reduces the reserve when it recycles. Supply and market cap also stop at those two stocks, leaving out the protocol alpha reserve that the chain folds into its own issuance figure (see Root Proportion): that reserve is liquidity waiting to be injected, owned by nobody, and it is zero on every subnet today. Explorers that also net burns, or that show the 21M cap (which is the FDV base), will differ.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].total_supply- Takeover gate (Threshold met)
Two conditions must both hold before the chain will hand a subnet to the conviction leader: the subnet must be over a year old, and the TOTAL conviction locked on it (every holder combined, owner included) must reach 10% of its staked alpha. Threshold met is how full that second condition is.
FormulaEligible when age ≥ 2,629,800 blocks (7200 × 365 + 1800 ≈ 365.25 d) AND total_conviction ≥ SubnetAlphaOut / 10. Threshold met = total_conviction / threshold × 100.Both gates must hold in the same block. The age gate is a plain countdown and is usually already cleared. The bar can read above 100% for a while when a decaying lock is near its peak, without the gate being durably reachable; see the ceiling described under Time to takeover. Whether the chain actually executes the flip is a runtime question, so read `takeover_enforced`, which tracks the live runtime version rather than a hardcoded flag: while it is false the gates are computed but nothing happens, which makes this an armed race rather than an executed takeover. Mainnet passed the enabling runtime version, so it reads true today.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].conviction.threshold_used_pct- Takeover status
A one-word verdict on the ownership race: whether the gate can ever be reached with the locks as they stand, whether both gates are already satisfied, and whether the chain would act on it.
FormulaEligible = takeover_age_ok AND takeover_threshold_ok. Stalled = gate_reachable false (the current locks plateau below the gate). Enforcement = takeover_enforced.Stalled is not the same as "far away": it means the perpetual mass alone cannot reach the threshold, so no amount of waiting helps, only a new lock does. Even when eligible, nothing happens while enforcement is off.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].conviction.gate_reachable, .takeover_eligible, .takeover_enforced- Time to takeover (ETA)
How long the current locks would need to fill the 10% conviction gate, projected day by day. Deliberately NOT proportional to the Threshold-met bar: a subnet that looks fuller today can still show a longer ETA.
FormulaSmallest Δ, scanned in 1-day steps out to 3 years, where the projected total conviction ≥ threshold, reported as max(conviction ETA, age ETA). The projection replays the chain maturation/decay math: existing conviction fades by exp(−Δ/MaturityRate), perpetual mass matures into conviction by (1 − exp(−Δ/MaturityRate)), decaying mass follows the chain's γ term, and owner masses are pinned to their locked mass.Conviction converges towards the perpetually locked mass, because the decaying part matures and then melts away. That gives the gauge a ceiling (gate_ceiling_pct = perpetual locked / threshold × 100): below 100% the gate is never durably reachable and the status reads Stalled, even if a transient bump crosses it. The approach is concave, so the closer the ceiling sits to the threshold the slower the final stretch, and a subnet with high conviction today but a ceiling barely above the gate reads slower than a less-filled one with room to grow. The 3-year horizon is about 36 maturity half-lives, far enough out that the projection has settled, so "no crossing" really does mean "never, with the locks as they stand". Assumes locks stay frozen and the threshold does not move; every sync recomputes it and the value drifts.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].conviction.gate_eta_days- Top 10 %
How much of the stake the ten largest holders own between them.
FormulaΣ(shares of the 10 largest) / Σ(all kept holders), 0..1, ×100 for displayIt is a fraction in 0..1, not a percentage. The denominator excludes the owner self-stake, so it measures the tradable distribution; the owner can still show up through its external delegations.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].top10_share- Total (account)
Everything the wallet is worth in TAO: free plus root stake plus alpha stake.
Formulafree + staked_tao + staked_alpha_in_taoAPI request
GET https://api.taoswap.org/accounts/Response field
results[].total_tao- Total Stake (validator)
Everything a validator has behind it, root stake plus alpha across every subnet, expressed in TAO.
FormulaΣ over subnets of each position valued in TAO (root 1:1; alpha through the pool, with slippage)Alpha is valued at what it would really fetch on exit, position by position, not at flat spot and not at the moving price. So it reads lower than a naive Σ(alpha × price) for large positions, and lower still than EMA-based explorers. The Accounts table values alpha exactly the same way, so the two are directly comparable. It is a snapshot from the last sync.
API request
GET https://api.taoswap.org/validators/Response field
results[].total_stake- Volume 24H
TAO traded through the subnet's pool over the last 24 hours.
FormulaΣ of the TAO leg of every stake and unstake on the subnet in the trailing 24 h (τ); volume_24h_usd is server-convertedCounted on one side only, in TAO, so it is roughly half of what an exchange would print for the same activity, since exchanges count both legs. Protocol chain buys are excluded: the coinbase moves the reserves directly without ever emitting a trade. Swaps and cross-subnet moves contribute each of their legs to the pool it touches, while same-subnet hotkey or validator rebalances are excluded, because they never touch the pool. The window rolls from now, but it is recomputed at most once an hour, so it steps rather than glides. null for root (no pool); a 0 is a real zero.
API request
GET https://api.taoswap.org/v2/subnets/Response field
results[].volume_24h (volume_24h_usd for the USD value)