short anything below zero.
Long or short any graduated pump.fun coin, priced off every pool's signed reserves.
PumpSwap pools carry a signed reserve. Subzero reads it.
PumpSwap prices both buys and sells against effective quote reserves: the in the pool's quote vault plus virtual_quote_reserves, a signed i128 stored on the Pool account. Starting Sep 30 that value can be negative. Subzero decodes it for every pool on every tick and marks every position against effective reserves, so pools below zero and phantom pools are priced exactly as the program prices them.
The price counts less than the vault holds. The difference stays in the vault as a floor that no swap can take out.
No tracked pool is below zero yet. The first one shows up here live.
No virtual reserve. The pool prices exactly against the in its vault.
No tracked pool in this state right now.
The price counts that is not in the vault (phantom). Sells can never take out more than the real vault holds; the program rejects them with error 6063.
No tracked pool in this state right now.
effective_quote = quote_vault.amount + virtual_quote_reserves u64 i128, signed price = effective_quote / base_vault.amount program guarantees effective_quote ≥ 0 and fits in u64
The field has been a signed i128 since it was added in July for BOOST; the type did not change. What cb188ce documents is the sign rule: from Sep 30 the value may be negative. Pools written before the field existed are shorter and read as zero. Integrations that decoded it as unsigned would misprice those pools; Subzero keeps the sign end to end, from account decode to candles to settlement.