$SPLRG · Method

How the deskworks.

What the desk does with a Stock Token, how it prices a share, and what it does not claim.

Overview

$SPLRG is a desk on Robinhood Chain (chain ID 4663) for Robinhood Stock Tokens.

Swap a listed name versus USDG. Hold a Splerg as one vault share. Lock one token into price and drip. Those tokens are economic exposure. They are not brokerage shares.

The desk does not mint Stock Tokens. Authorized participants mint and burn with Robinhood Assets Jersey. This app prepares unsigned transactions. Your wallet signs them.

Stock Tokens

A Stock Token is economic exposure to an underlying stock or ETF, issued as an 18-decimal ERC-20 on Robinhood Chain. It is not legal or beneficial ownership of that security.

It isIt is not
An 18-decimal ERC-20 on Robinhood ChainA brokerage share
Priced from Robinhood / Chainlink stock-token feedsA claim on voting rights or cash dividends
Something you can hold, transfer, Splerg, or splitSomething this app mints or burns with Robinhood for you

Only Robinhood authorized participants mint and burn with Robinhood Assets Jersey. $SPLRG composes with tokens that already exist. Nothing here is investment, legal, tax, or financial advice.

The desk

Three panes:

  • Left rail — searchable Stock Tokens and Splergs.
  • Center — chart, holders, and transfers for the selected name.
  • Right rail — ticket and a live Activity feed. On Portfolio, Activity fills the rail.

Create opens a drawer: Splerg or Split series. Deploy confirms in a modal. Image uploads go to Pinata only when you confirm deploy.

Connect a wallet on Robinhood Chain. The API prepares unsigned transactions. Your wallet signs them. The server does not hold keys.

Trading a Stock Token

The ticket lists names versus USDG. Last sale / RHJ ask, Nasdaq session %, chart, holders, and onchain transfers sit on one screen.

Buy and sell are Uniswap swaps against USDG. Preview lists every v3 and v4 USDG pool that quotes for your size. You pick one (best fill is marked). v4 goes through Permit2 and the Universal Router; v3 uses SwapRouter02. No pool means no send — the desk will not invent a fill.

A desk buy is a wallet swap. It is not a vault mint, and it is not ownership of the stock.

Splergs

A Splerg is a vault that merges weighted names into one token. Create deploys an empty vault. You deposit after. An empty vault is $1 a share. Onchain the vault is still an IndexVault.

The live cash path is USDG. Enter an amount. The vault splits it by target weights and buys each name on that token’s USDG Uniswap pool — the same venues as the desk ticket. There is no INDEX/USDG pool. If you already hold the names, approve each token and depositInKind.

  • Splerg names must be on AssetRegistry (AAPL, NVDA, MSFT, TSLA, GOOGL, META, AMZN, AMD today). NFLX and AVGO cannot go in a vault until Chainlink publishes those feeds.
  • At least 2 and at most 25 Stock Tokens.
  • Weights must sum to 10,000 bps (100%).
  • Default management fee is 50 bps per year (0.50%).
  • No protocol deposit fee. Uniswap pool fee and slippage apply on the USDG path.
  • Live vaults accrue the fee by minting Splerg shares to the fee recipient.

Redeem burns Splerg tokens. USDG out sells the pro-rata holdings on Uniswap and pays you cash. In-kind returns the Stock Tokens instead. No approve — the vault is the Splerg ERC-20. Splerg tokens are exposure to those holdings, not ownership of Apple or anything else in it.

Pricing calculations

Stock Token price

Price of one Stock Token, not one brokerage share.

SourceFormula
Offchain / deskRHJ ask (fallback bid) × currentMultiplier
Onchain / live vaultChainlink stock-token feed

Do not apply uiMultiplier() to Chainlink. That feed is already multiplier-adjusted. GET /rhj/prices/{symbol} is raw underlying bid/ask, so offchain quotes multiply by currentMultiplier. Use ask, not mid.

Splerg price (NAV per token)

The Splerg token price is vault NAV divided by supply. It is not a weighted average of stock prices.

NAV = Σ (Bᵢ × Pᵢ)
P_idx = $1 if S = 0 or NAV ≤ 0
P_idx = NAV / S otherwise
SymbolMeaning
BᵢVault balance of Stock Token i (18-decimal ERC-20)
PᵢUSD price of one token i
SSplerg token totalSupply
P_idxUSD price of one Splerg token (navPerTokenUsd)

Empty vault / first mint: P_idx = $1. A first deposit of V USD mints V shares. Do not use Σ wᵢ Pᵢ. That is an index level and does not match a vault share that starts at $1.

SourceBᵢS
VaultbalanceOf on the IndexVaultERC-20 totalSupply

If the vault is empty, session change still needs the weights. Implied units for a $1 target-weight slice:

Bᵢ = wᵢ / Pᵢ
wᵢ = targetWeightBps / 10,000
Σ wᵢ = 1

Session percentage change

Same meaning as a stock’s Nasdaq day change: return of P_idx versus session open. There is no stored prior-close NAV yet. Open is rebuilt from each constituent’s Nasdaq move rᵢ:

rᵢ = Δ%ᵢ / 100
P_open,i = Pᵢ / (1 + rᵢ)
NAV_now = Σ Bᵢ Pᵢ
NAV_open = Σ Bᵢ P_open,i
Δ%_idx = (NAV_now − NAV_open) / NAV_open × 100

Supply cancels when S is unchanged, so this is also the return of P_idx. Skip a leg if Pᵢ, Bᵢ, or Nasdaq Δ%ᵢ is missing, or if rᵢ ≤ −1. If nothing remains, percentageChange is null.

Example: 1 AAPL token at $110 (+10%) and 2 MSFT tokens at $50 (−20%). Open prices are 100 and 125. NAV now 210, NAV open 225. Δ% = (210 − 225) / 225 × 100 = −6.67%.

