UX Verification Plan
This plan verifies the production dashboard from the point of view of an operator who needs to understand the current crypto volatility environment, identify what is driving it, sync Alpha trades into the dashboard, and interpret those trades on the Performance screen.
For the primary operator narrative, start with User Journey. This file is the browser verification checklist for that journey.
Production entry point: Vol Dashboard frontend
Canonical backend: Vol Dashboard backend
Verification Goals
| Goal | What to prove |
|---|---|
| Routing | Every primary screen loads from the canonical Cloud Run frontend. |
| Data source hygiene | Browser requests go to the canonical frontend/backend paths only; no Vercel URLs and no direct Amberdata or Alpha calls. |
| Number integrity | Price, volatility, flow, futures, probability, and synced-trade metrics render as numbers with correct units or explicit no-data states. |
| User story | The user can move from Model to Market Setup, Measurement, and Reference help without losing context. |
| Helper text | Custom analytics, model gates, source-quality states, and aggregate cards expose visible helper copy or hover info. |
| Operator controls | Admin actions are protected by server-side proxying and dry-run/sync-diagnostic controls are understandable before any write action. |
Browser Setup
- Open the production frontend.
- Open browser DevTools with Console and Network visible.
- Hard refresh the page.
- Filter Network by
run.app,api,amberdata,alpha, andvercelduring the walkthrough. - Treat any uncaught console error, persistent 4xx/5xx, Vercel request, direct Amberdata request, or direct Alpha request as a blocker.
Operator Story
The dashboard is designed as a drill-down journey. The navigation groups the journey by operator question rather than by raw data source.
| Stage | User question | Screen | Expected interpretation |
|---|---|---|---|
| 1 | What is the current thesis? | Model Explorer | Read the Decision Summary first, then expand Market Setup, Model Trust, Probability Outcomes, and Alpha Measurement to confirm no underlying signal detail is hidden or dropped. |
| 2 | What is the market doing right now? | Overview | Read spot price, DVol, IV 30d, RV 30d, VRP, and 24h volume to establish the headline volatility regime. |
| 3 | Is implied vol rich or cheap versus realized vol? | Overview | Compare IV, RV, VRP, cones, and DVol history. Positive VRP means implied vol is above realized vol; negative VRP means implied vol is below realized vol. |
| 4 | Where is the vol surface distorted? | Overview | Use smile, moneyness, and term-structure panels to see whether short-dated, long-dated, OTM call, or OTM put vol is leading the move. |
| 5 | What flow is driving the move? | Flow | Use options flow, GEX, put-call, and instruments to connect surface moves to actual trading and dealer positioning. |
| 6 | Is leverage or carry confirming the signal? | Futures & Carry | Check funding, basis, OI, and liquidations for leverage pressure or stress. |
| 7 | What does the market imply about future outcomes? | Model Explorer > Probability Outcomes | Use density detail, touch probability, and candidate-screen visual detail to translate vol into distributions and levels. |
| 8 | Are model regimes stable enough to trust? | Model Explorer > Model Trust | Check live GEX freshness, stationarity, and alert visual detail. Yellow, stale, unavailable, or unstable states should reduce confidence in regime-conditioned outputs. |
| 9 | Did our synced trades line up with the opportunity context? | Performance | Read opportunity alignment and source-group quality. Confirm execution and forward outcome cards only display sourced quote/mark results, and that realized P&L stays unavailable until authoritative source data exists. |
| 10 | Where are source rows and methodology? | Trade Book / Reference | Use Trade Book from Measurement for Alpha sync state and source rows. Use Reference help for methodology, calculation details, runbooks, and diagrams. |
Detailed Walkthrough
1. Model Explorer
URL: Model Explorer
Actions:
- Select
BTC. - Read the Decision Summary headline thesis, agreement, confidence, and source date.
- Review the Market Setup, Model Trust, Probability Outcomes, and Alpha Measurement groups in order.
- Confirm each group can expand into signal nodes.
- Open detailed nodes for Market Setup and Model Trust; confirm inputs, calculations, diagnostics, help text, and source links remain available.
Interpretation:
Model Explorer is the model front door. It should make the current read understandable before the user opens detailed charts. It must not hide missing data: unavailable layers stay unavailable, conditional layers remain gated by stationarity, and detailed nodes remain available.
Pass criteria:
| Check | Expected result |
|---|---|
| Decision summary | Headline thesis, agreement, confidence, and source date are visible without opening details. |
| Tree groups | Market Setup, Model Trust, Probability Outcomes, and Alpha Measurement are visually distinct. |
| Detail preservation | Expanded nodes expose underlying inputs, calculations, diagnostics, and source quality. |
| Source links | Detailed nodes link back to the source page where available. |
| Mobile | Story order remains readable and cards do not overlap. |
| Helper affordances | Story group labels, source-quality dots, and detailed signal cards expose explanatory hover/help text. |
2. Overview
URL: Overview
Actions:
- Select
BTCand24h. - Confirm the top cards load: price, DVol, IV 30d, RV 30d, VRP, and volume 24h.
- Switch to
7d,30d, and90d; confirm charts and cards update or show explicit no-data states. - Switch assets to
ETHandSOL; confirm numbers refresh and stale BTC values are not retained. - Review volatility surface, term structure, IV/RV history, cones, DVol, vol-of-vol, and seasonality/correlation panels.
Interpretation:
The Overview page answers whether the market is currently high-vol or low-vol, whether implied volatility is expensive versus realized volatility, and where the volatility surface is shaped abnormally. This is the starting screen because it frames every later decision.
Pass criteria:
| Check | Expected result |
|---|---|
| Top cards | Numbers render with sensible formatting, or a clear dash/no-data state when the source is unavailable. |
| VRP | Display is consistent with IV minus RV in volatility points. |
| Time range controls | Data updates without console errors. |
| Asset controls | Asset-specific values update without retaining stale values. |
| Network | Requests go through Cloud Run frontend/backend only. |
3. Flow
URL: Flow
Actions:
- Keep
BTCselected first. - Confirm options flow, decorated trades, GEX, put-call, option chain, and instrument panels load.
- Change the asset and range controls where available.
- Check that empty trade buckets render as empty states, not broken charts.
Interpretation:
The Flow page explains whether actual options trading supports the volatility story from Overview. Put-call balance, top trades, and GEX help explain whether the market is buying protection, chasing upside, or sitting near dealer-sensitive levels.
Pass criteria:
| Check | Expected result |
|---|---|
| Flow panels | Either populated rows/charts or explicit no-data messages. |
| GEX | Values use a consistent sign convention and do not show impossible formatted numbers. |
| Option chain | Expiry, strike, IV, bid/ask, and volume fields are aligned with the selected asset. |
| Console | No uncaught render or fetch errors. |
4. Futures
URL: Futures
Actions:
- Review funding rate, accumulated funding, basis, basis term structure, open interest, and liquidations.
- Change asset and period controls.
- Look for discontinuities or impossible units after switching assets.
Interpretation:
The Futures page checks whether leverage and carry confirm or contradict the volatility signal. High positive funding or basis can point to crowded longs; negative funding, liquidations, or falling OI can point to stress or deleveraging.
Pass criteria:
| Check | Expected result |
|---|---|
| Funding/basis | Percentage and annualized values are labelled consistently. |
| OI/liquidations | Large numbers are formatted clearly and not mixed with percentages. |
| Asset switches | Values update and loading states clear. |
5. Yields
URL: Yields
Actions:
- Review the purpose panel, option yield table, and futures basis APR chart.
- Confirm option rows show readable DTE derived from expiry/timestamp when the source omits explicit DTE.
- Confirm missing DTE or missing yield fields are explicit rather than silently zeroed.
- Confirm annualized yield, absolute yield, strategy, and premium are labelled clearly.
- Confirm Delta and IV columns are hidden when the source has no usable values, rather than showing empty placeholder columns.
- Confirm the basis chart remains readable when one APR outlier exists and that clipped outliers are listed explicitly.
Interpretation:
The Yields page translates option premium and futures basis into carry-style context. It should help an operator build a shortlist for further review. It does not recommend trades: high annualized yield can come from short DTE, far out-of-the-money strikes, stale marks, or genuine premium richness.
Pass criteria:
| Check | Expected result |
|---|---|
| Yield fields | Units are clear, DTE is derived when possible, and zero is not used as a placeholder for missing data. |
| Controls | Inputs update the result or show a clear no-result message. |
| Basis outliers | Extreme APR values do not flatten the chart without explanation; clipped values remain visible in tooltip/outlier text. |
6. Model Diagnostics
URL: Model Diagnostics
Actions:
- Review gamma analytics, live GEX magnet/repeller levels, spot-vol dynamics, smile tracking, volatility heatmap, regime stationarity, and alert signals.
- Confirm live GEX magnet/repeller levels show source status, as-of time, age, live row count, and strike count.
- In the stationarity panel, check
Stable,Unstable,Insufficient, p-values, mean shift, and blend weight. - Use alert refresh in dry-run mode first.
- If testing Slack dispatch, disable dry run only after confirming the alert content is acceptable.
Interpretation:
Model Diagnostics turns the raw market state into model and monitoring context. Stationarity tells the user whether regime-conditioned relationships are stable enough to trust; alerts identify notable conditions that may require action or investigation.
Pass criteria:
| Check | Expected result |
|---|---|
| Stationarity | Unstable states are clearly labelled and do not pretend to be reliable. |
| Blend weight | Lower confidence regimes reduce model weight rather than hiding uncertainty. |
| Alerts | Dry run reports attempted/sent counts without needing Slack. |
| Real dispatch | Slack send succeeds only when configured and intentionally tested. |
7. Probability
URL: Probability
Actions:
- Review current state, implied density, conditional density, touch probability, and candidate-screen sections.
- Change asset/range inputs where available.
- Confirm probability values stay within valid bounds and charts do not show impossible densities.
Interpretation:
The Probability page converts options-implied volatility into market-implied outcomes. The user should use it after Overview and Flow, because probabilities are easier to interpret after understanding the vol surface and flow context. Conditional probability views use stored gex_hourly regime history; they should not be read as the same signal as the live Model Diagnostics magnet/repeller strike levels.
Pass criteria:
| Check | Expected result |
|---|---|
| Probability values | Values are between 0 and 100 percent where displayed as percentages. |
| Density charts | No negative probabilities or malformed axes. |
| Regime context | Conditional outputs are interpreted alongside stationarity status. |
| Candidate screen | Empty states explain filter coverage and do not appear as raw failed-fetch errors. |
8. Trade Book
URL: Trade Book
Actions:
- Confirm Alpha sync state loads and shows configured portfolios.
- Run an incremental preview/dry run.
- Run a full-scope diagnostic dry run only when checking sync completeness, unless intentionally performing a write sync.
- Confirm source/cache counts, source/cache quantity, source/cache premium, deltas, and unmatched IDs as ingestion diagnostics.
- Review the synced trade table.
- Confirm the page has no manual trade-entry or CSV-upload controls.
Interpretation:
The Trade Book page is the bridge from public market context to synced Alpha rows. It confirms that the selected feed scope is loaded and ready for downstream interpretation, but it is not the analytical objective of the workflow.
Pass criteria:
| Check | Expected result |
|---|---|
| Alpha state | Config is loaded server-side; the browser never sees the API key. |
| Full-scope diagnostic dry run | Sync-completeness diagnostics are clean, or discrepancies are explicitly listed before Performance is interpreted. |
| Pending trades | Default scope excludes pending trades unless the configured mode intentionally includes them. |
| Read-only UI | Manual entry and CSV upload controls are absent. |
9. Performance
URL: Performance
Actions:
- Confirm the page loads after the Alpha feed has synced cleanly.
- Use the default
365d/Allfilters first. - Confirm Opportunity Context shows the loaded sample as scored.
- Confirm Opportunity Source Groups show available, partial, or unavailable states by group.
- Confirm "Did we trade the opportunity?" shows an alignment score and label.
- Confirm "Did we execute well?" either shows sourced quoted benchmark results or says not benchmarked/stale/unavailable, not zero slippage.
- Confirm "Did it work?" either shows sourced forward-mark P&L or says pending/unavailable, not zero P&L.
- Confirm Realized P&L Source says not sourced yet, not a derived cashflow total.
- Confirm 7d states separate pending horizons from unavailable matured horizons.
- Filter by
IMST,ICOI,MSTR, andCOINwhere available and confirm the same source-quality rules hold.
Interpretation:
The Performance page answers whether synced Alpha trades aligned with available dashboard opportunity context. It only answers whether execution was good or post-trade P&L was positive for rows with sourced quote/mark inputs. It does not answer realized P&L profitability until authoritative accounting or validated lifecycle data exists. This distinction is a pass condition, not a defect.
Pass criteria:
| Check | Expected result |
|---|---|
| Opportunity alignment | Score, label distribution, drivers, and detractors render for scored trades. |
| Source groups | GEX/gamma, vol metrics, term structure, liquidity, stationarity, and smile show explicit quality states. |
| Execution quality | Fill-vs-mid appears only for sourced quoted benchmark rows; missing/stale rows are not displayed as zero slippage. |
| Forward outcomes | Sourced marks can display P&L; missing marks are unavailable and immature horizons are pending. Neither state is displayed as zero. |
| Realized P&L | No derived FIFO cashflow appears as realized P&L. The UI states that authoritative realized P&L is not sourced yet. |
| Trade drilldown | Rows show source IDs, alignment scores, and outcome states clearly enough to investigate a surprising aggregate. |
Cross-Screen Checks
| Area | Expected result |
|---|---|
| Loading states | Spinners clear; stale data is not shown as fresh data after an asset/range switch. |
| Error states | Errors are specific enough to indicate source/config problems. |
| Units | Currency, percent, volatility points, bps, contracts, and USD notional are not mixed. |
| Formatting | Large values use separators; percentages preserve meaningful precision. |
| Security | No API key, admin secret, Slack webhook, or Alpha credential appears in page source, JS bundles, logs, or network request payloads. |
| Deployment hygiene | No request or link points to Vercel. |
Sign-Off Checklist
| Step | Pass condition | Result |
|---|---|---|
| Model Explorer journey | Decision summary, expandable evidence, diagnostics, visual detail, help text, and source links are readable. | Pending |
| Overview journey | Headline market state is clear for BTC, ETH, and SOL. | Pending |
| Flow journey | Options activity and positioning explain or challenge the Overview signal. | Pending |
| Futures journey | Leverage/carry context is readable and correctly formatted. | Pending |
| Yields journey | Yield/carry values are explicit and no-data states are honest. | Pending |
| Model Trust visual detail | Regime confidence, stationarity, live GEX freshness, and alerts are interpretable inside Model Explorer. | Pending |
| Probability visual detail | Implied outcomes are bounded and contextualized by regime quality inside Model Explorer. | Pending |
| Trade Book journey | Alpha sync controls show the selected feed scope is loaded and ready for Performance interpretation. | Pending |
| Performance journey | Opportunity alignment is readable and unsourced execution/outcome/P&L metrics remain explicit no-data states. | Pending |
| Security/network | Only Cloud Run frontend/backend requests are used; no secrets are exposed. | Pending |
| Console/network | No unresolved console errors or unexpected 4xx/5xx responses remain. | Pending |
Final Acceptance Statement
The phase is signed off when an operator can start at Model Explorer, explain the current thesis, drill into market setup and futures drivers, translate the market state into probabilities, check model stability, read Performance as opportunity-alignment analytics, and use Trade Book/Reference for source rows and methodology with clear source-quality boundaries, without seeing stale values, hidden errors, exposed credentials, fake zeros, or non-Cloud Run deployment paths.