{% extends "base.html" %} {% from "_provenance_macros.html" import provenance_link %} {% block title %}{{ symbol }} · net-alpha{% endblock %} {% block content %}

{{ symbol }}

Simulate sale
Open lots
{{ kpi_open_lots }}{% if open_shorts %} + {{ open_shorts|length }} short opt{% endif %}
Basis: ${{ "%.2f"|format(kpi_open_basis) }}
Realized P&L
${{ "%.2f"|format(kpi_realized_ytd) }}{% if realized_ref %}{{ provenance_link(realized_ref) }}{% endif %}
YTD {{ kpi_today.year }}
${{ "%.2f"|format(kpi_realized_lifetime) }}{% if realized_lifetime_ref %}{{ provenance_link(realized_lifetime_ref) }}{% endif %}
Lifetime
Disallowed
${{ "%.2f"|format(kpi_disallowed_ytd) }}
YTD {{ kpi_today.year }}
${{ "%.2f"|format(kpi_disallowed_lifetime) }}
Lifetime
Accounts
{% for a in kpi_accounts %}{{ a }}{% if not loop.last %}, {% endif %}{% endfor %} {% if not kpi_accounts %}-{% endif %}
Last trade
{% if kpi_last_trade %}
{{ kpi_last_trade.action }} {{ kpi_last_trade.quantity }}
{{ kpi_last_trade.date }}
{% else %}
No trades
{% endif %}
{# Reconciliation strip — one per account that holds this symbol. Loads lazily. #} {% if account_ids %} {% for account_id in account_ids %}
Loading reconciliation…
{% endfor %} {% endif %}

Timeline

{% for row in timeline_rows %} {% set t = row.trade %} {% set is_synth = t.basis_source == 'option_short_close_expiry' %} {% endfor %} {% if not timeline_rows %} {% endif %}
Date Account Provenance Action Qty Basis Proceeds G/L
{{ t.date }} {{ t.account }} {% if is_synth %}auto {% elif t.is_manual %}manual {% elif t.transfer_basis_user_set %}edited {% endif %} {{ display_action(t, assigned_from=row.assigned_from) }} {{ t.quantity }} {{ t.cost_basis if t.cost_basis is not none else "-" }} {{ t.proceeds if t.proceeds is not none else "-" }} {% if row.gain_loss is not none %} {% if row.gain_loss >= 0 %}+{% else %}−{% endif %}${{ "%.2f"|format(row.gain_loss|abs) }} {% else %} {% endif %} {% if t.is_manual %} edit delete {% elif t.basis_source in ['transfer_in', 'transfer_out'] %} set basis & date {% endif %}
No trades for {{ symbol }} yet.
{% if lots or not open_shorts %}

Open long lots

{% include "_lots_table.html" %} {% else %} {# Only short options open on this ticker — the Open lots table would be empty and confusing. The "Open short options" section right below shows the actual exposure. #}

Open positions

No long lots on {{ symbol }} — see Open short options below.
{% endif %} {% if open_shorts %}

Open short options

{% for s in open_shorts %} {% set dte = (s.expiry - kpi_today).days if kpi_today else None %} {% endfor %}
Account Contract Opened Qty short Premium received Cash secured DTE
{{ s.account }} {% if s.call_put == 'C' %}CALL{% else %}PUT{% endif %} ${{ "%g"|format(s.strike) }} · {{ s.expiry.strftime('%m/%d/%y') }} short {{ s.opened_at if s.opened_at else "—" }} -{{ s.qty_short }} +${{ "%.2f"|format(s.premium_received) }} {% if s.call_put == 'P' %}${{ "%.0f"|format(s.cash_secured) }}{% else %}—{% endif %} {% if dte is not none %}{{ dte }}d{% else %}—{% endif %}
{% endif %} {% if violations %}

Violations involving {{ symbol }}

{% for violation in violations %}
{% include "_violation_card.html" %}
{% endfor %} {% endif %} {% include "_schwab_lot_detail.html" %} {% endblock %}