📈 {{ symbol }} Live

{{ status }} {{ status === 'reconnecting' ? `(attempt ${reconnectAttempt})` : '' }} {{ lastQuoteTime ? 'last update ' + lastQuoteTime : '' }}

Quote

{{ currentPrice != null ? fmt(currentPrice) : '—' }} {{ priceDirection === 'up' ? '▲' : priceDirection === 'down' ? '▼' : '' }}
BID
{{ quote ? fmt(quote.bidPrice) : '—' }}
{{ quote ? quote.bidSize + ' @ ' + quote.bidExchange : '' }}
ASK
{{ quote ? fmt(quote.askPrice) : '—' }}
{{ quote ? quote.askSize + ' @ ' + quote.askExchange : '' }}
Spread{{ spread != null ? fmt(spread) + ' (' + spreadBps + ' bps)' : '—' }}
Mid{{ mid != null ? fmt(mid) : '—' }}
Spread avg ({{ spreadStats.n }} quotes){{ spreadStats.n ? fmt(spreadStats.mean) : '—' }}

Spread Condition

unusually tightnormalunusually wide
{{ spreadVerdict.text }}
z-score{{ spreadStats.n > 5 ? spreadStats.z.toFixed(2) : 'collecting…' }}
σ{{ spreadStats.n > 5 ? fmt(spreadStats.std) : '—' }}

Forecast Error Tracker (Actual − Predicted)

Single-Step Error (Latest Realized Close)
+{{ m }}m Prior
{{ latestErrors[m] != null ? (latestErrors[m] >= 0 ? '+' : '') + fmt(latestErrors[m]) : '—' }}
{{ (latestErrorPcts[m] >= 0 ? '+' : '') + latestErrorPcts[m].toFixed(2) }}%
waiting

5-Bar Rolling Cumulative Error (Signed)

+{{ m }}m Horizon
{{ cumulativeErrors[m] != null ? (cumulativeErrors[m] >= 0 ? '+' : '') + fmt(cumulativeErrors[m]) : '—' }}
{{ errorHistory[m].length }}/5 samples
0/5 bars

Bars (1-min)

Open High Low Close Vol VWAP
Previous waiting for bar close…
Current waiting…
Prev bar closed {{ fmt(prevBar.close) }} · current price {{ currentVsPrevBar >= 0 ? '+' : '' }}{{ currentVsPrevBarPct.toFixed(2) }}% vs prev close

Predictions

Target Prediction (Single)
close {{ fmt(prevBar ? prevBar.close : currentBarClose) }}
now {{ fmt(currentPrice) }}
pred {{ fmt(predictedPrice) }}
No single prediction received yet.
Expected move {{ predictedPrice >= currentPrice ? '+' : '' }}{{ expectedMovePct.toFixed(2) }}%
Progress toward prediction {{ predProgress != null ? predProgress.toFixed(0) + '%' : '—' }}

5-Minute Forecast Horizon

close {{ fmt(prevBar ? prevBar.close : currentBarClose) }}
now {{ fmt(currentPrice) }}
Waiting for 1–5 min forecast data…
+{{ m }} min
{{ futurePredictions[m] != null ? fmt(futurePredictions[m]) : '—' }}
{{ futurePredictions[m] >= currentPrice ? '+' : '' }}{{ (((futurePredictions[m] - currentPrice) / currentPrice) * 100).toFixed(2) }}%
Manual test: 

Recent Trades

{{ fmt(t.price) }} {{ t.size }} sh · {{ t.exchange }} {{ t.timeStr }}
No trades yet.