Asset thesis · why this asset is different
0.Weather-tail risk dominates
Coffee is the textbook case for non-Gaussian VaR. A single overnight frost in Minas Gerais can move the front month 20% in one session, which means the empirical return distribution carries a left tail no normal model captures. The recommended method here is filtered historical simulation: it preserves the actual tail shape and lets the volatility model breathe through the EWMA filter.
- Q1 carries the highest realised vol historically — Brazil winter dovetails with thin harvest inventories.
- ICE certified-warehouse stocks act as the primary fundamental signal; weather shocks resolve through that buffer.
- Vietnam robusta and Brazil arabica are the supply axes; Colombia and Ethiopia run the quality premium.
Recommended VaR method
FHS · Empirical left tail is too heavy for Gaussian or Cornish-Fisher; FHS rescales it through EWMA without imposing a distributional shape.
Part I · the daily log-return series
1.From prices to returns
Everything that follows works on the daily log return . Log returns are time-additive, well-behaved under aggregation, and the natural input for any vol / VaR model. The series below is exactly that, computed over 539 trading days from Supabase data.
r_t over time · green up, red down
μ (daily)
0.024%
σ (daily)
2.31%
σ (annualised)
32.6%
n
539
observations
The annualised vol used in the EWMA model is the current value from the filter, not a pooled sample estimate. Pooled σ across the entire history would mask the regime structure CQF Module 2.5 cares about.
Part II · stylized facts (CQF Module 2.4)
2.The four moments
Returns are described by their first four sample moments. The first two get most of the airtime; the third and fourth are what break Gaussian VaR.
The Gaussian benchmark has and . The empirical values on this asset, computed on the live series above, are and . Both numbers feed directly into the Cornish-Fisher VaR adjustment in Part III.
3.The empirical density vs normal
Plotting the histogram of against a normal fitted to the same makes the failure of the Gaussian assumption visible. Bars in the < μ − 2σ tail are coloured red; bars in the > μ + 2σ tail are green. A normal would have a fixed 2.5% mass in each tail; if the empirical bars overshoot the curve in those regions, you have fat tails.
4.The Q-Q diagnostic
The Q-Q plot pairs the -th empirical order statistic with the corresponding quantile of . Under normality every point sits on the 45-degree gold reference line. Departures at the lower-left say the left tail is heavier than normal (extra crash risk); departures at the upper-right say the right tail is heavier (extra rally risk). The two ends are where Gaussian VaR actually fails.
5.Autocorrelation: efficient-market & ARCH
Three autocorrelation panels tell three different stories. The ACF of tests whether returns themselves are predictable — efficient-market theory says they shouldn't be, and they typically aren't. The ACF of and tests for volatility clustering: even though returns are unpredictable, their magnitudeis highly autocorrelated. That's the textbook motivation for any ARCH-family model.
ACF of r_t (efficient-market check)
ACF of |r_t| (volatility clustering)
ACF of r_t² (ARCH effects)
6.Stationarity in the second moment
The rolling 60-day annualised mean and standard deviation make the regime structure visible. A stationary series has both lines hovering around their long-run averages; a non-stationary one has the volatility wandering across regimes. For commodities, the latter is the rule.
7.Findings
Six tests, each with its own per-asset value and verdict. The point isn't to fail facts — most pass on most assets — it's to document that we checked.
Fat tails (excess kurtosis > 0)
0.21Mildly leptokurtic.
Gain/loss asymmetry (skewness ≠ 0)
-0.223Left-skewed: crashes outsize the rallies.
Volatility clustering ( |r| autocorr )
0.013Mild persistence.
Squared returns autocorr
-0.002Weak ARCH evidence.
Weak return autocorrelation (efficient market)
-0.087Some short-term predictability — uncommon in liquid markets.
Returns stationary (ADF t-stat < −2.89)
-25.38Returns are stationary at 5%. Levels would not be.
Part III · VaR method comparison
8.Gaussian (the baseline)
The textbook VaR at level under a Gaussian return assumption is where . Quick, closed-form, and wrong in either tail of any real-world return series.
9.Cornish-Fisher (Edgeworth correction)
Cornish-Fisher replaces the Gaussian quantile with a polynomial adjustment that absorbs skewness and excess kurtosis.
For a left-skewed, heavy-tailed return series the cubic in pushes the quantile further into the tail than Gaussian, so . On this asset the empirical , drive that correction directly.
10.Filtered Historical Simulation
FHS sits between parametric and non-parametric. The recipe:
- Estimate a volatility model — here EWMA with λ from MLE.
- Compute standardised returns .
- Read the empirical quantile from the standardised distribution.
- Scale back: .
The non-parametric quantile lets the actual tail shape speak; the EWMA scale lets the vol model react to recent days. Glasserman calls this “the right compromise between Gauss and history.”
11.All three, on the same histogram
The cleanest way to see how the three methods disagree is to draw all three thresholds on the same returns distribution and slide the confidence level around. At low the three almost coincide. As approaches 99% the gap widens — and whichever method is most conservative on this asset is the one that was best aware of the tail.
α = 95% · z_α = -1.645
Each dashed line is a VaR threshold at the chosen α. Drag the slider toward 99% and watch how the three methods diverge — that gap is the skew-and-kurtosis effect.
12.Numerical comparison
| Method | VaR 95% | CVaR 95% | VaR 99% | CVaR 99% |
|---|---|---|---|---|
| Gaussian | 3.78% | 4.74% | 5.35% | 6.13% |
| Cornish-Fisher | 3.91% | 4.46% | 5.80% | 4.93% |
| FHSrecommended | 3.58% | 4.38% | 4.84% | 5.66% |
Part IV · VaR backtest (Kupiec + Christoffersen)
13.Why backtest a VaR at all
Reporting without checking how often the realised loss exceeded it is the cardinal sin of risk reporting. A correct VaR model breaches at exactly the unconditional rate , and the breaches should be independent in time. Kupiec (1995) and Christoffersen (1998) gave us likelihood-ratio tests for both properties.
14.Kupiec POF (unconditional coverage)
With breaches in days, the empirical breach rate is . The LR statistic is under the null that .
High p-value means we cannot reject correct coverage; low p-value means the breach rate differs from the target in a way that can't be explained by sampling noise.
15.Christoffersen (independence)
Even when the total breach count is right, breaches that cluster signal a vol model too slow to react. Christoffersen builds a 2×2 transition table over the breach indicator and tests whether .
with the empirical transition rates from state (no breach / breach) to state . The combined conditional-coverage test adds the two LRs and tests against — both at once.
16.Results on this asset
Run on a rolling 60-day window with the recommended VaR method:
95% confidence
n = 479Breaches
26
expected 24.0
Breach rate
5.43%
target 5%
- LR = 0.18p = 0.671
Kupiec POF
unconditional coverage
- LR = 0.15p = 0.699
Christoffersen
breach independence
- LR = 0.33p = 0.848
Combined CC
conditional coverage
99% confidence
n = 479Breaches
7
expected 4.8
Breach rate
1.46%
target 1%
- LR = 0.90p = 0.342
Kupiec POF
unconditional coverage
- LR = 0.21p = 0.648
Christoffersen
breach independence
- LR = 1.11p = 0.574
Combined CC
conditional coverage
17.Breach timeline
Each blue tick is a day with no breach; gold dots trace the negative of the VaR threshold; red ticks are breaches. Clustered red ticks are what Christoffersen catches.
18.Year-by-year breach distribution
Counting breaches per calendar year against the expected rate makes regime episodes obvious. Bars in green sit at or below the gold expected-rate tick; bars in red overshoot.
Data: Supabase + GitHub Actions ETL · last update 2026-06-01