{% extends "base.html" %}
{% from "_macros.html" import money, help, year_picker %}
{% block title %}Investments{% endblock %}
{% block content %}
Shares are matched first-in, first-out within each account. Wash sales are detected across all your accounts.Investments
| Symbol | Account | Shares | Cost basis | Avg cost | Oldest lot |
|---|---|---|---|---|---|
| {{ h.symbol }} | {{ acct_names.get(h.account_id, '') }} | {{ h.quantity|qty }} | {{ h.basis_cents|money }} | {{ ((h.basis_cents / h.quantity)|round|int)|money if h.quantity else '' }} | {{ h.lots[0].acquired.isoformat()|usdate }}{% if h.lots|length > 1 %} ({{ h.lots|length }} lots){% endif %} |
Compare share counts with your brokerage statement. Missing shares usually mean a buy from before you started — add it below.
{% else %}No open positions.
{% endif %}Add a brokerage account first.
{% else %} {% endif %}| Date | Account | Action | Symbol | Shares | Price | Fees | Total | |
|---|---|---|---|---|---|---|---|---|
| {{ t.trade_date|usdate }} | {{ t.account }} | {{ t.action }} | {{ t.symbol }} {{ t.description }} |
{{ t.quantity|qty }} | {{ '%.4f'|format(t.price)|replace('.0000', '.00') if t.price else '' }} | {{ t.fees_cents|money(true) }} | {{ t.amount_cents|money }} | Edit |
| No trades yet. Import a brokerage download (QFX/OFX or CSV) or add trades above. | ||||||||