Agent skill

Etf Premium

by himself65 in himself65/finance-skills

Calculate an ETF's premium or discount to NAV from Yahoo Finance data (yfinance), compare or screen ETFs by premium, explain why a gap exists, and decompose a sudden ETF move into NAV-driven vs…

MITAuto-check passedBusiness, Finance & HR

Install Etf Premium

skills CLI
$ npx skills add himself65/finance-skills --skill etf-premium -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install himself65/finance-skills etf-premium --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/himself65/finance-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/market-analysis/skills/etf-premium .claude/skills/etf-premium && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
etf-premium
GitHub stars
3.4k
Token cost
~5.2k tokens
SKILL.md length
2,103 words
Files
4 (incl. references)
Skills in repo
19
Repo updated
First seen
Licence
MIT

At a glance

Calculate an ETF's premium or discount to NAV from Yahoo Finance data (yfinance), compare or screen ETFs by premium, explain why a gap exists, and decompose a sudden ETF move into NAV-driven vs…

  • Works in 3 steps: Ensure Dependencies Are Available → Route to the Correct Sub-Skill → Respond to the User
  • The user asks whether an ETF trades above
  • SKILL.md covers Step 1: Ensure Dependencies…, Step 2: Route to the Correct…, Sub-Skill A: Single ETF Snapshot and Sub-Skill B: Multi-ETF…, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Etf Premium is an agent skill from himself65/finance-skills. Calculate an ETF's premium or discount to NAV from Yahoo Finance data (yfinance), compare or screen ETFs by premium, explain why a gap exists, and decompose a sudden ETF move into NAV-driven vs structural components (dealer gamma exposure, blocked AP arbitrage, sentiment). Use this skill whenever the user asks whether an ETF trades above or below NAV, compares ETF premiums or discounts, screens for the biggest ones, asks about ETF arbitrage or premium convergence, or wants to know why an ETF jumped or diverged…

Its SKILL.md is about 5.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `README.md`, `references/etf_premium_reference.md` and `references/gamma_squeeze_reference.md`).

It sits in Business, Finance & HR, covering Stock and market analysis. It works with yfinance. The repository describes itself as: A collection of skills for AI financial analysis. The licence is MIT.

When your agent uses it

  • The user asks whether an ETF trades above
  • Compares ETF premiums
  • Screens for the biggest ones
  • Asks about ETF arbitrage

Example prompts

  • “/etf-premium”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Ensure Dependencies Are Available
  2. Route to the Correct Sub-Skill
  3. Respond to the User

What it can do on your machine

Read from SKILL.md and the folder at commit 01fc7b4. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Etf Premium loads about 5.2k tokens when it runs, and up to ~9.7k if it reads all its reference files. Until then it costs about 188 tokens; SKILL.md has 2,103 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~188
When it runs · the whole SKILL.md, loaded when a task matches
~5.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from himself65/finance-skills at commit 01fc7b4, republished under its MIT licence (© himself65). 2,103 words, ~5,219 tokens.

Download SKILL.mdSave it as .claude/skills/etf-premium/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
etf-premium
description
Calculate an ETF's premium or discount to NAV from Yahoo Finance data (yfinance), compare or screen ETFs by premium, explain why a gap exists, and decompose a sudden ETF move into NAV-driven vs structural components (dealer gamma exposure, blocked AP arbitrage, sentiment). Use this skill whenever the user asks whether an ETF trades above or below NAV, compares ETF premiums or discounts, screens for the biggest ones, asks about ETF arbitrage or premium convergence, or wants to know why an ETF jumped or diverged from its holdings — including gamma squeezes, dealer gamma exposure (GEX), and blocked creation/redemption. Especially relevant for leveraged, inverse, international, bond, commodity, and crypto ETFs (IBIT, BITO, HYG, KWEB).

ETF Premium/Discount Analysis Skill

Calculates the premium or discount of an ETF's market price relative to its Net Asset Value (NAV) using data from Yahoo Finance via yfinance.

Why this matters: An ETF's market price can diverge from the value of its underlying holdings (NAV). When you buy at a premium, you're overpaying relative to the assets; at a discount, you're getting a bargain. This divergence is typically small for liquid US equity ETFs but can be significant for bond ETFs, international ETFs, leveraged/inverse products, and crypto ETFs — especially during periods of market stress.

