{% extends "base.html" %} {% block title %}NSDL CAS · Networthy HQ{% endblock %} {% block content %} {% if latest %}
NSDL CAS net worth · {{ latest.statement_date.strftime('%d %b %Y') }} ₹{{ "{:,.0f}".format(latest.total_value) }} {% if change is not none %} {{ '▲' if change >= 0 else '▼' }} ₹{{ "{:,.0f}".format(change|abs) }} since previous {% endif %}
Upload CAS
{# A statement whose rows don't add up to its own stated total. The headline figure is still right — it's read straight off the document — but the breakdown below it isn't, and showing a wrong breakdown with no warning is the worst thing this app can do. #} {% if reconcile %}
The breakdown below doesn't add up. {{ reconcile.summary() }} The total above is taken from the statement itself and is still correct — it's the per-holding rows, and any net-worth category fed by them, that are off. This usually means the statement's layout changed. Tell us about it and re-upload once it's fixed.
{% endif %}

Net worth over time

Snapshots

{% for s in snapshots %} {% endfor %}
Statement dateNet worthHoldingsSource
{{ s.statement_date.strftime('%d %b %Y') }} ₹{{ "{:,.0f}".format(s.total_value) }} {{ s.holding_count }} {{ s.source_filename or '—' }}
{# --- Detailed holdings for the latest statement (merged from Portfolio) --- #} {% if accounts %} {% if breakdown %}

Asset allocation · {{ latest.statement_date.strftime('%d %b %Y') }}

{% for b in breakdown %} {% endfor %}
{% endif %} {% for account in accounts %}
{{ {'demat': 'Demat', 'mutual_fund': 'Mutual Fund', 'nps': 'NPS'}.get(account.kind, account.kind) }} {{ account.name }} {% if account.depository %}· {{ account.depository }}{% endif %} {% if account.identifier %}· {{ account.identifier }}{% endif %}
₹{{ "{:,.0f}".format(account.value) }}
{% for h in account.holdings %} {% endfor %}
Holding Units Price / NAV Value
{{ h.name }} {% if h.isin %}{{ h.isin }}{% endif %} {{ "{:,.3f}".format(h.units).rstrip('0').rstrip('.') if h.units is not none else '—' }} {{ "₹{:,.2f}".format(h.price) if h.price is not none else '—' }} {{ "₹{:,.0f}".format(h.value) if h.value is not none else '—' }}
{% endfor %} {% endif %} {% else %}

No statements yet

Upload your first NSDL CAS PDF to start tracking your net worth.

Upload a CAS statement
{% endif %} {% endblock %}