Own. Move. Compound.
Your portfolio shouldn't be trapped inside an account. Portly turns it into a Position: a transferable onchain instrument, backed by tokenized real-world assets, that you can own, move, and build with.
Live pilot. Unaudited; formally tested, external audit pending. Not investment advice. Not affiliated with Robinhood. Read the full disclosures.
The Idea
A portfolio is more than numbers on a screen. It's an asset. It should be owned, moved, and built with.
◈Portfolio Assets
Positions hold tokenized real-world asset exposure on Robinhood Chain. Canonical contracts only, verified by an onchain registry.
⇄Transferable
A Position is an ERC-721 instrument. Sell it, gift it, move it between wallets. The financial state travels with it, untouched.
▤Programmable
Mandates define allocation policy onchain. Epochs execute it. Settlement and claims are pure, auditable accounting.
▣Self-Custodial
The frontend is an interface, not custody. Every function works from any wallet or explorer. No Portly server required.
How It Works
Six primitives. No leverage, no synthetic yield, no magic.
Mandates
Pick a policy. The protocol does the bookkeeping.
A Mandate is an allocation policy written into the contracts: fixed target weights over real Robinhood stock tokens. When you create a Position, your deposit joins the next Epoch for your Mandate. The Epoch executes one batched purchase at Chainlink-checked prices, and the tokens it buys belong to your Position from that moment on. Six Mandates, six temperaments, one guy.
Weights and tickers shown are read live from the MandateRegistry and AssetRegistry on Robinhood Chain mainnet; nothing on this page is hardcoded. Every asset is an official Robinhood stock token priced by a Chainlink feed. Verify any time in the app or on the explorer. Allocations are policies, not predictions; every Mandate can lose value.
What You Actually Get
No points. No promises. Tokens in your wallet.
◆You own the assets
Your Position holds the actual stock tokens its Epoch bought, exactly the assets registered onchain. NAV is their live Chainlink value, timestamped. If the assets go up, your Position is worth more; if they go down, less. That is the whole model.
↧Payouts are claims
Settle your Position (anyone can, it's free bookkeeping), then claim any asset straight to your wallet: take one stock, leave the rest sitting. Or redeem the whole Position and receive everything it holds in kind. Claims can never be frozen, by contract.
⟳The fee flywheel ROADMAP
Planned for the flagship Portly token launch: a share of its trading fees flows to the protocol and is deployed as buy-side capital through the same Epoch engine, purchasing stock tokens per Mandate weights. Fees become stocks. Not live yet, subject to change, and never a promise of profit; see disclosures.
What Portly deliberately does not offer: APY numbers, emissions, staking rewards, or leverage. Returns come only from the performance of the underlying assets, in both directions. Any Portly-brand token should be assumed to have no intrinsic value and no expectation of profit.
Protocol Status
Live from the chain, or an honest silence. Never simulated.
Guarantees In Code
Boring underneath. Exceptional on top.
Status: every guarantee below is enforced by the contract and covered by the 192-assertion test suite. An independent external audit has not yet been completed; position sizes are capped until it is.
∑Conservation
For every asset: vault balance ≥ total claimable + unsettled entitlement + recorded residual. Rounding always floors toward the protocol. Value is never manufactured. tested
↻Idempotent Settlement
Anyone can call settle(id), any number of times. Without new entitlement it credits exactly nothing. tested
✂Selective Claims
Claim one asset, leave the rest. Claims can never exceed settled entitlement. Double claims revert. tested
⇄Transfer Neutrality
Transferring a Position changes its owner and nothing else. NAV, holdings, checkpoints and history are untouched. tested
⏸Granular Pause
Creation and execution can pause in an emergency. Settlement, claims, transfers and redemption cannot. Exits never freeze. tested
⛔Bounded Governance
Governance configures parameters under hard-coded ceilings. There is no code path that moves user assets to governance. tested
A Position, Concretely
// what the contract itself will tell you, from any explorer: getPosition(id) → mandate, version, cohort epoch, units, state entitlementOf(id) → settled + unsettled amounts, per asset navOf(id) → NAV at canonical oracle prices + valuation timestamp performanceBps(id) → vs. initial capital, basis points // and what you can always do, without this website: settle(id) anyone, idempotent claim(id, asset, to) owner only, selective redeem(id, to) owner only, in kind no admin backdoor governance cannot touch Position assets
Your portfolio is an asset.
Start treating it like one.
Six mandates over real tokenized stocks, wrapped into one transferable Position you can verify from any block explorer — and no admin backdoor between you and your assets. Own. Move. Compound.
Live pilot on Robinhood Chain mainnet · positions capped at 1,000 USDG · read the disclosures