Documentation index

Solana Arbitrage Bot settings

Every setting the Solana Arbitrage Bot's Expert settings can change, with the same names and help the Strategy page shows. The path is the setting's name in the bot's config file, which is what Raw config and harkctl config show. "Starts at" is a new bot's value (the Balanced starter).

The Solana Arbitrage Bot guide explains what it does, its safety checks and what practice can't show: practice results are not indicative of live results. Live trading is switched on with Go live, never here.

It has no Style, Speed, take profit or stop loss. Instead you start from one of three starters (Balanced is the bot's own defaults), then change anything below:

StarterWhat it does
CautiousA 0.0001 SOL minimum profit, a 0.2 SOL per-trade cap and daily caps on fees. Stops after 100 failed trades in a row.
BalancedThe bot's own defaults: 0.000001 SOL minimum profit, a 0.5 SOL per-trade cap, no daily fee caps and no failure stop.
AggressiveThe same minimum profit, a 1 SOL per-trade cap and more trades a minute. More trades, more fees.

Your limits always stay inside the ceilings your deployment allows (the bounds under "Set for you"). A change past a ceiling is refused with the reason. A ceiling of 0 means none. The daily fee caps and the failure stop start off (0); set a number to turn one on.

Watchlist

Watchlist settings
SettingWhat it doesValuesStarts at
Watchlist
watch.tokens
The tokens to arbitrage, by contract address. Each round trip buys one of them on one pool and sells it on another, starting and ending in SOL.list of token addresses0 tokens

Profit and size

Profit and size settings
SettingWhat it doesValuesStarts at
Minimum profit per trade
arb.min_profit_sol
What a trade must make after every cost: venue fees, network and priority fees, and the tip when one is paid. It is also the floor written into each transaction, so a trade that would make less fails instead. A trade pays the relay or fast-sender tip only when it makes more than the tip plus this; a smaller one goes without a tip through the relay's tip-free path, or is skipped without a relay key.number
0 to 10 SOL
0.000001 SOL
Smallest trade
arb.min_trade_sol
Advanced only
The least SOL a round trip puts in.number
0.001 to 100 SOL
0.01 SOL
Per-trade cap
arb.max_trade_sol
The most SOL one round trip puts in. It comes back in the same transaction, or the transaction fails.number
0.001 to 100 SOL
0.5 SOL
Pool state at most this old
arb.max_state_age_slots
Advanced only
A pool whose state is older than this many slots isn't traded on.whole number
1 to 150 slots
4 slots
Read the pools when the feed shows
arb.screen_pct_of_min_profit
Advanced only
The feed's prices must show at least this share of your minimum profit before the bot reads the pools to check.number
0 to 100 %
50 %
Close the token account in the same trade
arb.close_token_account
Advanced only
No token is held between trades: the account a trade opens is closed in the same transaction and its rent comes back.on / offOn
Wait before the same pools again
arb.pair_cooldown_ms
Advanced only
One pair of pools isn't tried again sooner than this.whole number
0 to 600000 ms
400 ms
Pool reads per second at most
arb.max_reads_per_second
Advanced only
One read for each round trip the bot looks at.number
0.1 to 100
5

Limits

Limits settings
SettingWhat it doesValuesStarts at
Your time zone (hours from UTC)
global.utc_offset_hours
Advanced only
Where midnight is for the daily caps.whole number
-12 to 14
0
Fees and tips per day at most
limits.max_fee_tip_sol_per_day
Stop trading for the day once fees and tips paid today reach this. 0 turns it off (the default).number
0 to 1000 SOL
0 SOL
Failed trades' fees per day at most
limits.max_failed_cost_sol_per_day
Stop trading for the day once the fees of today's failed trades reach this. 0 turns it off (the default): many trades fail, and what counts is that your returns beat every fee.number
0 to 1000 SOL
0 SOL
Trades per minute at most
limits.max_trades_per_minute
The most round trips it sends in any minute.whole number
1 to 10000
10
Stop after this many failed trades in a row
limits.max_consecutive_failures
Trading stops after this many failed trades in a row, until you start the bot again. 0 turns it off (the default).whole number
0 to 1000
0

Racing

Racing settings
SettingWhat it doesValuesStarts at
Racing
race.enabled
On: react to the newest (processed) pool state. Off: wait for confirmed state. Either way it never trades ahead of anyone's pending trade.on / offOn

Lookup tables

Lookup tables settings
SettingWhat it doesValuesStarts at
Reuse lookup tables other transactions use
alt.reuse_external
Reuse the address lookup tables other transactions on these pools use, each checked on chain first.on / offOn

Discovery

Discovery settings
SettingWhat it doesValuesStarts at
Find pools from the transaction stream
discovery.grpc
Advanced only
Learn the watched tokens' pools from their transactions as they happen.on / offOn
Tokens per stream filter
discovery.grpc_keys_per_filter
Advanced only
How many watched tokens share one filter on the transaction stream.whole number
1 to 1000
10
Find pools from recent transactions
discovery.backfill
Advanced only
Also look at each token's recent transactions (read-only RPC).on / offOn
Recent transactions per token
discovery.backfill_signatures
Advanced only
How many of each token's recent transactions are looked at.whole number
1 to 1000
40
Look again every
discovery.rescan_minutes
Advanced only
How often each token's recent transactions are looked at again.whole number
1 to 10080 min
60 min
RPC requests per second at most
discovery.rpc_per_second
Advanced only
For finding pools and reading pools the feed doesn't carry.number
0.1 to 100
2
Read DAMM v1 pools every
discovery.rpc_poll_ms
Advanced only
Meteora DAMM v1 pools aren't on the feed, so they are read this often.whole number
250 to 60000 ms
2000 ms

Fees

Fees settings
SettingWhat it doesValuesStarts at
Priority fee
global.cu_price_micro_lamports
Advanced only
What you pay validators per compute unit. Paid whether the trade lands or fails.whole number
0 to 50000000 µlamports/CU
50,000 µlamports/CU
Compute limit
global.cu_limit
Advanced only
The most compute units a round trip may use.whole number
50000 to 1400000
400,000
Send every trade through the AllenHark relay (adds a small tip per trade)
relay.tip_all
On: every buy, sell and clean-up goes through the relay, for a 0.001 SOL tip each (counted in your fees). Off: only buys and urgent exits go through the relay; the rest are sent without a tip.on / offOn
Relay tip
relay.tip_sol
Advanced only
The tip per trade through the AllenHark relay, paid only when a trade lands and only on trades that make more than the tip plus your minimum profit. At least 0.001 SOL. Leave it empty for the bot's own default. Optional.number
0.001 to 0.1 SOL
0.001 SOL
Turn off the AllenHark relay
relay.relay_opt_out
Advanced only
Your choice: on means the bot stops sending through the AllenHark relay and uses only the fast senders you added. Leave it off unless you know you want that.on / offOff
Fast senders
senders
Advanced only
Your own accounts with other fast senders (Nozomi, 0slot, Jito, Helius Sender, an RPC). The bot sends each trade through all of them and the relay; with two or more on it pays only one tip per trade. API keys stay on your server.list of [[senders]] entriesnone

Execution

Execution settings
SettingWhat it doesValuesStarts at
Pools it trades on
global.venues
Advanced only
PumpSwap, Raydium CPMM, Raydium AMM v4, Meteora DAMM v2 and Meteora DAMM v1 (pumpswap, raydium_cpmm, raydium_amm_v4, meteora_damm_v2, meteora_damm_v1). Empty means all five.listnone
Transaction format
global.tx_format
Advanced only
Legacy (sent with lookup tables when it is too big), or the newer v1 format.“Legacy” (legacy), “v1” (v1)Legacy
Re-send as legacy if v1 is refused
global.v1_fallback
Advanced only
Only matters with the v1 format.on / offOn

Practice

Practice settings
SettingWhat it doesValuesStarts at
Practice balance
global.practice_starting_sol
Advanced only
The virtual SOL practice starts with.number
0.1 to 10000 SOL
10 SOL

Set for you

These are part of the config but are set by AllenHark or elsewhere in the app, so they are read-only in Expert settings.

SettingWhy you can't change it here
Live trading
global.live
Switched with Go live.
Wallet file
global.payer_keypair_path
Follows your active wallet.
Watchlist limit
watch.max_tokens
Set by AllenHark for your deployment. Ask support if you need more.
Per-trade cap allowed
bounds.max_trade_sol
Set by AllenHark for your deployment.
Fees and tips per day allowed
bounds.max_fee_tip_sol_per_day
Set by AllenHark for your deployment.
Failed trades' fees per day allowed
bounds.max_failed_cost_sol_per_day
Set by AllenHark for your deployment.
Trades per minute allowed
bounds.max_trades_per_minute
Set by AllenHark for your deployment.
RPC endpoint
node.rpc_uri
Managed by AllenHark.
gRPC endpoint
node.grpc_uri
Managed by AllenHark.
gRPC token
node.grpc_x_token
Managed by AllenHark.
Relay endpoint
node.relay
Managed by AllenHark.
Relay QUIC endpoints
node.relay_quic
Managed by AllenHark.
Relay API key
node.relay_api_key
Managed by AllenHark.
Relay QUIC fan-out
node.relay_quic_fanout
Managed by AllenHark.
Relay tip wallet
node.tip_wallet
Managed by AllenHark.
Relay Dedicated
node.relay_dedicated
Managed by AllenHark.
Relay Dedicated wallets
node.relay_dedicated_wallets
Managed by AllenHark.
Relay tip (default)
node.tip_lamports
Managed by AllenHark: set to what the relay needs.
Market feed
feed
Written by your server's agent.
Bot address
server.bind
Managed by AllenHark.
Bot port
server.port
Managed by AllenHark.