Hyperparameters
alpha_high
Upper bound of the liquid-alpha bonds EMA range — the smoothing rate for weights that deviate most from consensus.
alpha_high is the ceiling of the per-pair bonds EMA rate when liquid_alpha_enabled is on. Pairs whose weights deviate strongly from consensus approach this rate, so their bonds move fastest. Subnet owners tune it to decide how quickly a bold, off-consensus position translates into bonds; validators care because it caps how fast conviction can build or unwind.
How it works
Each epoch, alpha_sigmoid (pallets/subtensor/src/epoch/run_epoch.rs) maps a pair's deviation from consensus into the EMA rate:
alpha = alpha_low + sigmoid(diff) × (alpha_high − alpha_low)The deviation is weight − consensus when a validator is raising its bond, or bond − weight when lowering it (both clamped to 0..1). As deviation grows past 0.5 the sigmoid saturates toward 1 and alpha approaches alpha_high; the result is clamped into the alpha_low..alpha_high window. The resulting per-pair matrix drives the bonds EMA B(t) = alpha × W + (1 − alpha) × B(t−1) in mat_ema_alpha. Defaults are (45875, 58982) — 0.7 and 0.9 of u16::MAX.
Validation in do_set_alpha_values: liquid alpha must already be enabled (LiquidAlphaDisabled), and alpha_high must be at least 1638 (u16::MAX / 40 ≈ 0.025), else AlphaHighTooLow. alpha_low may not exceed it.
Matches alpha_sigmoid in the epoch code. Deviation is weight − consensus when buying bond, bond − weight when selling. Higher alpha moves bonds faster. Requires yuma3_enabled; when liquid alpha is off, every pair uses the flat 1 − bonds_moving_avg / 1e6. The shaded band marks rates above alpha_high — the curve can never enter it, so alpha_high caps how fast even the most deviant pair's bonds move.
In consensus (diff = 0)
0.701
EMA rate for weights matching consensus
Max deviation (diff = 1)
0.899
approaches the alpha_high ceiling
Flat rate when disabled
0.100
1 − 900,000 / 1,000,000
Reading and setting
btcli sudo get --netuid N --name alpha_highStored as u16 (65535 = 1.0); the CLI accepts the raw integer or a 0..1 fraction with a decimal point:
btcli sudo set --netuid N --name alpha_high --value 0.9On chain, alpha_low and alpha_high live in one storage value set by a single sudo_set_alpha_values call. The CLI reads the current pair and resubmits it with only alpha_high changed, so the other side is preserved.
Related
alpha_low, alpha_sigmoid_steepness, liquid_alpha_enabled, bonds_moving_avg, yuma3_enabled