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 →
1
5
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
80-bit
Decimals: 6 fixed
Max: ~$1.2 quintillion USDC
Used for: balances, fees, PnL, margins
PNS
Price Number System
32-bit
Decimals: 0–6, per-perp
Max: $429M @ 1 dec / $4,295 @ 6 dec
Used for: mark price, oracle, entry price
LNS
Lot Number System
40-bit
Decimals: 0–6, per-perp
Max: 1,099,511,627,775 raw lots
Used for: position sizes, order sizes
ONS
Orderbook Number System
24-bit
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

0.1 bps 0.3 bps 10 bps
Typical: 0.1–2 bps. MON was ~0.3 bps.

Pricing Bot Clamp

0.1 bps 0.2 bps 10 bps
Original cap: 0.2 bps. Step 1 fix raises this.

Position Size (shared)

10 lots 1,000 lots 100k lots
BTC-PERP $95,000 · price_dec=1 · PNS=950,000
Step-by-step funding pipeline
MON-PERP $0.04 · price_dec=6 · PNS=40,000
Step-by-step funding pipeline