Skip to main content

Markets & Asset Classes

The Markets page groups what the agent can see and trade into four tabs:

Crypto · Stocks · Commodities · Prediction Markets (Coming Soon!)

These tabs are views over one pooled vault. Switching tabs never moves capital between strategies, and there is no separate deposit for stocks — the summary strip above the tabs shows the single pool (account value, withdrawable cash, committed margin, unrealised P&L) that every tab draws from.

What each tab means​

TabWhat you seeCan the agent trade it?
CryptoLive quotes and 24h movers for the crypto perpetuals on the network the agent trades onYes — BTC and ETH today
StocksEquity perpetuals listed on Hyperliquid HIP-3 builder DEXes, with their activation stateYes on testnet (Tesla, xyz:TSLA), once activated
CommoditiesMetals and energy perpetuals listed on the same Hyperliquid HIP-3 builder DEX (gold, silver, WTI crude, copper, natural gas, platinum), with their activation stateYes on testnet, once activated — entries only while the underlying CME session is open
Prediction Markets (Coming Soon!)Disabled tabNot yet

One network indicator​

The chip in the top bar shows which Hyperliquid network the agent is on — Testnet or Mainnet — as reported by the API. Every price, candle and position on the site comes from that network. There is no mixing of mainnet quotes with testnet positions, and if the network is unknown the site shows "—" rather than a guess.

The price strip shows what the agent is trading​

The thin price strip under the top bar lists exactly the markets the agent reports it is trading right now (the same list the agent exposes in its status), priced from the Hyperliquid network the API reports. It is not the governance allowlist and not the full catalog: a market appears there when the agent has it in its live symbol list, and disappears when the agent stops trading it. The $7N7D token price is appended from the on-chain pool, or marked "est." when only an estimate is available. If the network is unknown, the agent is unreachable, or the feed returns no usable quote, the strip says so instead of going blank.

Display names are not identifiers​

A stock card may say "Tesla perpetual", but the agent trades an exact market: coin xyz:TSLA, DEX xyz, network hl-testnet. The catalog the API publishes is the only place that maps a ticker back to that identity; the dashboard never derives it from a label.

What a stock market page shows​

  • Venue session — is the Hyperliquid market open or delisted, or is its state unknown? (A venue-side halt is surfaced through the New entries line below: the agent stops opening positions and reports why.)
  • Underlying session — is the stock market (NASDAQ for Tesla) in its regular session, pre-market, after hours, closed or on holiday?
  • Data freshness — how old the venue and reference data are.
  • New entries — whether the agent may open a new position right now, and its own reason when it may not (for example, the underlying session is closed or a reference feed is unhealthy). Exits and protective orders are never paused by this.
  • Venue chart — actual perpetual candles from Hyperliquid. Where a reference feed is known (e.g. NASDAQ:TSLA) it is shown as a clearly labelled reference chart, never as a stand-in for the perp.
  • Position, orders and decisions for this market only, with per-order outcomes (filled, partially filled, rejected with the reason).

Chart history and freshness​

The venue chart first requests recent candles. If there are too few points to draw it, the page looks further back on the same Hyperliquid market and network and displays the latest available candles. It never fills gaps with invented prices or a different market's history. If neither request supplies enough candles, the page says so; failed requests show an error with a retry option.

The venue chart shows the last candle's timestamp and closing price. It is marked Historical venue prices when the next expected candle interval has fully elapsed without a newer candle. Refreshing the page does not make an older candle current. The current mark price above the chart can therefore differ from its last candle close, especially on a quiet testnet market.

The separately labelled reference chart is supplied by TradingView for the underlying instrument, such as NASDAQ:TSLA. It provides context for the venue perpetual and is independent of the agent's Polygon stock-data subscription.

Stock and volatility reference data​

The agent uses external stock data and the VIX index as market context. VIX comes from an actual index observation supplied by Polygon.io (Massive). The agent retains the observation time and the provider's delay status so an older reading is identifiable as stale. Freshness is re-checked from the observation time whenever a reading is used, and a stale reading does not feed the risk regime, position sizing or social posts. Missing or invalid VIX data is reported as unavailable; a missing index entitlement does not prevent otherwise available stock reference data from being retrieved.

