How Solana AI agents capture arbitrage opportunities

Written by:

Maksym Bogdan

9

min read

Date:

April 3, 2026

Updated on:

April 3, 2026

By late 2025, 50% of all DEX trading volume on Solana came from arbitrage bots and on peak days that figure climbed to 70%. Solana's total on-chain spot volume hit $1.6 trillion in 2025, and a large share of that runs through automated systems.

A human trader looking at two DEX prices and deciding to arbitrage them is not a strategy—it's a nostalgia exercise. By the time you spot the gap, construct the transaction, and hit submit, the price has corrected, someone else's bundle has landed, and you've paid fees for nothing.

The agents running these strategies work in a completely different time frame. They detect, compute, and execute within a single Solana slot—400 milliseconds. Some operate in less than 50ms from signal to transaction broadcast. This is not a matter of being faster with a keyboard. It's a matter of architecture.

This article breaks down exactly how those agents work: the types of arbitrage they run, the execution flow from signal to settlement, the infrastructure stack they depend on, and why most attempts fail before they find a single profitable trade.

What arbitrage means on Solana

Arbitrage is the practice of exploiting price differences for the same asset across different venues. In traditional finance this happens across exchanges, over seconds or minutes. On Solana, it happens across DEX pools, within a single block.

Solana's design makes it uniquely suited to arbitrage. The network produces a block every 400ms, transaction fees are fractions of a cent, and hundreds of liquidity pools for the same token pairs exist across Raydium, Orca, Meteora, Phoenix, and dozens of smaller AMMs and prop-AMMs. Every time a large swap hits one of these pools, it moves the price. That price difference persists until another transaction corrects it—typically within one to two slots.

The agent's job is to be that correcting transaction. Detect the discrepancy, compute whether the trade is profitable after fees and tips, construct and submit the transaction before any other agent does the same thing.

Key fact: Solana processed ~70 million transactions per day and over $143B in monthly DEX volume as of October 2025 (CryptoSlate / DefiLlama). The majority of that activity involves automated systems reacting to pricing events faster than any human can.

Types of arbitrage AI agents run

Not all arbitrage is the same. The strategy type determines the latency requirement, the infrastructure needed, and the competitive landscape the agent operates in.

Strategy type How it works Time window Infrastructure need
Atomic / cyclic arb Buy token A on pool X, sell on pool Y in a single transaction. Reverts if unprofitable. Sub-slot (<400ms) ShredStream, dedicated node, SWQoS
Statistical arb Identify tokens that historically move together. Trade the divergence. Minutes to hours Account streaming, historical data
Cross-DEX route arb Same token pair trades at different prices across Raydium, Orca, Meteora. Execute the spread. 1–3 slots Yellowstone gRPC, fast submission
Triangular arb A→B→C→A across three pools. Profit emerges from the pricing imbalance in the cycle. Sub-slot Jito bundles, bare-metal execution
Latency arb React to a large trade on one venue before the price on another venue corrects. Single slot ShredStream, colocation, SWQoS
Liquidation arb Monitor undercollateralized loans on lending protocols. Execute liquidation for fee. 1–5 slots Account health monitoring, fast tx

Atomic and cyclic arbitrage dominate Solana by volume. These strategies execute entirely within a single transaction—if the trade is unprofitable at execution time, the transaction reverts and the only cost is the compute fee. This atomic guarantee makes the strategy safe to run at high frequency: the agent fires whenever it sees an opportunity, and failed attempts cost almost nothing.

Latency arbitrage is the most competitive tier. It depends entirely on seeing the triggering trade before most other agents and submitting a response transaction in the same or next slot. This is where infrastructure becomes the primary competitive variable.

The arbitrage execution flow

Here is the full lifecycle of a competitive arbitrage trade on Solana, from signal to settlement:

Step 1: data ingestion

The agent subscribes to relevant AMM program accounts via Yellowstone gRPC. Unlike polling over JSON-RPC, gRPC streams push account state updates directly from validator memory the moment they change—latency under 50ms from state change to agent notification.

