Finance & Investment Banking

3-Statements-Ultra

Builds an institutional-grade three-statement model (IS/BS/CF) from scratch in Excel — full formula linkage, zero hardcoded forecast cells, IPO prospectus / equity research quality.

55/ 100
Use with care

Useful, but reliability, evidence or controls still have material gaps.

See how it was scored ↓
Works as-is in
Codex · Claude Code · Claude.ai(Partial support)
Stars
★ 85
Last updated
5mo ago
financial-modelingthree-statement-modelexcelopenpyxl
+6equity-researchcn-gaapifrsus-gaapqc-validationquarterly-forecast

What does this skill do, and when should you use it?

This is a Claude Code / Cowork skill that builds a complete three-statement financial model in Excel from scratch using Python and openpyxl. Work proceeds across five independent sessions (data extraction → IS → BS → CF → returns and cross-checks), with a hard rule that every forecast cell must be an Excel formula rather than a hardcoded number, backed by gate scripts and a QC validation suite. It supports CN GAAP, IFRS and US GAAP, forcing quarterly columns for US/A-share names and semi-annual for HK names. State persists in disk sidecar files (state., _model_log.md, _pending_links.), so interrupted builds resume from the exact last checkpoint.

  • Extracts historical IS/BS/CF data from a NotebookLM notebook, a structured Excel upload, or a Sina/Yahoo Finance web fallback into a Raw_Info sheet
  • Builds an Assumptions driver sheet; multi-segment models can additionally build a Revenue_Build tab (Vol×ASP, Q YoY, guide+ramp per segment)
  • Generates IS / BS / CF tabs with openpyxl, where every forecast cell is a string formula referencing Assumptions or same-sheet rows
  • Builds CF year by year while BS Cash sits as a placeholder until SESSION D back-fills it from CF Ending Cash
  • Runs 19 QC checks (BS/CF/NI/REV reconciliation, hardcode scan, NCI continuity, formula integrity, etc.) and writes per-session gate markers
  • Registers a _Registry data-lineage sheet in SESSION E (tiered raw inputs + formula-traced derived rows)
Good fit
  • A sell-side or buy-side analyst who needs a three-statement model for a US, A-share or HK-listed company that can survive an IC memo
  • An investment banking analyst or intern whose model must reach prospectus/research-note quality — reconciliations at zero, every assumption traceable
  • Long-session users who are regularly interrupted by context compaction and need reliable resume-from-checkpoint behavior
  • Researchers covering CN GAAP companies who need native handling of the 营业利润 gap (R8 plug row) rather than a generic template
  • Modelers with multi-segment revenue who need independent volume×price drivers (triggers the conditional SESSION A2 Revenue_Build)
Not a fit
  • Users who just want a rough template filled in 20 minutes — the official financial-analysis:3-statements skill is the better fit
  • Claude Pro users uploading full 200+ page annual report PDFs — the author explicitly warns this consumes tokens extremely fast
  • Pure API callers on platforms without shell/filesystem access who don't want to adapt the flow — the 5-session build and gate scripts depend on both

How do you install this skill?

Before you use it
  • Static review only: no code was executed; reliability conclusions rest on source reading with low confidence.
  • Core scripts referenced by README/SKILL.md (qc_suite.py, preflight_check.py, per_session_gate.py, state_io.py) are not present in the evidence; verify their existence and usability after install.
  • gate-spec.md explicitly admits several QC items are unimplemented stubs — do not assume all 19 QCs are functional.
  • The NotebookLM path depends on Google OAuth and the unofficial notebooklm-py package (undocumented APIs); likely unreachable from mainland-China networks — prefer the Excel upload path.
  • License metadata is unknown; confirm terms before commercial use.
  • The skill instructs users to modify global CLAUDE.md/preferences to inject a recovery protocol; do so knowingly.
Before you start
Your agent needs
  • Shell / CLI
  • Network access
  • Local filesystem
Install first
  • Python 3.9+
  • openpyxl
  • yfinance
  • pandas
  • notebooklm-py (optional)

Two install routes depending on your client.

Claude Code (recommended: git clone + symlink, so git pull picks up updates):

