{% extends "base.html" %} {% from "_notes.html" import fine_print %} {% block title %}Plan · Networthy HQ{% endblock %} {% block main_class %}wide{% endblock %} {% block content %}

The path to {{ end_age }}

Your net worth walked forward one year at a time — savings going in while you work, living costs coming out after you stop, and your dated goals landing along the way. It reads from what you've already entered; only the four numbers below are new.

{# --- Inputs: the only four things the rest of the app can't know ------------- #}

{{ "Your assumptions" if has_plan else "Start with four numbers" }}

Savings is what you add in a year, after living costs — so we don't subtract your expenses twice while you're still working.
{% if has_plan %} {% set s = band.summary %} {% set lo = band.low_summary %} {% set hi = band.high_summary %} {# --- The headline: does it last? ------------------------------------------- #}
{% if s.lasts %} The base case
Your money lasts past {{ end_age }}

At {{ "%g"|format(return_pct) }}% returns you'd still have ₹{{ "{:,.0f}".format(s.final_corpus_real) }} at {{ end_age }}, in today's money — against ₹{{ "{:,.0f}".format(corpus) }} now.

{% else %} The base case
Your money runs out at {{ s.depletion_age }}

At {{ "%g"|format(return_pct) }}% returns, the corpus is spent {{ end_age - s.depletion_age }} years before {{ end_age }}.

{% endif %} {# The number the depletion age raises but doesn't answer: what would fix it. #}
{% if band.need.gap > 0 %} To make it to {{ end_age }} you'd need about ₹{{ "{:,.0f}".format(band.need.gap) }} more today — a starting corpus of ₹{{ "{:,.0f}".format(band.need.needed) }} against your ₹{{ "{:,.0f}".format(corpus) }}. Saving more, spending less or retiring later moves this too; it's the lump sum that would do it on its own. {% elif band.need.needed <= 0 %} Your savings alone get you there ₹{{ "{:,.0f}".format(corpus) }} is all cushion — at {{ "%g"|format(return_pct) }}% you'd reach {{ end_age }} starting from nothing, on what you put away each year. Worth re-checking against the lower return below. {% else %} You're clear by about ₹{{ "{:,.0f}".format(-band.need.gap) }} — the plan still reaches {{ end_age }} starting from ₹{{ "{:,.0f}".format(band.need.needed) }}, and you have ₹{{ "{:,.0f}".format(corpus) }}. That's the cushion, not a surplus to spend. {% endif %}
If returns are {{ "%g"|format(return_pct - band_delta) }}% {% if lo.lasts %}lasts past {{ end_age }}{% else %}runs out at {{ lo.depletion_age }}{% endif %} {%- if band.need_low.gap > 0 %} · needs ₹{{ "{:,.0f}".format(band.need_low.gap) }} more{% endif %} If returns are {{ "%g"|format(return_pct + band_delta) }}% {% if hi.lasts %}lasts past {{ end_age }}{% else %}runs out at {{ hi.depletion_age }}{% endif %} {%- if band.need_high.gap > 0 %} · needs ₹{{ "{:,.0f}".format(band.need_high.gap) }} more{% endif %}
{# --- The chart -------------------------------------------------------------- #}

Projected net worth by age

in today's money · shaded band = returns ±{{ "%g"|format(band_delta) }}%

Starting from today's net worth of ₹{{ "{:,.0f}".format(corpus) }} {%- if annual_expense %}, drawing ₹{{ "{:,.0f}".format(annual_expense) }}/yr once you retire{% endif %}. Dots mark a goal falling due. Plotted in today's rupees — the nominal balance decades out is mostly inflation, and a number like ₹580 crore at 95 tells you nothing about whether the plan works.

{# --- What's flowing in and out ---------------------------------------------- #}

What this plan spends

{% if dated_goals %} {% for g in dated_goals %} {% endfor %}
GoalWhenAmount
{{ g.name }} {{ g.target_date }} ₹{{ "{:,.0f}".format(g.target_amount) }}
Total one-off spending ₹{{ "{:,.0f}".format(s.total_outflows) }}
{% else %}

No dated goals yet. Add one on Goals — a child's college, a wedding, a house deposit — and it'll land on this curve in the year it's due.

{% endif %} {% if undated_goals %}

{{ undated_goals|length }} goal{{ '' if undated_goals|length == 1 else 's' }} without a target date {{ 'is' if undated_goals|length == 1 else 'are' }} not on this curve — there's no year to spend {{ 'it' if undated_goals|length == 1 else 'them' }} in.

{% endif %}
{# --- Year by year, every fifth year ----------------------------------------- #}

Year by year

{% for r in rows %} {% if r.age % 5 == 0 or r.outflows or r.age == retire_age or loop.last %} {% endif %} {% endfor %}
AgeYear AddedDrawn GoalsBalance (today's ₹)
{{ r.age }}{% if r.age == retire_age %} retires{% endif %} {{ r.year }} {{ "₹{:,.0f}".format(r.savings) if r.savings else "—" }} {{ "₹{:,.0f}".format(r.expenses) if r.expenses else "—" }} {%- if r.outflows %}₹{{ "{:,.0f}".format(r.outflows) }} {{ r.outflow_labels|join(", ") }}{% else %}—{% endif -%} ₹{{ "{:,.0f}".format(r.real_closing) }}

Every fifth year, plus retirement and any year a goal lands. Added, Drawn and Goals are in that year's rupees — what you'd actually pay or save then; Balance is deflated to today's money so it's comparable to your net worth now.

{{ fine_print("This projection assumes steady returns and steady inflation. Real markets deliver neither, and the order in which good and bad years arrive changes the answer a lot. It also models no tax at all — so every figure here is somewhat optimistic. Use it to compare choices, not to predict a balance.") }} {% endif %} {% endblock %}