Important: For research and educational purposes only. Not financial advice. yfinance is not affiliated with Yahoo, Inc.


Step 1: Ensure Dependencies Are Available

Current environment status:

!`python3 -c "exec('try:\n import yfinance, pandas, numpy\n print(f\'yfinance={yfinance.__version__} pandas={pandas.__version__} numpy={numpy.__version__}\')\nexcept Exception:\n print(\'DEPS_MISSING\')')"`

If DEPS_MISSING, install required packages:

python
import subprocess, sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance", "pandas", "numpy"])

If already installed, skip and proceed.


Step 2: Route to the Correct Sub-Skill

Classify the user's request and jump to the matching section. If the user asks a general question about an ETF's premium or discount without specifying a particular analysis type, default to Sub-Skill A (Single ETF Snapshot).

User RequestRoute ToExamples
Single ETF premium/discountSub-Skill A: Single ETF Snapshot"is SPY at a premium?", "AGG premium to NAV", "BITO premium"
Compare multiple ETFsSub-Skill B: Multi-ETF Comparison"compare bond ETF discounts", "which has bigger premium IBIT or BITO", "rank these ETFs by premium"
Screener / find extreme premiumsSub-Skill C: Premium Screener"which ETFs have biggest discount", "find ETFs trading below NAV", "premium screener"
Deep analysis with contextSub-Skill D: Premium Deep Dive"why is HYG at a discount", "is ARKK premium normal", "ETF premium analysis with context"
Sudden premium surge / gamma squeezeSub-Skill E: Premium Surge Decomposition"why did KWEB jump 13% today", "is this ETF rally driven by gamma", "decompose today's ETF move", "dealer GEX for SOXL", "how long until the premium converges"
Defaults
ParameterDefault
Data sourceyfinance navPrice field
Price fieldregularMarketPrice (falls back to previousClose)
Screener universeCommon ETF list by category (see Sub-Skill C)

Sub-Skill A: Single ETF Snapshot

Goal: Show the current premium/discount for one ETF with context about what's normal, plus a peer comparison to show how it stacks up against similar ETFs.

A1: Fetch and compute
python
import yfinance as yf

# Peer groups by category — used to automatically compare the target ETF against its closest peers
CATEGORY_PEERS = {
    "Digital Assets": ["IBIT", "BITO", "FBTC", "ETHA", "ARKB", "GBTC"],
    "Intermediate Core Bond": ["AGG", "BND", "SCHZ"],
    "High Yield Bond": ["HYG", "JNK", "USHY"],
    "Long Government": ["TLT", "VGLT", "SPTL"],
    "Emerging Markets Bond": ["EMB", "VWOB", "PCY"],
    "Large Growth": ["QQQ", "VUG", "IWF", "SCHG"],
    "Large Blend": ["SPY", "VOO", "IVV", "VTI"],
    "Commodities Focused": ["GLD", "IAU", "SLV", "DBC"],
    "China Region": ["KWEB", "FXI", "MCHI"],
    "Trading--Leveraged Equity": ["TQQQ", "UPRO", "SOXL", "JNUG"],
    "Trading--Inverse Equity": ["SQQQ", "SPXU", "SOXS", "JDST"],
    "Derivative Income": ["JEPI", "JEPQ", "QYLD"],
    "Large Value": ["SCHD", "VYM", "DVY", "HDV"],
}

def etf_premium_snapshot(ticker_symbol):
    ticker = yf.Ticker(ticker_symbol)
    info = ticker.info

    # Verify this is an ETF
    quote_type = info.get("quoteType", "")
    if quote_type != "ETF":
        return {"error": f"{ticker_symbol} is not an ETF (quoteType={quote_type})"}

    price = info.get("regularMarketPrice") or info.get("previousClose")
    nav = info.get("navPrice")

    if not price or not nav or nav <= 0:
        return {"error": f"NAV data not available for {ticker_symbol}"}

    premium_pct = (price - nav) / nav * 100
    premium_dollar = price - nav

    # Additional context
    result = {
        "ticker": ticker_symbol,
        "name": info.get("longName") or info.get("shortName", ""),
        "market_price": round(price, 4),
        "nav": round(nav, 4),
        "premium_discount_pct": round(premium_pct, 4),
        "premium_discount_dollar": round(premium_dollar, 4),
        "status": "PREMIUM" if premium_pct > 0 else "DISCOUNT" if premium_pct < 0 else "AT NAV",
        "category": info.get("category", "N/A"),
        "fund_family": info.get("fundFamily", "N/A"),
        "total_assets": info.get("totalAssets"),
        "net_expense_ratio": info.get("netExpenseRatio"),
        "avg_volume": info.get("averageVolume"),
        "bid": info.get("bid"),
        "ask": info.get("ask"),
        "yield_pct": info.get("yield"),
        "ytd_return": info.get("ytdReturn"),
    }

    # Bid-ask spread as context for whether the premium is meaningful
    bid = info.get("bid")
    ask = info.get("ask")
    if bid and ask and bid > 0:
        spread_pct = (ask - bid) / ((ask + bid) / 2) * 100
        result["bid_ask_spread_pct"] = round(spread_pct, 4)

    return result
