Methodology
Reference document. UI labels are translated in Ranking.
Score version: v10 · Indicative data as of 2026-07.
This document explains how to read the ranking. It is not an official index:
liberty scores are structured judgements, not pure statistical measurements.
Liberty mode (7 dimensions)
Each territory receives a 0–10 score (no half points) on:
| Key | Dimension | What raises the score | What lowers it |
|---|---|---|---|
tax | Taxes & expat arbitrage | Low / territorial tax / foreigner regimes | High progressive income tax, heavy exit tax |
money | Money & banking | No capital controls, cash/crypto, stable currency | Freezes, capital controls, hyperinflation |
economy | Economy & innovation | Easy company formation, dynamism | Bureaucracy, stagnation |
property | Property & building | Foreign freehold, right to build | Land bans, paralysing zoning |
self | Individual freedoms | Homeschool (explicit status), no conscription, few mandates | Military service, strong health/school mandates |
space | Resilience & space | Low density, self-sufficiency, refuge | Overcrowding, total import dependence |
infra | Schools & health | Accessible, quality education and care | Weak or inaccessible schools/hospitals |
Indicative scale
- 9–10: among the world’s best on that axis
- 7–8: clearly favourable
- 4–6: median / mixed
- 1–3: clearly unfavourable
- 0–1: extreme (failed state, total control)
Overall score
\[
\text{score} = \sum_d \text{note}_d \times \frac{w_d}{\sum w}
\]
Weights \(w_d\) come from sliders or a persona. If weights do not sum to 100,
the score is renormalised (proportions matter, not the raw total).
Variants & map
- Several rows may share one country (
Italy (Normal)/Italy (300k Flat), Spanish regions…). isoidentifies the territory;map_iso(if set) picks the map polygon. Otherwiseisois used.- Clicking a polygon shows every variant for that
map_isoin the panel.
Expat regimes (toggle)
When enabled, the tax score for eligible countries is replaced by the
tax_score from the territory_regime toggle link into the regime catalogue
(Beckham, NHR/IFICI, lump-sum, FIG…).
Real-estate mode (focus, not exhaustive)
~30 freehold markets ranked + a few excluded markets listed separately.
Criteria: yield, rental/CG tax, demographics, debt, price trend, costs, credit, liquidity, landlord law, FX.
- Computed from raw inputs: yield, trend (overvaluation), and often capital gains (exempt years).
- Stored indicative scores: other
s_*fields. - Reference sources listed under the table (Numbeo, IMF, PwC, BIS…).
When capgains_*_exempt_years is set for the active holding mode,
the CG score comes from that duration (full exemption). Three distinct modes:
| Mode | Meaning | e.g. France |
|---|---|---|
| -- | -- | -- |
primary | Primary residence | Exemption (0%) |
personal | Investment in own name | Declining allowance, 0% social charges at 30 years |
company | Via company (CIT) | No “own-name duration” allowance |
The RE ranking uses the selected mode (default: personal). If a mode
has no data, the score falls back to personal; the UI clearly shows
the gap. The Netherlands illustrates primary (eigen woning, 0%) vs
Box 3 investment.
Business mode (hub focus)
~40 jurisdictions. Corporate tax & CPI (corruption) anchored on public sources; the rest is indicative.
Weight profiles: Solo (exit + CIT + ease), Employer (labour + legal),
Holding (holding regime + exit + reputation + CFC).
CFC criterion: how light Controlled Foreign Company rules are **if you are
tax-resident in that jurisdiction** (high score = weak or no CFC).
e.g. FR 209 B / 123 bis, US GILTI/Subpart F, EU ATAD, vs Panama/Paraguay/UAE
often without notable CFC. Labels are indicative.
Tax risk & enforcement (s_enforcement): estimate of how severe
tax/legal controls on companies are (audits, substance, TP,
abuse of law…). High score = softer / more predictable climate (good for the
ranking). Distinct from reputation (blacklists / perceived compliance)
and CPI (corruption). Labels are indicative.
US LLCs (Wyoming / Delaware / New Mexico): same tax assumption: 0% as long
as there is no effectively connected US income (ECI). Ranking gaps
do not come from CIT, but from indicative scores:
| Setup & admin | Reputation | Holding | |
|---|---|---|---|
| -- | --: | --: | --: |
| Wyoming | 10 | 9 | 9.5 |
| Delaware | 9 | 9.5 | 9.5 |
| New Mexico | 9 | 8 | 9.5 |
Wyoming leads in Solo (ease / maintenance fees). Delaware can lead in
Holding on reputation. New Mexico stays behind on reputation.
Updates
Edit data/seed-data.json, run npm run seed (validates then reloads SQLite).
Reread this file when the grid or sources change (scores_version).
Decorrelation (v2)
The self, space and infra axes were adjusted to reduce correlation
with economy / property (city-states vs spacious territories, havens vs
public services, etc.). The goal is not zero correlation, but personas that
actually move the ranking.
Structured tax detail
When available, tax_detail also exposes income_min/max, inheritance_*,
corporate_* (numeric rates derived from labels) for comparison.
Homeschooling (self axis)
Indicative categorical status per territory (homeschool / SQL table), shown
in list detail and the map panel. It does not replace the self score (which
also aggregates conscription, health mandates, etc.).
| Code | EN label | Meaning |
|---|---|---|
free | Freely allowed | Recognised, little / no oversight |
regulated | Regulated | Legal with filing, exams or supervision |
restricted | Restricted | Prior authorisation or narrow grounds |
banned | Banned | Compulsory school attendance |
grey | Grey area | Unclear frame / conflicting sources / informal practice |
unknown | Not coded | Not yet classified in the database |
Working source: data/homeschool.json (ISO + name overrides) merged
into seed-data.json at load. Not legal advice.
Jurisdiction types
jurisdiction_type ∈ country | subdivision | regime | freezone | microstate
with parent_iso / variant_of for map hierarchy.
v3: follow-on work
- Residualisation of
property/money/taxvseconomy(lower correlations). - Variant badges on the map (centroid + ×N badge).
- Broader tax coverage (~170 jurisdictions) with min/max.
parent_key+/api/jurisdictionsendpoint.- Runtime derivation of
s_debt/s_rentalfrom text when needed (lib/scoring.js).
v4
- Stronger residualisation of
money/tax/selfvseconomy(pairwise > 0.70 removed excepteconomy×property~0.70). - Indicative tax coverage ~220 / 238.
- Variant focus on the map: badge/map click recolours the polygon with the variant score;
map-paint.jsextracted.
v5
- Residualisation of
propertyvseconomy(pairwise > 0.55 excepteconomy×infra). txcostScoreFromText+ fallback inreFactor.GET /api/jurisdictions/:key+ multi-variant hubs banner on the map.- RE / Business comparators extracted into
modes-re-biz.js.
v6
- Normalised SQL
jurisdictiontable (parent_keyFK) populated at seed. - SVG hatching on multi-variant polygons.
GET /api/stats(coverage + correlations > 0.55).- Docker probe requires the
jurisdictiontable.
v7
- Light residualisation of
infravseconomy(no pair > 0.55 left). - Min–max score ranges on hubs / tooltips / map panel.
- Richer CSV (
parentKey,income,corporate). - UI meta: tax coverage + hubs from
/api/stats.
v8
- Indicative tax coverage 238/238.
- “Hide low confidence” filter.
- URL sharing:
iso/tidfor map focus; Escape closes the panel.
Tax confidence (review 2026-07)
~35 jurisdictions moved from low → medium/high when IR / CIT / inheritance
ranges are published (PwC WTS, Tax Foundation, national texts).
Opaque or unstable states stay low (see data/fiscal-confidence-audit.json).
Labels remain indicative ranges.
v9
- Property capital gains split into 3 holding modes: primary residence /
personal investment / via company (cg_ + s_cg_ scores).
- UI switch + URL
hold=; score and CG column follow the active mode. - France / Netherlands (and other freehold markets) filled to distinguish regimes.
- Business: CFC criterion (tax residence).
v10
- Business: Tax risk & enforcement criterion (
enforcement_text+s_enforcement).
High score = lower perceived severity. Weighted with CFC in Solo / Employer / Holding.
v11
- SQL tables
regime(catalogue) +territory_regime(toggle links and dedicated rows);
GET /api/regimes; compat territory.regime for scoring.
- Map:
public/regions.geojson(admin-1 polygons) + regionalmap_iso
(US-TX, ES-CT, CH-ZG…); panel / hubs grouped by family (familyIso /
parentKey).
Cost of operating a business (editorial overlay)
Outside the 0–10 score. File data/country-editorial.json
for all Business hubs in the seed (~43):
cost_band:low|moderate|high|very_highsetup_usd_min/max,annual_usd_min/max: indicative order-of-magnitude (USD)cost_note_fr/cost_note_en: setup + run readingsources[]: public URLs used to calibrate rangeshub_name: aligned on seedterritory.name(join key)
Scope: formation, agent/secretary, address, lean accounting/audit.
Out of scope: founder salary, personal rent, personal income tax; share capital noted separately when material (DE/CH/LU…).
Always labelled indicative on country pages.