Account modes: standard, unified, portfolio margin
An account's mode decides whether its spot and perp balances are one pool or several, which assets back perps, and whether a 50k daily action cap applies.
Your account mode decides which balances can back a trade. HyperCore keeps separate perp and spot clearinghouses, and each HIP-3 perp dex adds a perp balance with its own collateral asset (the clearinghouse). The mode keeps them apart for precision or pools them for convenience.
Say you hold 10,000 USDC, with USDC-settled cross positions on two dexes using 1,500 and 500 USDC of maintenance margin. In standard mode your spot USDC backs neither until you move it. In unified mode it backs both, and the risk ratio below reads 2,000 / 10,000 = 0.2.
Three live modes, one retired
Section titled “Three live modes, one retired”Some accounts still report a fourth, discontinued mode.
| Mode | Balances | Cross margin | Docs recommend it for |
|---|---|---|---|
| Standard (also called Manual) | separate spot and perp balances, and a separate balance per perp dex | within one dex only | market makers, high-volume automated users, deployers and builders |
| Unified account | one balance per asset, shared by spot and every perp dex that uses it as collateral | across all dexes with the same collateral asset | most users |
| Portfolio margin | one portfolio of the eligible assets HYPE, BTC, USDC and USDT, with automatic borrowing | all cross positions and spot balances together | the most capital efficiency |
| DEX abstraction (discontinued) | USDC defaults to the perp balance, other collateral to spot | unintuitive on HIP-3 dexes | nobody |
Standard. usdClassTransfer moves USDC between spot and the main perp balance, sendAsset between dexes. One dex can be liquidated while another holds idle collateral.
Unified. The USDC balance backs validator-operated perps, every USDC-settled HIP-3 dex and USDC spot pairs; USDT likewise. The docs’ risk ratio takes the worst collateral asset:
for each collateral token T with (spotTotal(T) - isolatedMargin(T)) > 0: ratio(T) = sum of crossMaintenanceMarginUsed over dexes collateralised in T / (spotTotal(T) - isolatedMargin(T))
unified account ratio = max over T of ratio(T)Portfolio margin. Unified, plus HYPE and BTC as collateral at a loan-to-value ratio, and idle borrowable balances supplied for interest (portfolio margin). It falls back to non-portfolio behaviour when a supply or borrow cap is hit. The docs disagree on its ceiling: account value below $25M (trading page) or $5M (FAQ).
The numbers
Section titled “The numbers”| Item | Standard | Unified | Portfolio margin |
|---|---|---|---|
| User actions per day | uncapped | 50k | 50k |
| Manual borrow and lend | allowed | allowed | disabled; borrowing is automatic |
| Builder-code address can accrue fees | yes | no | no |
| Can activate as an outcome deployer | yes | no | no |
| Collateral for a perp position | that dex’s own balance | the collateral asset’s single balance | HYPE (LTV 0.65), BTC (0.5), USDC, USDT |
| Eligibility | none | none | account value above $10k or weighted volume above $5M, with an upper bound on account value |
| Wire value, user-signed | "disabled" |
"unifiedAccount" |
"portfolioMargin" |
| Wire value, agent-signed | "i" |
"u" |
"p" |
| CoreWriter action 16 value | 1 | 2 | 3 |
Pick the mode that fits how you trade
Section titled “Pick the mode that fits how you trade”| You are | Use | Because |
|---|---|---|
| trading by hand across spot and perps | unified | one balance, no transfers |
| running hedged spot and perp, or carry | portfolio margin, if eligible | spot BTC collateralises a short BTC perp and the two offset |
| a bot or market maker | standard | no daily cap; a loss on one dex cannot pull collateral from another |
| a deployer, builder-code address, or contract that supplies to the lending pool | standard | outcome deployers and builder-code addresses must; portfolio margin refuses manual lending and auto-supplies idle balances, which fights code that tracks its own supplied amount |
The 50k cap counts user actions: a hard stop for an order-heavy bot. Each sub-account has its own mode (sub-accounts).
Setting and reading the mode from code
Section titled “Setting and reading the mode from code”You or an API wallet set the mode; user may be a sub-account. userSetAbstraction and agentSetAbstraction replace the deprecated userDexAbstraction and agentEnableDexAbstraction.
{"type": "userSetAbstraction", "hyperliquidChain": "Mainnet", "signatureChainId": "0xa4b1", "user": "0x...", "abstraction": "unifiedAccount", "nonce": 1760000000000}{"type": "agentSetAbstraction", "abstraction": "u"}- From a contract: CoreWriter action 16,
(address user, uint8 abstraction). Over 3M mainnet blocks all 123 senders targeted themselves; the 30 most recent were contracts, and each got the mode it asked for. - Reading:
userAbstractionreturns"unifiedAccount","portfolioMargin","disabled","default"(never set) or"dexAbstraction". A fresh contract read"default", then"disabled"after setting 1. No precompile exposes the mode. - Balances: in unified and portfolio margin, all balances and holds are in
spotClearinghouseState; summingclearinghouseStateper dex is wrong. - Transfers: in those modes
usdClassTransfer,spotSendandusdSendfail withAction disabled when unified account is active. UsesendAsset, oragentSendAssetto the same account, with dex""(main USDC perp balance),"spot"or a HIP-3 dex name. Sends to the HyperEVM need"spot";""returnsInvalid token(transfers).
Switch before the account holds anything
Section titled “Switch before the account holds anything”The docs require no open positions, orders or active TWAP orders before enabling portfolio margin. On mainnet, leaving unified failed twice with Cannot disable unified account with open positions, open orders, or active TWAP orders.
For the third mode in depth, see Portfolio margin; for manual borrowing, see Borrowing and lending.