Skip to main content

finance-skills

CI PyPI Python License: MIT

Auditable public-company research for AI coding agents. One skill, 10 focused workflows, 29 deterministic detector rules, and a fail-closed financial evidence engine.

Quick start: install the skill, install its live-data dependency, then run /finance screen NVDA (or $finance screen NVDA in Codex).

curl -fsSL https://raw.githubusercontent.com/notEhEnG/finance-skills/v0.14.3/install.sh | bash -s -- claude
python -m pip install "yfinance>=0.2"

The engine computes and labels the numbers. Your agent interprets the evidence. Neither is allowed to silently do the other's job.

Why finance-skills?

Company-analysis agents tend to fail in two ways: they invent plausible numbers, or they return a data dump without an argument. finance-skills separates those jobs and tests the boundary.

  • Deterministic fact layer. Revenue growth, margins, cash conversion, Rule of 40, net debt, and valuation multiples come from Python—not model arithmetic.
  • Fail-closed evidence. Missing debt is not zero. Period and currency mismatches block affected calculations. Disabled analyses stay visible.
  • Analyst layer with a point of view. The agent must weigh conflicting evidence, state the assumption doing the most work, and explain what would change the conclusion.
  • Auditable provenance. Material values preserve company, period, currency, source, confidence, data mode, formula, and evidence paths.
  • Read-only boundary. No brokerage integrations, trade execution, position sizing, guaranteed returns, or personalized buy/sell instructions.

See it in action

Claude Code answering “Is NVDA overvalued?” with live data:

finance-skills agent demo

Watch the full-quality video or the engine-only terminal demo.

What's included

The skill: finance

All research flows use one skill and one evidence contract:

Command What it does
/finance init Create non-sensitive project research context
/finance screen <ticker> Fast, evidence-grounded company assessment
/finance underwrite <ticker> Full conditional thesis with specialist perspectives
/finance audit <ticker> Accounting-quality, provenance, and detector review
/finance compare <tickers> Period- and currency-compatible peer comparison
/finance challenge <ticker> Red-team the current thesis and its core assumption
/finance stress <ticker> Explicit operating and valuation scenarios
/finance track <ticker> Save an immutable research snapshot and watchpoints
/finance refresh <ticker> Compare current evidence with saved research
/finance explain <topic> Explain a financial concept without company advice

Use $finance ... in Codex. A ticker by itself, or a generic “analyze” request, routes to screen.

Usage examples

/finance screen NVDA
/finance underwrite CRWV
/finance audit PLTR
/finance compare AMD NVDA
/finance stress NBIS
/finance explain free cash flow

Ask thesis questions naturally. “Is CRWV a buy?” becomes a conditional screen, not a recommendation: what the evidence supports, what could break the thesis, and which metrics decide the next update.

Deterministic runtime

The default install contains the focused SKILL.md, workflow references, specialist prompts, Codex metadata, and the 14-module runtime needed by the current /finance workflows. Repository media, development tooling, and legacy policy documents are not copied into the runtime skill.

Installation

Agent skill (recommended)

Run the installer from the project where you want the skill:

# Choose: claude | codex | cursor | gemini | antigravity | all
curl -fsSL https://raw.githubusercontent.com/notEhEnG/finance-skills/v0.14.3/install.sh | bash -s -- codex

# Required only for live market-data retrieval
python -m pip install "yfinance>=0.2"

The installer is version-pinned, copies an allowlisted payload, and refuses to overwrite a non-empty skill directory. Add --legacy-alias only if you still need the older /finance-skills namespace.

Runtime Default project path Invocation
Claude Code .claude/skills/finance/ /finance ...
Codex .codex/skills/finance/ or CODEX_SKILLS_DIR $finance ...
Cursor .cursor/skills/finance/ /finance ...
Gemini CLI .gemini/skills/finance/ /finance ...
Antigravity .antigravity/skills/finance/ /finance ...

Standalone Python CLI

python -m pip install finance-skills==0.14.3
finance screen --ticker NVDA --format json
finance compare --tickers AMD NVDA --format json
finance explain --topic "free cash flow" --format json

