Liquid Alpha

Consensus

Dynamic bond EMA coefficient that varies per validator-miner pair based on weight-consensus distance.

Click items to navigate to their reference pages.

The Big Picture

Liquid Alpha is a refinement to Yuma Consensus that rewards consistency. Instead of all validators having the same bond accumulation rate, those who agree with consensus accumulate bonds faster (higher alpha) and earn more dividends. Outlier validators accumulate slower — they can still set different weights, but they build less dividend power doing so.

Why This Matters

Liquid alpha directly affects validator earnings. Validators aligned with consensus earn dividends faster because their bonds grow more quickly. Understanding this helps optimize weight strategies.

Example Scenario

Suppose AlphaLow=0.70 and AlphaHigh=0.90 (defaults). Validator V sets weight 0.5 for miner M, and consensus for M is 0.5. Distance = 0, sigmoid → high (~0.99) → alpha ≈ 0.90 (fast accumulation). Validator W sets weight 0.9 for miner M. Distance = 0.4, sigmoid → low (~0.01) → alpha ≈ 0.70 (slow accumulation). V builds bonds ~1.3× faster than W for this miner.

Common Questions

Does liquid alpha punish honest disagreement?
It slows bond growth, not eliminates it. A validator who genuinely believes a miner deserves different weights can still set them — they just accumulate bonds more slowly.
Can a subnet turn this off?
Yes, the LiquidAlphaOn parameter can be disabled by the subnet owner. Without it, all bonds use the same fixed alpha.

Use Cases

  • Understanding validator dividend dynamics
  • Optimizing weight strategies for bond growth
  • Evaluating consensus alignment across validators
  • Building validator performance dashboards

Liquid Alpha enhances the bond EMA in Yuma Consensus by making the smoothing coefficient (alpha) dynamic rather than fixed. Validators whose weights are close to consensus get a higher alpha — meaning their bonds accumulate faster. Validators with outlier weights get a lower alpha, slowing their bond growth.

This creates a "soft penalty" for non-consensus behavior while allowing legitimate disagreement. The alpha value is computed per validator-miner pair using a sigmoid function interpolating between AlphaLow and AlphaHigh.

Triggers

  • Epoch processing when LiquidAlphaOn is enabled for the subnet

Inputs (4)

ItemTypeRole
LiquidAlphaOn SubtensorModulestorageWhether liquid alpha is enabled for this subnet
AlphaValues SubtensorModulestorageAlpha high/low bounds for consensus-aligned vs outlier validators
Consensus SubtensorModulestorageConsensus weights from weighted median
Bonds SubtensorModulestorageCurrent bond matrix to apply EMA to

Outputs (1)

ItemTypeRole
Bonds SubtensorModulestorageUpdated bonds with variable-alpha EMA

Source Files

pallets/subtensor/src/epoch/run_epoch.rs
epoch_dense()epoch_dense_mechanism()
pallets/subtensor/src/epoch/math.rs
mat_ema_alpha()mat_ema_alpha_sparse()

Formulas

Liquid Alpha Sigmoid

Computes per-pair alpha using a sigmoid function based on directional weight-consensus and bond-weight distance.

diff_buy = clamp(weight[i][j] - consensus[j], 0, 1)
diff_sell = clamp(bond[i][j] - weight[i][j], 0, 1)
combined_diff = diff_buy if weight >= bond, else diff_sell
sigmoid_value = 1 / (1 + exp(steepness / -100 * (combined_diff - 0.5)))
alpha[i][j] = alpha_low + sigmoid_value * (alpha_high - alpha_low)

TypeScript: computeLiquidAlpha() in yuma-formulas.ts

Related Workflows

set-weights
Read the deep dive: Liquid Alpha

Version History

v290 Liquid alpha introduced with dTAO upgrade
v340 AlphaHigh and AlphaLow made configurable per subnet
v374 Sigmoid steepness parameter tuned