Create a basket

Anyone can deploy a basket from their own wallet. You pick the constituents, weights, and fees, seed it with the underlying tokens, and deploy. You become the basket's on-chain creator (the creator recorded in the Basket) and earn 90% of every fee it charges, paid directly to your address.

What you need

  • A wallet on Robinhood Chain (4663) with a little ETH for gas.
  • The seed tokens in your wallet. A basket must be born holding its constituents — you supply them. The create wizard sizes the exact amount of each token from live prices and checks your balance before letting you deploy.
  • Basket creation must be open on the factory (openCreation = true) — it is enabled on the live deployment.

Rules

  • 2 to 20 constituents, each a whitelisted token (see Deployed addresses).
  • Weights are in basis points and must sum to 10,000 (100%).
  • Fees are capped: entry ≤ 3%, exit ≤ 1%, management ≤ 3%/yr.
  • Constituents and fees are immutable after deploy.

Using the create wizard (app.hoodetf.org/create)

  1. Constituents — pick 2–20 tokens and set each weight; the wizard enforces the 10,000-bps total.
  2. Fees — set entry / management / exit within the caps.
  3. Identity — name and ticker symbol.
  4. Seed — choose a seed size (the USD value backing the first share; it becomes the inception price-per-share). The wizard sizes each token amount from live prices, checks your balance, and picks a funding mode per the basket's constituents (see below).
  5. Review & deploy — accept the risk attestation and hit deploy. The app:
    • reads each constituent's decimals, price feed, your balance and allowance,
    • computes the exact seed units and the amount the factory will pull,
    • approves each token to the factory for that amount,
    • calls BasketFactory.createBasket(...) from your wallet.

Once confirmed, your basket is live and — after the indexer picks up its BasketCreated event — appears in your creator dashboard and on Discover.

Funding your seed: in-kind vs USDG

Every basket is born holding its actual constituent tokens — the factory always pulls the real tokens into the vault. The only question is how you get those tokens into your wallet first. There are two paths, and which one is available depends on the constituents.

In-kind (always works). You already hold the constituent tokens; the wizard pulls them straight into the new basket. No swaps, no price feed, no slippage. This is the universal path — every constituent supports it.

USDG-funded (convenience, liquid tokens only). If you're short a constituent, the wizard can buy the shortfall for you: it quotes a USDG→token swap (POST /v1/swap/quote), executes it into your wallet, then the normal in-kind pull runs. You pay in USDG and never have to source the tokens yourself.

In-kind USDG-funded
You supply The actual tokens USDG
Needs a swap venue No Yes (Uniswap pool per leg)
Works for Every constituent Only tokens with real on-chain liquidity
Slippage None Yes, on each bought leg

When USDG funding is unavailable: a basket is only USDG-fundable if every constituent has a usable swap pool. If any leg is illiquid, the whole basket falls back to in-kind only — you must hold those tokens. This covers:

  • Memecoins (CASHCAT, JUGGERNAUT, HOODRAT, TENDIES) — priced from their Uniswap pool for display, but too thin to route a clean buy through, so they are in-kind only.
  • Utility tokens (PONS) — product-backed tokens (e.g. a launchpad) rather than memes, but same plumbing: priced from their Uniswap pool for display, no USDG route, in-kind only.
  • Illiquid stock tokens — whitelisted names with no meaningful pool yet.

The wizard shows these under "In-kind only" / "Memecoin" / "Utility" groups and, if you pick one, switches the whole basket to in-kind seeding (no USDG option). In short: USDG funding is a convenience for liquid tokens; in-kind is the always-available path and the only way to seed a meme or utility basket.

What happens on-chain

createBasket (see BasketFactory) does everything atomically in one transaction: it clones the Basket implementation, pulls your seed tokens into the clone, and initializes it — so there's never a funded-but-uninitialized basket to hijack. Your seed becomes the initial holdings; you receive the initial shares (a small DEAD_SHARES amount is permanently locked to protect the vault).

The seed math (for integrators)

For each constituent, the seed unit is:

seedUnits = seedUsdPerShare × weightBps × 10^tokenDecimals × 10^feedDecimals
            ────────────────────────────────────────────────────────────────
                              10000 × feedAnswer

and the factory pulls ceil(seedUnits × (seedShares + DEAD_SHARES) / 1e18) of each token (seedShares = 1e18, DEAD_SHARES = 1e15). This mirrors the on-chain _seedClone exactly, so what you approve equals what the factory transfers.

Earning as a creator

Your basket charges the entry/exit/management fees you set. Every fee is minted or transferred as shares split 90% to you, 10% to the protocol treasury. The management fee streams continuously as new shares. Your creator dashboard shows your baskets and their AUM and returns.

You're responsible for the basket you create. Creators are not licensed advisers, and nothing your basket does is financial advice. See Security & risk.