{# Tax-adjusted performance panel — full Tier-2 surface. Shows 4 KPIs + ST/LT/§1256 mix bar + wash-sale cost + effective rate + caveats. Context: breakdown (AfterTaxBreakdown | None), has_tax_config (bool) #} {% if not has_tax_config %}

Tax bracket configuration is required to compute after-tax performance. Configure your tax rates in the Projection tab.

{% else %}
{# KPI row — 4 cards #}
Pre-tax realized
{% if breakdown.pre_tax_realized_pnl < 0 %}−{% elif breakdown.pre_tax_realized_pnl > 0 %}+{% endif %}${{ '{:,.2f}'.format(breakdown.pre_tax_realized_pnl|float|abs) }}
Tax bill (est.)
${{ '{:,.2f}'.format(breakdown.estimated_tax_bill|float) }}
After-tax realized
{% if breakdown.after_tax_realized_pnl < 0 %}−{% elif breakdown.after_tax_realized_pnl > 0 %}+{% endif %}${{ '{:,.2f}'.format(breakdown.after_tax_realized_pnl|float|abs) }}
Tax drag
${{ '{:,.2f}'.format(breakdown.tax_drag_dollar|float) }} ({{ '{:.1%}'.format(breakdown.tax_drag_pct|float) }})
{# ST / LT / §1256 mix bar #}
ST / LT / §1256 mix
{% set st_abs = breakdown.short_term_pnl|float|abs %} {% set lt_abs = breakdown.long_term_pnl|float|abs %} {% set s1256_abs = breakdown.section_1256_pnl|float|abs %} {% set total_abs = st_abs + lt_abs + s1256_abs %} {% if total_abs > 0 %} {% set st_pct = (st_abs / total_abs) * 100 %} {% set lt_pct = (lt_abs / total_abs) * 100 %} {% set s1256_pct = (s1256_abs / total_abs) * 100 %}
ST {% if breakdown.short_term_pnl < 0 %}−{% elif breakdown.short_term_pnl > 0 %}+{% endif %}${{ '{:,.2f}'.format(breakdown.short_term_pnl|float|abs) }} ({{ '{:.0f}'.format(st_pct) }}%) LT {% if breakdown.long_term_pnl < 0 %}−{% elif breakdown.long_term_pnl > 0 %}+{% endif %}${{ '{:,.2f}'.format(breakdown.long_term_pnl|float|abs) }} ({{ '{:.0f}'.format(lt_pct) }}%) §1256 {% if breakdown.section_1256_pnl < 0 %}−{% elif breakdown.section_1256_pnl > 0 %}+{% endif %}${{ '{:,.2f}'.format(breakdown.section_1256_pnl|float|abs) }} ({{ '{:.0f}'.format(s1256_pct) }}%)
{% if breakdown.section_1256_pnl != 0 %}
§1256 split: 60% LT ${{ '{:,.2f}'.format(breakdown.section_1256_lt_portion|float|abs) }} · 40% ST ${{ '{:,.2f}'.format(breakdown.section_1256_st_portion|float|abs) }}
{% endif %} {% else %}
No realized P&L for this period.
{% endif %}
{# Wash-sale cost row #}
Wash-sale impact
Disallowed losses: ${{ '{:,.2f}'.format(breakdown.wash_sale_disallowed_total|float) }}
{% if breakdown.wash_sale_permanent_total and breakdown.wash_sale_permanent_total|float > 0 %}
— Deferred (basis rolls): ${{ '{:,.2f}'.format(breakdown.wash_sale_deferred_total|float) }}
— Permanently disallowed (IRA trap): ${{ '{:,.2f}'.format(breakdown.wash_sale_permanent_total|float) }}
{% endif %}
Estimated deferred tax savings: ${{ '{:,.2f}'.format(breakdown.wash_sale_marginal_cost|float) }} (disallowed × federal marginal rate)
{% if breakdown.wash_sale_permanent_total and breakdown.wash_sale_permanent_total|float > 0 %} Deferred rows roll into replacement-lot basis. Permanent rows (Rev. Rul. 2008-5) are lost — no §1091(d) rollover into an IRA. {% else %} Deferred, not lost — basis rolls into the replacement lot. {% endif %}
{# Effective tax rate #}
Effective tax rate
{{ '{:.1%}'.format(breakdown.effective_tax_rate|float) }}
tax bill ÷ max(0, pre-tax realized)
{# Caveats #}
ⓘ About these numbers
⚠ This is informational only. Consult a tax professional before filing.
{% endif %} {% include "_section_1256_mtm.html" with context %}