| # | Player | GP | MPG | APT | Max Peak | Avg SHS | SHS/36 | Fire % | FG% | Best Streak | Flame Out | Heat |
|---|
Let $s_1, s_2, \ldots, s_n$ denote the chronological sequence of a player's qualifying shots in a single game. A shot qualifies if it is a jump shot (any subtype) with distance $d \geq 13\,\mathrm{ft}$, or any three-point attempt. Layups, dunks, tip shots, and free throws are excluded.
Each qualifying shot $s_i$ is characterized by:
After each qualifying shot $s_i$, the player's temperature updates as:
$$T_i = \max\!\left(0,\;\; \alpha \cdot \delta_i \cdot \widetilde{T}_{i-1} \;+\; r_i \cdot w(d_i) \cdot \sigma(d_i)\right)$$where $T_0 = 0$, $\alpha = 1.15$ is the exponential growth multiplier, and $\widetilde{T}_{i-1}$ is the passively decayed temperature at the moment of shot $s_i$.
Between consecutive shots, the temperature decays continuously via a Gaussian kernel:
$$\widetilde{T}_{i-1} = T_{i-1} \cdot \exp\!\left(-\left(\frac{t_i - t_{i-1}}{\tau}\right)^{\!2}\right), \qquad \tau = 180\,\mathrm{s}$$The squared exponent produces slow initial decay that accelerates over time: at $\Delta t = 60\,\mathrm{s}$, $\approx 90\%$ of temperature remains; at $\Delta t = 180\,\mathrm{s}$, $\approx 37\%$; at $\Delta t = 300\,\mathrm{s}$, $\approx 4\%$ (effectively cold).
The miss penalty $\delta_i$ modulates the carry-over from the previous temperature:
$$\delta_i = \begin{cases} 1.0 & \text{if } r_i = 1 \;\;(\mathrm{made}) \\ 0.4 & \text{if } r_i = 0 \text{ and } r_{i-1} = 1 \;\;(\mathrm{first\;miss}) \\ 0.1 & \text{if } r_i = 0 \text{ and } r_{i-1} = 0 \;\;(\mathrm{consecutive\;miss}) \end{cases}$$A single miss reduces the carry-over to 40% but does not kill the streak. Two consecutive misses reduce it to 10%, effectively ending the hot streak.
Deeper shots receive higher weight, scaling linearly from the midrange baseline:
$$w(d) = 1 + \frac{d - 15}{15}$$A logistic function centered at $15\,\mathrm{ft}$ provides a soft eligibility threshold, replacing a hard distance cutoff:
$$\sigma(d) = \frac{1}{1 + e^{-3(d - 15)}}$$At $d = 13\,\mathrm{ft}$: $\sigma \approx 0.02$. At $d = 15\,\mathrm{ft}$: $\sigma = 0.50$. At $d = 17\,\mathrm{ft}$: $\sigma \approx 0.99$. The total shot contribution is $r_i \cdot w(d_i) \cdot \sigma(d_i)$.
A player is classified as on fire when their temperature exceeds a threshold $T^* = 3.0$, which requires approximately two consecutive qualifying makes to reach.
For a player with $G$ games played, where $T_g^{\mathrm{peak}} = \max_i T_i^{(g)}$ is the peak temperature in game $g$:
$$\mathrm{APT} = \frac{1}{G} \sum_{g=1}^{G} T_g^{\mathrm{peak}}$$The temperature is evaluated at every $\Delta = 10\,\mathrm{s}$ interval using Gaussian decay between shots. The per-game SHS is defined as:
$$\mathrm{SHS}_g = \sum_{k} \left[T\!\left(k\Delta\right)\right]^{5/2}$$By the layer cake representation, this is equivalent (up to a constant) to:
$$\mathrm{SHS}_g \;\propto\; \int_0^{\infty} \mu\!\left(\{t : T(t) \geq x\}\right) \cdot x^{3/2}\, dx$$where $\mu(\cdot)$ denotes the Lebesgue measure (total time in seconds). The $x^{3/2}$ weighting ensures that both peak intensity and sustained duration contribute to the score, with higher temperatures receiving disproportionately more weight.
The per-36-minute normalized version:
$$\mathrm{SHS}_{36} = \mathrm{SHS}_g \cdot \frac{36}{\mathrm{MPG}}$$