Stocks on the desk still use Nasdaq percentageChange directly. Splergs never invent a letter-seed change.

Split series

A split locks one Stock Token and mints a price token plus a drip token. There is no USDG-in. Buy the name first, then split.

  • Split takes 10 bps and mints the net amount of each child.
  • Merge both sides anytime to unlock the Stock Token. Merge is free.
  • Maturity must be 7–1,825 days out.
  • After maturity, settle freezes dT. Price redeems a × d0 / dT of the locked token. Drip redeems a × (dT − d0) / dT minus 5%.
  • Drip is a claim on remaining uiMultiplier() growth. It is not a cash dividend and does not expire.

Management fee on a series is 0–500 bps per year. Default in the create flow is 50 bps.

Vaults

A strategy vault holds Stock Tokens under a mandate — sector, yield, and similar. Depositors hold a vault token, not the stocks themselves. Price is the same NAV-per-share idea as a Splerg: holdings × token prices ÷ supply.

Fees

ProductFeeWho gets it
SplergManagement fee, default 50 bps / year. No protocol deposit fee. USDG deposits pay Uniswap pool fee and slippage.Vaults mint fee shares to the fee recipient.
Split series10 bps on split. Merge is free. 5% on drip redeem after settle. Optional management fee.FeeManager: 20% protocol, 80% creator on collected protocol fees.
Stock Token tradeUniswap pool fee plus slippage on the USDG pool you pick.Not a $SPLRG brokerage commission.

50 bps means 0.50% per year. 10 bps means 0.10% of the split amount. Protocol fee bps of 2,000 means 20% of that collected fee, not 20% of AUM.

Portfolio

Portfolio shows onchain balances for the connected wallet: USDG, Splerg tokens, and Stock Tokens. Equity is cash plus marked positions. Stock Token value uses the same RHJ ask the desk uses. Splerg value uses vault NAV × shares when the API provides it.

This book is exposure. It is not a brokerage statement of share ownership.

Activity

The right-rail Activity panel is a websocket of app events: live buys, sells, creates, splits, merges, deposits, and redeems. It is not the same as the selected token’s onchain transfer list in the center pane.

Oracles and multipliers

uiMultiplier() is a shares-per-token ratio scaled by 1e18. Use it only for share-equivalent display:

share-equivalent = raw balance × uiMultiplier / 1e18

Do not multiply Chainlink stock-token prices by the multiplier. Those feeds are already adjusted. During corporate actions, treat oraclePaused() as price temporarily unavailable. Staleness remains the primary guard.

Stack

Terminal (Next.js)
    → API (NestJS)
        → Robinhood RHJ — assets, prices, corporate actions
        Robinhood Chain — balances, vaults, transfers
        → Uniswap v3 / v4 — USDG ↔ Stock Token pools
    → Contracts — IndexVault, SplitVault, TradeExecutor, factories, oracles, fees

The list and the prices come from Robinhood, not a hardcoded watchlist. The backend prepares unsigned transactions. Wallets sign. The server does not hold keys.

Contracts

Shared infra is live on Robinhood Chain (chain ID 4663). These six addresses are protocol-wide. They are not stored per Splerg in the database.

Create Splerg and Create Split talk to the factories. After a product deploys, the new vault address is what the desk saves on that product.

ContractAddressWhat it does
AssetRegistry0x7BbaFa68c804Ef3FB16A72A7321A1DeeE494579EAllowlists which Stock Tokens and USDG the protocol may hold, plus each token’s Chainlink feed. Live now: AAPL, NVDA, MSFT, TSLA, GOOGL, META, AMZN, AMD, and USDG. A Splerg or split cannot deploy until the underlying is registered here.
OracleAdapter0xDF155a334867705CdDB6Eb82a2ce9D552e3AdF99Reads those feeds for onchain NAV. Checks staleness, positivity, and oraclePaused(). Does not apply uiMultiplier() again.
TradeExecutor0xA25d37894217Cce1D6fA0816E1442F0766b9A885Lets factory Splergs call Uniswap. A USDG Splerg deposit uses this to buy the names. In-kind deposits and splits do not use it.
FeeManager0x405e1481B86105B1f9ea3cb0327AA5dB8A494773Splits collected management-fee shares between the protocol (20%) and the creator (80%).
IndexFactory0x26c911124B458feaC1E061ac8Bcc26738b05c799Create Splerg on the desk. Validates the weights and deploys one IndexVault. That vault is the Splerg token.
SplitSeriesFactory0x629810B4781E2b25Fdd380d74261B1c80Fa15fdECreate Split series on the desk. Deploys a SplitVault plus price and drip tokens.

Admin / deployer: 0x02BE958CFb5973118448B0c7CA2B63B583ff7AE2. USDG: 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168.

Per product

Factories create these when you deploy from the desk. The API then writes the vault onto the product row.

ContractWhat it does
IndexVaultOne per Splerg. It is the Splerg ERC-20. Holds the names, mints on deposit, burns on redeem, reports NAV.
SplitVaultOne per series. Locks one Stock Token. Split 10 bps, merge free. After maturity: settle, redeemPrice, redeemDrip.
SplitChildTokenTwo per series — price and drip. Vault-only ERC-20s the user holds.
MultiplierAccountantOne per underlying Stock Token, then reused. Classifies uiMultiplier() moves as dividend vs share split.

What this is not

  • Not a licensed broker-dealer, and not a way to buy the actual stock.
  • Not legal or beneficial ownership of any underlying share.
  • Not a cash dividend, even when a split pays drip.
  • Not investment, legal, tax, or financial advice.
  • Not a share-equivalent index level like SPX.

Official Robinhood context: Stock Tokens, building guide, oracles.