{# ETF pairs tab — read-only viewer of bundled + user-extended pair groups. Pairs in the same group are treated as substantially-identical for §1091 wash-sale matching. Users extend the bundled list by editing `~/.net_alpha/etf_pairs.yaml`; user entries augment (never replace) the bundled groups (see engine/etf_pairs.py::load_etf_pairs). Data comes from the `etf_pairs_data()` Jinja global which exposes the already-merged dict from app.state. #} {% set _epd = etf_pairs_data() %}

ETF substantially-identical pairs

Tickers in the same group are treated as substantially-identical for wash-sale matching.

Extend

Edit this file to add your own groups. Entries augment the bundled list; existing groups merge by ticker.

{{ _epd.user_file_path }} {% if not _epd.user_file_exists %} (does not exist yet) {% endif %}

Groups ({{ _epd.groups | length }})

{% for group, tickers in _epd.groups.items() | sort %}
{{ group }}
{% for t in tickers %} {{ t }} {% endfor %}
{% endfor %}