{% extends "base.html" %} {% block title %}{{ _("Overview") }} · Wealth Dashboard{% endblock %} {% block content %}
{{ _("Net worth") }} {% if s.assets_by_type %} {# One switch per asset that is wealth but not money: leave the house out, or the pension, and the number, the line and the change follow. Remembered per browser. #} {% for t, v in s.assets_by_type.items() %} {% endfor %} {% endif %}
{{ big(s.net_worth, s.base_currency) }}
{{ _("Assets") }} {{ big(s.net_worth + s.debt, s.base_currency) }} · {{ _("Liabilities") }} {% if s.debt %}−{{ big(s.debt, s.base_currency) }}{% else %}{{ big(0, s.base_currency) }}{% endif %}
{{ _("Cash") }} {{ big(s.cash, s.base_currency) }} · {{ _("Securities") }} {{ big(s.securities, s.base_currency) }} {% for t, v in s.assets_by_type.items() %}· {{ type_label(t) }} {{ big(v, s.base_currency) }}{% endfor %}
{% if s.converted %} {% set amounts %}{% for u in s.converted %}{{ money(u.amount, u.currency) }}{{ ", " if not loop.last }}{% endfor %}{% endset %}
{{ _f("Includes {amounts}, converted at the ECB rate of {date}.", amounts=amounts, date=d(s.fx_as_of)) | safe }}
{% endif %} {% if s.unconverted %}
{{ _("Not included, because no rate here covers them:") }} {% for u in s.unconverted %}{{ money(u.amount, u.currency) }}{{ ", " if not loop.last }}{% endfor %}
{% endif %}
{# The line: net worth on each day the records can price it. It goes back as far as the readings do, which the caption says outright. #}
{% for p, label in (("1m", "1M"), ("3m", "3M"), ("6m", "6M"), ("ytd", "YTD"), ("1y", "1Y"), ("all", _("All"))) %} {% endfor %}
{% if history.first_date %}{{ _f("Records go back to {date}; the line fills in with every daily sync.", date=d(history.first_date)) }} {% else %}{{ _("No dated readings yet — the line starts with the first balance or trade.") }}{% endif %}
{{ _("Liquid + investments") }}
{{ big(s.cash + s.securities, s.base_currency) }}
{% if s.assets %}{{ _("excludes pension, P2P, property") }}{% else %}{{ _n(s.holdings | length, "cash and {n} holding", "cash and {n} holdings") }}{% endif %}
{% if s.assets %}
{{ _("Other assets") }}
{{ big(s.assets, s.base_currency) }}
{% for t in s.assets_by_type %}{{ type_label(t) }}{{ ", " if not loop.last }}{% endfor %}
{% elif s.debt %}
{{ _("Debt") }}
{{ big(s.debt, s.base_currency) }}
{% else %}
{{ _("Accounts") }}
{{ s.account_count }}
{{ _f("{n} connected to a bank", n=s.connected_count) }}
{% endif %} {# The two changes: a month, and the year so far. A change measured from a day nobody has a reading for is not a change, and says so. #} {% for key, label, tone in (("month", _("This month"), "green"), ("ytd", _("YTD"), "gold")) %} {% set c = changes[key] %}
{{ label }}
{% if c.diff is not none %}
{{ '+' if c.diff >= 0 else '−' }}{{ big(c.diff | abs, s.base_currency) }}
{% if c.pct is not none %}{{ '+' if c.diff >= 0 else '−' }}{{ '%.2f' | format(c.pct | abs) }} % · {% endif %} {% if key == 'month' %}{{ _("last 30 days") }}{% elif c.since.endswith('-01-01') %}{{ _("since 1 January") }}{% else %}{{ _f("since {date}", date=d(c.since)) }}{% endif %}
{% else %}
{{ _("no reading to compare with yet") }}
{% endif %}
{% endfor %}
{% if by_class or s.by_account %}

{{ _("By asset class") }}

{{ _("Allocation") }}

{{ _("By account") }}

{% endif %}

{{ _("Accounts") }}

{{ _("what each is worth, cash and holdings together") }} · {{ _("Add an account") }}
{% set group_labels = {'cash': _("Cash & banks"), 'investments': _("Investments"), 'pension': _("Pension"), 'liabilities': _("Liabilities")} %} {% for g in s.groups %} {% for a in g.accounts %} {% endfor %} {% endfor %}
{{ _("Account") }}{{ _("Source") }}{{ _("In its currency") }} {{ s.base_currency }}{{ _("Transactions") }}{{ _("As of") }}
{{ group_labels[g.key] }} · {{ _n(g.accounts | length, "{n} account", "{n} accounts") }} {{ money(g.total_base, s.base_currency) }}
{{ a.name }} {{ type_label(a.type) }} {% if a.bank %}{{ a.bank }}{{ _("connected") }} {% elif a.transactions %}{{ _("imported file") }} {% else %}{{ _("nothing yet") }}{% endif %} {% if a.total_native is not none and a.currency != s.base_currency %}{{ money(a.total_native, a.currency) }}{% elif a.total_native is none and a.securities_base %}—{% endif %} {% if a.balance is not none or a.securities_base %}{{ money(a.total_base, s.base_currency) }}{% else %}—{% endif %} {{ a.transactions or '—' }} {{ d(a.balance_as_of) }}
{{ _("Net worth") }}{{ money(s.net_worth, s.base_currency) }}
{% if s.unconverted %}

{{ _("Not included, because no rate here covers them:") }} {% for u in s.unconverted %}{{ money(u.amount, u.currency) }}{{ ", " if not loop.last }}{% endfor %}

{% endif %}
{% if health %}

{{ _("Bank connections") }}

{{ _n(health | length, "{n} connected account", "{n} connected accounts") }}
{% endif %} {% if s.holdings %}

{{ _("Holdings") }}

{% if s.prices_as_of %}{{ _f("at market prices of {date}", date=d(s.prices_as_of)) }}{% endif %} {% if s.holdings_at_trade %}{{ _n(s.holdings_at_trade, "{n} holding at its last traded price", "{n} holdings at their last traded price") }}{% endif %}
{% for h in s.holdings %} {% endfor %}
{{ _("Security") }}{{ _("Where") }}{{ _("Quantity") }} {{ _("Net invested") }}{{ _("Value") }}
{{ h.name or h.isin }}{{ h.isin }} {{ h.accounts | unique | join(', ') }} {{ qty(h.quantity) }} {% if h.incomplete_history %}{{ _("export starts too late") }}{% endif %} {{ money(h.net_invested, h.currency) }} {% if h.value %}{{ money(h.value, h.currency) }} {% else %}{{ _("no price") }}{% endif %}
{% if s.holdings | selectattr('incomplete_history') | list %}

{{ _("A negative quantity is not a short position: it is a sale whose purchase is older than the file you imported. Export from the account opening and re-import — overlap is free.") }}

{% endif %}
{% endif %} {% if s.recent %}

{{ _("Latest activity") }}

{% for t in s.recent %} {% endfor %}
{{ _("Date") }}{{ _("Account") }}{{ _("Description") }} {{ _("Kind") }}{{ _("Amount") }}
{{ d(t.txn_date) }} {{ t.account_name }} {{ t.description[:70] }} {{ kind_label(t.kind) }} {{ money(t.amount, t.currency) }}
{% endif %} {% if not s.accounts %}

{{ _("Nothing here yet.") }}

{{ _("Add an account, then connect it to your bank or import a broker export. Both routes end in the same place.") }}

{{ _("Add an account") }}

{% endif %} {% endblock %} {% block scripts %} {% endblock %}