All articles
Solana·June 8, 2026·5 min read

Orca Whirlpool Tick Ranges and How Bots Snipe New Positions

Orca's concentrated liquidity Whirlpool pools create predictable initial tick ranges on launch. This post dissects the pool initialization instruction and shows how bots size entries relative to the initial price range.

Orca Whirlpool pools encode their entire initial geometry in a single on-chain instruction — tick spacing, initial sqrt price, fee tier — and that instruction is public the moment it lands in the mempool. Bots that understand what those bytes mean can size positions before LPs start piling in. Here is exactly how that works.

How Pool Initialization Encodes the Price Range

Every Whirlpool is born through the initializePool instruction. The critical arguments are:

  • tickSpacing — one of the five canonical values: 1, 8, 64, 128, or 256. This controls granularity. Stable pairs (USDC/USDT) typically use 1; volatile pairs use 64 or 128.
  • initialSqrtPrice — a Q64.64 fixed-point integer representing √(tokenB/tokenA). This anchors the pool's current price.
  • feeRate — tied implicitly to tick spacing via Orca's whirlpool configs (e.g., spacing 64 maps to 3000 bps, spacing 128 maps to 10000 bps).

From initialSqrtPrice, you recover the human-readable price as (initialSqrtPrice / 2^64)^2. More useful operationally: you derive the initial tick with floor(log(price) / log(1.0001)). That tick is where all the action starts.

Predicting the Opening Liquidity Cliff

LPs are not random. When a new Whirlpool opens, the vast majority of initial liquidity arrives in a tight symmetric range around the initial tick. In practice, you consistently see first-wave LPs place positions spanning roughly ±2 to ±5 tick spacings from center. For a pool with tickSpacing=64, that means positions bounded by ticks like [initialTick - 320, initialTick + 320], covering a price band of approximately ±3.2%.

Why symmetric? Liquidity providers typically use Orca's UI or Typescript SDK, both of which default to "Full Range" or a preset centered range. That default behavior creates a measurable clustering you can trade against.

The liquidity cliff — the tick where LP coverage drops sharply — is predictable from pool metadata alone before a single LP transaction confirms.

The Initialization Instruction as a Signal

To detect a new pool before LPs act, subscribe to the Whirlpool program's log stream via logsSubscribe on a Yellowstone gRPC endpoint. Filter for program invocations of whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc and inspect the instruction discriminator — initializePool has a known 8-byte prefix you can match on.

Once matched, decode the instruction data:

bytes 0–7:   discriminator
bytes 8:     bumps (pool bump, fee tier bump)
bytes 9–10:  tickSpacing (u16, little-endian)
bytes 11–26: initialSqrtPrice (u128, little-endian)

From there you have everything needed to compute the initial tick, the fee tier, and the expected LP clustering bands — all before the initialization transaction is finalized.

A bot reading this stream on a co-located validator or with a low-latency RPC can decode and queue an entry order within one or two slots of pool creation.

Position Sizing Relative to the Initial Range

Entry sizing in this context is not arbitrary. The correct frame is: how much of the initial price band do you want to own?

If the initial range spans ticks [L, U] and you expect the first 48 hours of volume to stay within that band, your capital efficiency scales with how tightly you concentrate. A position matching the exact opening LP band earns fees proportional to your share of liquidity in that range. Wider = less efficient; narrower = liquidation risk if price drifts.

The standard approach used in production:

  1. Compute the implied price range from the expected LP ticks (convert tick bounds to prices via price = 1.0001^tick).
  2. Size total notional to match a target fee APR assumption. If volume-to-TVL for comparable Orca pools runs 0.4x daily, and fee rate is 0.3%, a $50k position earns roughly $60/day at 100% in-range — model sensitivity from there.
  3. Hedge the inventory delta. A concentrated position between ticks L and U has a non-zero delta at entry. For a token you do not want directional exposure to, open a short futures leg on Hyperliquid immediately after confirming the LP position to flatten net delta. This is not optional for risk management on volatile pairs.

Our trading bots service handles the full lifecycle here — signal detection, on-chain execution, and the cross-venue hedge — as a single coordinated strategy rather than three separate scripts.

Latency and the Slot Boundary Problem

Orca initialization and the first LP deposit often land within the same block, or one block apart. This gives you a sub-400ms window on mainnet. The practical constraints:

  • Transaction ordering: Solana leaders process transactions within a slot sequentially based on fee priority. Submitting a modifyLiquidity transaction with a max priority fee does not guarantee it lands before competing LPs — it only improves your position in the queue.
  • Tick array initialization: Before any position can be opened in a tick range, the corresponding tick arrays must exist on-chain. For a brand new pool, they do not. Your bot must include a initializeTickArray instruction in the same transaction as your openPosition or risk landing a partial failure.
  • Blockhash TTL: The valid blockhash window is ~150 slots (~60 seconds). Prepare the transaction optimistically — sign with a fresh blockhash and rebroadcast if the pool initialization takes longer than expected.

Bots that ignore tick array initialization fail silently on new pools with surprising regularity. Always check whether the tick array account for your target range exists before submitting.

Fee Tier Selection as a Filtering Signal

Not all new pools are worth entering. Orca's fee tiers act as an implicit quality filter:

  • 0.01% (spacing=1): stable pairs only. Volume is predictable, but fee yield is thin. Worth automating only at scale.
  • 0.3% (spacing=64): the sweet spot for mid-cap volatile pairs. New token launches almost always use this tier. Highest snipe frequency.
  • 1% (spacing=128): exotic pairs, high volatility. Fee yield is attractive but impermanent loss risk is asymmetric — new pool sniping here requires a faster hedge leg and tighter exit criteria.
  • 0.05% (spacing=8): quasi-stable pairs. Moderate opportunity, low drama.

Filtering the initialization stream to only act on tickSpacing=64 pools eliminates most noise and focuses execution on the category with the best risk-adjusted setup historically.


If you want a strategy like this running in production — signal detection, prioritized submission, and cross-venue delta hedging stitched together — reach out and we can walk through what it takes to deploy it on your capital.

Need a bot like this built?

We design, build and run trading bots on Solana, Hyperliquid and Polymarket.

Start a project
#Solana#Orca#Whirlpool#Concentrated Liquidity#AMM#MEV#Bots#DeFi