etf-premium

Calculate ETF premium or discount to NAV using Yahoo Finance data via yfinance.

3.3k|382|Updated Mar 13, 2026
One-click install
npx skills add https://github.com/himself65/finance-skills --skill etf-premium-himself65
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: etf-premium
Source: https://github.com/himself65/finance-skills/tree/main/plugins/market-analysis/skills/etf-premium
Command: npx skills add https://github.com/himself65/finance-skills --skill etf-premium-himself65

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires yfinance, pandas, numpy, and includes references (resource) components.

What problem does it solve? ETF market prices can diverge from the value of their underlying holdings (NAV), and investors often cannot tell whether they are overpaying, getting a bargain, or watching a structural anomaly like a gamma squeeze. This Skill quantifies that gap and explains why it exists. ## Core Features & Use Cases - Premium/Discount Calculation: Computes (Price - NAV) / NAV for any ETF using yfinance, with category-specific benchmarks and bid-ask spread reality checks. - Comparison & Screening: Ranks multiple ETFs by premium/discount or scans 60+ common ETFs to surface the deepest discounts and highest premiums. - Surge Decomposition: Splits a sudden ETF move into NAV-driven vs excess premium components, quantifies dealer gamma exposure (GEX) from the options chain, and assesses convergence timelines. - Use Case: Ask why KWEB jumped 13% while its holdings moved only 7%, and receive a decomposition table, net GEX estimate, dealer share of volume, and an hours/days/weeks convergence outlook. ## Quick Start Ask the agent whether SPY is currently trading at a premium or discount to its NAV.

Frequently Asked Questions about etf-premium

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I check if an ETF is trading at a premium or discount to NAV?▼

Fetch the ETF's regularMarketPrice and navPrice from yfinance, then compute (Price - NAV) / NAV x 100. A positive result is a premium, negative is a discount. Compare the result against the bid-ask spread to filter out market microstructure noise.

How to compare premiums across multiple ETFs with yfinance?▼

Loop through the ticker list, pull price and NAV for each via yf.Ticker().info, compute the premium percentage, and sort the results in a pandas DataFrame from deepest discount to highest premium. ETFs missing NAV data are flagged rather than silently dropped.

What is a normal premium or discount for a bond or crypto ETF?▼

US large-cap equity ETFs like SPY normally stay within ±0.05%, while high-yield bond ETFs like HYG can run ±0.10-0.50% and crypto ETFs like IBIT or BITO commonly show 0.5-3% premiums. During market stress, bond ETF discounts have historically widened to 3-5%.

Can yfinance provide historical ETF premium/discount data?▼

No. yfinance only exposes the most recent end-of-day navPrice, so historical premium time series cannot be built from it alone. For history, use ETF issuer websites, Bloomberg, or SEC N-PORT filings.

Why did my ETF jump much more than its underlying holdings?▼

The excess move can be decomposed into a NAV-driven component (holdings weighted returns) and an excess premium driven by dealer gamma hedging, blocked AP arbitrage, or sentiment surges. Negative net GEX, spiking ATM IV, and concentrated call open interest indicate a gamma squeeze.

What are the limitations of dealer gamma exposure (GEX) estimates?▼

GEX depends heavily on the assumed dealer positioning convention, and public open interest alone cannot reveal actual dealer inventory. The dealer-share-of-volume figure is an upper-bound heuristic, and the NAV proxy is stale when underlying markets are closed.