lyndonkl/claude/financial-data-sourcing
- community
Checking that the SKILL.md file is still in the repository.
Maps every input a company analysis needs to where it comes from — filing line items, market data, Damodaran reference datasets, macro series — with units, update frequency, acceptable fallbacks and the consistency rules that bind them. Use when gathering data for a valuation, when an input is missing and a substitute is needed, when deciding whether a user-supplied figure can be accepted at face value, or when checking that figures are internally consistent.
Install
npx vskill@latest install lyndonkl/claude/financial-data-sourcingSKILL.md
Financial data sourcing
Every number in a valuation comes from somewhere, and the analysis is only as good as the worst-sourced number in it. This skill is the input contract. It says what to fetch, from which source, in what units, how stale it may be, whether a user may hand it over directly, and what to substitute when it cannot be found.
Two consumers depend on it. The financial-data-collector agent uses it to fill four artifacts. The orchestrator's gates G1_data, G3_financials, G4_discount_rate and G5_forecast are predicates over the fields defined here.
This skill does not carry method. It says what must be in hand before a procedure can run. For how a number is used, follow the concept path cited beside it.
What you produce
| Artifact | Contents | |
|---|---|---|
01-data/raw-financials.json | Every company field, per period, with source and as_of on each leaf | |
01-data/market-data.json | Every market field, plus the loaded reference-table snapshots with their as_of | |
01-data/sources.md | One line per source actually used, with retrieval date and document reference; every fallback and stale field listed | |
01-data/gaps.json | One entry per attempted field: status, fallback applied, and the stage it constrains |
Collect. Do not compute. Derived quantities belong to the downstream skills: financial-statement-normalization for lease and R&D capitalization, invested capital and cash flows, and cost-of-capital-toolkit for ratings, spreads, betas and WACC. A collector that quietly computes a ratio has erased the provenance the report needs.
Source classes
Every field carries exactly one class. The class decides caching, refresh policy and where blame lands when the number is wrong.
| Class | Code | What it is | Keyed by | |
|---|---|---|---|---|
| Company-specific | CO | This company's filings, its own prices, its own ownership records | ticker + fiscal period | |
| Market-wide | MK | A price or rate observed in a market, not attributable to one firm | currency or country + date | |
| Reference table | RT | A published lookup, refreshed on a vintage cycle | table name + as_of | |
| Derived | DV | Computed by the pipeline from the other three | not fetched |
Fetch CO, MK and RT. Never fetch DV. Where a DV field is listed anywhere below, it is because a later stage treats it as an input and must be able to name its provenance.
The source identifiers used throughout — F-10K, F-LEASE, M-PX, M-RATING, D-ERP, X-FRED and the rest — are defined in resources/source-registry.md.
Status vocabulary for gaps.json
Every field you attempt resolves to exactly one status.
| Status | Meaning | Effect | |
|---|---|---|---|
found | Retrieved from the named source at the named vintage | none | |
user | Supplied by the user, validation passed | record it and flag it in the report | |
derived | Computed from other found fields through a stated identity | record the identity | |
fallback | Primary source unavailable, documented default applied | must appear in sources.md and in the report's assumption list | |
stale | Found, but older than the freshness limit | usable, flagged; not allowed for vintage-critical fields | |
missing | Not obtainable and no fallback exists | triggers the stage's blocking rule |
One entry per attempted field, shaped like this:
The constrains list is what makes the file useful. A gap nobody traced to a stage is a gap nobody will remember at the point where it bites.
What a user may supply
Three answers per field, recorded in the tables in the resource files.
Y— accept the user's value as authoritative and recordsource: "user".Y*— accept it after the stated validation runs.N— never accept a bare value. It is derivable, or it must trace to a source.
Some fields are freely user-suppliable. These are the judgments the pipeline cannot make for itself.
- Mode, company identity, valuation currency, valuation date
- Target operating margin, market size, market-share path, sales-to-capital
- Growth-period length; terminal growth and terminal return on capital, subject to the cap
- Failure probability, recovery rate, bankruptcy-cost percentage, distress severity
- Buyer type, lambda, debt-allocation key, illiquidity route
- Synergy assumptions, rating constraints, peer-set definitions
Seven things are never accepted bare. A statement line with no filing reference. A rate-table row with no vintage. A WACC, cost of equity or beta given as a single number without its components. A normalized riskfree rate. A control premium expressed as a bolt-on percentage. A terminal growth rate above the riskfree rate. A growth rate and a reinvestment rate set independently of each other.
The rules that bind every stage
These hold across all sources. A violation is a failure, not a warning.
Matching
| Rule | Statement | Checked at | |
|---|---|---|---|
| R1 currency | Riskfree rate, equity risk premium, cost of debt, cash flows, growth and terminal growth are all in one currency | G4, G5 | |
| R2 claimholder | Equity cash flows go with the cost of equity, firm cash flows with the cost of capital. Return on equity goes with the cost of equity, return on capital with the cost of capital | G4, G6 | |
| R3 basis | Nominal cash flows with a nominal rate, real with real. The inflation assumption in the cash flows equals the one used in any currency conversion | G5 | |
| R4 time | Every vintage-critical reference table shares one as_of, and that as_of is inside the freshness limit for the valuation date | G1, G4 | |
| R5 debt convention | Gross debt throughout, or net debt throughout. The convention used to lever the beta equals the one in the WACC weights and in the equity bridge | G4, G6 |
R4 stated as a predicate: across {D-ERP, D-CTRY, D-SOVSPR, D-RATE1, D-RATE2, D-RATE3, D-SPREAD, D-MULTREG, D-DISTRIB}, max(as_of) − min(as_of) ≤ 3 months and valuation_date − min(as_of) ≤ 12 months.
Concepts: knowledge/concepts/cost-of-equity/cost-of-equity-assembly.md, knowledge/concepts/cost-of-debt-capital/hurdle-rate-choice.md, knowledge/concepts/cost-of-debt-capital/net-debt-vs-gross-debt.md.
Single count
Ten versions of one error. Each names a quantity that may enter the valuation exactly once.
| Rule | Counted once through | |
|---|---|---|
| N1 | The interest tax shield lives in the (1−t) factor of the discount rate, never also in FCFF | |
| N2 | Country risk enters through the equity risk premium, or lambda, or the cash flows — one of the three | |
| N3 | Employee option value is subtracted, or diluted shares are used, never both | |
| N4 | Cash sits inside the cash flows with its interest income and a cash-diluted beta, or outside and added back | |
| N5 | A cross-holding is a non-operating asset, or its equity income sits in operating earnings | |
| N6 | Failure risk enters through a probability weight, or through a raised discount rate | |
| N7 | Downside is protected by a rating constraint, or by an EBIT haircut | |
| N8 | A complexity or opacity adjustment is made in one place: cash flows, rate, growth, or a final haircut | |
| N9 | A real-option premium is added only after the matching optimism leaves the DCF | |
| N10 | Control value is added only for a buyer who can force the change |
N2 is the one that bites hardest during collection. If the sovereign spread was stripped out of the riskfree rate, it may not also sit inside the equity risk premium build.
Units and signs
- Percentages are decimal fractions in every artifact. Store 0.0472, never 4.72. This
covers growth, margins, tax rates, payout ratios, debt ratios, returns and spreads.
- Currency fields carry an explicit
{value, currency, scale}triple. Never mix scales
inside one table.
- Cash-flow-statement lines arrive already signed. Capital expenditure and working-capital
changes are added, not subtracted.
- A positive change in non-cash working capital is a cash outflow.
- Balance-sheet items are point-in-time; income and cash-flow items cover a period. Any
ratio that mixes them declares whether it uses beginning-of-period or average balances. Return on invested capital and return on equity use beginning-of-period capital.
- Interest-rate and inflation changes are absolute changes in the rate. GDP and currency
changes are percentage changes.
Collect in stages
Run A1 first, because it parameterises every later fetch. A2 through A8 then run in parallel except where a dependency is named. Full field tables, with units, source, user rule and fallback for each, live in the resource files.
A1 — Mandate, identity and routing
Fixes the frame: mode, company name, ticker and exchange, country of incorporation, valuation currency, valuation date, fiscal year end, industry keys, public or private, reporting standard. Mode, identity, currency and valuation date block everything when absent. The rest have inference fallbacks.
Two judgments here shape the whole run. First, map the industry by the business the firm actually operates, not by its listing classification. A firm in several businesses gets a list of industries with revenue weights, not one label. Second, if the valuation currency differs from the filing's reporting currency, flag every downstream stage as needing a conversion and record which route will be used. The routes are differential-inflation conversion of a finished rate, or a rebuild from the local riskfree rate.
Reporting standard matters more than it looks. An IFRS or Ind-AS filer often groups expenses by nature rather than by function, so there may be no cost-of-goods line at all. See knowledge/concepts/accounting-statements/accounting-standards-gaap-ifrs.md.
Fields: resources/company-inputs.md.
A2 — Financial statements
Pull ten fiscal years where available, five as the working minimum, one as the absolute floor. One year makes normalization impossible and blocks several routes.
Income statement, balance sheet and cash flow statement, from F-10K plus F-10Q whenever the last annual report is more than a quarter old. The quarterly filing is what lets you rebuild trailing twelve-month figures.
Three collection habits decide whether this stage is usable. Take the cash-flow statement's build-up lines, not just the section totals — free cash flow to equity cannot be built from a total. Take gross interest expense; a netted figure is not enough, so go to the debt footnote when the filer nets it. Label special items year by year over five to ten years, because the recurrence test needs the frequency and the variability, not this year's headline.
Six reconciliation ties run before the stage is marked complete. The balance sheet balances. Net income ties into the first line of cash flow from operations. The retained-earnings roll-forward closes. Income-statement depreciation ties to the cash-flow add-back. The cash tie closes. Segment third-party revenues plus eliminations reconcile to consolidated revenues. Failures of the first, second and fifth block the run; the rest flag.
Fields and ties: resources/company-inputs.md.
A3 — Footnotes and structured disclosures
Everything the face of the statements leaves out. This is the stage that separates a usable valuation from a plausible-looking wrong one.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/financial-data-sourcing/SKILL.md
Popularity
- Repository stars
- 162
- Repository forks
- 24
- 7-day trend score
- 25
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/lyndonkl/claude/financial-data-sourcing)