Compare 1-5 cities side-by-side on cost-of-living, effective tax on USD 80k remote-worker income, visa friction, and quality-of-life. Returns an arbitrage score (income preserved × QoL ÷ cost × visa-friction-penalty), ranked. Hand-curated dataset of 50 cities across 25 regions; deterministic scoring; results encoded in URL — shareable.
Eight ways to use this map
who
Who is this for?
Remote-working principals choosing where to be next: digital nomads on 1-3 year horizons, MSME founders considering relocation for tax or lifestyle, retirees with international income, and career-changers running an after-tax-income arbitrage. The dataset includes the principal's own home base (Panchkula) so the comparison includes "stay where I am" as a real option.
what
What does it measure?
Five inputs per city: cost-of-living index (Numbeo, NYC=100), 1BR rent in USD, effective tax rate on USD 80k remote earnings, visa-friction (0-100), and quality-of-life composite (safety + healthcare + climate + English-friendliness + walkability + air quality). Output: ranked side-by-side comparison of the cities you select, plus an arbitrage-score showing income preserved per QoL-adjusted dollar.
when
When to use it?
At decision points: visa renewal coming up, lease ending, child starting school, business stage shifting from product to scale. Also annually as a maintenance check — your priorities re-weight as life changes (single → couple → family → empty-nest), and the same city scores differently against each set of priorities.
where
Where does the arbitrage apply?
Income source matters. The tax rates assume foreign-source remote-work earnings; if you're selling to local clients in a destination country, domestic-source rules apply and the tax arbitrage usually disappears. Read the notes per city — special regimes (Italy impatriate, Portugal NHR sunset, Uruguay tax holiday, Georgia 1%) are flagged.
why
Why an arbitrage map?
Because the gap between the best and worst cities on identical income is large — easily 40-60% difference in disposable income after rent and tax for the same lifestyle level. Most people don't do this comparison rigorously and end up paying for inertia. The map exists to make the comparison cheap.
which
Which factors matter most?
Depends on your stage. For a 25-year-old single founder with a US/EU passport: visa friction and cost dominate. For a 45-year-old family with school-age kids: QoL composite and predictability dominate, tax matters less. For a high-earner pre-exit: tax rate dominates everything else. The score formula is transparent — you can re-weight if your priorities differ from the default.
whose
Whose data underwrites it?
Cost-of-living: Numbeo quarterly snapshot. Rent: Numbeo + cross-checked against local listings. Tax: each country's national tax authority + the special regimes are documented from the tax-authority Q&A pages or budget speeches. Visa-friction: composite of authoritative immigration department pages + Nomad List crowd-data for processing-time reality vs official quote. QoL: WHO healthcare, EF EPI for English, Numbeo safety, IQAir for air. All hand-curated by AJG editorial — no scraping, no APIs at runtime.
how
How is the score computed?
arbitrage_score = (income_preserved × QoL_composite) / (cost_index × visa_friction_penalty). income_preserved = (1 - tax_rate). visa_friction_penalty = max(0.5, (100 - visa_friction) / 100 + 0.5) — caps the penalty so a brutal-visa city isn't infinitely worse than an easy-visa one. The result is a number where higher means more after-tax-income-and-QoL per cost-of-living unit. Compare scores within a sensible peer set; cross-region comparisons need the notes alongside.
Totality lens · 32 points to ponder · 16 user POV + 16 developer POV · this tool
User POV — for the practitioner using this tool
Eight dimensions
1 · Possibility
A location-flexible professional can in principle compute the precise cost-arbitrage between any pair of the 50 cities with deep cost-of-living data, factoring in housing-tier, family-status, professional-grade, and currency-volatility. The full-arbitrage envelope ranges from negative-arbitrage (moving from Bangalore to San Francisco loses 60-70 percent purchasing power) to highly-positive (moving from London to Lisbon while keeping London-tier remote income preserves 40-50 percent additional purchasing power).
2 · Plausibility
A typical OECD-currency-earning professional moving to a strategic-arbitrage destination realistically captures 30-50 percent additional preserved purchasing power, sustained over the relocation horizon. Higher captures (60-100 percent) are achievable but require lifestyle-discipline through the first year (resisting upgrade-spending). Lower captures (10-20 percent) suggest the destination was not actually arbitrage but rather lateral cost-of-living similar to origin.
3 · Probability
Of professionals who run the diagnostic, identify a strategic destination, and execute the relocation with discipline, perhaps 70-80 percent capture material arbitrage in year one and sustain it through year three. The remaining 20-30 percent erode the arbitrage through upgrade-spending in housing and lifestyle, ending year-three at near-parity with origin-cost — meaning the relocation produced no real cost-benefit.
4 · What works
What works: computing arbitrage at candidate-specific lifestyle level not statistical-average lifestyle; cross-checking Numbeo against Mercer + Expatistan + actual local rent platforms; opening destination banking before relocation; resisting upgrade-spending through the first 12 months post-relocation; reviewing the actual burn-tracker monthly against the pre-relocation projection.
5 · What doesn't work
What does not work: using single-source cost indices without cross-checking; assuming the headline arbitrage will hold without lifestyle discipline; relocating before computing the full picture (visa, tax, banking, healthcare, schooling); forgetting one-time relocation friction-costs (typically 10-30 percent of annual destination living-cost); upgrading housing tier on arrival because the new tier is "still cheaper than home".
6 · Common pitfall
The most common pitfall is upgrade-creep through year one. A professional moving from London to Lisbon with 40 percent projected arbitrage often ends year one with 15-20 percent actual arbitrage because the cost-savings get reinvested into better housing (centre-of-Lisbon vs periphery), more dining out, more travel, etc. The arbitrage exists only if disciplined; without discipline, it evaporates predictably.
7 · Counter-intuitive insight
Counter-intuitively, the strongest arbitrages are in cities with strong-currency (relative to home) rather than weak-currency. A USD-earner moving to a USD-pegged emerging-market city captures arbitrage stably; moving to a weak-currency emerging-market city captures it volatilely (currency depreciation can wipe out the apparent arbitrage in a single bad quarter). Stability of arbitrage matters more than nominal level.
8 · Highest-leverage move
The single highest-leverage move at the cost-arbitrage stage is to compute a candidate-specific monthly burn-tracker BEFORE relocating, then validate it against actual spending during the first three months of residence. Most professionals eyeball the arbitrage from headline indices; the calibrated burn-tracker reveals whether the captured arbitrage matches the projected arbitrage. Discipline gets enforced by the tracker.
Eight user intents
9 · Who gains most
Location-flexible professionals on remote contracts, salary-arbitrage seekers (people considering accepting lower nominal salary in lower-cost city), retirement planners optimising fixed-income lifestyle, dual-career couples optimising joint outcomes, corporate mobility teams setting expat compensation. The 30-55 age band dominates.
10 · Irreducible essence
The irreducible essence: compute arbitrage at candidate-specific lifestyle level, cross-check three sources, build pre-relocation burn-tracker, validate during first three months, resist upgrade-spending through year one.
11 · Optimal timing
Best applied 6-12 months pre-relocation (allows banking + visa + tax planning to align). Less useful 1-2 months pre-relocation (tax-residency-year planning becomes constrained). Quarterly re-computation post-relocation through first 24 months tracks whether captured arbitrage matches projected.
12 · Where it matters most
Geography-specific. The 50 deeply-covered cities span all major OECD destinations (London, NYC, San Francisco, Singapore, Tokyo, Sydney, Toronto), strategic-arbitrage destinations (Lisbon, Mexico City, Bengaluru, Tbilisi, Tallinn, Bali, Buenos Aires), and lateral-comparison destinations (Berlin, Barcelona, Auckland). The 2,326-city corpus has index-level data for the rest.
13 · Why misunderstood
Living-cost arbitrage is misunderstood because professionals experience cost subjectively against their current lifestyle, missing that the perceived "expensive" or "cheap" of a destination is heavily anchored to their origin lifestyle baseline. The diagnostic forces externally-anchored measurement (numerical burn-tracker) over internally-anchored measurement (subjective sense of expense).
14 · Highest-leverage sub-paths
Highest-leverage destinations vary by origin currency. For USD-earners: Lisbon (1.4x preserved), Mexico City (2x), Bengaluru (2.5x for returning Indian-context), Tbilisi (1.8x), Tallinn (1.3x). For GBP-earners: same set with slightly different ratios. For weak-currency-earners: arbitrage typically reverses; lateral moves matter more than nominal arbitrage.
15 · Whose advice to trust
Trust: Numbeo (broad coverage), Mercer (narrow but accurate for expat-tier), Expatistan (consumer cross-check), national CPI from statistical services, local rent platforms (Rightmove, Idealista, ImmobilienScout, NoBroker, etc.). Ignore: aggregator-driven "cheapest cities" lists without methodology, marketing-driven retirement-haven articles, single-anecdote relocation stories on social media.
16 · How to proceed differently
Proceed by listing your current monthly burn by category (rent, groceries, transport, utilities, healthcare, schooling, leisure, savings target), inputting the same lifestyle-level into the destination, computing the arbitrage, building a pre-relocation tracker spreadsheet, comparing actual vs projected during months 1-3 post-relocation, adjusting if reality diverges. Re-run quarterly through year two.
Developer POV — for the architect, maintainer, AI tool, future contributor
Eight dev dimensions
17 · Data architecture
Living-cost-arbitrage composes from data/atlas-living-cost-arbitrage.php (50 cities deep with cost-component breakdown across 12 categories), data/cost-of-living.php (Numbeo + Mercer + Expatistan cross-checked indices for the broader 250-city set), data/currency-volatility-data.php (5-year rolling for 80 currencies), and includes/atlas-living-cost-arbitrage-engine.php (the compute layer). Engine runs entirely in PHP at request time; no external API.
18 · Schema markup
SoftwareApplication on the toolkit page; Dataset schema for the underlying cost-component data; ComparisonTable schema (custom subtype of Table) for pairwise city comparisons; HowTo for the diagnostic flow. Per-pairwise comparison URLs would emit Dataset.variableMeasured arrays with cost-component breakdowns.
19 · Internal linking
Forward to /toolkit/trade-finance-instrument/. Outward to /cost/{city}/, /cost-comparison/{a}-vs-{b}/, /cities/{slug}/cost/. Cross-content injector tokens: "cost", "arbitrage", "purchasing-power", "burn-rate", "relocation-cost". Link weaver hyperlinks city names + currency codes.
20 · Page-speed posture
Payload ~24 KB (denser than other toolkit pages because it loads 50-city × 12-category cost matrix into JS for client-side recomputation as user adjusts inputs). Render ~280-450 ms server-side. JS ~12 KB minified vanilla. LCP typically the page hero. CLS near zero.
21 · Mobile UX
Cost-component input renders one-category-at-a-time on mobile (12 categories × 2 inputs each); multi-column on desktop. Tap-targets ≥48px. Native <input type="number"> with appropriate inputmode="numeric" for mobile-keyboard. Result-display collapses to single-column at narrow viewports.
22 · Accessibility
Native semantic HTML: <fieldset> per cost-category-cluster, <input type="number"> + <label> for amounts, native <select> for currency/city. Keyboard-accessible throughout. Focus-visible outline. Result-tables use <thead> + <th scope="col">. Color-blind-safe palette for arbitrage-bands.
23 · SEO saturation
URL: /toolkit/living-cost-arbitrage/. Canonical. OG. Twitter. Sitemap. IndexNow on edit. SoftwareApplication + Dataset schema. Per-pair URLs at /cost-comparison/{a}-vs-{b}/ provide deep-content surface (curated 5,000-pair set; arbitrary pairs noindex).
24 · Extensibility
To add a new city to the deep-50: append to data/atlas-living-cost-arbitrage.php with all 12 cost-categories. To add a new cost-category: append to category-schema map (more involved; affects all 50 cities). Total ship: ~45 min per new city; ~3 hours per new category cluster.
Eight dev intents
25 · Who maintains
Joint. Cost-component data refreshed quarterly (Numbeo updates rolling, Mercer updates annually, Expatistan updates rolling, national-stats-office updates monthly to annually). Currency-volatility refreshed monthly via cached central-bank reference rates.
26 · What tech stack
Tech: PHP 8.3 + vanilla JS for client-side arbitrage recomputation. Helpers: ajg_atlas_arbitrage_compute(), ajg_atlas_arbitrage_pair(), ajg_atlas_currency_volatility(). No FX API at runtime — daily-cached snapshots.
27 · When to refresh
Quarterly cost-component refresh; monthly currency-volatility cache rotation; annual deep review of cost-category schema. IndexNow on edit. Lastmod tracks file mtime.
Why client-side arbitrage recomputation rather than server-side: as user adjusts lifestyle-level inputs, the recomputation needs to be instant for usability; round-tripping to server for each adjustment would feel sluggish. JS-side compute on a pre-loaded matrix is fast and works offline post-load.
Same ownership. Cost-component data sources cited per-city in cost-of-living.php. Currency data via central-bank reference rates with attribution.
32 · How to extend
To support a new lifestyle-tier (e.g., adding "family-with-school-age-kids" tier alongside the current "single-professional" and "couple-no-kids" tiers): (1) define category-weights for the new tier; (2) append to lifestyle_tiers map in atlas-living-cost-arbitrage.php; (3) update engine compute logic to apply weights; (4) add tier-selector to UI. Total ship: ~3 hours.