Stretching the map will get you lost
A countenance more in sorrow than in anger.
— Wm Shakespeare (ca. 1599-1607) Hamlet I.ii (Horatio)
A chart crossed my feed this week with a title that made me smile: Wanna Try Wasabi?, and in the corner 召し上がれ, “meshiagare,” roughly “Enjoy!.” It’s the Jarque-Bera test, applied to fifty years of NASDAQ Composite daily returns, one bar per half-year, a bar only where the normality hypothesis normality is rejected at 5%. Three spikes tower over the rest:
| Spike | Date | JB Statistic |
| 1 | second half 1987 | 829.39 |
| 2 | second half 1979 | 803.39 |
| 3 | second half 2025 | 752.03 |
The implied story (not necessarily intended by the author) writes itself: the NASDAQ market has had three very abnormal half-years, and the latest one was quite recent. And yet the chart misleads. Not because anyone cooked it. It misleads the way a perfectly accurate thermometer misleads if you don’t know whether it’s in the oven or the refrigerator. Sorrow, not anger. Let’s take it apart gently.1
So, what is the Jarque-Bera test, why is it used, and why should it stay safely in the academy where it can do little harm?
As explained in the afterward, the Jarque-Bera statistic evaluates whether a sample’s skewness and kurtosis match the third and fourth moments of a normal distribution. A mouthful, but it has its uses in dealing with heavy-tailed distributions that ordinary regression chokes on.
What it got right
The numbers. Every bar reproduces with simple daily returns, each half-year starting from the previous half’s last close. 59 of the 100 half-years reject the null hypothesis of normality.
The cutoff. With about 125 trading days per window, the textbook 5.99 critical value is a fair approximation. Simulating truly normal returns, the chart’s version of the test rejects about 5% of the time, as advertised.
Almost the formula. The caption gives the textbook JB, which uses plain sample moments. The bars were actually computed with the bias-corrected skewness and kurtosis that Excel’s SKEW() and KURT() return.2 With the textbook formula, the three peaks are 765, 745 and 689. It’s a quibble. The ranking doesn’t change. I mention it only because “the stated method reproduces the stated numbers” should be the standard, and here it almost does.
What it can’t tell you
What a tall bar means. A bar’s height looks like a measure of turmoil. It isn’t. With 125 observations, kurtosis is dominated by one or two days. H2 2008 lost 31% and scores 13. H1 2022 lost 30% and scores 3, so no bar at all. H1 2000, when the dot-com bubble started to burst, scores 1. Across all 100 half-years, the rank correlation between JB and the size of the half-year’s move is 0.02. JB doesn’t measure how bad a period was. It measures how much a period was dominated by a few days.
That the three peaks are three different things. Look at which days drive each spike.
- 1987 is the crash: −11.35% on October 19, −9.00% the next day, a +7.34% bounce, then −9.00% again on the 26th. This is the event everyone pictures.
- 1979 is Paul Volcker’s Saturday-night massacre announcement of October 6. The following Tuesday and Wednesday the index fell 3.83% and 4.06%.3 Those aren’t huge moves. They score as huge because that half-year was unusually quiet: the typical daily move was 0.78%, so a 4% day sits five standard deviations out.
- 2025 is mostly a rally. Tariffs announced on April 2 knocked the index down about 6% on each of the next two days. Then the 90-day pause sent it up 12.16% on April 9, the single most extreme day in any of the three windows. That’s why the half-year’s skewness is positive.
A crash, a rate shock in a sleepy market, and a whipsaw that ended in a rally all get the same shape of bar.
That the index isn’t the same index. In the late 1970s the NASDAQ Composite was composed of mostly4 small, thinly traded over-the-counter stocks whose quoted prices often didn’t change for a day or more. You can see it in the data: the lag-1 autocorrelation of daily returns was +0.35 in the 1970s and +0.27 in the 1980s. Since 2000 it has been about zero or negative. Today the same index is dominated by a few mega-cap technology companies. Bars from 1979 and 2025 come from the same series, but they don’t come from the same kind of market.
That a missing bar means “not proven,” not “normal.” The caption says missing bars mean normality is not rejected. That’s correct, and easy to misread. Daily returns over the whole sample have a JB of about 43,8005. They are not normally distributed, full stop. A half-year with no bar is one where 125 days weren’t enough to tell.
Changing the lens
The cleanest way to find out what a chart is really telling you is to change one thing and see what survives. Two changes did most of the work here.
Weekly returns instead of daily. A shock that thinly traded stocks absorb over several days lands in a single weekly return, so this takes most of the stale-price problem off the table. I’ll admit my first guess was that 1979 would collapse, since it leans on that quiet 0.78% baseline. It didn’t. The two bad days fall in the same week, giving −7.6% in a half-year whose typical week moved 2.2%. 1979 stays second, 1987 stays first.
It is 2025 that disappears: from third to 59th out of 100, with a JB of 1.1. The week ending April 4 fell 10%. The week ending April 11, which nets the +12% day against a −4% give-back, rose 7.3%. Neither week is unusual for that half-year. The tariff episode was a fat tail at the daily level and nothing special at the weekly level.
Longer windows get the power back. Weekly returns have their own catch: a half-year holds only about 26 of them. With so few, the test catches fat-tailed data (Student-t with 4 degrees of freedom) only 36% of the time, against 86% for 125 daily returns. Calendar-year windows give about 52 weekly returns and lift that to 56%. Daily returns over the same years reach 98%.
At that resolution, weekly returns reject the normality hypothesis in 16 of 49 years. If returns were truly normally distributed you’d expect about 2.5, so the fat tails are real. If every year were as fat-tailed as that Student-t, you’d expect about 27, so most years are fairly close to normal at weekly frequency. Daily returns reject the normal hypothesis in 38 of 49 years. The rejections that remain are concentrated before 1990, in the stale-price era. 1987 and 1979 are still first and second.
The war that didn’t show up
The original chart’s sample runs to June 30, 2026, so it includes the first half of this year. On Saturday February 28 a joint US-Israeli attack on targets across Iran began. If any half-year in the sample deserved a tall bar, you’d think it would be this one. Nope.
The onset of the Iran War produced no bar at all. Its JB is 2.6, “normal”
Here is what the NASDAQ actually did. It closed at 22,668 on Friday February 27, already down 3.4% for the month. On Monday it rose 0.36%. Then it slid for four weeks: 21 trading days, 12 of them down, none worse than −2.38%. On March 30 it was 8.3% below its pre-war close. A month of steady losses, every one of them an ordinary-sized day.
The extreme days came on the way back up. On March 31, reports that diplomatic channels were opening on maritime security in the Strait of Hormuz, plus some quarter-end buying, sent the index up 3.83%, more than four times a typical pre-war day. On April 8, a two-week ceasefire took it up another 2.80%, back to where it started. By mid-June it was 18% higher. The roughest day of the half-year, −4.18% on June 5, came well after the ceasefire.
Run the test on just the stretch from the attack to the low and you get a JB of 1.26, noise, statistically, indistinguishable from statistically normal.
Put the two years side by side. A tariff announcement in 2025, reversed within a week, scores 752 and becomes the chart’s third-tallest spike. A war in 2026 that took 8% off the index scores 2.6 and leaves a blank. Neither number is wrong. The test answers a narrow question, whether a few days stood out from the rest, and it answers it correctly. It just isn’t the question the reader might think it’s answering.
The moral
Nothing in the original chart is false. Every number is right, and the fine print says what was done. What’s missing is context:
- what the statistic responds to: a few extreme days, not a bad year;
- what it can detect at this sample size: a missing bar is not a clean bill of health;
- what changed in the thing being measured: a 1979 NASDAQ and a 2025 NASDAQ are different markets wearing the same ticker;
- whether the result survives a change of lens: two of the three peaks do, and one doesn’t.
I know the author set out to mislead no one, and I’d guess she’d agree with most of this. The trouble is that a chart travels without its author. The reader sees three numbered spikes, and the last one is this year. The difficulty, as Kahneman6 put it, is what you see is all there is. Accurate data, correct arithmetic and honest fine print are necessary. They are not sufficient.
So by all means, try the wasabi. Just go easy on it.
The code
The full replication, with the weekly, annual and Monte Carlo checks, is a single Julia script, jb_nasdaq.jl. It reads FRED’s NASDAQCOM series directly. The heart of it is the two versions of the statistic:
# Population (biased) moments: the textbook JB formula.
function moments_pop(x)
m = mean(x); d = x .- m
m2, m3, m4 = mean(d .^ 2), mean(d .^ 3), mean(d .^ 4)
m3 / m2^1.5, m4 / m2^2
end
# Bias-corrected moments (Excel SKEW/KURT, scipy bias=False). The chart uses these.
function moments_adj(x)
n = length(x)
g1, b2 = moments_pop(x)
G1 = sqrt(n * (n - 1)) / (n - 2) * g1
G2 = ((n + 1) * (b2 - 3) + 6) * (n - 1) / ((n - 2) * (n - 3))
G1, G2 + 3
end
function jb(x; adjusted::Bool = true)
S, K = adjusted ? moments_adj(x) : moments_pop(x)
length(x) / 6 * (S^2 + (K - 3)^2 / 4)
end
Data: Nasdaq, Inc., NASDAQ Composite Index [NASDAQCOM], retrieved from FRED, Federal Reserve Bank of St. Louis. For illustrative purposes only. Not a forecast or investment advice.
Moment’s Notice
“It has long been an axiom of mine that the little things are infinitely the most important.”
I often wonder why econometricians insist on inventing their own statistical tests rather than relying on tools from the broader statistical canon. Take the Jarque–Bera test. (And why so few of their methods find wide acceptance generally.) To a casual observer, forcing custom tests for skewness and kurtosis when tools like the Anderson–Darling test exist feels a bit like reinventing the wheel to fit a very specific shape of wagon.
I’m not a quant, nor a tenured chair in a department of economics, and if I’m so smart how come I’m not rich? But honestly? I have trouble seeing how a moment-based hypothesis test built for regression residuals is supposed to help anyone figure out what the market is going to do next Tuesday.
The Mechanics of the Habit
The Jarque–Bera statistic evaluates whether a sample’s skewness and kurtosis match the third and fourth moments of a normal distribution:
Where is the sample size, is sample skewness, and is sample kurtosis.
When you’re running ordinary least squares (OLS) regressions, this makes immediate sense. Linear models care deeply about standard errors, and standard errors care about the third and fourth moments. JB gives you a direct diagnostic: it tells you whether your inference is broken due to asymmetry or heavy tails, rather than handing you a generic distance metric across an empirical cumulative distribution function.
It’s fast, computationally trivial, and directly tied to the linear algebra powering the regression output.
Different strokes for different brushes
The problem isn’t that Jarque–Bera is useless; it’s that it was designed for explanation, not prediction.
When you shift from academic econometrics to actual market prediction, the objective function changes completely:
- Econometrics asks: Did interest rates have a statistically significant effect on housing starts, and do my residual standard errors hold up?
- Market Prediction asks: What is the probability distribution of tomorrow’s price tick, and how much down-side leverage am I exposed to?
In high-data-point regimes, classical hypothesis tests break down under their own -values. With , virtually every real-world financial time series fails a formal normality test. The deviations are always statistically significant, even when operationally irrelevant.
Other domains facing massive dataset scale abandoned binary distribution tests long ago:
- Machine Learning looks at continuous distance metrics like Kullback–Leibler divergence or Wasserstein distance to track real-time model drift.
- Genomics & Physics ignore -values in favor of direct effect sizes and empirical permutation tests.
- Quantitative Finance uses non-parametric architectures, GARCH models for dynamic volatility clustering, or Extreme Value Theory to parameterize power-law tails directly.
Skin in the Game
In Extremistan, inequalities are such that one single observation can disproportionately impact the aggregate, or the total.
— Nassim Nicholas Taleb. The Black Swan
Academic econometricians persists with tests like Jarque–Bera because academia operates in an environment with no downside risk. A tenured econometrician gets published by producing mathematically tractable models that pass standard diagnostic checks. A trader relying on those same thin-tailed assumptions gets carried off on a stretcher during a tail event.7
When you subtract legacy software limitations, paper publishing requirements, and classroom convenience, keeping JB as a predictive market tool looks less like rigor and more like an artifact of a discipline that hasn’t needed skin in the game to survive.
- 1Ah, well, econometricians. John Kenneth Galbraith, the acerbic economist/ambassador who popularized the term conventional wisdom, akin to what the French term the bien-pensant“, someone with non-controversial opinions or the Cultural Revolution termed 政治正确 political correctness in the original, non-ironic sense and Nicholas Taleb, author of Black Swan who has a well-known intolerance for ivory-tower methodologies wouldn’t be buying it. Me neither.
- 2I found this by trying combinations: simple or log returns, windows that start at the first close of the half-year or at the previous half’s last close, and population or bias-corrected moments. Only one combination reproduces all three labelled values exactly.
- 3Markets were closed Monday for a holiday.
- 4Well, not Intel, but does anyone remember MCI Communications, Tandy Corporation/Radio Shack, Safeway or DeLuxe Check Printers? Care to compare those five to NVIDIA, Apple, Alphabet, Microsoft and Amazon?
- 5JB adds a skewness term and a kurtosis term, each multiplied by the number of observations , and the number here is almost all kurtosis, fat-tailedness.
- 6The late Daniel Kahneman is the only psychologist ever to win the Nobel Prize for Economics. His book Thinking Fast and Slow is a rewarding read to understand the cognitive biases that we all labor under and why. He’s having a moment with the introduction of Typesafe’s Jev model and its System 1 hot take approach to classification
- 7A doctor can bury his mistakes, but an architect can only advise his clients to plant vines. Frank Lloyd Wright