{% extends "base.html" %} {% block title %}{{ loan.name }} · Wealth Dashboard{% endblock %} {% block heading %}{{ _f("{name} — loan over time", name=loan.name) }}{% endblock %} {% block lede %}

{{ _f("A {currency} loan on its fixed {rhythm} schedule from the first instalment of {first} until it is paid off. Every figure is computed from the terms — a constant annuity, interest rounded to the cent each period, the way a bank does it — and reproduces the bank's own breakdown.", currency=loan.currency, rhythm=_(periods[loan.period_months] ~ " [rhythm]"), first=d(loan.first_payment)) }} {% if d_.rate %}{{ _f("The loan is in {currency}; {base} is shown for reference only, at today's rate.", currency=loan.currency, base=base_currency) }}{% endif %} {% if d_.status.anchor %}{{ _f("From the reading of {date} the schedule runs from {amount}, the lender's figure, not the sum's — a rate change, a fee, a rounding rule all live in that number. Record a newer balance on the account and it takes over from there.", date=d(d_.status.anchor.date), amount=money(d_.status.anchor.amount, loan.currency)) }}{% endif %} · {{ _("the account") }} · {{ _("change the terms") }}

{% endblock %} {% block content %} {% set st = d_.status %} {% set ccy = loan.currency %}
{{ _("Outstanding today") }}
{{ big(st.balance, ccy) }}
{{ _f("as of {date}", date=d(d_.today)) }}{% if st.anchor %} · {{ _f("from the reading of {date}", date=d(st.anchor.date)) }}{% endif %}{% if st.next %} · {{ _f("next {date}", date=d(st.next.date)) }}{% endif %}
{{ _("Repaid so far") }}
{{ big(st.paid_capital, ccy) }}
{{ _f("{pct} % of the original", pct=(100 * st.progress) | round(1)) }}
{{ _f("Original loan ({year})", year=d_.first_year) }}
{{ big(loan.principal, ccy) }}
{% if d_.drawn %}{{ _f("{amount} @ {rate} on drawdown", amount=big(d_.drawn.amount, d_.drawn.currency), rate=d_.drawn.rate) }} {% else %}{{ _f("{rate} % per year", rate='%g' | format(loan.rate_pct)) }}{% endif %}
{{ _("Payoff date") }}
{% if st.endless %}{{ _("never at this payment") }}{% else %}{{ d(st.payoff) }}{% endif %}
{{ _n(d_.schedule | length, "{n} instalment", "{n} instalments") }}, {{ _(periods[loan.period_months] ~ " [rhythm]") }}{% if st.payments_left %} · {{ _n(st.payments_left, "{n} left", "{n} left") }}{% endif %}
{% if d_.rate %}

{{ _f("the loan is denominated in {currency}", currency=ccy) }}

{% endif %}

{{ _("Outstanding balance over time") }}

{{ _f("From {amount} at drawdown to zero on {date}.", amount=big(loan.principal, ccy), date=d(st.payoff)) }}

{{ _("The dashed markers show today and the final payoff. The balance steps down on each payment date; because the interest share shrinks as the balance falls, the curve gently accelerates toward zero.") }}

{{ _("Where each instalment goes") }}

{{ _("Every payment is a fixed annuity: interest, shrinking, against capital repaid.") }}

{{ _f("Total interest over the whole life of the loan: {amount}.", amount=money(st.total_interest, ccy)) }} {% if st.total_interest < 0.05 * loan.principal %}{{ _("At this rate the loan is overwhelmingly principal from day one — the interest bars are barely visible, which is exactly why the balance falls almost linearly.") }}{% endif %}

{{ _("Amortisation schedule") }}

{{ _n(d_.schedule | length, "{n} instalment", "{n} instalments") }} · {{ _("faded rows are still in the future") }}
{% if d_.schedule | selectattr('extra') | list %}{% endif %} {% for r in d_.schedule %} {% if d_.schedule | selectattr('extra') | list %}{% endif %} {% endfor %}
#{{ _("Date") }}{{ _("Payment") }}{{ _("Interest") }}{{ _("Capital") }}{{ _("Extra") }}{{ _("Balance") }}
{{ r.n }}{% if r.anchored %} {{ _("reading") }}{% endif %}{{ d(r.date) }} {{ money(r.payment, ccy) }} {{ money(r.interest, ccy) }} {{ money(r.capital, ccy) }}{{ money(r.extra, ccy) if r.extra else '—' }}{{ money(r.balance, ccy) }}
{% endblock %} {% block scripts %} {% endblock %}