{# Top Movers panel — renders top-3 unrealized $ winners and losers among open positions. `top_movers: TopMoversView` is required. The panel is omitted (caller-side) when the view has no winners and no losers. #}

Top movers

Unrealized $ change vs cost basis · open positions
{% if not top_movers.winners and not top_movers.losers %}
No priced open positions in scope.
{% else %}
▲ Winners
{% if top_movers.winners %} {% for r in top_movers.winners %}
{{ r.symbol }} +${{ "%.2f"|format(r.unrealized_dollar|float) }}{% if r.unrealized_pct is not none %} ({% if r.unrealized_pct > 0 %}+{% endif %}{{ "%.1f"|format(r.unrealized_pct|float) }}%) {% endif %}
{% endfor %} {% else %}
{% endif %}
▼ Losers
{% if top_movers.losers %} {% for r in top_movers.losers %}
{{ r.symbol }} −${{ "%.2f"|format(r.unrealized_dollar|float|abs) }}{% if r.unrealized_pct is not none %} ({{ "%.1f"|format(r.unrealized_pct|float) }}%) {% endif %}
{% endfor %} {% else %}
{% endif %}
{% endif %}