Kabudex
Open the appConnect a wallet and see every stock you hold.
SwapTrade a stock token against dollars or ETH.BridgeBring funds in from Ethereum, Base, Arbitrum or BNB Chain.BasketsBuy a whole portfolio with one signature.EarnPut idle USDG into a lending vault.LendSupply dollars to markets backed by stocks.LaunchCreate a token paired with a stock.
One basket, one order
You sign
One transaction
Kabudex routes
Every leg to its deepest pool

Each leg carries its own minimum, so a bad price on one stock stops the whole order.

Every order is built in your browser and signed by your wallet.How routing works
App
PortfolioEvery stock you hold.SwapTrade a stock token against dollars or ETH.BridgeBring funds in from Ethereum, Base, Arbitrum or BNB Chain.BasketsBuy a whole portfolio with one signature.EarnPut idle USDG into a lending vault.LendSupply dollars to markets backed by stocks.LaunchCreate a token paired with a stock.
Read
LitepaperKabudex in ten minutes.DocumentationGuides for every operation.
Links
XReleases and announcements.ExplorerEvery contract Kabudex calls, on Blockscout.

Baskets

A basket is a list of stocks and the share of your money each one gets. Buying it turns the list into legs, gives every leg its own minimum, and settles all of them in one transaction.

2 min read

A list, not a fund

There is no basket token. When you buy a basket, each stock token arrives at your address on its own, and you can sell any of them alone, here or anywhere else. Kabudex does not manage, rebalance or hold anything for you. A basket on Kabudex is a convenient way to place several orders as one.

From weights to orders

Take a basket of Nvidia 50%, Apple 30% and Meta 20%, and an order of 132 USDG. Each leg receives its share of the amount, is quoted against the best pool for that stock, and gets a minimum below which it refuses to fill.

Derivation
weights      NVDA 0.50   AAPL 0.30   META 0.20
amount       132.000000 USDG

leg_i        = amount x w_i            // 66.00, 39.60, 26.40 USDG
minOut_i     = quote_i x (1 - slippage)

All legs are commands inside one call to Uniswap's Universal Router. If any leg would return less than its minimum, the router reverts the whole transaction: you never end up with two stocks out of three.

Buying a basket

  1. 1
    Choose a basket

    Open Baskets and pick one. The page shows each stock, its weight, the pool each leg would use and the current price.

  2. 2
    Pay with ETH or USDG

    With ETH there is nothing to approve. With USDG, the app asks once for an approval to Permit2 and once for Permit2 to let the Universal Router spend it.

  3. 3
    Check the legs

    Each leg shows its quote, its minimum at your slippage setting and its real cost against the on-chain mid price. The screen warns when a leg costs more than 3% and refuses an order where a leg would cost more than 10%.

  4. 4
    Sign once

    One transaction buys every leg. Unused dollars, if any, are swept back to your address in the same call.

Selling

Selling a basket runs the same machinery in reverse: each stock you hold is swapped back to USDG in one transaction, each leg with its own minimum. Instead of one approval per stock, you sign a single Permit2 message that covers every stock in the order. You can also sell any single stock from Swap.

Which stocks can be in a basket

A leg needs a pool deep enough to fill it at a fair price. Of the 95 stock tokens listed, 72 have a Uniswap pool of some depth, and 48 have a USDG pool that fills a $250 buy within 3% of the on-chain mid price. Only those 48 can be a leg in a basket. The others can still be held, swapped and bridged.

Cost

Kabudex charges no fee on baskets. Each leg pays its pool's fee, which is already inside its quote, and the order pays gas once. A three-stock basket measured about 427,000 gas paid in USDG, and about 539,000 gas paid in ETH, because ETH is first wrapped and swapped to USDG.