What it does
Raydium CLMM works like Uniswap v3: you pick a price range and your capital only earns fees while price sits inside it. That is efficient and unforgiving — a position outside its range earns nothing while still carrying exposure. The bot removes the manual watch.
Range rebalancing
Checks every position about every 2 minutes; one that has left its range is closed, its fees banked, and a new one opened around the current price.
Wide + narrow
Splits a pool's capital between a wide position that stays in range longer and a narrow one that earns more per dollar while price stays close.
Per-position APR
Shows what your position earns, computed from its share of the pool's active liquidity — not the pool's headline number.
Portfolio funding
You name a dollar amount. The bot sells what the pool does not need and buys both sides of the pair to reach it.
Orca at the same time
Runs Raydium and Orca positions in parallel with separate capital per pool.
Optional IL hedge
A partial perp short on Jupiter Perps can be enabled per account. Off by default — here is why.
Raydium vs Orca: what actually differs
Both run the same CLMM math. What differs is pool size, and that changes how the numbers behave. Our own measurement of the SOL/USDC 0.04% pool on both venues, 16 September 2026:
| Metric | Raydium CLMM | Orca Whirlpool |
|---|---|---|
| Pool TVL | $7.0M | $24.6M |
| APR, last 24h | 52.5% | 55.7% |
| APR, last 7d | 28.9% | 44.0% |
| Spread (24h / 7d) | 1.82× | 1.27× |
How the bot sizes a Raydium position
A CLMM deposit needs both sides of the pair in the right proportion for your range. Get it wrong and the pool takes only what it can pair, leaving the rest idle. The bot computes the split from the range and the current tick, then assembles it:
your amount in USD
-> check it against free capital minus reserves (gas, hedge margin, kept fees)
-> sell whatever this pool does not need
-> buy both legs in the range's own proportion
-> open
If reserves make the amount impossible, it says so and names which reserve is in the way, instead of quietly opening something smaller.
Supported pools
On Raydium: SOL/USDC (0.04% and 0.02%), SOL/USDT (0.01%), USDC/USDT (0.01%), USD1/USDC (0.01%), SOL/USD1 (0.25%) and the SOL/JitoSOL and SOL/mSOL liquid-staking pairs (0.01%). On Orca Whirlpool: SOL/USDC 0.04% (the bot's main pool) and the cbBTC pairs. You choose which pools the bot works in and how much goes to each — a fixed dollar amount or a share of capital.
What it costs to run
Each open and each rebalance is an on-chain transaction. On Solana that is fractions of a cent in gas, but every position also locks about 0.055 SOL of rent, which comes back when the position closes. On a small position, the swaps around each rebuild weigh more against the fees it earns. The bot itself costs 50 USDT for 30 days or 500 USDT for 365 days; on the commission plan there is no upfront price and it takes 15% of collected LP fees, when they are collected.
Open-source Raydium CLMM bots on GitHub vs a hosted bot
Search for a Raydium CLMM bot and GitHub repositories fill the top results — projects such as himanshuranjan007/raydium-clmm-bot, WeShipHQ/lp-bot and joaquinbejar/CLMM-Liquidity-Provider. They are code you run yourself, and that has real advantages: you can read every line, and the key stays on your own machine. The rebalancing rule is the small part, though. What keeps a bot working for months on Solana mainnet is the plumbing around it:
| Self-hosted script | Smart LP Bot (hosted) | |
|---|---|---|
| Private key | On your own machine | Custodial: the bot wallet's key is stored on our server under AWS KMS envelope encryption (records not yet migrated still use the older PBKDF2-based scheme) and decrypted only in memory at signing time. Once you enable 2FA, money operations need a 2FA code; withdrawals can be limited by an address whitelist and a daily cap. With an external wallet such as Phantom you sign every transaction yourself, but then automated management is not available. |
| Uptime | Your machine or server has to stay up 24/7 | Runs on our server; positions are checked about every 2 minutes |
| RPC limits | Usually one endpoint and its rate limit; failover is yours to build | A pool of RPC providers with failover; signed transactions are re-broadcast if they are dropped |
| Positions missing from the records | Up to you to notice | A wallet scan recovers positions that exist on-chain but are missing from the bot's database |
| Risk rules | Whatever the code implements | New opens pause after a 3% drop within an hour; a 4–5% drop closes the narrow position, 5–10% closes all LP, a flash crash closes everything and waits 30 minutes |
| Code | You can read and change it | You use it as a service |
| Cost | Free, plus your server and RPC plan | 50 USDT / 30 days, 500 USDT / 365 days, or 15% of collected LP fees |
If you are comfortable running a server and paying for an RPC plan, a script is a reasonable choice. If you would rather not, that plumbing is what the hosted bot is for.
Frequently Asked Questions
Does the bot work with Raydium CLMM or only Orca?
Both, and at the same time. You select the pools it should work in and set capital per pool. Raydium positions are opened through Raydium's own CLMM program; Orca positions through Whirlpools. The bot tracks each position separately and reports their APR separately.
Why does the APR on my Raydium position keep changing?
Because the pool's own 24-hour fee rate changes with trading volume, and your position's number is derived from it. On our 16 September 2026 measurement the Raydium SOL/USDC pool showed a 24h-to-7d spread of 1.82x versus 1.27x on Orca — the smaller pool simply swings more. The card also shows the same calculation on the pool's 7-day rate as a steadier reference.
What happens if price leaves my Raydium range?
The bot checks its positions about every 2 minutes, so it catches the exit on the next cycle. It closes the position, collects the fees earned, and reopens a new position centred on the current price with a width chosen for current volatility, once the market filter allows a new open. A position left outside its range earns nothing while still carrying exposure, so speed matters.
Can I set the position size in dollars?
Yes. You enter a dollar amount and the bot assembles it from the whole portfolio — selling assets this pool does not need and buying both sides of the pair. If reserves (SOL for gas, hedge margin, collected fees held aside) make the amount impossible, it refuses and tells you which reserve blocks it.
Is there an open-source Raydium CLMM bot?
Yes. Several are on GitHub, for example himanshuranjan007/raydium-clmm-bot, WeShipHQ/lp-bot and joaquinbejar/CLMM-Liquidity-Provider. You run them yourself, with your own key, server and RPC endpoint. Smart LP Bot is the hosted alternative: it runs on our server, holds the bot wallet's key encrypted there, and adds RPC failover, recovery of untracked positions and drop-based risk rules.
Let the bot handle it
Smart LP Bot manages concentrated liquidity positions on Orca and Raydium at the same time — rebalancing, fee collection and optional IL hedging, all from Telegram.
Open in TelegramHome · Orca Whirlpool Bot · Raydium CLMM Bot · LP APR Calculator · Delta-Neutral LP · CLMM rebalance bot · Passive Income · Blog
Pool figures are public pool data from the date shown and not investment advice; liquidity positions can lose value.