A2: Fetch peer comparison

After computing the target ETF's snapshot, look up its category and pull premium data for peers in the same category. This gives the user immediate context on whether the premium is ETF-specific or market-wide.

Use the target's category to select CATEGORY_PEERS, remove the target, and run the same price/NAV calculation for each peer. Skip unavailable NAV rows but report how many peers were requested and returned so missing data is visible.

Present the peer comparison as a small table after the main snapshot. This helps the user see whether the premium is unique to their ETF or shared across the category — for example, if all crypto ETFs are at ~1.5% premium, the user's ETF isn't an outlier.

A3: Interpret the result

Use this framework to explain whether the premium/discount is meaningful:

Premium/DiscountInterpretation
Within +/- 0.05%Essentially at NAV — normal for large, liquid ETFs
+/- 0.05% to 0.25%Minor deviation — common and usually not actionable
+/- 0.25% to 1.0%Notable — worth mentioning. Check bid-ask spread and category
+/- 1.0% to 3.0%Significant — common for less liquid, international, or specialty ETFs
Beyond +/- 3.0%Large — may indicate stress, illiquidity, or structural issues

Context matters by category:

  • US large-cap equity (SPY, QQQ, IVV): premiums > 0.10% are unusual
  • Bond ETFs (AGG, HYG, LQD, TLT): discounts of 0.5-2% happen during volatility
  • International/EM (EEM, VWO, KWEB): time-zone mismatch causes regular 0.3-1% deviations
  • Leveraged/Inverse (TQQQ, SQQQ, JNUG): 0.3-1.5% is normal due to daily reset mechanics
  • Crypto (IBIT, BITO): 1-3% premiums are common, especially for newer funds
  • Commodity (GLD, USO, UNG): depends on contango/backwardation in futures

Also compare the premium/discount to the bid-ask spread: if the premium is smaller than the spread, it's noise, not signal.


Sub-Skill B: Multi-ETF Comparison

Goal: Compare premium/discount across multiple ETFs side by side.

B1: Fetch and rank
python
import yfinance as yf
import pandas as pd

def compare_etf_premiums(tickers):
    rows = []
    for sym in tickers:
        try:
            t = yf.Ticker(sym)
            info = t.info
            if info.get("quoteType") != "ETF":
                rows.append({"ticker": sym, "error": "Not an ETF"})
                continue
            price = info.get("regularMarketPrice") or info.get("previousClose")
            nav = info.get("navPrice")
            if price and nav and nav > 0:
                prem = (price - nav) / nav * 100
                bid = info.get("bid", 0)
                ask = info.get("ask", 0)
                spread = (ask - bid) / ((ask + bid) / 2) * 100 if bid and ask and bid > 0 else None
                rows.append({
                    "ticker": sym,
                    "name": info.get("shortName", ""),
                    "price": round(price, 2),
                    "nav": round(nav, 2),
                    "premium_pct": round(prem, 4),
                    "spread_pct": round(spread, 4) if spread else None,
                    "category": info.get("category", "N/A"),
                    "total_assets": info.get("totalAssets"),
                })
            else:
                rows.append({"ticker": sym, "error": "NAV unavailable"})
        except Exception as e:
            rows.append({"ticker": sym, "error": str(e)})

    df = pd.DataFrame(rows)
    if "premium_pct" in df.columns:
        df = df.sort_values("premium_pct", ascending=True)
    return df
