InvestmentLEGO· 10 min read

How to calculate the ROI of a LEGO set — and how Cault does it for you

Basic formula, annualised ROI, liquidity signal, sealed premium, theme benchmark, retirement phases, estimated break-even. Everything Cault calculates automatically — explained from A to Z.

Published 20 May 2026 · Updated monthly

A LEGO set is fun. But in some cases, it's also a serious investment. A study of 2,322 sets sold between 1987 and 2015 calculated an average annualised return exceeding 11% — comparable to stock market performance over the same period. So how do you know if your collection is really gaining in value?

The basic formula

Gross ROI
ROI (%) = ( Resale price − Purchase price − Fees ) / Purchase price × 100

Concrete example — The Parisian Restaurant #10243

Bought at launch for €149.99. Retired, now trades at €420 on BrickLink sealed. Selling fees: €25.

ROI = (420 − 149.99 − 25) / 149.99 × 100 ≈ 163%

For €150 invested → you recover approximately €395 net.

Annualised ROI: the real comparative measure

A gross ROI of 163% over 8 years is very different from 163% over 2 years. To compare sets against each other — or against other investments — you need to calculate the annualised ROI.

Annualised ROI (linear method — used by Cault)
ROI/year = Gross ROI / Number of years held

Example: 163% over 8 years → 163 / 8 ≈ 20.4%/year

Methodological note

Cault uses linear annualisation (ROI / years) rather than the exact CAGR formula. The difference is small over 1–5 years but widens over very long periods. For a 163% ROI over 8 years: linear = 20.4%/year vs CAGR = 13.7%/year. Cault displays the linear version for readability — keep this in mind if you compare with stock market indices that use CAGR.

How Cault determines your reference price

Before calculating ROI, you need a price. Cault reads 4 distinct metrics from BrickLink, updated daily:

price_new

Listed items (new)

Average of currently requested prices for a sealed new set. Trend indicator — may include speculative prices.

price_used

Listed items (used)

Average prices requested for an opened or used copy. Reflects the seller's market state.

price_sold

Completed sales (new)

Average prices actually paid for sealed new over the last 6 months. The most reliable metric for sealed.

price_used_sold

Completed sales (used)

Average prices actually paid for used over the last 6 months. Reference metric for opened condition.

Why prioritise completed sales?

Listed prices reflect what sellers hope to get. Completed sales reflect what buyers have actually paid. Cault prioritises completed sales: max(price_sold, price_new) for sealed, max(price_used_sold, price_used) for used.

The liquidity signal — how easy is it to sell?

A set can have a great ROI on paper but be very difficult to sell. Cault calculates a liquidity signal based on the sales/listings ratio over 6 months:

Liquidity ratio
Ratio = Units sold (6 months) / Units currently listed

Sealed new: qty_sold_new  / qty_listed_new
Used:        qty_sold_used / qty_listed_used
≥ 1,5×

High demand

Buyers purchase faster than sellers list. Price increase likely.

≥ 1,0×

Active market

Favourable buyer/seller balance. Good liquidity.

≥ 0,5×

Balanced

Supply and demand balance each other. Stable prices.

< 0,5×

Excess supply

More sellers than buyers. Downward price pressure.

The sealed premium — condition changes everything

An unopened set is structurally worth more than an opened one. Cault automatically calculates the sealed premium and contextualises it:

Sealed premium
Sealed premium (%) = ( Sealed new price − Used price ) / Used price × 100
≥ +40%High demand for sealed
+20% à +40%Active sealed market
+10% à +20%Moderate premium
0% à +10%Small new/used gap
< 0%Used > sealed

A high sealed premium (>40%) is a strong signal: buyers are willing to pay much more for an unopened copy, indicating sustained collector demand. A negative premium (<0%) is rare but can indicate a quality or image problem with the set.

Theme benchmark — your set vs the rest of the theme

Cault doesn't just give you your set's ROI in isolation. It compares it against the average of all sets in the same theme in our database.

Average annual theme ROI
For each set in the theme:
  roi_set = (market_price − retail) / retail × 100
  years   = today − retirement_date (or release year)
  roi_yr  = roi_set / years

