"""Perpetual-traveller / nomad regime — 0% income tax + 1% regulatory risk premium on all flows. The 1% premium captures the real-world risk that a "no tax residence" posture eventually attracts adverse rulings, the OECD CRS net tightens, or a destination starts taxing previously-exempt foreign income (e.g. Thailand 2024 remittance rule). We don't try to model the actual mechanism — it's a Bayesian fudge factor. Tunable via the constructor. """ from __future__ import annotations from decimal import Decimal from fire_planner.tax.base import TaxBreakdown, TaxInputs, TaxRegime class NomadTaxRegime(TaxRegime): name = "nomad" def __init__(self, regulatory_premium_rate: Decimal = Decimal("0.01")) -> None: self.regulatory_premium_rate = regulatory_premium_rate def compute_tax(self, inputs: TaxInputs) -> TaxBreakdown: # ISA withdrawals are tax-free in the UK; for a nomad they're # just cash. The risk premium applies to cash that flows # *outside* a UK wrapper because that's the boundary the # premium is hedging. chargeable = (inputs.earned_income + inputs.pension_withdrawal + inputs.capital_gains + inputs.dividends + inputs.interest) return TaxBreakdown(other=chargeable * self.regulatory_premium_rate, notes=("nomad", f"premium_rate={self.regulatory_premium_rate}"))