Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.parquet.exchange/llms.txt

Use this file to discover all available pages before exploring further.

Parquet lists 15 active markets across three categories. Each market represents synthetic long/short exposure to a real-world reference price aggregated from Alpaca and Finnhub WebSocket feeds.

Large-cap US equities

Eleven single-name equity perps tracking large-cap US-listed stocks.
SymbolNameDescription
AAPLAppleConsumer tech and services
MSFTMicrosoftCloud, productivity software
NVDANvidiaGPU and accelerated-compute silicon
GOOGLAlphabet (Class A)Google search, ads, cloud
AMZNAmazonE-commerce and AWS
METAMeta PlatformsSocial platforms, ads, AR/VR
TSLATeslaElectric vehicles, energy
COINCoinbaseCrypto exchange
MSTRStrategy (formerly MicroStrategy)BTC-treasury equity proxy
PLTRPalantirDefense and enterprise analytics
AMDAdvanced Micro DevicesCPU and GPU silicon

Equity ETFs

Broad-index ETFs that track major US benchmarks.
SymbolNameDescription
SPYSPDR S&P 500 ETF TrustS&P 500 broad-market ETF
QQQInvesco QQQ TrustNasdaq-100 ETF

Commodity / sector ETFs

SymbolNameDescription
GLDSPDR Gold SharesSpot-gold-backed ETF
USOUnited States Oil FundWTI crude-oil exposure via near-month futures

How pricing works

Prices on Parquet come from US equity market data, aggregated and validated through multiple layers:
  1. Streaming WebSockets. The off-chain price-pusher subscribes to Alpaca (trades + quotes, IEX feed on the free tier) and Finnhub (trades) over WebSocket. Alpaca free tier caps subscriptions at 30 channels — 15 symbols × (trades + quotes) = 30, so every active market is covered.
  2. Aggregation. The aggregator runs with minSources: 1, trustedSource: "alpaca". Alpaca is the canonical feed; Finnhub backstops it. Outlier rejection and source weighting happen here before anything reaches the chain.
  3. On-chain push. Aggregated prices are pushed to the PriceFeed PDA every 1 second, gated by deviation. Default thresholds are 15 bps move or a 5-second heartbeat. Higher-volatility names (TSLA, MSTR, COIN) push at 10 bps; ETFs push at 8 bps with a 10-second heartbeat.
  4. Oracle validation. The oracle_adapter program validates each price update for staleness and timestamp before any perp_engine instruction can use it. maxDeviationBps is set to 0 (disabled) on-chain — the off-chain aggregator already handles bad-data rejection, and disabling the on-chain circuit breaker lets Monday-morning gap opens process cleanly.

Regular Trading Hours and the weekend halt

Parquet only quotes prices during US Regular Trading Hours: Mon–Fri 09:30–16:00 ET, minus US market holidays and early-close days. The behavior is enforced by the data layer, not by a contract flag. Outside RTH the price-pusher’s push loop short-circuits — Alpaca’s WebSocket has no trades to forward, no on-chain price update lands, the PriceFeed PDA’s ts ages past the staleness threshold, and every state-changing instruction in perp_engine reverts on the oracle CPI with PriceStale. This means:
  • Existing positions stay open across nights, weekends, and holidays. They accrue funding and borrow fees continuously, but cannot be modified or liquidated until the next session opens.
  • New opens, closes, margin updates, and liquidations all revert outside RTH. The frontend’s MarketClosedBanner polls the indexer’s GET /market-hours route (which proxies Alpaca’s /v2/clock and /v2/calendar with a 30-second cache) every 60 seconds and surfaces the halt before you sign anything.
  • Inert markets. SMCI’s market_state PDA exists on-chain but has no pusher feed — its oracle is always stale and opens always revert. It is intentionally non-tradeable; only the 15 markets above are active.

Per-market parameters

These apply across all 15 markets unless overridden:
ParameterValue
Max leverage250×
Initial margin requirement40 bps (0.4%)
Maintenance margin ratio20 bps (0.2%)
Liquidation fee50 bps of remaining collateral
Funding cap10 bps / hour
Open-interest cap$50,000 per side per market
On-chain maxDeviationBps0 (disabled — off-chain aggregator handles it)