Theme average = average(roi_yr) across all sets in the theme
                with valid market data (≥ 6 months old)

What is it for?

If your Star Wars UCS set shows +12%/year and the Star Wars theme average is +9.5%/year, you know your set outperforms its theme. It's the same reasoning as a fund manager comparing their performance against an index.

The 3 retirement phases

After its end of production (EOL — End Of Life), a LEGO set goes through 3 distinct phases. Cault detects them automatically and adapts its indicators accordingly.

1

Pop Phase

⚠ Volatile

0 – 6 months after EOL

Volatile prices. Post-retirement buying euphoria, residual stock still circulating. Prices can rise quickly or stagnate depending on the set's popularity.

2

Appreciation Phase

↑ Active

6 – 18 months after EOL

Active appreciation phase. Residual stock runs out, secondary demand asserts itself. This is often where value grows fastest.

3

Mature Phase

~ Stable

18 months+ after EOL

Mature market. Appreciation slows and stabilises. Some sets continue growing slowly, others stagnate. This is where you assess whether the set is a "classic" or not.

Estimated break-even — when the set becomes profitable again

For sets in the mature phase whose used price is still below retail, Cault estimates a return-to-positive year. The calculation is based on the observed trajectory since retirement:

Estimated break-even
Opening baseline   = Retail price × 0.70
  (−30% = typical loss on opening a set)

Estimated annual gain = (Current price − Baseline) / Years since retirement

Years to break-even = (Retail − Current price) / Annual gain

Return-to-positive year = Current year + Years to break-even

Example

A set retired 3 years ago, retail €200, current price €165.

Baseline = €140 → estimated annual gain = (165 − 140) / 3 = €8.3/year

Remaining years = (200 − 165) / 8.3 ≈ 4.2 years → estimated return to positive ~2030

Your overall portfolio ROI

Across your entire collection, Cault automatically aggregates:

Portfolio ROI
Total invested value = Σ purchase_price of all your items
Total market value   = Σ market_price of all your items

Overall ROI (%) = (Market value − Invested value) / Invested value × 100

This calculation is available per collection (LEGO sets, LEGO minifigs) and globally across all collections. Here is an example portfolio of 3 sets:

SetPurchaseMarketGross ROIROI/yr
Millennium Falcon #75192799,99 €1 450,00 €+81%+9.8%/yr
Château de Poudlard #71043469,99 €980,00 €+109%+15.2%/yr
NASA Apollo Saturn V #92176119,99 €310,00 €+158%+18.4%/yr
Total collection1 389,97 €2 740,00 €+97%~14,5%/yr

Benchmarks to assess your performance

< 5%/an

Disappointing

The set didn't perform as expected

5% – 10%/an

Decent

Within the historical low market average

10% – 15%/an

Good

Above average — a real performer

> 15%/an

Excellent

Top performer — this set is a winner

~7–8%/an

CAC 40

30 years, dividends reinvested

~4–5%/an

Real estate

France, excl. rent

>11%/an

LEGO (avg.)

2,322 sets, 1987–2015

What Cault doesn't yet calculate automatically

Cault calculates the gross potential gain based on semi-real-time market prices. Two things remain manual for now:

  • Selling fees — platform commissions (8–15%) and shipping costs are not yet automatically deducted. You can enter them in the transaction interface for a fee-net ROI.
  • Taxation — above certain annual disposal thresholds, capital gains may be taxable. Cault does not perform tax calculations.

Integration of automatic fee estimates based on the chosen resale platform is on our roadmap.

Conclusion

Calculating the ROI of a LEGO set is accessible to everyone. The formula is simple: (resale − purchase − fees) / purchase. What changes with Cault is that you no longer have to do it yourself — and you have far more refined indicators than a simple percentage: liquidity signal, sealed premium, theme benchmark, retirement phase, estimated break-even.

Whether you're starting to collect with an investment mindset, or simply want to know if your collection is worth more today than yesterday — that's precisely what Cault was designed for.

Related articles

Enjoyed this article? Find a summary on our social media — and follow us so you never miss anything.

Cault

All these calculations, automatically.

Gross ROI, annualised ROI, liquidity signal, sealed premium, theme benchmark, break-even. Free to start.

Track my collection for free →