Arbitrum · Uniswap V3 · ERC-4626

The bot holds the range.
Profit stays with you.

LossKiller is a non-custodial auto-compounder for concentrated liquidity. The bot watches the price, rebalances the position, and reinvests fees every hour — instead of you.

How it works
Funds stay in your own ERC-4626 vault — your wallet's private keys never leave the browser.
ETH / USDC · 0.3% In range
$… $… $…
What we remove

Three ways to lose money on an LP position

Each one isn't an abstract risk — it's a specific leak with its own mechanics. LossKiller closes each one separately.

Loss #1

Gas eats small reinvestments

Fees trickle in slowly. Manually calling harvest() at $50–200 of accumulated yield often means giving away half of it to the gas station.

How we fix itThe bot reinvests only when accumulated fees are at least 10× the gas cost — the trade economics are checked before every call.
Loss #2

The price left the range

A position outside the range earns zero fees — capital just sits idle until you notice and move the boundaries yourself.

How we fix itThe bot polls the pool every hour and triggers rebalance() once the price gets within 2% of the edge.
Loss #3

Idle capital during a drawdown

A sharp market move usually also means leaving the range — capital idling then stacks on top of the usual LP risks.

How we fix itAutomatic rebalancing gets capital back to work faster than you could do it by hand. The risk of impermanent loss doesn't go away — it's an inherent part of providing liquidity.
Under the hood

Three modules, one loop

Nothing extra: the interface doesn't hold funds, the bot doesn't hold funds, the contract holds funds and does nothing else without your deposit.

01

DApp

HTML5 · ethers.js · Bootstrap 5

Deposits, withdrawals, and yield monitoring. Transactions are signed right in MetaMask / WalletConnect — no backend in between.

02

Smart Contract

Solidity · ERC-4626 · Arbitrum One

Tracks each investor's share and holds a single concentrated position via Uniswap V3's NonfungiblePositionManager.

03

Keeper Bot

Node.js · Cron · PostgreSQL

Checks the price tick every hour and calls rebalance() or harvest(). The database stores only analytics — no keys, no funds.

Yield mechanics

Your share gets more valuable — you just hold it

The ERC-4626 standard removes manual profit-splitting: fees increase the vault's assets, not the number of your tokens.

// on deposit
shares_to_mint = deposit_amount
  × (total_shares_supply
    / total_assets_under_management)
  1. Fees accrueUniswap V3 accrues trading fees on the active position.
  2. The bot calls harvest()Fees are converted into the underlying assets and added back to the pool as liquidity.
  3. Assets grow, shares don'ttotal_assets_under_management increases while total_shares_supply stays the same — so each share becomes worth more.
1 hr
polling interval
2%
buffer to the range edge
×10
min. fee-to-gas ratio
0
private keys stored in the database
Questions

Before you connect your wallet

Only the ERC-4626 vault smart contract and the Uniswap V3 position. LossKiller is non-custodial: neither the frontend, the bot, nor the database can access your assets.

The bot polls the pool once every hour. Rebalancing triggers when the price leaves the range or gets within 2% of the edge.

Until the bot's next cycle, the position may stay outside the range and temporarily earn no fees — this is a limitation of any fixed-interval on-chain automation, not just LossKiller.

Arbitrum One. The starting pool is ETH/USDC on Uniswap V3. Support for more pairs is planned after launch.

The protocol fee will be announced before mainnet launch. Gas for rebalances and harvests is covered by the bot logic described above.
Ready to stop watching the chart?

Connect your wallet and hand the range to the bot

Depositing takes one transaction. You can withdraw anytime — shares burn, you receive the underlying assets.