Wine as an Investment Asset
A quantitative study of release-to-market returns, risk, and predictability for Bordeaux First Growths, Burgundy Grand Crus, and Champagne prestige cuvée.
Top 10 buy candidates — May 2026
Ranked by a predictive model (5-fold CV R² ≈ 0.49) trained on 84 historical observations and applied to 31 currently-purchasable wines (2020-2024 vintages). Predicted CAGR is over a representative 10-year forward hold, gross of storage / spread. Model's top signal is "buy cheap-release Burgundy Grand Cru" — right in 2008-2014, wrong in 2017-2020 (§12 backtest). Treat as a structural screen, not stock-picking alpha.
BurgundyRousseau Chambertin 2021
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released -12% vs prior vintage (cheap entry). 98/100 score · 93/100 vintage. Reference producer of Gevrey-Chambertin Grand Cru; institutional collector demand.
BurgundyRousseau Chambertin 2020
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released +567% vs prior (price-up risk). 99/100 score · 98/100 vintage. Reference producer of Gevrey-Chambertin Grand Cru; institutional collector demand.
BurgundyDRC La Tache 2021
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released -18% vs prior vintage (cheap entry). 99/100 score · 93/100 vintage. Second-most-traded DRC label; ~1,800 bottles/yr; materially below Romanée-Conti pricing per quality unit.
BurgundyCoche-Dury Corton-Charlemagne 2021
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released -16% vs prior vintage (cheap entry). 98/100 score · 93/100 vintage. Reference white Burgundy; ~3,000 bottles/yr; the only white in our top tier.
BurgundyDRC La Tache 2020
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released +57% vs prior (price-up risk). 100/100 score · 98/100 vintage. Second-most-traded DRC label; ~1,800 bottles/yr; materially below Romanée-Conti pricing per quality unit.
BurgundyCoche-Dury Corton-Charlemagne 2020
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released +533% vs prior (price-up risk). 99/100 score · 98/100 vintage. Reference white Burgundy; ~3,000 bottles/yr; the only white in our top tier.
BurgundyDRC Romanee-Conti 2021
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released -12% vs prior vintage (cheap entry). 99/100 score · 93/100 vintage. Trophy label of Burgundy; deepest secondary-market liquidity of any fine wine.
BurgundyRoumier Musigny 2021
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released -7% vs prior vintage (cheap entry). 98/100 score · 93/100 vintage. ~300 bottles/yr — extreme scarcity premium; consistently the highest-priced non-DRC Burgundy.
BurgundyRoumier Musigny 2020
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released +1100% vs prior (price-up risk). 99/100 score · 98/100 vintage. ~300 bottles/yr — extreme scarcity premium; consistently the highest-priced non-DRC Burgundy.
BurgundyDRC Romanee-Conti 2020
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released +79% vs prior (price-up risk). 100/100 score · 98/100 vintage. Trophy label of Burgundy; deepest secondary-market liquidity of any fine wine.
Filter excludes all Burgundy (entry price >$3,500 for Grand Cru). Predicted CAGR drops accordingly — the under-$800 cohort is structurally lower-conviction in this model.
BordeauxMouton Rothschild 2024
Cohort with weakest historical base rate; cheap-release vintages outperform. released -18% vs prior vintage (cheap entry). 95/100 score · 91/100 vintage. Artist-label series adds collector premium; thinner secondary market than Lafite.
BordeauxHaut-Brion 2024
Cohort with weakest historical base rate; cheap-release vintages outperform. released -26% vs prior vintage (cheap entry). 96/100 score · 91/100 vintage. Smallest-production First Growth; Pessac-Léognan terroir provides differentiation.
BordeauxLafite Rothschild 2024
Cohort with weakest historical base rate; cheap-release vintages outperform. released -31% vs prior vintage (cheap entry). 95/100 score · 91/100 vintage. Most-searched fine wine globally; China-demand sensitivity is both upside and downside.
BordeauxMargaux 2024
Cohort with weakest historical base rate; cheap-release vintages outperform. released -17% vs prior vintage (cheap entry). 95/100 score · 91/100 vintage. Most stable First Growth pricing; weaker upside but lower drawdowns.
ChampagneDom Perignon 2015
Low cohort vol (~6%); steady compounder. released +20% vs prior (price-up risk). 97/100 score · 95/100 vintage. Largest volume of prestige cuvée — least scarcity premium of the cohort.
BordeauxLatour 2024
Cohort with weakest historical base rate; cheap-release vintages outperform. released -28% vs prior vintage (cheap entry). 96/100 score · 91/100 vintage. Stopped en primeur in 2012; released only when nearing drinking maturity — different supply dynamic.
BordeauxHaut-Brion 2023
Cohort with weakest historical base rate; cheap-release vintages outperform. released -11% vs prior vintage (cheap entry). 97/100 score · 94/100 vintage. Smallest-production First Growth; Pessac-Léognan terroir provides differentiation.
ChampagneDom Perignon 2013
Low cohort vol (~6%); steady compounder. released +40% vs prior (price-up risk). 96/100 score · 92/100 vintage. Largest volume of prestige cuvée — least scarcity premium of the cohort.
ChampagneCristal 2015
Low cohort vol (~6%); steady compounder. released +21% vs prior (price-up risk). 97/100 score · 95/100 vintage. Highest critic ceiling among large-production Champagnes; status-good positioning.
BordeauxLafite Rothschild 2023
Cohort with weakest historical base rate; cheap-release vintages outperform. released -36% vs prior vintage (cheap entry). 98/100 score · 94/100 vintage. Most-searched fine wine globally; China-demand sensitivity is both upside and downside.
Top model pick from each cohort if you'd rather spread across regions than concentrate in Burgundy.
BordeauxMouton Rothschild 2024
Cohort with weakest historical base rate; cheap-release vintages outperform. released -18% vs prior vintage (cheap entry). 95/100 score · 91/100 vintage. Artist-label series adds collector premium; thinner secondary market than Lafite.
BurgundyRousseau Chambertin 2021
Only cohort with positive base rate vs S&P (67%, +11% real CAGR mean). released -12% vs prior vintage (cheap entry). 98/100 score · 93/100 vintage. Reference producer of Gevrey-Chambertin Grand Cru; institutional collector demand.
ChampagneDom Perignon 2015
Low cohort vol (~6%); steady compounder. released +20% vs prior (price-up risk). 97/100 score · 95/100 vintage. Largest volume of prestige cuvée — least scarcity premium of the cohort.
Full 31-wine ranking and feature breakdown in §11; backtest in §12; methodology in §1.
TL;DR
- Wine is not a public-equity substitute. Only 31% of wine/vintage observations beat the S&P 500 TR over their matched holding period; median wine underperformed equities by -2.7% per year.
- Risk-adjusted returns look favorable for Burgundy and Champagne, unfavorable for Bordeaux. Mean Sharpe (reconstructed): Burgundy 0.99, Champagne 1.17, Bordeaux 0.20, vs S&P 500 0.39. Read these as upper bounds — reconstructed vol inherits cohort-index volatility but not idiosyncratic bottle-level shocks (see Section 5).
- Burgundy Grand Cru is the one cohort with genuine alpha. Mean real CAGR +10.7%, only cohort with positive base rate against S&P. Supply constraint, not vintage selection, drives the result.
- The predictive model works for a while, then breaks. Walk-forward backtest: model top-3 portfolios beat bottom-3 in 3/5 cutoffs, but the success is concentrated in 2011-2014 (Burgundy-era picks). Most recent cutoffs (2017, 2020): the model picked worse than bottom-3 — likely overfitting to the post-2010 Burgundy run.
1. Methodology
Each observation is a single wine-vintage pair. Returns are computed from the wine's release year (en-primeur for Bordeaux; physical release for Burgundy and vintage Champagne) to today (2026):
- Nominal CAGR:
(current / release) ^ (1 / years_held) − 1 - Real CAGR: nominal CAGR deflated by US CPI over the same window
- Alpha vs S&P / gold: nominal CAGR minus the benchmark's CAGR over the matched window.
The wine panel covers Bordeaux First Growths (Lafite, Latour, Margaux, Mouton, Haut-Brion; n = 44), Burgundy Grand Crus (DRC, Leroy, Roumier, Rousseau, Coche-Dury; n = 21), and Champagne prestige cuvée (Krug, Dom Pérignon, Cristal, Salon; n = 19). Benchmarks: US CPI-U, S&P 500 total-return index, gold spot, and cohort-level wine indices (approximating Liv-ex Bordeaux 500, Burgundy 150, Champagne 50).
Price reconstruction. For risk/Sharpe and backtest analysis we need annual price tracks, not just (release, current). We reconstruct each wine's track via a two-factor decomposition: total log-return is split into a cohort component (the region's index path) plus an idiosyncratic drift such that endpoints exactly match observed (release, current) prices. This inherits cohort-level volatility while preserving each wine's realized CAGR.
2. Return distribution
The distribution is right-skewed, with a long tail of high-return Burgundy outliers. The mode sits just above the inflation breakeven line, which is the central finding: wine on average barely keeps pace with CPI, but the upside is meaningful when it occurs.
3. Wine vs S&P 500 over matched windows
The takeaway is not that wine is a bad investment — it's that wine is not a substitute for equities. Wine's role in a portfolio, if any, is as a low-correlation alternative-asset diversifier.
4. Cohort breakdown
By region
| region | n | mean real cagr | median real cagr | std real cagr | beat cpi | beat sp500 | beat gold |
|---|---|---|---|---|---|---|---|
| Bordeaux | 44.00 | +3.0% | +4.4% | +4.9% | 75% | 18% | 36% |
| Burgundy | 21.00 | +10.7% | +7.8% | +6.7% | 100% | 67% | 76% |
| Champagne | 19.00 | +5.2% | +3.7% | +3.8% | 100% | 21% | 21% |
Burgundy is the only cohort with a positive base rate against equities. Bordeaux First Growths and Champagne prestige cuvée beat S&P in only ~20% of observations. The Burgundy result is driven by microscopic production (DRC ~6,000 cases/yr across all labels; Roumier Musigny ~300 bottles/yr) combined with structural demand expansion post-2010.
By release era
| release_era | n | mean real cagr | median real cagr | beat cpi | beat sp500 |
|---|---|---|---|---|---|
| pre-2000 | 19.00 | +5.9% | +5.6% | 100% | 32% |
| 2000-2008 | 21.00 | +5.3% | +4.4% | 100% | 24% |
| 2009-2011 bubble | 9.00 | -1.0% | -3.0% | 33% | 0% |
| post-2011 | 35.00 | +6.9% | +5.4% | 86% | 43% |
Release era is the dominant time-varying risk factor. Wines released into the 2009-2011 Chinese-demand peak are still nominally underwater 15 years later.
5. Risk-adjusted returns
Using reconstructed annual price tracks, we can compute volatility and Sharpe ratios for each wine — not just CAGR.
Cohort vol / Sharpe summary
| region | n | mean annual return | mean vol | mean sharpe |
|---|---|---|---|---|
| Bordeaux | 44.00 | 0.06 | 0.13 | 0.20 |
| Burgundy | 21.00 | 0.14 | 0.11 | 0.99 |
| Champagne | 19.00 | 0.08 | 0.06 | 1.17 |
Benchmark vol / Sharpe (2004-2026)
| label | annualized vol | mean annual return | rf avg | sharpe |
|---|---|---|---|---|
| S&P 500 TR | 0.17 | 0.10 | 0.03 | 0.39 |
| Gold | 0.12 | 0.10 | 0.03 | 0.53 |
| Liv-ex 100 | 0.16 | 0.04 | 0.03 | 0.09 |
Even with that haircut, Burgundy (0.99) and Champagne (1.17) plausibly clear the S&P 500 Sharpe (0.39) over this window — driven by lower cohort vol than equities and Burgundy's outsized return. Bordeaux Sharpe (0.20) is unambiguously below equities even before the haircut. This is a substantively different conclusion than the cross-sectional CAGR view in Section 3, and worth dwelling on: for the cohorts where wine works, the case is risk-adjusted, not return-maximizing.
6. Index-level comparison (2004 onward)
Burgundy index has compounded the strongest since 2004 (~9-10%/yr nominal), driven by the post-2010 demand expansion that caught Bordeaux flat-footed. Champagne is the slowest. The S&P 500 remains the dominant compounder over the full window despite the 2008 drawdown.
7. Reconstructed annual price tracks
Sample of reconstructed tracks per cohort. Bordeaux 2009 visibly peaks in 2011 and has not recovered. Burgundy tracks show steady compounding with a 2022 inflection. Champagne is the most gradual. These tracks are model-derived (see methodology) — they inherit each wine's observed CAGR and the cohort's volatility shape, but are not literal trade prints.
8. Release vs current price (log-log)
Most observations sit between the nominal breakeven line and the inflation-adjusted line. Bordeaux 2009-2011 wines cluster below the breakeven line in the upper-right quadrant: a diagnostic signature of buying near a cycle peak.
9. Predictive model
To identify which features drive real returns, we fit:
- Ridge regression (α = 1.0, standardized): CV R² = 0.49 ± 0.12
- Random forest (n_estimators=400, max_depth=5): CV R² = 0.49 ± 0.11
- OLS for interpretable inference: R² = 0.61
Model comparison: baseline vs augmented
We tried an augmented specification with four extra features (vintage_quality, log_price_delta_vs_prior, has_prior, log_livex_at_release). Cross-validated R²: baseline RF = 0.49, augmented RF = 0.45. The augmented model did not improve out-of-sample performance, so candidate scoring uses the baseline model. The new features mostly duplicate signal already captured by region and bubble_release. With n=84, more granular cyclical features don't generalize.
OLS coefficients
| coef | std err | t | P>|t| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| const | 0.1936 | 0.303 | 0.639 | 0.525 | -0.410 | 0.797 |
| critic_score | 0.0015 | 0.003 | 0.461 | 0.646 | -0.005 | 0.008 |
| years_held | -0.0035 | 0.001 | -5.040 | 0.000 | -0.005 | -0.002 |
| bubble_release | -0.0263 | 0.012 | -2.173 | 0.033 | -0.050 | -0.002 |
| log_release_price | -0.0403 | 0.007 | -6.133 | 0.000 | -0.053 | -0.027 |
| region_Burgundy | 0.1339 | 0.014 | 9.580 | 0.000 | 0.106 | 0.162 |
| region_Champagne | -0.0183 | 0.013 | -1.448 | 0.152 | -0.043 | 0.007 |
10. Top and bottom performers
Top 10 (real CAGR)
| producer | vintage | release price usd | current price usd | real cagr |
|---|---|---|---|---|
| Roumier Musigny | 2015 | $2,500 | $30,000 | +27.5% |
| Roumier Musigny | 2010 | $1,200 | $25,000 | +21.0% |
| Rousseau Chambertin | 2015 | $600 | $3,800 | +18.8% |
| Salon | 2012 | $500 | $900 | +18.5% |
| Coche-Dury Corton-Charlemagne | 2015 | $1,500 | $8,500 | +17.3% |
| Roumier Musigny | 2005 | $700 | $22,000 | +17.0% |
| Coche-Dury Corton-Charlemagne | 2010 | $800 | $8,000 | +14.9% |
| Rousseau Chambertin | 2010 | $400 | $3,500 | +13.8% |
| Lafite Rothschild | 2020 | $450 | $829 | +13.1% |
| Lafite Rothschild | 2019 | $500 | $1,109 | +12.7% |
Bottom 10 (real CAGR)
| producer | vintage | release price usd | current price usd | real cagr |
|---|---|---|---|---|
| Mouton Rothschild | 2009 | $1,400 | $850 | -5.7% |
| Haut-Brion | 2010 | $1,400 | $900 | -5.6% |
| Margaux | 2010 | $1,500 | $1,000 | -5.3% |
| Mouton Rothschild | 2010 | $1,500 | $1,000 | -5.3% |
| Margaux | 2009 | $1,300 | $900 | -4.9% |
| Haut-Brion | 2009 | $1,200 | $900 | -4.4% |
| Lafite Rothschild | 2010 | $1,800 | $1,457 | -4.0% |
| Lafite Rothschild | 2009 | $1,600 | $1,290 | -3.9% |
| Latour | 2010 | $1,700 | $1,500 | -3.4% |
| Latour | 2009 | $1,500 | $1,400 | -3.0% |
The bottom-10 list is essentially the 2009-2010 Bordeaux campaign — a single procyclical event accounting for most of the dataset's underperformance.
11. Buy candidates (May 2026)
Applying the trained model to 31 currently-purchasable wines from the 2020-2024 vintages.
Top picks
Model favors: Rousseau Chambertin 2021; Rousseau Chambertin 2020; DRC La Tache 2021; Coche-Dury Corton-Charlemagne 2021; DRC La Tache 2020.
Model avoids: Latour 2022; Lafite Rothschild 2022; Salon 2013.
Full ranking
| producer | vintage | region | current price usd | critic score | vintage quality | predicted real cagr |
|---|---|---|---|---|---|---|
| Rousseau Chambertin | 2021 | Burgundy | $3,500 | 98 | 93 | +10.4% |
| Rousseau Chambertin | 2020 | Burgundy | $4,000 | 99 | 98 | +9.9% |
| DRC La Tache | 2021 | Burgundy | $4,500 | 99 | 93 | +9.7% |
| Coche-Dury Corton-Charlemagne | 2021 | Burgundy | $8,000 | 98 | 93 | +8.6% |
| DRC La Tache | 2020 | Burgundy | $5,500 | 100 | 98 | +8.4% |
| Coche-Dury Corton-Charlemagne | 2020 | Burgundy | $9,500 | 99 | 98 | +8.3% |
| DRC Romanee-Conti | 2021 | Burgundy | $22,000 | 99 | 93 | +6.7% |
| Roumier Musigny | 2021 | Burgundy | $28,000 | 98 | 93 | +6.3% |
| Roumier Musigny | 2020 | Burgundy | $30,000 | 99 | 98 | +6.2% |
| DRC Romanee-Conti | 2020 | Burgundy | $25,000 | 100 | 98 | +5.7% |
| Mouton Rothschild | 2024 | Bordeaux | $360 | 95 | 91 | +5.3% |
| Haut-Brion | 2024 | Bordeaux | $370 | 96 | 91 | +5.3% |
| Lafite Rothschild | 2024 | Bordeaux | $372 | 95 | 91 | +5.2% |
| Margaux | 2024 | Bordeaux | $380 | 95 | 91 | +5.2% |
| Dom Perignon | 2015 | Champagne | $300 | 97 | 95 | +5.1% |
| Latour | 2024 | Bordeaux | $420 | 96 | 91 | +5.0% |
| Haut-Brion | 2023 | Bordeaux | $500 | 97 | 94 | +5.0% |
| Dom Perignon | 2013 | Champagne | $280 | 96 | 92 | +4.9% |
| Cristal | 2015 | Champagne | $340 | 97 | 95 | +4.9% |
| Lafite Rothschild | 2023 | Bordeaux | $537 | 98 | 94 | +4.9% |
| Mouton Rothschild | 2023 | Bordeaux | $440 | 96 | 94 | +4.8% |
| Margaux | 2023 | Bordeaux | $460 | 96 | 94 | +4.7% |
| Haut-Brion | 2022 | Bordeaux | $560 | 98 | 99 | +4.6% |
| Mouton Rothschild | 2022 | Bordeaux | $570 | 97 | 99 | +4.5% |
| Krug Vintage | 2015 | Champagne | $420 | 97 | 95 | +4.4% |
| Krug Vintage | 2013 | Champagne | $450 | 97 | 92 | +4.1% |
| Latour | 2023 | Bordeaux | $580 | 97 | 94 | +3.0% |
| Margaux | 2022 | Bordeaux | $680 | 98 | 99 | +2.8% |
| Latour | 2022 | Bordeaux | $750 | 98 | 99 | +2.6% |
| Lafite Rothschild | 2022 | Bordeaux | $840 | 98 | 99 | +1.6% |
| Salon | 2013 | Champagne | $1,200 | 98 | 92 | -0.1% |
12. Walk-forward backtest
At each cutoff year T, we retrain the model using only wines
with release_year ≤ T, then score test wines released in
(T, T+3]. The top-3 model portfolio is held to 2026 and compared against
the bottom-3 portfolio, all tested wines, and an equivalent S&P 500
position over the same window.
Backtest results by cutoff
| cutoff_year | n train | n test | top real cagr | bot real cagr | all real cagr | sp500 real cagr | rank corr | rank p | edge |
|---|---|---|---|---|---|---|---|---|---|
| 2008 | 40.00 | 9.00 | +4.3% | -4.8% | -1.0% | +10.0% | 0.92 | 0.00 | -5.6% |
| 2011 | 49.00 | 12.00 | +16.6% | -4.3% | +4.5% | +9.3% | 0.80 | 0.00 | +7.2% |
| 2014 | 61.00 | 9.00 | +21.2% | +4.9% | +10.7% | +7.9% | 0.55 | 0.12 | +13.3% |
| 2017 | 70.00 | 7.00 | +3.6% | +5.8% | +4.3% | +7.9% | -0.50 | 0.25 | -4.3% |
| 2020 | 77.00 | 6.00 | +4.4% | +14.8% | +9.6% | +7.2% | -0.89 | 0.02 | -2.8% |
Why the model fails in recent cutoffs
The model learned in training data that cheap-release Burgundy beats Bordeaux. From 2017 onward this rule generalized poorly because:
- Burgundy release prices climbed sharply 2017-2022 (DRC RC went from ~$5,500 in 2007 to ~$25,000 in 2020), making "cheap Burgundy" a smaller cohort.
- The 2017+ test set includes wines released into a Burgundy near-bubble that subsequently corrected in 2023-2024, mirroring the 2009-2011 Bordeaux story the model trained to avoid — but the model lacked a Burgundy-specific bubble flag.
- Bordeaux 2018-2020 vintages were released at deep discounts to pre-bubble levels, which actually produced strong returns post-2022. The model under-weighted these.
Against S&P 500: top-3 averaged +10.0% / yr real vs S&P's +8.5%, nominal edge of +1.6% / yr. But this is driven entirely by 2011 and 2014 cutoffs; remove those and the edge is negative. Add ~2.5%/yr for storage and spread and the edge disappears even on the favorable subset.
What this tells us: the model captures a real structural pattern, but the pattern is regime-dependent. Cohort leadership in fine wine shifts on roughly 10-15 year cycles (Bordeaux pre-2011 → Burgundy 2011-2022 → ???), and a static model trained on the last regime will misfire when the next one starts. A production version would need cohort-rotation logic, not just cross-sectional features.
13. Implications for an investor
- Treat fine wine as alt-asset / inflation hedge, not equity proxy. The base rate against S&P 500 is hostile and the Sharpe gap is larger than the CAGR gap.
- If you allocate, concentrate in Burgundy Grand Cru. Only cohort with positive base rate against equities and meaningfully higher Sharpe than other wine segments.
- Avoid primary-market buying during demand bubbles. The 2009-2011 Bordeaux campaigns are the textbook example. A simple rule — don't pay more than 1.5× the prior-vintage release price — would have avoided most of the bottom decile.
- Secondary market may be more efficient than primary. Buying aged Bordeaux post-correction in 2014-2016 produced materially better returns than buying en-primeur 2009-2010.
- Net returns are worse than gross. Adding ~1.5%/yr storage and ~10% bid-ask drops most cohort means below CPI. Wine investment requires structural pricing advantages (Burgundy supply) to clear the friction bar.
14. Limitations and next work
- Data provenance. Replace estimated prices with primary sources: La Place de Bordeaux release reports, Liv-ex API, Wine-Searcher pulls. Pricing accuracy of ±5% would tighten all CIs.
- Price reconstruction is model-derived. Individual wines do not literally have the cohort's volatility profile; idiosyncratic bottle-level vol is higher. True bid/ask trade prints from auctions (Sotheby's, Christie's, Acker, Heritage) would enable proper wine-level vol estimation.
- Region × tier collinearity. The panel has no Bordeaux grand-cru-tier or Burgundy first-growth-tier wines, so region and tier are perfectly correlated. Expanding to Right Bank Bordeaux, Napa cult cabs, Rhône, and Tuscan IGT would break this.
- Survivorship. The panel is built from currently-tracked, currently-traded wines. Wines fallen out of the secondary market are excluded, biasing returns upward.
- Backtest sample size. 5 cutoffs is too few for strong inference about strategy alpha. Extending the panel to Right Bank and Napa would multiply backtest power.
Source code and CSVs:
github.com/<your-handle>/squirtle.
Built with pandas, scikit-learn, statsmodels. Plots: matplotlib + seaborn.
Re-run with python build_report.py.