
Use this page to compare intraday liquidity conditions across metals and time buckets rather than looking at a single snapshot in isolation. The heatmap shows where liquidity tends to be strongest or weakest during the London session, while the cross-metal table helps benchmark current conditions against the rest of the session. This is a compact benchmarking layer built on the same shared prompt engine and top-of-book stats pipeline used elsewhere in the project.
LiquidityScore = 100 * (0.4 * Snorm + 0.4 * Dnorm + 0.2 * Inorm). Higher is better. This is a benchmarking summary, not a replacement for the underlying spread and size detail.mid = (bid + ask) / 2, spread = ask - bid, spread_pct = spread / mid. Formula: Snorm = clamp(1 - (spread_pct / spread_pct_cap), 0, 1). This helps compare metals with different outright price levels.depth_total = bid_qty + ask_qty. Formula: Dnorm = clamp(depth_total / depth_cap, 0, 1). More displayed size scores higher, but the normalization caps out once visible size is considered strong enough.imbalance = (bid_qty - ask_qty) / (bid_qty + ask_qty). Formula: Inorm = 1 - abs(imbalance). Strongly one-sided books score lower.spread_pct_cap = 0.005 (0.5%). This is the cap used in Snorm = clamp(1 - (spread_pct / spread_pct_cap), 0, 1), where spread_pct = (ask - bid) / mid and mid = (bid + ask) / 2. Once spread percentage reaches that threshold, the tightness component bottoms out near zero. The purpose is to keep very wide markets from still scoring well on tightness, while making spread comparison more portable across metals with different outright price levels. At the moment this is a practical benchmark cap rather than a fully calibrated statistical threshold. The intended longer-term approach is to calibrate it from real spread-percentage distributions, potentially by metal or by prompt family, so the cap reflects a realistic “clearly poor tightness” boundary instead of a fixed placeholder.Dnorm = clamp(depth_total / depth_cap, 0, 1). They stop larger-lot metals from automatically looking better just because they naturally display more size at top of book. At the moment they are practical benchmark values rather than a fully calibrated statistical model. The intended longer-term approach is to derive them from real depth distributions by metal (for example using a recent 75th or 80th percentile of depth_total), so each cap represents a realistic “strong enough” visible depth level for that metal.| Metal | Current score | Average score | Best score | Worst score | Bucket count | Signal |
|---|