My First LP Bot: What Went Wrong
My First Automation
I watched the green harvest numbers stack up on Raydium. $6 here. $8 there. Every few hours, more fees to collect. It felt like I was earning.
But when I checked my total balance, it hadn't grown nearly as much as all those harvests suggested. Something wasn't adding up.
This is the story of my first LP automation attempt. Not to discourage you, but to show you exactly what we're fixing in this course.
The System I Built
Here's the automation flow I created:

Think of it like a thermostat for your money. The bot checked prices every 30 seconds. When price moved out of my target range, it "rebalanced": closed the old position, swapped tokens to match the new price, and opened a fresh position. Automatic, hands-off, always running.
Sounds good in theory. Let me show you what actually happened.
The Dashboard
This is where I tracked my positions:

Look at one closed job at the bottom. Harvested $6 in fees. Looks good, right? But when I calculated the full picture, slippage ($2.79), gas ($0.25), and impermanent loss ate through everything. Final P&L for that single transaction: -$3.03.
I harvested $6 and still ended up negative. The fees looked great. The total math said otherwise. Now let me explain what each control was supposed to do.
How It Worked
The system had three main controls:
| Control | What It Did | The Problem |
|---|---|---|
| Budget via Telegram | Set a budget, hit start, let it run | No way to know if the budget was being used efficiently |
| Daily Swap Limit | Stop after 3 swaps per day to control costs | Arbitrary limit with no connection to actual profitability |
| Fixed Duration + Range | Every position lasted 1.5 days with ±3% price range | Numbers I picked, not numbers the math suggested |
The loop kept running. Monitor, check range, rebalance if needed, repeat. But the underlying logic was flawed.
What Went Wrong
I ran backtests. Three problems became clear:
The range was wrong. ±3% is arbitrary. Some days price moves 1%. Some days it moves 10%. A fixed range means you're either too tight (constant rebalancing, high costs) or too wide (capital sitting idle, low efficiency).
The timing was wrong. Fixed 1.5 day duration has no connection to market conditions. Why 1.5 days? Because I picked a number. Not because the math said so.
I couldn't measure success. The dashboard showed fees earned. But I never compared against just holding. I never calculated if the swap costs were worth it. Green numbers on screen, no real understanding.
This brings us to the question I couldn't answer.
The Real Question
After weeks of running this system, I couldn't answer something simple:
Am I better off than if I had done nothing? The bot ran. Positions were created. Fees were collected. But compared to holding SOL and USDC separately, was I actually ahead?
I didn't know. And that's the core problem we're solving.
What We Will Build Instead
The system we're creating replaces guesswork with calculation:
| My First Bot | What We're Building |
|---|---|
| Fixed ±3% range | Dynamic range based on actual volatility |
| Arbitrary 1.5 day duration | Entry/exit based on predicted price movement |
| Fees shown, no comparison | Real P&L tracking against hold baseline |
| Swap whenever out of range | Cost-aware rebalancing that knows when swapping destroys value |
The goal isn't just automation. The goal is a system that knows whether it's winning.
Tomorrow we look at concentrated liquidity, the mechanism that makes efficient LP possible, and why it demands smarter automation than my first attempt.