For the most competitive strategies, agents connect directly to Jito ShredStream. ShredStream delivers block data at the shred level—fragments of transactions before they assemble into a full block. This gives the agent a 50–100ms head start over gRPC alone, seeing incoming swap activity before it confirms.

Step 2: opportunity detection

The agent maintains an in-memory model of current pool states. When a new account update arrives, it recalculates the effective price across all relevant pools for the target token pair. If the price difference exceeds the minimum profitable threshold—accounting for swap fees, compute costs, and Jito tip—the agent flags an opportunity.

This computation runs in microseconds for simple two-pool routes. Triangular routes across three pools require slightly more computation but still complete well under 1ms on optimized code.

Step 3: transaction construction

The agent constructs the arbitrage transaction: the sequence of swap instructions that executes the route, a ComputeBudget instruction setting the priority fee, and a Jito tip instruction if submitting via bundle.

Priority fees matter here. The ComputeBudgetProgram.setComputeUnitPrice instruction tells the validator how much the agent will pay per compute unit. Too low and the transaction gets deprioritized under congestion. Calibration is an ongoing process—most production bots target the 75th–90th percentile of recent priority fees for the same program.

Step 4: submission via Jito bundle

Most competitive arbitrage agents submit via Jito bundles rather than standard sendTransaction. A bundle is a group of transactions that execute atomically in order—critical for strategies that need to guarantee execution sequence.

The agent sends the bundle to multiple Jito Block Engine endpoints in parallel—US East, EU, Tokyo—because different validators are geographically closer to different endpoints on any given slot. The Jito tip (typically 50–60% of expected profit) compensates the validator for including the bundle and determines priority among competing bundles.

Step 5: confirmation and logging

The agent monitors confirmation via getSignatureStatuses with processed commitment—not confirmed or finalized, which add unnecessary latency. On a successful execution, it logs the route, profit, tip paid, and slot delta. On failure, it logs the reason for use in tip calibration.

The full flow from ShredStream signal to bundle submission runs under 50ms on well-optimized setups. From there, the transaction sits in the Jito mempool waiting for the next leader slot—typically under 400ms additional wait.

Why most arbitrage AI agents fail

The mechanics are well-documented. Jito publishes its infrastructure. Yellowstone gRPC is open source. Solana's RPC methods are public. Yet the overwhelming majority of arbitrage bots produce no profit or actively lose money. Here is why.

Wrong commitment level

Using confirmed or finalized commitment instead of processed adds 400–800ms of unnecessary latency to every data update. Arbitrage windows close in one to two slots. An agent running on confirmed commitment is structurally too slow before it even evaluates the first opportunity.

Public RPC in production

Public endpoints apply rate limits during congestion events—exactly when the most lucrative opportunities appear. A token launch, a liquidation cascade, a large market order: all of them spike RPC traffic at the same time they create pricing inefficiencies. An agent that hits a rate limit during these events misses every opportunity they generate.

WebSocket instead of gRPC

WebSocket subscriptions are easier to set up but carry higher latency and lower stability than Yellowstone gRPC. Account updates arrive later, subscriptions drop during heavy load, and reconnection takes seconds. For strategies where the window is one slot, a WebSocket that takes 3 seconds to reconnect is functionally down during the most active periods.

Tip calibration failure

Arbitrage bots compete directly against each other in Jito's bundle auction. A tip that's too low results in bundle deprioritization—other agents' bundles land instead. Most new bots set tips too conservatively and wonder why their bundles never confirm. The standard starting point: 50% of estimated profit, adjusted based on observed bundle acceptance rate.

No colocation

The physical distance between the agent's server and the current Solana leader adds latency that no software optimization can eliminate. An agent running in a cloud region 200ms from the nearest validator loses that 200ms on every submission—enough to miss a one-slot window entirely.

Latency = profit: the numbers

Every millisecond of latency removed from the execution pipeline has a direct effect on opportunity capture rate. Here is how the components stack up:

Latency source Public endpoint Dedicated node (colocated) Impact
Account update via gRPC 50–150ms 10–30ms Earlier signal detection
ShredStream vs gRPC N/A +50–100ms earlier Pre-confirmation visibility
sendTransaction to leader 100–400ms 5–25ms Transaction lands earlier
Failover on node drop Manual / minutes <50ms automated Zero missed windows
Rate limiting under load Common None on dedicated 100% availability at peak

