Burger prices & currency valuation
liveLocal price, dollar price and implied over/undervaluation for the pinned cycle, plus the full series back to 2000.
Transparency
No black boxes, no proprietary weighting.
Every score on this site comes from an arithmetic formula over public data. All of them are below, alongside where each input comes from and — just as importantly — what these numbers cannot tell you. The engine is deterministic: identical inputs always produce identical output.
Six inputs are live public data. The rest are seed values — authored estimates that stand in until a feed replaces them. Every pillar is labelled either way, on every page it appears.
Local price, dollar price and implied over/undervaluation for the pinned cycle, plus the full series back to 2000.
Annual consumer-price inflation (FP.CPI.TOTL.ZG). Feeds risk, economic strength and forecast spread.
Modelled unemployment rate (SL.UEM.TOTL.ZS). Sets the employment pillar and weighs on risk.
Life expectancy at birth (SP.DYN.LE00.IN), mapped to the health pillar on an absolute scale: 50 years reads 0, 85 years reads 100.
Annual real growth (NY.GDP.MKTP.KD.ZG). The largest single input to the opportunity score.
Intentional homicides per 100,000 (VC.IHR.PSRC.P5), on an absolute scale where ~28.6 per 100k reads 100. Homicide only — not total crime, which is not comparable across reporting regimes.
Income, safety, education, happiness, housing, infrastructure, governance, climate, digital, business environment, consumer readiness, tourism, mobility, air quality and cost of living are illustrative values, not measurements. Cost of living is not a pillar itself — it is inverted into the affordability score inside purchasing power.
Time series on /trends cover 2004–2025. Burger prices are pinned to the 2026-01-01 cycle; the upstream file carries a later one, which is trimmed so the charts cannot disagree with the headline figures.
Raw indicators arrive in incompatible units — percent, years, per-100,000, local currency. Each is min-max rescaled across the 22-market set so they can be combined.
The weakest market in the set scores 0 on that indicator, the strongest scores 100, everyone else lands proportionally between.
score = (value − min) ÷ (max − min) × 100Scores are therefore relative to this set of markets, not absolute. 100 means best here — not best possible.
Two indicators are not rescaled against the other markets at all — they are mapped onto a fixed scale, so the score means the same thing regardless of who else is in the set.
health = clamp((lifeExpectancy − 50) ÷ 35 × 100) · crime = clamp(homicidePer100k ÷ 28.6 × 100)Life expectancy of 50 years reads 0 and 85 reads 100; a homicide rate of about 28.6 per 100k reads 100. Using min-max here would make a market look healthy simply because its peers were sicker.
Where a higher raw reading is the worse outcome — cost of living, housing cost, climate risk, inflation, unemployment — the scale is flipped.
score = 100 − normalized(value)So a better real-world condition always produces a higher score, everywhere on the site. Rows where a low number wins are labelled as such.
The headline numbers, each a weighted blend of the pillars. clamp holds a result inside 0–100.
One number for how attractive a market looks across quality of life, spending power, growth, risk and business conditions.
overall = 0.30·GLI + 0.25·purchasingPower + 0.20·opportunity + 0.15·(100 − risk) + 0.10·businessScoreRisk enters inverted, so a low-risk market gains rather than loses. The five weights sum to 1.
A broad read on quality of life: the unweighted average of all twenty pillars, each already 0–100.
gli = mean(20 pillar scores)Unweighted on purpose — weighting it would bake one definition of a good life into the headline. Apply your own weights on the relocate page instead.
How far local income actually stretches: what people earn, set against how expensive the market is.
purchasingPower = 0.6·incomeScore + 0.4·affordabilityScoreaffordabilityScore is cost-of-living inverted, so a cheaper market scores higher. Both inputs are min-max normalized across the market set.
How many burgers an average local salary buys, relative to the other markets — an everyday affordability gauge.
bigMacAffordability = normalize(incomeNetUSD ÷ bigMacUSD)Both sides are in US dollars, so the comparison holds across currencies.
How promising the market looks for growth.
opportunity = 0.30·gdpGrowthScore + 0.30·businessEnv + 0.25·purchasingPower + 0.15·tourismThe growth term is live real GDP growth (3-year trailing average), min-max normalized. Business environment and tourism are seed values.
What could go wrong operationally — prices, jobs, climate exposure, a weakening currency, weak institutions and lethal violence.
risk = 0.22·inflation + 0.18·unemployment + 0.15·climateRisk + 0.18·currencyRisk + 0.12·(100 − governance) + 0.15·crime, where currencyRisk = clamp((0.5 − currencyTrend ÷ 2) × 100)Inflation and unemployment enter here directly, where a higher reading is itself the downside. Everywhere else they are inverted. Lower risk is the better outcome.
Near-term strength of the local economy: income, jobs, prices and business conditions.
economic = 0.30·incomeScore + 0.25·employmentScore + 0.25·inflationScore + 0.20·businessEnvInflation and employment are inverted here, so a calmer economy ranks higher.
How ready and able local consumers are to spend, and how reachable they are.
consumerReadiness = 0.40·purchasingPower + 0.30·incomeScore + 0.30·digitalHow straightforward it is to operate in the market.
businessScore = 0.60·businessEnv + 0.40·infrastructureBoth inputs are seed values on a 0–100 scale.
How much the underlying data for this market can be relied on. Lower means read every other number with more caution.
dataConfidence = seed value per market (0–100)Deliberately NOT derived from the other scores — it is a separate judgement about the data, not about the market. A strong market with thin data is not the same thing as a weak market.
One identical product priced everywhere, used as a purchasing-power and currency gauge.
The local price converted at the prevailing exchange rate.
usdPrice = localPrice ÷ marketExchangeRateWhether a currency buys more or less than burger parity implies, measured against the US benchmark. Positive reads overvalued, negative undervalued.
valuation% = (bigMacUSD − usBigMacUSD) ÷ usBigMacUSD × 100Beyond ±10% reads as over- or undervalued; inside that band, fair.
How many burgers a month's net pay buys — the comparison that holds the product constant and lets the wage move.
macsPerSalary = incomeNetUSD ÷ bigMacUSDMinutes of work to afford one burger.
workMinutes = bigMacUSD ÷ (incomeNetUSD ÷ 10,560)10,560 minutes is a 22-day, 8-hour working month.
Three cases around the market’s own score. The spread is a measure of uncertainty, not of ambition.
How far the optimistic and pessimistic cases sit from the base case. Volatile, poorly-measured markets fan out; stable ones stay tight.
spread = clamp(round(max(0, inflation − 2)·0.35 + |currencyValuation|·0.06 + risk·0.06 + (100 − confidence)·0.05), 3, 18)This is why a high-inflation market shows a wide band even when its base score is unremarkable.
Base is the market's own score; the other two sit symmetrically either side of it.
conservative = overall − spread ·|· base = overall ·|· growth = overall + spreadThe upside carries more weight where opportunity outruns risk, and less where it does not.
P(base) = 0.38 ·|· P(growth) = 0.62 × (opportunity − risk + 100) ÷ 200 ·|· P(conservative) = remainderIt changes what you look at, not what the market scores. The market scores are identical across all 8 industries — the industry selects which indicators surface and over what horizon they matter.
The most useful part of any methodology. These are real limits, not disclaimers.
They are authored estimates, not measurements. Any score leaning on them is indicative. The data-confidence score exists to make that visible rather than hidden.
Scores are min-max normalized across exactly these markets, so every score is relative to this group. Adding or removing a market shifts everyone else's numbers. A score of 100 means 'best here', not 'best possible'.
It ignores rents, wages, taxes and margins, all of which legitimately differ between countries. It is one input among twenty and never scores a market alone.
The timing score reflects current readings and recent direction. It is not a forecast, and a closed window is not a prediction of decline.
The World Bank restates history. Data is committed as a dated snapshot and refreshed deliberately, so scores never move without a visible change to the repository.
Keeping this honest: every formula above is transcribed from the scoring engine. A transparency page that drifts from the code is worse than none at all, because it reads as authoritative while being wrong — so when a formula changes, this page changes with it.