1. Executive summary
Tokenized equity tokens (xStocks) trading on Solana's Raydium CLMM pools incur a swap-count-weighted median execution spread of 14 basis points against NBBO fair value — roughly 3× the spread achievable by a competitive dealer-RFQ venue like Qualiq.
Key findings across 4 pairs, 17,482 swaps, $8,276,871 sampled volume (all pairs: 60-day window, sample_rate = 5; true volume ≈ $41,384,355).
2. Headline findings
| Pair | Swaps | Volume (USDC) | Mkt p50 (bps) | A/H p50 (bps) | p90 (bps) | Est. savings |
|---|---|---|---|---|---|---|
| TSLAx/USDC | 8,409 | $3,752,854 | 13.6 | 67.2 | 123.7 | $12,053 |
| NVDAx/USDC | 6,426 | $3,592,252 | 11.4 | 67.6 | 138.5 | $11,865 |
| AAPLx/USDC | 1,337 | $492,769 | 22.1 | 49.7 | 122.2 | $1,361 |
| GLDx/USDC | 1,310 | $438,996 | 21.2 | 80.5 | 225.4 | $2,444 |
3. Per-pair analysis
Each pair's section shows the full distribution against NBBO, broken out by session (market hours vs. after-hours), with five companion charts: spread histogram, staleness vs. spread, intraday heatmap, Qualiq counterfactual, and cumulative savings.
3.1 TSLAx/USDC
| Metric | Value |
|---|---|
| Market-hours p50 | 13.6 bps |
| Market-hours p90 | 53.36 bps |
| After-hours p50 | 67.2 bps |
| After-hours p90 | 220.23 bps |
| Market-hours swaps | 5,072 (60%) |
| After-hours swaps | 3,337 (40%) |





3.2 NVDAx/USDC
| Metric | Value |
|---|---|
| Market-hours p50 | 11.4 bps |
| Market-hours p90 | 44.06 bps |
| After-hours p50 | 67.6 bps |
| After-hours p90 | 227.01 bps |
| Market-hours swaps | 3,330 (52%) |
| After-hours swaps | 3,096 (48%) |





3.3 AAPLx/USDC
| Metric | Value |
|---|---|
| Market-hours p50 | 22.1 bps |
| Market-hours p90 | 65.92 bps |
| After-hours p50 | 49.7 bps |
| After-hours p90 | 182.77 bps |
| Market-hours swaps | 683 (51%) |
| After-hours swaps | 654 (49%) |





3.4 GLDx/USDC
| Metric | Value |
|---|---|
| Market-hours p50 | 21.2 bps |
| Market-hours p90 | 101.45 bps |
| After-hours p50 | 80.5 bps |
| After-hours p90 | 265.39 bps |
| Market-hours swaps | 429 (33%) |
| After-hours swaps | 881 (67%) |





4. SOL/USDC — crypto-native baseline & methodology validation
This section replicates the Jump Crypto (March 2026) propAMM spread analysis using the same on-chain data methodology, establishing that Qualiq's analytical approach is sound and that sub-2-bps execution is demonstrably achievable on Solana for crypto-native pairs.
| Metric | Raydium CLMM SOL/USDC | Jump propAMM (middle 50%) |
|---|---|---|
| p25 spread | 1.17 bps | 0.33 bps |
| p50 spread | 3.16 bps | — |
| p75 spread | 5.65 bps | 1.36 bps |
| Swaps sampled | 22 | — |
Interpretation
Raydium CLMM SOL/USDC shows somewhat wider spreads than Jump Crypto's propAMM finding because CLMM is a passive AMM — it prices via inventory risk, not competitive quoting. PropAMMs (programmable AMMs with intent-based quoting) achieve tighter spreads by attracting competitive market-maker flow. Qualiq's MDRF model applies the propAMM principle to tokenized equities: dealers compete via Request-for-Quote, targeting 4.0 bps market-hours against the current 14 bps Raydium AMM baseline.
A. Appendix — data sources & methodology
A.1 Data sources
| Source | Description | Auth |
|---|---|---|
| yfinance | 5-min equity bars (OHLCV) for TSLA, NVDA, AAPL, GLD | Free, no key |
| Binance klines API | 1-min SOL/USDT klines for CEX mid reference | Free, no key |
| QuickNode Solana RPC | getSignaturesForAddress + getTransaction (JSON-RPC batch) | QuickNode endpoint |
| Raydium v3 API | Pool state account discovery by mint (TVL-ranked) | Free |
A.2 Swap discovery methodology
-
Pool-based, not mint-based
Token mint accounts receive 5,000–15,000 signatures/day (mints, burns, transfers, all pools). Pool state accounts receive only that pool's swap/LP transactions — 10–100× fewer, targeted to the specific liquidity we care about.
-
Signature pagination
getSignaturesForAddress(pool_id, limit=1000)pages backward through history, filtered to the date range. -
Batch transaction fetch
JSON-RPC batches of 10
getTransactioncalls per HTTP request. -
Swap detection
Fee-payer's
preTokenBalancesandpostTokenBalancesmust show equal and opposite changes in base- and quote-mint balances.
A.3 Fair-value methodology
- Equity pairs (NBBO proxy) — ASOF backward join to the most recent 5-min bar.
swap_market_openis computed from the swap's own UTC timestamp using NYSE trading hours (09:30–16:00 ET), not from the yfinance bar (which only contains market-hours data). - Crypto pairs (CEX mid) — ASOF backward join to the most recent 1-min Binance bar. Always-open (no market-hours concept).
A.4 Spread formula
spread_bps = |executed_price_usdc − mid| / mid × 10,000
A.5 Limitations
- Data coverage. All 4 pairs use the full 60-day window (2026-03-05 → 2026-05-04, sample_rate = 5, 17,482 swaps total). TSLAx and NVDAx are the liquid headline pairs; AAPLx and GLDx have materially lower volume and should be interpreted as directional rather than statistically robust.
- Sampling. Swap ingestor fetches 1-in-5 transactions for TSLAx/NVDAx. Sampled volume represents ~20% of true on-chain volume; all dollar figures above should be multiplied by 5 to estimate true magnitude.
- NBBO proxy. yfinance provides close price as mid, not true NBBO bid/ask. True NBBO requires Polygon.io Developer tier (~$199/mo). Close price slightly underestimates spreads in thin markets.
- After-hours fair value. With no 5-min bar update after 16:00 ET, the
midused for after-hours swaps is the last NYSE close — staleness can be 8–16+ hours for overnight swaps, making after-hours spread estimates noisier (directional, not precise).