git clone https://github.com/willpowerju-lgtm/3-statement-ultra-for-finance.git
cd 3-statement-ultra-for-finance
ln -s "$PWD/3-statements-ultra" ~/.claude/skills/3-statements-ultra

Claude Code (plain copy if symlinks aren't possible):

git clone https://github.com/willpowerju-lgtm/3-statement-ultra-for-finance.git
cp -r 3-statement-ultra-for-finance/3-statements-ultra ~/.claude/skills/

Cowork: download 3-statements-ultra-public.skill from the repo, then Settings → Skills → Install from file.

Prerequisites before first use:

pip install openpyxl yfinance pandas
pip install "notebooklm-py[browser]" && playwright install chromium

How do you use this skill?

Try saying

Once installed, send your agent any of these to trigger it:

  • build a 3-statement model for BABA
  • build a 3-statement model for Tencent (0700.HK)
  • 从零建模 for 600519.SS — historical IS/BS/CF in my uploaded Excel
  • financial model — data is in my NotebookLM notebook, start SESSION A

Trigger with phrases like "三表模型" or "build a 3-statement model for [Company]". On first run the skill executes MARKET_GATE: it asks the listing venue (US / A-share / HK / dual-listed) and locks quarterly or semi-annual column structure into state. It then proceeds through sessions: A (data extraction + assumptions), A2 (conditional Revenue_Build), B (IS), C (BS with Cash placeholder), D (CF + back-fill), E (returns + cross-check + Summary). Each session can be paused and resumed independently since state lives on disk. The author strongly recommends pasting the Compaction Recovery Protocol block into your Claude user preferences before the first session, to prevent the model from rebuilding row numbers from memory after context compaction. Data source priority: structured Excel > NotebookLM notebook > web fallback; avoid uploading full PDFs.

What are this skill's strengths and limitations?

Pros
  • Rule Zero enforces all-formula forecasts: change an assumption and the model recalculates — no silent breakage
  • 19 QC checks with BLOCKER/WARNING severity and durable gate markers; the next session refuses to start if the previous gate didn't pass
  • Cash must equal CF Ending Cash — balance-sheet residual plugging is banned outright, the most fundamental quality difference vs. template fillers
  • Native CN GAAP R8 plug reconciles 营业利润, so EBIT isn't systematically wrong for A-share/HK names
  • Thorough disk-state persistence design — interrupted long sessions resume cleanly from checkpoints
Limitations
  • The full flow takes ~1–2 hours across 5 sessions — much heavier than single-session template population
  • No open-source license is declared; the repo states personal/research use only with no warranty
  • NotebookLM integration depends on the unofficial notebooklm-py client and undocumented Google APIs that may break without notice
  • The repo has no topics metadata and the author provides no evidence of an independent test suite; compatibility claims (Claude Code / Cowork) are the author's own
  • The Public Edition is a sanitized version — Bark notifications and internal workflow integrations were removed

How does this skill compare with similar options?

Side by side with related skills; every score comes from the same FSRS standard.

Skill FS score Stars Last updated License
3-Statements-Ultra this page 55 · Use with care ★ 85 5mo ago —
Three-Statement Model Builder ✓ Anthropic · Official 55 · Use with care ★ 40k 1mo ago Apache-2.0
Taiwan Stock One-Click Financial Model & Investment Deck Generator 45 · Not recommended ★ 40 3mo ago —
XLSX Spreadsheet Skill (Open Cowork) 69 · Recommended ★ 2.2k 12d ago MIT
Earnings Update Researcher ✓ Anthropic · Official 54 · Use with care ★ 40k 1mo ago Apache-2.0

The README explicitly compares this skill against the official financial-analysis:3-statements skill: the official one is fast and fine for quick template population, but plugs Cash from the BS residual, uses a single-line revenue assumption, mixes hardcoded values into forecast cells, and has no QC gate. This skill enforces Cash = CF Ending Cash, per-segment revenue drivers, 100% formula cells, native CN GAAP handling, 19 tiered QC checks with per-session gates, and NCI roll-forward — at the cost of 5 sessions and ~1–2 hours. Use the official skill for rough models; use this one when the model must hold up to scrutiny.

How did FollowSkills review this skill?

FollowSkills review · FSRS-2.0
Use with care
55/ 100 5-point scale 2.8 / 5
1Trust15 / 25 · 3.0/5

Evidence shows all computation happens locally via Excel/openpyxl with no hidden data exfiltration; the NotebookLM OAuth path is optional and clearly explained; MARKET_GATE forces explicit user confirmation of listing venue; hooks are self-gated to this skill's context only. Deducted for: reliance on unofficial third-party notebooklm-py (undocumented Google APIs) and yfinance/Sina web scraping with no rollback/failure guidance; unknown license metadata; unverified publisher (not itself a deduction, but attribution chain incomplete). Full marks not awarded because data-flow disclosure and recovery mechanisms are incomplete.

2Reliability10 / 20 · 2.5/5

Evidence shows internally consistent design: Rule Zero, session startup protocol, _State/JSON sidecar persistence, four self-gated hooks, per-session gates, and concrete diagnosable failure messages (e.g., granularity guard stderr with fix commands). Deducted for: static ceiling of 10; core scripts (qc_suite.py, preflight_check.py, per_session_gate.py, state_io.py) are not present in the evidence so key paths cannot be confirmed; gate-spec.md admits QC-1/3/4/5/6 etc. are unimplemented stubs; no committed test suite or CI evidence.

3Adaptability11 / 15 · 3.7/5

Evidence shows clear bilingual trigger words, an explicit non-fit boundary (template-filling redirected to financial-analysis:3-statements), US/A-share/HK coverage with three accounting standards, and user confirmation of granularity. Deducted for: NLM path depends on Google OAuth possibly unreachable from mainland China (Excel/web fallback exists, so not fatal); SKILL.md is truncated in evidence, and some boundary behavior depends on reference files not provided.

4Convention9 / 15 · 3.0/5

Evidence shows well-layered docs (SKILL.md → references/), versioning (v6.0), changelog, FAQ, pitfall index, install instructions and symlink-based update path. Deducted for: unknown license; the scripts/ directory promised by README is not in evidence so deliverable naming cannot be confirmed; maintenance responsibility rests solely on a personal repo with no explicit governance statement.

5Effectiveness6 / 15 · 2.0/5

Evidence shows a clearly specified output (formula-linked 3-statement Excel) and concrete comparative arguments vs the official skill (no Cash plug, per-segment revenue, CN GAAP R8, NCI roll-forward), supporting real marginal value. Deducted for: static ceiling of 7; no executed reproduction or representative output verifiable; the claimed 38/39 PASS on a representative model is author-asserted; the 5-session, 1-2 hour cost is proportionally high and unproven.

6Verifiability4 / 10 · 2.0/5

Evidence shows auditable hook source code, QC schema, and pitfall index with reasonable fact/design separation. Deducted for: static ceiling of 5; all execution claims (38/39 PASS, QC pass rates, hook hit rates) lack third-party or CI corroboration; missing core scripts make conclusions not independently reproducible.

1 2 3 4 5 6

Open a dimension to read why it scored that way

Reviewed Sep 10, 2026 Reviewed revision 4afeacd6469e Review evidence[1][2][3][4][5][6][7][8][9][10]

Evidence confidence:Low — Mostly static review, author material or a limited demo; useful for discovery, not high-risk decisions.

See the full review method →

FAQ

Can I use this without NotebookLM?
Yes. NotebookLM is optional. Without it the skill falls back to web data (Sina / Yahoo Finance), and the author actually recommends uploading a clean Excel with 3–5 years of historical IS/BS/CF as the most token-efficient path.
What happens if I close the chat mid-build?
Nothing is lost. Every code block writes a progress marker to disk; state lives in state., _model_log.md, _pending_links. (and the legacy in-xlsx _State sheet). Each session's startup protocol finds the last completed step and resumes.
Is it normal for BS CHECK ≠ 0 after Session C?
Yes, and it's correct. BS Cash is a 0 placeholder until Session D back-fills it from CF Ending Cash. Do not force-balance the BS at that point.
What if I only have annual data but the company reports quarterly?
The skill auto-detects granularity via yfinance, and R10 makes granularity a function of listing venue, not disclosure pattern — US/A-share models get forced quarterly columns, HK gets semi-annual, with missing periods filled by placeholders or interpolation.

Related skills