ETF Premium/Discount AnalysisFinance Skill
A four-file workflow for ETF snapshots, comparisons, screening and holdings/options scenarios using yfinance. The basic price-to-NAV formula is clear, but price/NAV timestamps and holdings coverage require verification. The GEX explanation contradicts its stated dealer positions and overstates what open interest can reveal about actual buying and convergence. Read the high-risk findings before using the examples; no dealer-flow measurement or tested squeeze forecast is provided.
- Assessment score
- 75/100
- Snapshot risk
- High
- Audit conclusion
- Needs review
How the assessment score works
Pineify weights evidence recorded from the captured files: Skill structure 15%, Instruction clarity 20%, Dependency transparency 20%, Permission transparency 20%, Safety guardrails 15%, Finance task fit 10%. Each signal receives full credit for Yes, one-quarter credit for unknown, and none for No.
The score is not an output accuracy test or user rating. Read the findings and financial assumptions even when the score is high. Risk labels summarize recorded permissions and findings; they do not measure investment risk or certify that installation is safe.
Discovery
What this Skill helps an agent do.
Use the tasks and topics below to judge whether the captured workflow fits your question. Read its findings, dependencies and data requirements before relying on an output.
Domains and assets
Topics
Trust
Evidence from the captured directory.
This content snapshot assessment does not certify the repository, current files, or installation environment. "Not verified" means the captured files did not support a Yes or No conclusion.
License
GitHub reports the repository license as MIT License.
Review state
- Automated review
- Automated review
- Install tested
- No
- Human reviewed
- Not verified
Snapshot
- Files reviewed
- 4
- Captured
- 2026-07-29 07:31 UTC
- Snapshot ID
- fsh-etf-premium-2026-07-29-001
Permissions
FilesystemRead
YesThe workflow reads two bundled references and checks installed Python packages.
FilesystemWrite
YesThe documented pip command installs dependencies into the Python environment when missing.
NetworkAccess
Yesyfinance pulls ETF info, NAV, holdings, options chains, and historical prices from Yahoo Finance APIs. Screener mode fetches data for 60+ tickers.
ShellExecution
YesThe skill executes Python scripts in the shell for data fetching, premium calculation, GEX computation, and surge decomposition. Auto-installs yfinance, pandas, numpy via pip if missing.
CodeExecution
YesThe skill executes Python code including Black-Scholes gamma calculation, GEX aggregation, premium decomposition, volatility annualization, and dealer share estimation.
ExternalCredentials
NoNo external credentials are required — yfinance uses public Yahoo Finance APIs.
Dependencies
yfinance
python3 -m pip install yfinance (auto-installed if missing)
Python library for pulling Yahoo Finance ETF info, NAV, holdings, options chains, and price history.
pandas
python3 -m pip install pandas (auto-installed if missing)
Data manipulation library for handling ETF premium DataFrames and options chain data.
numpy
python3 -m pip install numpy (auto-installed if missing)
Numerical computing library used in volatility annualization and gamma exposure calculations.
Python 3.8+
Python 3.8 or later
Python runtime required for yfinance data fetching and all analytical computations.
Data sources named by the Skill
Yahoo Finance (yfinance)
Python library providing access to Yahoo Finance ETF data including navPrice, options chains, funds_data, and price history.
Snapshot assessment
75/100
Pineify Finance Skill snapshot assessment, version 1.0.0. Generated 2026-10-20 00:00 UTC.
High risk · Needs review
Skill structure
100/100Instruction clarity
100/100Dependency transparency
45/100Permission transparency
75/100Safety guardrails
56/100Finance task fit
80/100Audit findings
High
Open interest does not identify dealer flows
Open interest supplies neither dealer ownership nor net long/short positioning. Multiplying one gamma snapshot by the full daily move is a scenario approximation, not observed buying or a guaranteed upper bound on intraday hedge turnover. The DRAM worked example explicitly labels its source-article figures unverified and notes that its dollar GEX does not reconcile; do not present the 35% dealer share, squeeze diagnosis or convergence timetable as measured facts.
High
Gamma signs and expiry behavior need correction
The source assumes dealers short calls and long puts, yet calculates call gamma minus put gamma and interprets it as dealer gamma. Those stated positions instead have negative call and positive put gamma. Long calls and puts have positive gamma; short positions have negative gamma. Gamma need not decay near expiry: it can rise sharply at the money. A fixed options-expiry date therefore does not establish a squeeze-convergence deadline.
High
A holdings residual is not a measured premium cause
Synchronize price and NAV valuation timestamps before calling their difference a current premium. Normalizing a partial holdings list assumes omitted assets behave like included ones; FX, distributions, cash, derivatives, leverage and nonoverlapping sessions need separate treatment. Price return minus a holdings-return proxy is a percentage-point residual, not the exact premium change or evidence of gamma/AP constraints. A US listing does not show that underlying markets are open, and a single AUM value is not net flow.
Medium
Category ranges and model shortcuts are unverified
The category premium bands and hours/days/weeks convergence claims have no dated supporting dataset here. Roll costs and leverage compounding affect fund returns and NAV; they do not by themselves prove price/NAV mispricing. A spread comparison alone cannot establish mispricing or dismiss it. The code also uses UTC midnight expiry, assumes a 100 multiplier, omits dividend yield in gamma, loses valid zeros through truthiness checks, and silently skips failed holdings or tickers. Check actual contract terms, price/IV timestamps, coverage and missing values before interpretation.
Medium
Dependency manifest is absent from the snapshot
No requirements.txt or pyproject.toml is included in the captured directory. Dependencies are documented in README and auto-installed if missing.
Low
Auto-installs Python dependencies via pip if missing
The skill auto-installs yfinance, pandas, and numpy via subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance", "pandas", "numpy"]) when not detected. This modifies the user Python environment.
Low
GEX computation is sensitive to dealer-positioning assumptions
The skill computes GEX using two conventions (SqueezeMetrics net GEX and customer-net-long gross hedge) and explicitly warns that results can differ by orders of magnitude depending on convention. The reference file includes a worked example where the article figures do not reconcile, illustrating the sensitivity.
Low
Relies on yfinance — unofficial Yahoo Finance data
yfinance is an unofficial library that scrapes Yahoo Finance APIs. Data may be delayed, incomplete, or break without notice. The skill acknowledges NAV timing limitations and 15-minute price delays in its caveats.
Sources and relations
Context around this Skill.
Repository
himself65/finance-skills
topic
ETF premium & discount analysis
topic
Gamma squeeze & dealer hedging
topic
Options flow & GEX
agent
Claude Code
collection
Market analysis
guide
Reviewing finance skills before install
Registry
Read this record as data.
The public record includes the page-safe snapshot, evidence, assessment, taxonomy, and relations. Internal revision fields stay outside the public projection.
- Record ID
- github:himself65/finance-skills:plugins/market-analysis/skills/etf-premium
- Snapshot ID
- fsh-etf-premium-2026-07-29-001