📈 {{ 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 | {{ fmt(prevBar.open) }} | {{ fmt(prevBar.high) }} | {{ fmt(prevBar.low) }} | {{ fmt(prevBar.close) }} | {{ prevBar.volume.toLocaleString() }} | {{ fmt(prevBar.vwap) }} | waiting for bar close… | |||||
| Current | {{ fmt(currentBar.open) }} | {{ fmt(currentBar.high) }} | {{ fmt(currentBar.low) }} | {{ fmt(currentBar.close) }} | {{ currentBar.volume.toLocaleString() }} | {{ fmt(currentBar.vwap) }} | 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) }}
+{{ m }}m {{ fmt(futurePredictions[m]) }}
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.