What a commodity market page shows​

The same page as a stock. The link from a market card carries the exact coin (for example xyz:GOLD), and the page looks that coin up in the catalog first, so two DEXes listing the same ticker never share a page; a bare ticker in the address (older links) still resolves inside the commodity class. Two things differ from a stock page. There is no external reference feed for commodities: the venue oracle is the settlement reference, so the page shows the venue quote and states that no external reference feed is known instead of a reference chart. And the session is the underlying futures session (CME Globex: Sunday 18:00 ET to Friday 17:00 ET with a daily break from 17:00 to 18:00 ET), not the NYSE session. The perpetual itself trades around the clock, but the oracle only moves while the underlying trades, so the agent treats the closed hours as a closed market.

Activation is a decision, not a discovery​

Seeing a market in the catalog does not mean the agent trades it. A market is tradeable only when it is discovered on the venue, configured for the agent, on the operator's symbol list, approved by governance and activated in the API. Tesla ships inactive; activating it is a deliberate human step.

For developers: market identity in the API​

Every market the dashboard shows carries one structured identity, and the same identity is attached to trades, decisions and positions. Nothing is derived from a display label.

FieldExampleMeaning
marketIdhl-testnet:xyz:TSLA<network>:<coin> — the only key you should store
networkTESTNETthe Hyperliquid network the API trades on (TESTNET or MAINNET); the hl- prefix appears only in marketId
venuehyperliquidexecution venue
dexxyzbuilder DEX namespace; empty for native perps
coinxyz:TSLAexact venue coin (case-sensitive)
displayTickerTSLAdisplay only
assetClassEQUITYCRYPTO, EQUITY, COMMODITY, PREDICTION or null when unknown
collateralUSDCquote/collateral asset of that market

REST​

EndpointReturns
GET /api/marketsthe catalog: { network, dexes, markets[], count, timestamp }; ?assetClass=EQUITY filters by class, ?activeOnly=true keeps only markets the agent may trade
GET /api/markets/:marketIdone catalog row (activation is ACTIVE, CATALOG_ONLY or DISABLED)
GET /api/markets/:marketId/statevenue session, underlying session, data freshness and the agent's own new entries verdict with its reason
GET /api/markets/:marketId/quotethe market's current mid/mark quote from the API's network
GET /api/markets/:marketId/candles?interval=1h&limit=100venue candles (source: "hyperliquid")
GET /api/hyperliquid/transfersstandard-mode collateral transfers in flight: { available, enabled, pending[], receivables } — available: false means the agent could not be read, never "no transfers"

marketId values are URL-encoded (hl-testnet%3Axyz%3ATSLA). An unknown market is a 404; an unknown assetClass is a 400, never an empty list.

GraphQL​

Trade, Decision and ReasoningLog expose marketId, network, venue, dex and assetClass (the coin and display ticker are looked up in the catalog by marketId). Rows written before these columns existed are served with an identity derived from their symbol. Position carries market_id, network, dex, asset_class and display_ticker on the REST GET /api/v1/agent/positions entries; the performance and statistics types return aggregates only and are scoped by their filter arguments.

Trades additionally carry the execution outcome: orderStatus (filled, partial, resting, rejected, unknown), filledAmount (coin units the venue reported), rejectReason and strategyId. A venue rejection is stored as a trade with orderStatus: "rejected" and filledAmount: 0, is published on the errorOccurred subscription, and is excluded from statistics and performance.

tradeHistory, trades, decisions, performance and statistics accept assetClass (an AssetClass enum value — an invalid value is a validation error) and marketId. Filtering by the market id also matches rows that predate the identity columns. When the API runs with USE_BLOCKCHAIN_AS_SOURCE=true, performance, statistics, trades and tradeHistory are served from on-chain fills and ignore the assetClass/marketId filters; only decisions honours them in that mode.

SDK and CLI​

@7n7d/sdk exposes the same catalog through api.markets() / api.market(marketId) and the HlNetwork, MarketReference, MarketActivation and MarketQuote types; see the SDK API reference. Position filters in the SDK are applied client-side on the identity the API attaches.


Next: AI Trading explains the inputs behind each decision.