Day 2
Day 2 of 30

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:

LP Orchestrator Flow

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:

LP Orchestrator Dashboard

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:

ControlWhat It DidThe Problem
Budget via TelegramSet a budget, hit start, let it runNo way to know if the budget was being used efficiently
Daily Swap LimitStop after 3 swaps per day to control costsArbitrary limit with no connection to actual profitability
Fixed Duration + RangeEvery position lasted 1.5 days with ±3% price rangeNumbers 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 BotWhat We're Building
Fixed ±3% rangeDynamic range based on actual volatility
Arbitrary 1.5 day durationEntry/exit based on predicted price movement
Fees shown, no comparisonReal P&L tracking against hold baseline
Swap whenever out of rangeCost-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.

2/30