The cumulative difference between a public shared endpoint and a dedicated colocated node with ShredStream can exceed 300–400ms on the full pipeline. For strategies with a one-slot window, that difference is binary: the agent either competes or it doesn't.

Data layer: what AI agents need

An arbitrage agent's data requirements are more specific than a general RPC consumer. Here's what the data layer must provide:

  • Real-time AMM pool states: reserve balances, fee parameters, tick data for concentrated liquidity pools. These change with every swap and must arrive within one slot to be useful.
  • Leader schedule: the agent needs to know which validator produces the next block so it can route transactions to the correct TPU address. getLeaderSchedule should run at epoch start and refresh every few hundred slots.
  • Recent blockhash: every transaction requires a fresh blockhash. Stale blockhashes cause immediate transaction rejection. The agent polls getLatestBlockhash on a tight loop—typically every 2–3 seconds.
  • Priority fee oracle: recent priority fees for the target programs, used to calibrate ComputeUnitPrice. getRecentPrioritizationFees provides this directly.
  • Bundle confirmation feedback: Jito provides bundle status APIs. The agent uses this to monitor tip effectiveness and adjust calibration in real time.

All of this requires a data connection that stays alive, delivers updates within one slot, and doesn't rate-limit during the exact conditions—high network activity—when the data is most critical.

Infrastructure stack for arbitrage agents

Here is the full infrastructure stack that production arbitrage agents on Solana run in 2026:

Layer Component Why it matters
Data ingestion Yellowstone gRPC (Geyser plugin) Push-based account updates under 50ms from state change
Pre-confirmation data Jito ShredStream 50–100ms earlier than gRPC; sees transactions before blocks assemble
Transaction submission Jito Block Engine (bundles) Atomic execution, tip-based priority, MEV protection
Submission routing Multiple regional endpoints in parallel Hedges geographic variance in leader proximity
Priority fee management getRecentPrioritizationFees + calibration loop Keeps tip competitive without overpaying
Execution language Rust (production) / TypeScript (prototyping) Rust eliminates GC pauses; TypeScript faster to iterate
Node infrastructure Dedicated bare-metal, validator-colocated Sub-4ms latency, no rate limits, 99%+ landing rate
Failover Automated <50ms rerouting No gaps during validator churn or node issues

Why RPC Fast fits this stack

The infrastructure layer in that table—dedicated bare-metal nodes, Jito ShredStream, Yellowstone gRPC, SWQoS paths, automated failover—describes exactly what RPC Fast provides for production arbitrage agents on Solana.

RPC Fast nodes run on bare metal colocated with Solana validators. ShredStream comes enabled by default on dedicated plans, not as an add-on. Yellowstone gRPC delivers structured account streams with filtered subscriptions so the agent only processes the pool accounts it actually monitors. SWQoS transaction paths give bundles priority routing to the leader under congestion. Failover completes in under 50ms automatically—no manual intervention, no dropped windows.

On dedicated nodes, getLatestBlockhash returns in under 4ms. Transaction propagation runs under 100ms. There are no RPS limits—the agent submits as frequently as the strategy requires, without hitting a ceiling during the high-traffic events that generate the most opportunities.

SaaS tiers provide the same ShredStream and gRPC access at lower scale, with a direct upgrade path to dedicated nodes when the strategy proves out and volume justifies the investment.

Building an arbitrage agent on Solana?

The execution layer determines whether your strategy captures the opportunities it's designed for or consistently arrives one slot too late. RPC Fast provides the dedicated bare-metal infrastructure, ShredStream, Yellowstone gRPC, and SWQoS paths that production arbitrage agents require.

Get a free infrastructure review from the RPC Fast team
Table of Content

Need help with Web3 infrastructure?

Drop a line
More articles

Guide

All

Written by:

Olha Diachuk

Date:

02 Apr 26

14

min read

Guide

All

Written by:

Maksym Bogdan

Date:

27 Mar 26

9

min read

We use cookies to personalize your experience