Introducing Liquidity Snapshots, Slippage Bands, and SDK 0.3
Real time liquidity intelligence powers smarter multi leg sells. Know exactly how much you can move at each slippage tier before you sign a single transaction.
TL;DR: The Exit Intelligence Stream now sends real time slippage bands and liquidity trend data for every position. You can see exactly how many tokens you can sell at 1%, 2%, 5%, or 10% price impact, and get a "draining" warning when pool depth is shrinking. SDK 0.3 adds buildPartialSellTx(), multi wallet support, and helper methods to query it all. Available now on Professional and Advanced tiers.
Selling a token is easy. Selling at the right size without destroying your own price? That takes information most traders do not have.
Today we are shipping liquidity snapshots: a real time view of pool depth, slippage bands, and liquidity trend data delivered directly through the Exit Intelligence Stream. Available now for Professional and Advanced tier subscribers, and included in SDK 0.3 across all four languages.
The problem: selling blind
When you hold a large position in a low liquidity pool, a full sell can move the price 20%, 30%, or more against you. Limit orders do not help because they sit passively and get skipped when price gaps past them. And checking pool state manually is slow, stale by the time you act, and requires deep knowledge of each DEX's math.
Until now, the only way to understand slippage before selling was to simulate the trade yourself, on chain, for every position, on every price tick. That is exactly what LaserSell now does for you.
What liquidity snapshots deliver
Every PnL update cycle, the Exit Intelligence Stream now sends a liquidity_snapshot message alongside each pnl_update for Tier 1 and Tier 2 sessions. Each snapshot includes:
Slippage bands answer the question: "How much can I sell without exceeding X% price impact?"
{
"type": "liquidity_snapshot",
"position_id": 1,
"bands": [
{ "slippage_bps": 100, "max_tokens": 500000, "coverage_pct": 10.0 },
{ "slippage_bps": 200, "max_tokens": 1200000, "coverage_pct": 24.0 },
{ "slippage_bps": 500, "max_tokens": 3000000, "coverage_pct": 60.0 },
{ "slippage_bps": 1000, "max_tokens": 5000000, "coverage_pct": 100.0 }
],
"liquidity_trend": "stable",
"server_time_ms": 1706000003000
}
In this example, you can sell 60% of your position (3,000,000 tokens) with no more than 5% slippage. Selling the full position requires accepting up to 10%.
Reading coverage_pct: this field tells you what fraction of your total position fits within each slippage band.
- 100% at 1% = Deep liquidity. You can exit the full position with minimal impact.
- 10% at 2% = Thin pool. You would need to split into many smaller sells to stay within tolerance.
- Less than 50% at 10% = Very illiquid. Consider exiting what you can before conditions worsen.
Example: 5,000,000 tokens worth 50 SOL
| Strategy | Slippage | You receive |
|---|---|---|
| Sell everything at once | ~25% | 37.5 SOL |
| Sell 60% at 5%, rest at 10% | Staged | ~46 SOL |
+8.5 SOL saved on a single exit, just by knowing the pool depth before you execute.
Liquidity trend tracks how pool depth is changing over recent observations:
- Growing: Liquidity is increasing. Sell conditions are improving.
- Stable: Liquidity is steady. No significant change.
- Draining: Liquidity is decreasing. Consider exiting sooner if you are holding a large position.
How this changes your strategy
Size exits intelligently
Instead of dumping an entire position and eating 25% slippage, query the 5% band and sell exactly that amount:
const maxTokens = session.getMaxSellAtSlippage(positionId, 500);
if (maxTokens !== undefined) {
const tx = await client.buildPartialSellTx(handle, maxTokens, {
slippageBps: 500,
});
// sign and submit...
}
React to liquidity changes
If the trend shifts from "stable" to "draining," you know the window to exit at a good price is closing. Your application can react immediately instead of discovering the problem after the trade executes:
const trend = session.getLiquidityTrend(positionId);
if (trend === "draining") {
// Liquidity is decreasing - possible rug pull or whale dump incoming
// Exit immediately before slippage gets worse
const maxTokens = session.getMaxSellAtSlippage(positionId, 1000);
if (maxTokens !== undefined) {
const tx = await client.buildPartialSellTx(handle, maxTokens, {
slippageBps: 1000, // Accept 10% to get out now
});
// sign and submit...
}
}
This is the "warning system" side of the feature. Instead of holding and hoping while liquidity providers pull out, your strategy sees "draining" in real time and starts selling what it can at the best available price. By the time a manual trader notices slippage has doubled, your application has already locked in gains.
Build smarter applications
Slippage bands update in real time. An application can continuously monitor the coverage percentage at its target slippage and trigger a sell the moment enough liquidity appears to exit the full position cleanly.
Before and after
| Without liquidity snapshots | With liquidity snapshots | |
|---|---|---|
| Sell sizing | Guess, or sell everything and hope | Query exact token amount per slippage band |
| Slippage awareness | Discover after the trade executes | Know before you sign the transaction |
| Liquidity shifts | Invisible until price impact spikes | "draining" warning in real time |
| Partial exits | Manual math with pool state RPCs | One call to buildPartialSellTx() |
| Multi wallet | One session per wallet | Up to 200 wallets in a single session |
SDK 0.3: what else is new
This release includes several additions beyond liquidity snapshots:
Partial sell helper
All four SDKs now include buildPartialSellTx() (or the language equivalent). Pass a PositionHandle from any stream event, the number of tokens to sell, slippage tolerance, and output asset. No need to manually extract mint, wallet, or token account fields.
Multi wallet support
Stream sessions now accept multiple wallet public keys in the configure message. Monitor up to 5 wallets on the Professional tier or up to 200 wallets on the Advanced tier, all in a single session. Add or remove wallets mid session with updateWallets() without reconnecting.
Liquidity query methods
StreamSession caches the latest liquidity snapshot per position. Three new methods across all SDKs:
| Method | Returns |
|---|---|
getSlippageBands(positionId) | Array of slippage bands with max tokens and coverage percentage |
getMaxSellAtSlippage(positionId, bps) | Maximum tokens sellable at the given slippage threshold |
getLiquidityTrend(positionId) | "growing", "stable", or "draining" |
Availability
Liquidity snapshots are available now for Professional ($49/mo) and Advanced Exit Engine ($149/mo) subscribers. Free tier sessions continue to receive PnL updates and exit signals as before.
SDK 0.3 is published on npm, PyPI, and crates.io. Go users can update with go get.
npm install @lasersell/lasersell-sdk@0.3.0
pip install lasersell-sdk==0.3.0
cargo add lasersell-sdk@0.3.0
go get github.com/lasersell/lasersell-sdk/go@latest
If you have questions or want to share what you are building, reach out on X @lasersellhq or join the Discord.
Full documentation: Liquidity Snapshots · Rate Limits and Tiers · SDK Guides
