{% extends "base.html" %} {% load static i18n %} {% block extra_head %} {% endblock %} {% block title %}Invest Dashboard{% endblock %} {% block content %}
{{ fy_label }} Snapshot
Total Value
{% if overview.this_week_total is not None %}${{ overview.this_week_total|floatformat:0 }}
{% else %}—
{% endif %}Across {{ overview.portfolio_count }} portfolio{{ overview.portfolio_count|pluralize }}
Net Contributions
${{ net_contributions|floatformat:0 }}
External deposits minus withdrawals
Investment Gain
{% if performance.cash_adjusted_gain >= 0 %}+{% endif %}${{ performance.cash_adjusted_gain|floatformat:0 }}
Cash-flow adjusted
Top 5 Concentration
{% widthratio risk.top_5_weight 1 100 %}%
Risk: {{ risk.concentration_level }}
This Week
{% if overview.week_gain is not None %}{% if overview.week_gain >= 0 %}+{% endif %}${{ overview.week_gain|floatformat:0 }}
{% if overview.week_gain >= 0 %}+{% endif %}{{ overview.week_change_pct|floatformat:2 }}% vs last snapshot
{% else %}—
No prior snapshot
{% endif %}Money Weighted Return
{% if performance.money_weighted_return is not None %}{% widthratio performance.money_weighted_return 1 100 %}%
{% else %}—
{% endif %}IRR based on cash flows
Last Snapshot
{% if overview.this_week_date %}{{ overview.this_week_date|date:"M j" }}
{{ overview.this_week_date|date:"l, Y" }}
{% else %}—
No snapshots yet
{% endif %}Same-cashflow Benchmark
Actual end value
${{ performance.end_value|floatformat:0 }}
Same cash flows into {{ ticker }}
${{ bench.end_value|floatformat:0 }}
Return {% if bench.simple_return is not None %}{% widthratio bench.simple_return 1 100 %}%{% else %}—{% endif %}
{{ fy_label }} Performance vs Benchmarks
Toggle between percentage return and dollar-value growth from the baseline date.
Snapshot value chart; cash-flow-adjusted metrics are shown in the cards above.
Risk Overview
Top 1
{% widthratio risk.top_1_weight 1 100 %}%
Top 3
{% widthratio risk.top_3_weight 1 100 %}%
Semiconductors
{% widthratio risk.theme_exposure.semiconductors 1 100 %}%
AI / Cloud
{% widthratio risk.theme_exposure.ai_cloud 1 100 %}%
| Ticker | Value | Weight | Portfolio |
|---|---|---|---|
| {{ position.stock_code }} | ${{ position.current_value|floatformat:0 }} | {% widthratio position.weight 1 100 %}% | {{ position.portfolio_name }} |
Snapshots captured every Saturday 08:00 · Prices are best-effort market data · Transaction prices are optional for AI sync
{% if all_holdings %}{{ group.portfolio.name }}
{{ group.position_count }} position{{ group.position_count|pluralize }}{% if overview.this_week_date %} · Snapshot {{ overview.this_week_date|date:"j M Y" }}{% endif %}
{% if group.this_week_value is not None %}${{ group.this_week_value|floatformat:0 }}{% else %}—{% endif %}
{% if group.change is not None %}{% if group.change >= 0 %}+{% endif %}${{ group.change|floatformat:0 }} ({% if group.change_pct >= 0 %}+{% endif %}{{ group.change_pct|floatformat:1 }}%)
{% else %}No prior snapshot
{% endif %}| Ticker | Qty | Price | Week Change | Mkt Value |
|---|---|---|---|---|
| {{ stock.stock_code }} | {{ stock.quantity|floatformat:0 }} | {% if stock.current_price %}${{ stock.current_price|floatformat:2 }}{% else %}—{% endif %} | {% if stock.value_change is not None %}{% if stock.value_change >= 0 %}+{% endif %}${{ stock.value_change|floatformat:0 }} ({% if stock.price_change_pct >= 0 %}+{% endif %}{{ stock.price_change_pct|floatformat:1 }}%){% else %}—{% endif %} | {% if stock.current_value %}${{ stock.current_value|floatformat:0 }}{% else %}—{% endif %} |
Investment Reports
AI-generated weekly reports linked by the invest tag.
{{ post.title }}
{% if post.summary %}{{ post.summary }}
{% endif %}{{ post.created_at|date:"M j" }}
Transaction History
| Date | Portfolio | Action | Ticker | Qty | Price | Fee |
|---|---|---|---|---|---|---|
| {{ tx.date|date:"j M Y" }} | {{ tx.portfolio.name }} | {{ tx.action }} | {{ tx.stock_code }} | {{ tx.quantity|floatformat:0 }} | {% if tx.price_per_share %}${{ tx.price_per_share|floatformat:2 }}{% else %}optional{% endif %} | {% if tx.fee %}${{ tx.fee|floatformat:2 }}{% else %}—{% endif %} |