Use --fixture for explicit offline samples. Fixture output is always labelled as sample data and never substitutes for a failed live request.

How it works

User request
    │
    ▼
finance skill ── route to exactly one workflow reference
    │
    ▼
workflow_cli.py ── provider orchestration + normalization
    │
    ▼
evidence report ── observations + formulas + 29 detector results
    │
    ▼
agent synthesis ── conclusion + tension + limitations + what to watch

The engine owns calculation and provenance. The agent owns interpretation. A number presented as finance-skills output must exist in the current report; external filing facts must be separately sourced and never blended into engine metrics.

The canonical skill router is skill/SKILL.src.md. Focused workflows live in skill/reference/. The evidence and state contracts are documented in docs/redesign-contract.md.

Evidence and safety contract

Allowed Blocked
Report observations and engine calculations Numbers recalled or inferred by the model
Explicit user assumptions, clearly labelled Silent estimates or repaired missing values
Separately attributed primary-filing facts External values mixed into engine calculations
Conditional valuation language with a stated basis Unconditional “cheap”, “expensive”, buy, sell, or hold
Visible fixture, cache, and partial-data limits Presenting sample or stale data as live

Automatic company DCF remains disabled unless every required assumption is explicit. Educational output is not investment advice.

Data sources and limits

  • Market data: yfinance, with provider state and retrieval metadata exposed.
  • Filings: optional SEC Company Facts reconciliation when FINANCE_SEC_USER_AGENT contains a compliant contact string.
  • Company IR: explicit project-local observations; never scraped or inferred silently.
  • Estimates: opt-in and kept separate from reported historical evidence.
  • Fixtures: deterministic CRWV/NBIS samples for demos and offline tests.

Market-data providers can be delayed, incomplete, or definitionally inconsistent. Verify material revenue, cash flow, debt, cash, shares, and capex claims against the latest 10-K or 10-Q.

Persistent research

/finance init creates RESEARCH.md and .finance/config.json without overwriting existing files. track creates immutable company snapshots. refresh produces a deterministic diff and a reviewable thesis-update proposal instead of silently rewriting prior research.

Only init, track, and refresh write project state. State paths are confined to the project and use exclusive or append-only writes.

Evaluation

The public checker evaluates three layers:

Tier Examples of what it catches
Safe Unrecognized numbers, recommendation language, hidden disabled analyses
Useful Raw JSON dumps, caveat walls, answers with no analytical substance
Synthesized Draft copying, missing thesis structure, ticker-swappable prose

See docs/eval.md for the protocol and limitations. It checks contract adherence, not investment accuracy.

Development

python -m pip install -e ".[dev]"
python -m pytest tests -q --cov=scripts
ruff check scripts tests
mypy scripts

License

MIT · Read-only research · Not investment advice

Metadata

Release files for finance-skills 0.14.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for finance-skills 0.14.3
File Size Uploaded Provenance
finance_skills-0.14.3.tar.gz 160.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for finance-skills 0.14.3
File Interpreter ABI Platform
finance_skills-0.14.3-py3-none-any.whl Python 3 none any Details

Total release size: 308.3 kB

Release files / finance_skills-0.14.3.tar.gz

Download URL finance_skills-0.14.3.tar.gz
Size 160.9 kB
Tags Source
SHA-256 checksum
How to use checksums
07f5f755f83b016235b71cb25cf96159937fe7302ddd2c0c981614e4d9e82b61
BLAKE2b-256 checksum
How to use checksums
05a60392e3801cfe075859dfb8fe04ecaaa674eef7025c3e14b90e280b1ce04d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Release files / finance_skills-0.14.3-py3-none-any.whl

Download URL finance_skills-0.14.3-py3-none-any.whl
Size 147.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
757760c1164e39a73b08e94f744ca62027c14f8a3652df5349e889ff2b4a451a
BLAKE2b-256 checksum
How to use checksums
ff2f3bc155a7edae4dd4c521865f285ba26e3859cbc9a30e9633c3614f739774
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.6

Security for finance-skills 0.14.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page