Number Systems
How Perpl represents prices, sizes, and collateral on-chain — and the tradeoffs behind each choice.
Precision Budget
Number Systems
BTC vs MON
Funding Precision
Select asset
BTC
MON
Custom
Animate the split to see how each configuration affects price & size resolution
Drag to split 6 decimal places between price and size
← PRICE decimals
SIZE decimals →
Quick select
Configuration checks
Price tick resolution
—
Min trade value
—
Price fits in ONS (24-bit)
—
Rally headroom
—
Price System (PNS · 32-bit)
Decimals—
Tick size—
Current PNS—
ONS window (24-bit)—
32-bit PNS ceiling—
Size System (LNS · 40-bit)
Decimals—
Min lot size—
Min trade value—
Max position—
Collateral (CNS · 80-bit · fixed)
Decimals6 (USDC)
Max balance~$1.2 quintillion
p_dec + l_dec (≤ 6)= 6 ✓
CNS
Collateral Number System
Decimals: 6 fixed
Max: ~$1.2 quintillion USDC
Used for: balances, fees, PnL, margins
PNS
Price Number System
Decimals: 0–6, per-perp
Max: $429M @ 1 dec / $4,295 @ 6 dec
Used for: mark price, oracle, entry price
LNS
Lot Number System
Decimals: 0–6, per-perp
Max: 1,099,511,627,775 raw lots
Used for: position sizes, order sizes
ONS
Orderbook Number System
Decimals: 0 (tick offsets only)
Max: 16,777,215 ticks from base
Used for: orderbook price slots
BTC-PERP
High-value asset — prioritise size granularity
Market price~$95,000
price_decimals1
size_decimals5
Price tick$0.10
Tick as % of price0.0001%
Min lot0.00001 BTC
Min trade value~$0.95
ONS price range$0 – $1,677,721
Rally headroom17.7× current price
MON-PERP
Low-price token — prioritise price granularity
Market price~$0.04
price_decimals6
size_decimals0
Price tick$0.000001
Tick as % of price0.0025%
Min lot1 MON
Min trade value~$0.04
ONS price range$0 – $16.78
Rally headroom419× current price
Both use all 6 decimal places (1+5=6 and 6+0=6), maximising precision — the budget constraint is ≤ 6, and using less wastes it. The direction of the split is driven entirely by the asset's price magnitude. BTC at $95k needs sub-cent lot granularity so traders can buy tiny fractions. MON at $0.04 needs sub-cent price precision so the orderbook can express real spread and movement — $0.10 ticks would be 250% of the entire price.
What if the settings were swapped? (wrong configurations)
BTC with price_dec=6, size_dec=0
Price tick: $0.000001 (overkill — $0.10 was fine)
Min lot: 1 whole BTC = $95,000
ONS range: $0 – $16.78 (BTC doesn't fit!)
→ Orderbook overflows. No retail participation.
MON with price_dec=1, size_dec=5
Price tick: $0.10 = 250% of $0.04 price
Min lot: 0.00001 MON = $0.000004 (dust)
Expressible prices: $0.00, $0.10, $0.20, $0.30...
→ Can't represent meaningful price moves. Useless book.
Market Funding Rate
Typical: 0.1–2 bps. MON was ~0.3 bps.
Pricing Bot Clamp
Original cap: 0.2 bps. Step 1 fix raises this.
Position Size (shared)
BTC-PERP
Step-by-step funding pipeline
MON-PERP
Step-by-step funding pipeline