B2: Present as a ranked table

Sort by premium/discount (most discounted first). Highlight:

  • Which ETFs are at the deepest discount
  • Which are at the highest premium
  • Whether the premium/discount exceeds the bid-ask spread (if it doesn't, it's market microstructure noise)

Sub-Skill C: Premium Screener

Goal: Scan a universe of common ETFs to find those with the largest premiums or discounts.

C1: Define the universe and scan

Use the category-organized universe in references/etf_premium_reference.md, or the user's own list. Apply the Sub-Skill A calculation to each symbol, preserve category labels, filter by the requested absolute premium threshold, and sort from deepest discount to highest premium. Keep failed or missing-NAV counts visible instead of silently treating them as zero.

C2: Present the results

Show a ranked table sorted by premium (most discounted first). Group by category if the list is long. Call out:

  • Top 5 deepest discounts — potential buying opportunities (or signs of stress)
  • Top 5 highest premiums — overpaying risk
  • Category patterns — are all bond ETFs at a discount? Are all crypto ETFs at a premium?

Warn that large universes may take 1-2 minutes.


Sub-Skill D: Premium Deep Dive

Goal: Combine premium/discount data with additional context to help the user understand why the premium exists and whether it's likely to persist.

D1: Gather comprehensive data

Run the Sub-Skill A snapshot, then pull three months of daily history and add:

  • Annualized volatility: std(daily returns) * sqrt(252)
  • Average daily dollar volume: mean(close * volume)
  • Percentage distance from the three-month closing high
  • AUM, expense ratio, yield, YTD return, and three-year beta
  • Bid-ask spread percentage and whether the absolute premium exceeds that spread

Keep unavailable fields as null rather than inventing values. Timestamp price and NAV inputs so users can judge whether the comparison is synchronized.

D2: Explain the why

After gathering data, explain the premium/discount using this diagnostic framework:

Common causes of premiums:

  • Demand surge — more buyers than authorized participants can create shares (common for new/hot ETFs like crypto)
  • Time-zone mismatch — international ETF trading when underlying markets are closed; price reflects anticipated moves
  • Creation mechanism bottleneck — when authorized participants face constraints on creating new shares
  • Sentiment premium — retail demand pushes price above fair value during hype cycles

Common causes of discounts:

  • Liquidity stress — during sell-offs, bond and credit ETFs often trade at discounts because underlying bonds are harder to price/trade than the ETF itself
  • Redemption pressure — heavy outflows but slow authorized participant response
  • Stale NAV — the official NAV may not reflect after-hours news or events
  • Structural issues — contango in futures-based ETFs (USO, UNG) creates persistent drag

Is the premium likely to persist?

  • For liquid US equity ETFs: No — arbitrage corrects deviations within minutes
  • For bond ETFs during stress: Discounts can persist for days or weeks
  • For crypto ETFs: Premiums tend to narrow as the fund matures and APs become more active
  • For international ETFs: Resets daily as underlying markets open

Sub-Skill E: Premium Surge Decomposition (Gamma Squeeze Analysis)

Goal: When an ETF has just experienced a dramatic intraday move that diverges from its underlying holdings, decompose the move into (1) a fundamental NAV-driven component and (2) an "excess premium" driven by structural forces — most commonly options dealer gamma hedging, AP arbitrage breakdowns, or sentiment surges. Then assess how long the premium will likely take to converge.

This sub-skill is appropriate when the user reports or asks about:

  • An ETF moving 5%+ in a single session
  • A divergence between the ETF and its named underlyings (e.g., "MSTR jumped 13% but BTC only rose 3%")
  • A suspected gamma squeeze in an ETF or single name
  • Whether dealer hedging is amplifying a move

Read references/gamma_squeeze_reference.md for the full GEX formula derivation, dealer-positioning conventions, and worked examples before running E2.

Show full SKILL.md (838 more words)Show less
E1: Decompose today's move into NAV-driven vs excess premium

The static navPrice field gives only the most recent end-of-day NAV. Estimate today's NAV return from current holdings weights and same-session holding returns, normalize by the covered weight, then calculate:

text
NAV proxy return = sum(weight_i x return_i) / covered weight
Excess premium return = ETF return - NAV proxy return

Report holdings coverage and the per-holding returns used. If funds_data.top_holdings is incomplete, prefer issuer-published holdings or user-supplied weights.

