btcli --limit calculator
--limit (a.k.a. --tolerance) is not a price — it is the fraction the
resulting pool rate is allowed to fall below spot. Size the limit to your sale, or size
the fill to your limit.
Queried straight from your browser. Nothing is sent anywhere else, and no key ever touches this page.
–
| Block | – |
| Pool reserves | – |
| Spot rate | – |
| Limit price sent | – |
| Alpha that fills | – |
| Proceeds | – |
| Average fill rate | – |
| Rate after the fill | – |
| Price impact | – |
| Swap fee (to block author) | – |
| Pool weight (0.5 = constant product) | – |
--limit is a fraction in [0,1] (btcli default 0.005), read only in
--safe mode. btcli turns it into limit_price = spot × (1 − limit) in rao and
calls remove_stake_limit(…, limit_price, allow_partial).
The chain works out max_amount = get_max_amount_remove(netuid, limit_price) — the alpha
that can be sold before the pool rate falls through limit_price, counted gross of the swap
fee. Then possible_alpha = min(requested, max_amount). With
--partial that capped amount executes and the rest stays staked; without
it, validate_remove_stake requires requested ≤ max_amount and otherwise throws
SlippageTooHigh, reverting the whole call.
So the two modes are the same rule read in opposite directions. Selling Δα moves the rate to
(A/(A+Δα))^(1+r) of spot, r being the pool's weight ratio (1 while the balancer weight sits
at 0.5), which inverts to
Δα_max = A·((spot/limit_price)^(1/(1+r)) − 1) / (1 − fee). The exponent here is
calibrated against the runtime's own sim_swap_alpha_for_tao on every run rather than
assumed, and both figures come back from that sim.
Spot moves between quoting and inclusion. Under --partial that only shrinks the fill;
without it, it is the difference between filling and reverting — which is what the safety pad buys.
Either way, re-run this right before you sign.