How k25x calculates every number
Every formula, every assumption, every limitation. If you want to verify our math against your own spreadsheet, this page tells you exactly what to plug in.
Contents
- FIRE number (target portfolio)
- Years to FIRE
- Savings rate
- Monte Carlo simulator
- Guyton-Klinger guardrails
- Zakat calculator
- UAE tax model
- Net worth (assets, liabilities, categories)
- Portfolio metrics (cost basis, returns, allocation)
- AI advisor — grounding, citations, refusal
- Boundaries of what we model
FIRE number (target portfolio)
The FIRE number is the portfolio value at which 4% of it covers your annual expenses. It comes from the Trinity Study (Cooley/Hubbard/Walz, 1998) and the earlier Bengen 1994 paper.
We default to 25× annual expenses. The slider lets you adjust between 20× (5% SWR — aggressive) and 33× (3% SWR — conservative). 25× is the literature consensus for a 30-year retirement; 33× is closer to a perpetual-withdrawal model.
FIRE_number = annual_expenses × (1 / SWR)Years to FIRE
A closed-form solution to "how long does it take a contributing portfolio to reach a target". We use the future-value-of-an-annuity formula, solved for time.
Inputs: current portfolio (P0), monthly contribution (PMT), target (FV), real annual return (r). Output: years.
For the deterministic point estimate this is exact. The Monte Carlo simulator (below) provides the probability distribution around it.
years = ln((FV·r/12 + PMT) / (P0·r/12 + PMT)) / ln(1 + r/12) / 12Savings rate
Take-home minus spending, expressed as a fraction of take-home. Payroll deductions for tax (where applicable) and pre-tax retirement contributions are NOT counted as spending — they are part of "saved" capital.
Why take-home (not gross): savings rate is a behavioral metric, and only money you can choose to spend or save belongs in the denominator.
savings_rate = (take_home_income − spending) / take_home_incomeMonte Carlo simulator
For each simulation: we draw monthly returns from a normal distribution parameterized by user-set mean (default 7% real) and stdev (default 15%). Inflation is modeled as a separate normal (default 3% mean, 1% stdev) and subtracted from nominal returns. Withdrawals occur at the start of each year, indexed to inflation.
We default to 1,000 trials. The success rate = (trials where balance > 0 at horizon) / total trials. We return the 5th, 50th, and 95th percentile terminal balances.
Limitations: (1) Normal returns understate fat tails — real markets have more frequent extreme moves. (2) Returns are assumed independent across months — real markets show clustering. (3) The user-set mean/stdev are themselves estimates with their own uncertainty.
Guyton-Klinger guardrails
Optional dynamic withdrawal toggle. Implements the original 4-rule version from Guyton & Klinger (2006): inflation-rule, capital-preservation-rule, prosperity-rule, portfolio-management-rule.
In our Monte Carlo, enabling guardrails typically lifts the 30-year success rate from ~95% to ~99% at the same starting withdrawal rate, at the cost of accepting ~5-10% spending volatility year-to-year.
Zakat calculator
We calculate Zakat as 2.5% on cash, gold, silver, business assets, and investment holdings (stocks/ETFs/Sukuk) above the Nisab threshold, where the assets have been held above Nisab for one full Hawl (lunar year, ~354 days).
Default Nisab uses the silver standard (595g of silver — the classical Hanafi weight of 200 dirhams at 2.975g each). This is the lower, more conservative threshold so more users are obligated to pay Zakat. The toggle to gold standard (87.48g) is available; both prices are pulled at calculation time.
We do not deduct primary-residence equity, retirement-account vesting that is not currently accessible, or non-investment durable goods.
zakat_due = 0.025 × max(0, qualifying_wealth − Nisab)UAE tax model
For UAE residents: 0% personal income tax on salary. 9% federal corporate tax applies to mainland businesses with profits above AED 375,000 (Federal Decree-Law No. 47 of 2022, effective 1 June 2023). Free-zone companies meeting QFZP criteria continue to enjoy 0% on qualifying income.
We do NOT model VAT (5% on most goods/services) in the personal projector since it is treated as part of consumer spending — already baked into your monthly expense input.
For non-UAE residents: we apply a flat marginal rate the user enters. We deliberately do not maintain a country-by-country tax engine because tax planning is jurisdiction-specific and changes frequently — we would rather be honest about the boundary than pretend universal accuracy.
Net worth (assets, liabilities, categories)
Net worth = Total assets − Total liabilities. We sum every asset you log (cash, brokerage, retirement accounts, real estate, vehicles, manual entries, Plaid/Lean-synced balances) minus every liability (mortgages, loans, credit-card balances).
Asset categories: Liquid Cash / GIA (immediately spendable — checking, savings, brokerage cash; GIA = General Investment Account, the UK term for a taxable brokerage); Tax-Advantaged Pensions (401(k), IRA, SIPP, etc.); Invested Assets (stocks, ETFs, bonds, crypto in taxable accounts); Fixed Assets (real estate, vehicles, durables).
Liability categories: Secured (mortgage, auto loan — backed by collateral the lender can repossess) vs Unsecured (credit cards, personal loans — no collateral, hence higher rates).
We do NOT depreciate fixed assets automatically — you adjust the value yourself when re-appraising. Net worth is a snapshot of "what would I have if I sold everything today and paid off all debts," not a tax basis.
Portfolio metrics (cost basis, returns, allocation)
Cost basis ("Total Cost") = price you paid × quantity at purchase. The reference point for computing gain/loss.
Total Value = current market price × quantity, refreshed when you click Refresh prices (we cache live prices for 60s to stay within rate limits).
Total Gain / Loss = Total Value − Total Cost. This is UNREALIZED — no tax event triggered until you sell.
Total Return % = Gain ÷ Cost. Useful for cross-position comparison; less useful for time-weighted return (we are not yet a CFA-grade performance reporter).
Asset allocation breaks holdings down by asset type (stocks, ETFs, bonds, crypto). The donut chart helps you see if you are over-concentrated in one class — useful for rebalancing decisions but not a recommendation.
AI advisor — grounding, citations, refusal
The advisor reads your full data context (assets, income, expenses, goals, jurisdiction) and produces a personalized investment blueprint plus behavioral observations.
Tax-claim grounding: any quantitative tax statement (rate, threshold, allowance, contribution limit) MUST cite an authority — IRS, HMRC, ZATCA (Saudi Arabia), FBR (Pakistan), or UAE Ministry of Finance / Federal Tax Authority — or explicitly refuse with "I don't have a verified source for that tax detail." Inventing sources is a hard violation; the entire response is discarded if detected.
Multi-agent: behind the scenes, three specialists run in parallel — Tax Advisor, Investment Advisor, Financial Planner — and a chief advisor synthesizes their outputs. Each specialist's text is sanitized through PII redaction + tax-grounding checks before reaching you.
What the advisor does NOT do: execute trades, file taxes, send money, place insurance applications. Every recommendation is "here is what the math says you could do" — you decide and act.
Tax-optimized recommendations: if your investment preference is set to "tax optimized" we route US persons toward Roth/401(k) maxing + US-domiciled ETFs, and non-US persons toward UCITS-domiciled equivalents (avoids the US 30% dividend withholding tax that destroys long-term returns for foreign investors).
Boundaries of what we model
Things we deliberately do NOT model: (1) Sequence-of-returns risk in the deterministic projector — that is what Monte Carlo is for. (2) Healthcare cost inflation as separate from general inflation. (3) Country-specific tax engines outside the UAE. (4) Behavioral side of investing (panic-selling during drawdowns).
Things we explicitly assume: (1) Investment returns are real (inflation-adjusted) unless labeled "nominal". (2) Contributions continue at the stated rate until FIRE date. (3) Withdrawals happen annually, not monthly.
If a number we show looks wrong to you, we'd genuinely like to know — methodology@k25x.ai.
Want to verify against your own model?
Run the calculator with your numbers and compare to your spreadsheet. If the deltas are unexplained, email methodology@k25x.ai and we will dig in.
Open the calculator