Caveat: For international ETFs whose underlyings trade in a closed session (e.g., Asian holdings during US hours), the holdings' US-listed proxies (ADRs) or futures must be used. If neither is available, flag this to the user — the NAV proxy will be stale.

E2: Compute dealer gamma exposure (GEX) from the options chain

GEX approximates dealer hedging sensitivity per 1% underlying move. Read the formulas and both positioning conventions in references/gamma_squeeze_reference.md, calculate contract gamma from current spot, strike, time, risk-free rate, and IV, then aggregate OI x gamma x spot^2 across the chain.

Return call GEX, put GEX, SqueezeMetrics-style net GEX, gross hedge pressure, call/put OI ratio, median near-ATM IV, expirations analyzed, and the top strike/expiry concentrations. State the sign convention explicitly; do not infer actual dealer inventory from public OI alone.

Interpret the output:

  • net_gex_squeezemetrics_$ highly negative → dealers are short gamma; rallies will be amplified by their hedging buys. Classic gamma-squeeze fuel.
  • Concentration on a single near-dated strike (e.g., heavy open interest in one strike of next month's calls) → squeeze is fragile and concentrated. When that strike expires or the spot moves past it, the gamma decays sharply.
  • ATM IV well above the recent average (e.g., 78% against a typical 30–40%) → market is pricing in continued large moves; option premium decay alone will provide some convergence pressure over days.
  • Call/Put OI ratio > 2.5 → call-heavy positioning, consistent with a bullish gamma squeeze setup.
E3: Compare structural buying pressure to actual volume

Estimate the upper-bound dealer share with:

text
Implied dealer-driven dollars = abs(GEX per 1% move) x abs(ETF return in percentage points)
Dealer share of volume = implied dealer-driven dollars / (close x volume)

This is a rough estimate — it assumes every contract's full gamma was hedged in a single direction during the move. Real hedging is incremental, and not all dealers hedge identically. Treat as an upper-bound heuristic, not a precise figure. Always present it alongside the assumptions.

E4: Assess premium convergence timeline

Convergence plays out on three time scales (details in the Convergence Timeline section of references/gamma_squeeze_reference.md):

Time scaleMechanismWhat to check
HoursAP creation/redemption arbitrageIs the underlying market open? Are creation units restricted? Is the spread between bid/ask widening (suggests AP stepping back)?
DaysOptions expiration / gamma decayWhen does the dominant strike's expiration land? Is OI rolling forward or being closed? Is IV starting to compress?
WeeksNet flow normalizationIs the ETF receiving large daily inflows (signals demand outpacing creation capacity)? Is short interest building (potential additional squeeze fuel)?

For the hours view, record whether the underlying market is open and whether creation/redemption is constrained. For the days view, calculate days to the largest gamma concentration's expiry and check whether IV and OI are decaying or rolling. For the weeks view, use issuer flow/creation data where available; AUM alone is only a rough proxy.

E5: Present the decomposition

Format the answer in this order:

  1. Headline number: today's ETF move, NAV-proxy move, and the excess premium (in pp).

  2. Decomposition table:

    ComponentContribution
    NAV-driven (holdings × weights)+X.X%
    Excess premium (residual)+Y.Y%
    Total ETF move+Z.Z%
  3. Dealer hedging quantification:

    • Net GEX (SqueezeMetrics convention)
    • Implied dealer $ buying for the day vs actual $ volume
    • Estimated dealer share of buying pressure
  4. Risk indicators: ATM IV, call/put OI ratio, top-3 strike/expiration concentrations.

  5. Convergence outlook: list each of the hours/days/weeks mechanisms with the current state of each.

  6. Caveats: the GEX estimate assumes uniform dealer positioning; the NAV proxy is stale during overnight sessions; this is not a forecast of future price.


Step 3: Respond to the User

Always include
  • The ETF name and ticker
  • Market price and NAV with the calculation shown
  • Premium/discount percentage clearly labeled
  • Context: is this deviation normal for this ETF category?
Always caveat
  • NAV data from Yahoo Finance reflects the most recent official NAV (typically end of prior trading day) — it is not real-time
  • Market price may have a 15-minute delay depending on the exchange
  • Premium/discount can change rapidly during market hours — this is a snapshot, not a live feed
  • Small premiums/discounts (< bid-ask spread) are market microstructure noise, not real mispricing
  • Don't recommend buying or selling on premium/discount alone — present the data and let the user decide
Formatting
  • Use markdown tables for multi-ETF comparisons
  • Show the formula: Premium/Discount = (Market Price - NAV) / NAV x 100
  • Bold the headline figure in text: "trading at a 0.45% discount" or "at a 1.2% premium"
  • Round percentages to 2-4 decimal places depending on magnitude

Reference Files

  • references/etf_premium_reference.md — Detailed formulas, category-specific benchmarks, common ETF universe list, and background on the creation/redemption mechanism that drives premiums
  • references/gamma_squeeze_reference.md — Premium decomposition framework, Black-Scholes gamma + GEX formulas with both SqueezeMetrics and customer-net-long conventions, convergence-timeline framework (hours/days/weeks), gamma-squeeze vs routine-rally diagnostic table, and a worked example. Read this before running Sub-Skill E.

Read the reference files for deeper technical detail on ETF premium/discount mechanics, historical context, and the gamma-squeeze decomposition methodology.

© himself65, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in plugins/market-analysis/skills/etf-premium of himself65/finance-skills.

  • SKILL.md
  • README.md
  • references/etf_premium_reference.md
  • references/gamma_squeeze_reference.md

Open the folder on GitHubat commit 01fc7b4

Compare with similar skills

Etf Premium next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Etf Premium compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Etf Premium this skillhimself65/finance-skills3.4k—~5.2kAutomated safety check: PassMIT
Stock Analysis24mlight/StockClaw1012 repos~2kAutomated safety check: NotesMIT
Regimejackson-video-resources/markov-hedge-fund-method483—~1.6kAutomated safety check: PassCustom licence
Stock Value AnalyzerFunnyKun/stock-value-analyzer140—~3.3kAutomated safety check: PassNone
Yahoo Finance24mlight/StockClaw1012 repos~1.1kAutomated safety check: NotesMIT
Stock Analysisliusai0820/Stock-Analysis-Skill142—~904Automated safety check: NotesNone

Similar skills

  • Stock Analysis

    24mlight/StockClaw

    Analyze stocks and cryptocurrencies using Yahoo Finance data.

    101 GitHub starsUsed in 2 repos~2k tokens
    Business, Finance & HRAuto-check: notes
  • Regime

    jackson-video-resources/markov-hedge-fund-method

    Detect the market regime (Bull / Bear / Sideways) for ANY asset and turn it into a tradeable signal or a risk filter.

    483 GitHub stars~1.6k tokensUpdated 4 mo ago
    Business, Finance & HRAuto-check passed
  • Stock Value Analyzer

    FunnyKun/stock-value-analyzer

    基于邱国鹭《投资中最简单的事》方法论的股票价值分析器(v2.0 双层架构)。通过"三好原则"(好行业、好公司、好价格)系统评估一只股票是否值得投资。v2.0 在原定性框架之上注入一套可量化、可复现的硬模型层——反向 DCF 反解市场隐含增速、情景概率加权估值、EPV 盈利能力价值、分行业估值路由、杜邦三/五因子分解、ROIC vs WACC、Piotroski F-Score、Beneish…

    140 GitHub stars~3.3k tokensUpdated 3 mo ago
    Business, Finance & HRAuto-check passed
  • Yahoo Finance

    24mlight/StockClaw

    Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance.

    101 GitHub starsUsed in 2 repos~1.1k tokens
    Business, Finance & HRAuto-check: notes
  • Stock Analysis

    liusai0820/Stock-Analysis-Skill

    股票智能分析技能。输入股票代码(A股/港股/美股),自动完成: 1. An agent skill from liusai0820/Stock-Analysis-Skill.

    142 GitHub stars~904 tokensUpdated 7 mo ago
    Business, Finance & HRAuto-check: notes
  • B3 Analysis

    guhcostan/b3analysis

    Load this skill when analyzing Brazilian stocks listed on B3, building investment portfolios with Brazilian equities, or interpreting data from yfinance, BCB API, and Google News PT-BR.

    128 GitHub stars~1.5k tokensUpdated 6 mo ago
    Business, Finance & HRAuto-check passed

More from himself65/finance-skills

All 19 skills in this repo
  • Company Valuation

    himself65/finance-skills

    Estimate a public company's intrinsic value with DCF, relative (peer multiple), and sum-of-the-parts (SOTP) methods, then blend them into an implied share price with upside/downside vs the market…

    3.4k GitHub stars~3.3k tokensUpdated 4 days ago
    Auto-check passed
  • Earnings Preview

    himself65/finance-skills

    Build a pre-earnings briefing for a stock from Yahoo Finance data (yfinance): the upcoming report date and timing, consensus EPS and revenue estimates with their range, the beat/miss track record…

    3.4k GitHub stars~1.4k tokensUpdated 4 days ago
    Auto-check passed
  • Earnings Recap

    himself65/finance-skills

    Analyze a company's most recent (or a specified past) earnings report from Yahoo Finance data (yfinance): actual vs estimated EPS, surprise size, revenue and margin trends, and the stock's price…

    3.4k GitHub stars~1.7k tokensUpdated 4 days ago
    Auto-check passed
  • Estimate Analysis

    himself65/finance-skills

    Analyze sell-side analyst estimates and how they are changing, using Yahoo Finance data (yfinance): EPS and revenue consensus by period, estimate ranges and dispersion, revision trends over…

    3.4k GitHub stars~1.8k tokensUpdated 4 days ago
    Auto-check passed
  • Fintel Data

    himself65/finance-skills

    Query Fintel (fintel.io) institutional market data through its REST API or official MCP server.

    3.4k GitHub stars~2.2k tokensUpdated 4 days ago
    Auto-check: notes
  • Generative UI

    himself65/finance-skills

    Design system and templates for Claude's built-in generative UI — the showwidget tool that renders interactive HTML/SVG widgets inline in claude.ai conversations.

    3.4k GitHub stars~3.1k tokensUpdated 4 days ago
    Auto-check passed

Works with

Questions about Etf Premium

What does Etf Premium do?

Calculate an ETF's premium or discount to NAV from Yahoo Finance data (yfinance), compare or screen ETFs by premium, explain why a gap exists, and decompose a sudden ETF move into NAV-driven vs…. Etf Premium is an agent skill from himself65/finance-skills. Calculate an ETF's premium or discount to NAV from Yahoo Finance data (yfinance), compare or screen ETFs by premium, explain why a gap exists, and decompose a sudden ETF move into NAV-driven vs structural components (dealer gamma exposure, blocked AP arbitrage, sentiment).

When should I use Etf Premium?

Etf Premium fits situations like: the user asks whether an ETF trades above; compares ETF premiums; screens for the biggest ones; asks about ETF arbitrage.

How do I install Etf Premium in Claude Code?

Run `npx skills add himself65/finance-skills --skill etf-premium -a claude-code`. Or copy the skill folder (plugins/market-analysis/skills/etf-premium in himself65/finance-skills) into .claude/skills/etf-premium in your project. Claude Code loads it when a task matches its description.

How do I install Etf Premium in Codex?

Run `npx skills add himself65/finance-skills --skill etf-premium -a codex`. Or copy the skill folder (plugins/market-analysis/skills/etf-premium in himself65/finance-skills) into .agents/skills/etf-premium in your project. Codex loads it when a task matches its description.

Can I use Etf Premium in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add himself65/finance-skills --skill etf-premium -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/etf-premium, .gemini/skills/etf-premium, .github/skills/etf-premium and .opencode/skills/etf-premium in your project.

What does Etf Premium need to run?

SKILL.md names no scripts, command-line tools or credentials: Etf Premium is instructions for the agent only. Our summary lists: Python 3.

Does Etf Premium access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Etf Premium safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Etf Premium use?

Etf Premium is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Etf Premium use?

About 5.2k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.5k tokens, read only when the agent opens those files.

What are the alternatives to Etf Premium?

Skills that share tags, products or a category with Etf Premium: Stock Analysis (24mlight/StockClaw, 101 stars), Regime (jackson-video-resources/markov-hedge-fund-method, 483 stars), Stock Value Analyzer (FunnyKun/stock-value-analyzer, 140 stars) and Yahoo Finance (24mlight/StockClaw, 101 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Etf Premium?

himself65 (a GitHub user) maintains it in himself65/finance-skills, which has 3,382 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 5, 2026.

Source: himself65/finance-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.