Skip to content

Register EFA and EEM, the two ETFs a COT market is priced off - #17

Merged
mspinola merged 1 commit into
mainfrom
claude/register-msci-proxies
Aug 21, 2026
Merged

Register EFA and EEM, the two ETFs a COT market is priced off#17
mspinola merged 1 commit into
mainfrom
claude/register-msci-proxies

Conversation

@mspinola

Copy link
Copy Markdown
Owner

MFS and MME are ICE MSCI futures that Norgate carries no continuous series for, so cotmetrics reads an ETF instead. Neither ETF was in this registry, so neither could be fetched, and both markets had no prices at all: get_bars was handed the COT symbol, found nothing, and returned an empty frame.

Registered under their own tickers, as ordinary equity ETFs. The proxy relationship is cotmetrics' to know and is not encoded here, because which price stands in for which market is a consumer's modelling choice rather than a fact about the instrument.

Seeded, and scoped so the frozen half was untouched

marketdata-update --bars --domain equities --symbols EEM EFA
EFA:   6280 bars (EFA) 2001-08-27..2026-08-20 div=47 split=1 -> store
EEM:   5875 bars (EEM) 2003-04-14..2026-08-20 div=47 split=2 -> store

The month-end pin was verified before and after, and still matches on all six symbols. Their files keep their July mtimes; only the two new parquets are dated today. --symbols is what made that safe: an unscoped --bars would have refreshed the pinned six through yfinance and rewritten every updated_at, which is exactly what the snapshot compares.

⚠️ Not yet on Windows, and that is time-sensitive

That box now holds the equities half too, and sync-marketdata.cmd mirrors with robocopy /MIR, which purges whatever the source lacks. A symbol present only on the Mac is deleted by the next nightly sync. The same scoped command has to run on Windows:

marketdata-update --bars --domain equities --symbols EEM EFA

It must stay scoped there. A bare --bars on Windows refreshes the six pinned symbols and breaks the snapshot at the source rather than the replica.

Tests

marketdata: 200 passed, 12 skipped, ruff clean. The registry change is additive, so no existing symbol's resolution moves.

🤖 Generated with Claude Code

MFS and MME are ICE MSCI futures that Norgate carries no continuous series for, so
cotmetrics reads an ETF instead. Neither ETF was in this registry, so neither could be
fetched, and both markets had no prices at all: `get_bars` was being handed the COT
symbol, finding nothing, and returning an empty frame.

Registered under their OWN tickers, as ordinary equity ETFs. The proxy relationship is
cotmetrics' to know and is not encoded here, because which price stands in for which
market is a consumer's modelling choice rather than a fact about the instrument.

Seeded into the Mac store with `--bars --domain equities --symbols EEM EFA`, scoped so
the frozen equities half is untouched: EFA 6280 bars from 2001-08-27, EEM 5875 from
2003-04-14. The month-end pin was verified before and after and still matches on all
six symbols, whose files keep their July mtimes.

NOT YET ON WINDOWS. That box now holds the equities half too, and its nightly mirror is
robocopy /MIR, so a symbol present only on the Mac is deleted by the next sync. The same
scoped command has to run there, and it must stay scoped: a bare --bars on Windows
refreshes the six pinned symbols through yfinance and breaks the snapshot at the source.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mspinola
mspinola merged commit add1c1f into main Aug 21, 2026
5 checks passed
@mspinola
mspinola deleted the claude/register-msci-proxies branch August 24, 2026 23:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant