docs(fire-planner): document FIRE countdown; flag stale playbook
README: add spend_model/geo/fire_target modules, the recompute-fire-targets command, and the fire_target table. PLAYBOOK_VIKTOR.md: add a superseded-notice header — it anchors on Cyprus/£1.5M/£60k, but the base case moved to Bulgaria, real NW is ~£1.13M, and the simulator now drains tax (so its regime-invariant claim is false). Point readers to the live FIRE Countdown dashboard. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
edb4d11352
commit
6efe3b0c31
2 changed files with 25 additions and 2 deletions
|
|
@ -1,5 +1,17 @@
|
||||||
# Viktor's UK-exit playbook — derived from fire-planner runs
|
# Viktor's UK-exit playbook — derived from fire-planner runs
|
||||||
|
|
||||||
|
> ⚠️ **Partially superseded (2026-06).** This 2026-04-26 run anchors on
|
||||||
|
> Cyprus, NW £1.5M, and £60k spend. Later decisions moved the base case to
|
||||||
|
> **Bulgaria**, the real measured NW is **~£1.13M** (not the aspirational
|
||||||
|
> £1.5M), and the real spend floor is **~£40k** (the £60k was padding). Also,
|
||||||
|
> the simulator now **drains tax from the portfolio** (since 2026-05), so the
|
||||||
|
> old "success rate is regime-invariant" claim below is **no longer true** —
|
||||||
|
> jurisdiction now moves the FIRE number. The live, current view is the
|
||||||
|
> **"FIRE Countdown"** section of the wealth Grafana dashboard, backed by the
|
||||||
|
> `fire_target` table (see `CONTEXT.md` + `docs/adr/0001`). Treat the tax-
|
||||||
|
> optimisation playbook (§3) as still useful, but re-validate the headline
|
||||||
|
> numbers against the dashboard.
|
||||||
|
|
||||||
**Run date**: 2026-04-26
|
**Run date**: 2026-04-26
|
||||||
**Working anchor**: NW £1.5M today, £60k/yr real spending target,
|
**Working anchor**: NW £1.5M today, £60k/yr real spending target,
|
||||||
£40k floor, target departure 2027–2028 (year 1 or 2 from today),
|
£40k floor, target departure 2027–2028 (year 1 or 2 from today),
|
||||||
|
|
|
||||||
15
README.md
15
README.md
|
|
@ -17,9 +17,14 @@ strategy, and "year you break UK tax residency".
|
||||||
- `simulator.py` — vectorised NumPy MC engine
|
- `simulator.py` — vectorised NumPy MC engine
|
||||||
- `scenarios.py` — Cartesian product over (jurisdiction × strategy ×
|
- `scenarios.py` — Cartesian product over (jurisdiction × strategy ×
|
||||||
leave-UK-year × glide)
|
leave-UK-year × glide)
|
||||||
|
- `spend_model.py` — per-Case real-GBP spend, COL-scaled per country (the
|
||||||
|
FIRE-countdown cases: Solo / Household / Family)
|
||||||
|
- `geo.py` — COL city → tax jurisdiction
|
||||||
|
- `fire_target.py` — solves each Case's "FIRE number" (smallest liquid NW
|
||||||
|
where Guyton-Klinger hits the 99% bar); see `docs/adr/0001`
|
||||||
- `app.py` — FastAPI on-demand `/recompute`
|
- `app.py` — FastAPI on-demand `/recompute`
|
||||||
- `__main__.py` — `click` CLI: `ingest`, `simulate`, `recompute-all`,
|
- `__main__.py` — `click` CLI: `ingest`, `simulate`, `recompute-all`,
|
||||||
`migrate`
|
`recompute-fire-targets`, `migrate`
|
||||||
|
|
||||||
## Common commands
|
## Common commands
|
||||||
|
|
||||||
|
|
@ -37,11 +42,15 @@ DB_CONNECTION_STRING=postgresql+asyncpg://... alembic upgrade head
|
||||||
DB_CONNECTION_STRING=... python -m fire_planner ingest
|
DB_CONNECTION_STRING=... python -m fire_planner ingest
|
||||||
DB_CONNECTION_STRING=... python -m fire_planner simulate --scenario=cyprus-vpw-leave-y3
|
DB_CONNECTION_STRING=... python -m fire_planner simulate --scenario=cyprus-vpw-leave-y3
|
||||||
DB_CONNECTION_STRING=... python -m fire_planner recompute-all
|
DB_CONNECTION_STRING=... python -m fire_planner recompute-all
|
||||||
|
|
||||||
|
# Solve the FIRE-countdown targets (per Case × country) for the wealth
|
||||||
|
# Grafana dashboard's "FIRE Countdown" section:
|
||||||
|
DB_CONNECTION_STRING=... python -m fire_planner recompute-fire-targets --countries all
|
||||||
```
|
```
|
||||||
|
|
||||||
## Schema
|
## Schema
|
||||||
|
|
||||||
Six tables in `fire_planner` schema on `pg-cluster-rw`:
|
Core tables in `fire_planner` schema on `pg-cluster-rw`:
|
||||||
|
|
||||||
- `account_snapshot` — daily NW per account (Wealthfolio)
|
- `account_snapshot` — daily NW per account (Wealthfolio)
|
||||||
- `scenario` — Cartesian-product scenario definition
|
- `scenario` — Cartesian-product scenario definition
|
||||||
|
|
@ -49,3 +58,5 @@ Six tables in `fire_planner` schema on `pg-cluster-rw`:
|
||||||
- `mc_path` — sparse storage (top decile, bottom decile, median)
|
- `mc_path` — sparse storage (top decile, bottom decile, median)
|
||||||
- `projection_yearly` — deterministic point projection per scenario
|
- `projection_yearly` — deterministic point projection per scenario
|
||||||
- `scenario_summary` — denormalised fast-read for Grafana
|
- `scenario_summary` — denormalised fast-read for Grafana
|
||||||
|
- `fire_target` — solved FIRE number per (Case × country × with-home) for the
|
||||||
|
"FIRE Countdown" section of the wealth Grafana dashboard
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue