| name | sec-10k-company-analysis |
| description | Analyze a company in an SEC 10-K SQLite database and produce high-quality evidence-grounded financial QA pairs. Use this whenever the user asks to analyze a company by CIK/ticker, inspect 10-K financial trends, generate finance QA datasets, or work with filings/financial_facts tables. |
SEC 10-K Company Analysis
Use this skill to analyze one company from a SQLite SEC filings database and produce distinct, data-grounded QA pairs.
Inputs you need
- Company identifier: CIK preferred (or ticker/name if unavailable).
- Database connection or path.
- Target output count if specified; otherwise produce 18–26 distinct QA pairs.
Required workflow
Step 1: Schema discovery
Always inspect tables first before querying. Confirm exact column names — never assume aliases.
Key schema facts:
filings table: columns are cik, form, filing_date, report_date, accession_number (NOT form_type)
financial_facts table: columns include fact_name, fact_value, unit, fiscal_year, fiscal_period, end_date, accession_number, form_type, dimension_segment, dimension_geography
- If a query fails with "no such column", inspect the table schema and correct immediately — do not retry the same failing query.
Step 2: Company identity and context
SELECT * FROM companies WHERE cik = '<CIK>'
SELECT cik, ticker, exchange FROM company_tickers WHERE cik = '<CIK>'
Note the SIC industry code — it governs which industry-specific metrics to prioritize in Steps 4–5.
Step 3: Filing context — use the full available history
SELECT cik, form, filing_date, report_date, accession_number
FROM filings WHERE cik = '<CIK>' AND form = '10-K'
ORDER BY filing_date DESC LIMIT 15
Identify all available 10-K filings. A longer time horizon enables richer comparisons (e.g., pre-crisis vs. post-crisis, pre-spinoff vs. post-spinoff). Use the full history in trend queries wherever data exists.
Step 4: Metric discovery (do this before bulk queries)
SELECT DISTINCT fact_name FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
ORDER BY fact_name LIMIT 300
SELECT DISTINCT fact_name FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
AND (fact_name LIKE '%Revenue%' OR fact_name LIKE '%Sales%'
OR fact_name LIKE '%ContractWithCustomer%')
Revenue/income labels vary by company — discover actuals first, then use them. Also scan for industry-specific tags based on the company's SIC code.
Annual data filter: Add AND fiscal_period = 'FY' to evidence queries to isolate full-year facts and avoid quarterly contamination when pulling trend data.
Step 5: Pull evidence across four rounds
Round A — Core multi-year trends (filter form_type = '10-K' and fiscal_period = 'FY', order by end_date, spanning the full available history):
- Revenue, net income, operating income, gross profit
- Total assets, liabilities, stockholders' equity
- Operating cash flow, investing cash flow, financing cash flow
- Long-term debt, shares outstanding, diluted EPS
- Dividends per share, interest expense, income tax expense
Round B — Detail and niche metrics (pull what's available; skip silently if absent):
- Comprehensive income, accumulated OCI (
AccumulatedOtherComprehensiveIncomeLossNetOfTax)
- Working capital components: accounts receivable, inventory, accounts payable, current assets, current liabilities
- Working capital changes from OCF statement:
IncreaseDecreaseInAccountsReceivable, IncreaseDecreaseInInventories, IncreaseDecreaseInAccountsPayable, IncreaseDecreaseInDeferredRevenue — these reveal cash conversion dynamics beyond balance sheet levels
- Debt carrying amount vs. fair value:
DebtInstrumentCarryingAmount, LongTermDebtFairValue, DebtInstrumentFairValue, LongTermDebtWeightedAverageInterestRateAtPointInTime
- Operating lease right-of-use assets, operating lease liabilities, finance lease assets and liabilities (query separately — both sides matter)
- Depreciation and amortization (separate from combined D&A if available)
- Interest income (relevant for cash-rich companies), deferred revenue, deferred tax
- Impairment charges, restructuring charges, goodwill and intangibles
- Share-based compensation, retained earnings
- Segment or geography data (
dimension_segment, dimension_geography filters)
- Industry-specific: R&D expense (pharma/tech), benefits/claims expense (insurance), lease revenue (REITs), investment income (financial), DD&A and exploration expense (energy), capex intensity, remaining performance obligations (aerospace/defense/contract manufacturers), asset retirement obligations (utilities/energy), environmental accruals
Round C — Business context and structural events:
SELECT fact_name, fact_value, end_date FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K' AND fiscal_period = 'FY'
AND (fact_name LIKE '%Impairment%' OR fact_name LIKE '%Restructuring%')
ORDER BY end_date
SELECT fact_name, fact_value, end_date FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
AND fact_name LIKE '%Goodwill%' ORDER BY end_date
SELECT fact_name, fact_value, end_date FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
AND (fact_name LIKE '%Advertising%' OR fact_name LIKE '%MarketingExpense%')
ORDER BY end_date
fact_name, fact_value, end_date financial_facts
cik form_type
fact_name (, )
end_date
Round D — Deep-dive niche metrics (probe these to unlock hard-to-replicate QA angles):
SELECT fact_name, fact_value, end_date FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
AND (fact_name LIKE '%Concentration%' OR fact_name LIKE '%MajorCustomer%')
ORDER BY end_date
SELECT DISTINCT fact_name FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
AND (fact_name LIKE '%Derivative%' OR fact_name LIKE '%Hedging%'
OR fact_name LIKE '%HedgeGainLoss%')
SELECT fact_name, fact_value, end_date FROM financial_facts
WHERE cik = '<CIK>' AND form_type = '10-K'
AND (fact_name LIKE '%GainLossOnRepurchase%' OR fact_name LIKE '%ExtinguishmentOfDebt%'
OR fact_name )
end_date
fact_name, fact_value, end_date financial_facts
cik form_type
(fact_name fact_name )
end_date
fact_name, fact_value, end_date financial_facts
cik form_type
fact_name
end_date
fact_name, fact_value, end_date financial_facts
cik form_type fiscal_period
(fact_name fact_name
fact_name )
end_date
fact_name, fact_value, end_date financial_facts
cik form_type
fact_name
end_date
Understanding structural events (acquisitions, divestitures, spinoffs, crises, segment reorganizations, derivative programs) allows QA pairs to explain not just what changed but why.
Step 6: Generate QA pairs from evidence
The core rule: only submit a QA pair when the specific data points cited in the answer are present in your query results. Do not generalize beyond what was retrieved.
Submit a QA pair immediately when you have multi-datapoint support for a non-trivial conclusion. Keep exploring after each submission — aim for 18–26 distinct pairs covering different angles.
Before finalizing, do a completeness sweep: review your query results and identify any significant findings (a trend, ratio shift, structural event, or comparison) that hasn't yet been captured in a QA pair. Each meaningful finding deserves its own pair. Niche metrics (AOCI, hedge activity, customer concentration, debt extinguishment, FX effects) often yield the most analytically distinctive pairs — do not skip them when data is available.
QA angle checklist
Work through as many distinct angles as the data supports:
- Revenue growth drivers, trajectory, and volatility
- Profitability trajectory (operating income, net income, margins as % of revenue)
- Earnings quality: operating cash flow vs. net income (OCF/net income ratio; divergence signals)
- Capital allocation: dividends, buybacks, capex — what does the mix reveal about management priorities?
- Balance sheet evolution: leverage, equity growth, asset mix
- Debt profile: level, interest rate trajectory, maturity management, fair vs. carrying value divergence
- Liquidity: cash position, working capital components (AR, inventory, AP), current ratio
- Per-share trends: EPS, dividend per share, share count (dilution or buyback)
- Comprehensive income vs. net income: OCI items, AOCI composition (forex, pension, hedges)
- Cost structure shifts: COGS, SG&A, R&D as % of revenue over time
- D&A and capex as signals of asset intensity, growth investment, and capital cycle stage
- Impairment and restructuring as transformation or risk signals
- Tax dynamics: effective rate trend, deferred taxes, valuation allowances
- Segment or geographic concentration (if data present); segment count changes as reorganization signals
- Industry-specific metrics (claims ratio, R&D intensity, lease income, DD&A, exploration spending, RPO/backlog, contract loss provisions, environmental accruals, etc.)
- Lease obligations: operating AND finance lease profiles (both sides of the lease relationship)
- Long-term obligations: pension/post-retirement benefits, AROs, environmental accruals
- Deferred revenue and contract liability trends (signal of demand health or billing dynamics)
- Goodwill and intangibles trajectory (signals acquisition history and impairment risk)
- Historical anchoring: how does current performance compare to a prior peak, trough, or pre-event period?
- Interest income and net interest position (especially for cash-rich companies)
- Financing cash flow pattern: debt issuance, equity issuance, buybacks — what does composition reveal?
- Working capital changes from OCF (IncreaseDecrease in AR/inventory/AP): reveals cash conversion vs. balance sheet levels
- Customer concentration risk: revenue dependency on major customers
- Derivative and hedge activity: commodity, interest rate, or FX risk management approach
- Debt extinguishment / refinancing: early repayment gains/losses, cost-of-debt evolution
- Equity method investment income: JV performance and strategic partnership contribution
Do not repeat the same thesis with different wording. Each QA should occupy a distinct analytical position.
QA style
Question form: Prefer synthesis-oriented framing — "What does [metric trend] reveal about [business quality/risk/strategy/sustainability]?" Both forms are acceptable, but synthesis questions produce richer answers and are harder to answer without the underlying evidence.
Good question examples:
- "What does EOG Resources' OCF-to-net-income ratio reveal about its earnings quality?"
- "How does ConocoPhillips' capex trajectory from 2020 to 2024 reflect its capital discipline strategy?"
- "What does Kraft Heinz's derivative and hedge activity from 2022 to 2024 reveal about its risk management approach to commodity exposure?"
- "What does Prologis's lessor operating lease payments receivable from 2022 to 2024 reveal about its future revenue visibility?"
Answer form: 1–2 sentences. Lead with a concrete trend or comparison (include specific values and period references), then state the implication or business meaning. Limit to 3–4 numbers — prefer qualitative synthesis over numeric recaps.
Good example:
q: How does AvalonBay's operating cash flow compare to its dividend obligations?
a: Operating cash flow of $1.61B in 2024 comfortably exceeds dividend payments of $969M (~1.65× coverage), and the pattern has held consistently from 2022–2024, indicating strong and sustainable dividend coverage.
Poor (too numeric, no synthesis):
a: OCF was $1.61B in 2024, $1.52B in 2023, $1.42B in 2022. Dividends were $969M, $935M, $891M.
Poor (claim not in evidence — never submit without retrieved data):
a: Operating margins improved from 15% to 22%, reflecting pricing power gains. ← only submit if you queried and retrieved those margin values.
Edge-case handling
- Missing expected metrics: search for alternate
fact_name values; never invent absent fields.
- Empty results: relax one filter at a time (remove accession constraint, widen date range, try alternate tag names, drop
fiscal_period = 'FY' if truly necessary).
- Mixed annual/quarterly facts: keep 10-K trend analysis annual-focused; use
fiscal_period = 'FY' to isolate full-year facts when available.
- Duplicate facts for same period: prefer the latest accession number; document only stable comparisons.
- Query errors: read the error, correct schema usage, and continue — do not retry the identical failing query.
- Short filing history: if fewer than 4 annual filings exist, note the limitation explicitly and focus QA on available periods.
Output format
For each QA pair:
q: one analytical question with clear scope and period.
a: concise answer grounded in retrieved facts (values, direction, period, implication).
Quality bar:
- Evidence-grounded: every value cited was retrieved from the database in this session.
- Non-redundant: each pair occupies a distinct analytical angle.
- Specific: questions name the company, metric, and time period.
- Synthetic: answers explain what the data means, not just what it shows.
- Self-contained: answers are interpretable without additional context.
- Comprehensive: together, the pairs give a reader a full financial picture across operational, balance sheet, cash flow, strategic, and risk dimensions.