v5.30.0
What's New
Proxy Season Analysis
New ProxySeason and ProxyContest classes for grouping proxy filings by season and detecting contested director elections. Market-wide discovery is available via proxy_contests(). (#773)
Proxy HTML Data Extractors
Structured extraction from DEF 14A proxy statements now covers Summary Compensation Tables (executive pay), CEO pay ratio with footnote cross-validation, voting proposals, beneficial ownership tables, director compensation tables, and audit fees by category.
Full-Text Search Enhancements
EFTS search is enriched with relevance scores, aggregations, filtering, and pagination. A new .grep() method provides universal content search across filings.
Bug Fixes
- Fiscal year labels for non-calendar FYE companies — Period labels for companies with early fiscal year ends (Jan–Mar) now follow the industry-standard convention (e.g., NVIDIA Q3 ending Oct 2025 is labeled "Q3 2026"). (#779)
- Empty statements from forward-looking schedule data — Companies with XBRL-tagged footnote amortization schedules no longer produce phantom future periods that displace real quarterly data. (#781)
- Missing XBRL instance from SEC — XBRL instance documents are now fetched directly from SEC when the local feed file lacks them. (#778)
- XBRL parsing for bytes content — Parser hardened to handle bytes content and missing entity info without errors.
- Concept panel display in
viewer.search()— Restored section separator newlines inside Concept panels that were incorrectly removed in v5.29.0. (#776)
Performance
- Replaced BeautifulSoup with lxml for proxy HTML parsing — faster and more memory-efficient.