Initial commit: copy from fsi-plugins-dev
Financial services plugins for Claude Code covering: - Equity Research - Financial Analysis (comps, DCF, LBO, 3-statements, check-deck, check-model) - Investment Banking (strip profiles, CIM, pitch decks, merger models) - Private Equity (deal screening, IC memos, portfolio monitoring) - Wealth Management
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "fsi-plugins",
|
||||
"owner": {
|
||||
"name": "Matt Piccolella"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "financial-analysis",
|
||||
"source": "./financial-analysis",
|
||||
"description": "Core financial modeling and analysis tools: DCF, comps, LBO, 3-statement models, competitive analysis, and deck QC"
|
||||
},
|
||||
{
|
||||
"name": "investment-banking",
|
||||
"source": "./investment-banking",
|
||||
"description": "Investment banking productivity tools - client and market insights, deck creation, financial analysis, and transaction management"
|
||||
},
|
||||
{
|
||||
"name": "equity-research",
|
||||
"source": "./equity-research",
|
||||
"description": "Equity research tools: earnings analysis, initiating coverage reports, and research workflows"
|
||||
},
|
||||
{
|
||||
"name": "private-equity",
|
||||
"source": "./private-equity",
|
||||
"description": "Private equity deal sourcing and workflow tools: company discovery, CRM integration, and founder outreach"
|
||||
},
|
||||
{
|
||||
"name": "wealth-management",
|
||||
"source": "./wealth-management",
|
||||
"description": "Wealth management and financial advisory tools: client reviews, financial planning, portfolio analysis, and client reporting"
|
||||
}
|
||||
]
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
# Operating System
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# IDE and Editor
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# Dependencies
|
||||
node_modules/
|
||||
vendor/
|
||||
venv/
|
||||
env/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Build outputs
|
||||
dist/
|
||||
build/
|
||||
out/
|
||||
target/
|
||||
*.log
|
||||
|
||||
# Environment and secrets
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
*.key
|
||||
*.pem
|
||||
|
||||
# Testing
|
||||
coverage/
|
||||
.coverage
|
||||
*.cover
|
||||
.pytest_cache/
|
||||
|
||||
# Package files
|
||||
*.egg-info/
|
||||
.eggs/
|
||||
|
||||
# Personal files
|
||||
TASKS.md
|
||||
MEMORY.md
|
||||
@@ -0,0 +1,37 @@
|
||||
# Financial Services Plugins
|
||||
|
||||
This is a marketplace of Claude Cowork plugins for financial services professionals. Each subdirectory is a standalone plugin.
|
||||
|
||||
## Repository Structure
|
||||
|
||||
```
|
||||
├── investment-banking/ # Investment banking productivity
|
||||
```
|
||||
|
||||
## Plugin Structure
|
||||
|
||||
Each plugin follows this layout:
|
||||
```
|
||||
plugin-name/
|
||||
├── .claude-plugin/plugin.json # Plugin manifest (name, description, version)
|
||||
├── commands/ # Slash commands (.md files)
|
||||
├── skills/ # Knowledge files for specific tasks
|
||||
├── hooks/ # Event-driven automation
|
||||
├── mcp/ # MCP server integrations
|
||||
└── .claude/ # User settings (*.local.md)
|
||||
```
|
||||
|
||||
## Key Files
|
||||
|
||||
- `marketplace.json`: Marketplace manifest - registers all plugins with source paths
|
||||
- `plugin.json`: Plugin metadata - name, description, version, and component discovery settings
|
||||
- `commands/*.md`: Slash commands invoked as `/plugin:command-name`
|
||||
- `skills/*/SKILL.md`: Detailed knowledge and workflows for specific tasks
|
||||
- `*.local.md`: User-specific configuration (gitignored)
|
||||
- `mcp-categories.json`: Canonical MCP category definitions shared across plugins
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. Edit markdown files directly - changes take effect immediately
|
||||
2. Test commands with `/plugin:command-name` syntax
|
||||
3. Skills are invoked automatically when their trigger conditions match
|
||||
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,215 @@
|
||||
# Claude for Financial Services Plugins
|
||||
|
||||
Plugins that turn Claude into a specialist for financial services — investment banking, equity research, private equity, and wealth management. Built for [Claude Cowork](https://claude.com/product/cowork), also compatible with [Claude Code](https://claude.com/product/claude-code).
|
||||
|
||||
## Why Plugins
|
||||
|
||||
Cowork lets you set the goal and Claude delivers finished, professional work. Plugins let you go further: tell Claude how your firm does analysis, which data sources to pull from, how to handle critical workflows, and what slash commands to expose — so your team gets better and more consistent outcomes.
|
||||
|
||||
Each plugin bundles the skills, connectors, slash commands, and sub-agents for a specific financial services workflow. Out of the box, they give Claude a strong starting point for helping anyone in that role. The real power comes when you customize them for your firm — your models, your templates, your processes — so Claude works like it was built for your team.
|
||||
|
||||
## What is Claude for Financial Services?
|
||||
|
||||
Claude for Financial Services is a comprehensive solution built on Claude for Enterprise with specialized capabilities for financial analysis. It connects Claude to the data sources and tools financial professionals use daily — eliminating the need to juggle multiple browser tabs and improving source verification to reduce the risk of errors from manual data gathering.
|
||||
|
||||
## End-to-End Workflows
|
||||
|
||||
These plugins aren't just a collection of point tools — they enable complete workflows that span research, analysis, modeling, and output creation:
|
||||
|
||||
- **Research to Report**: Pull real-time data from MCP providers, analyze earnings results, and generate publication-ready equity research reports — all in a single session
|
||||
- **Spreadsheet Analysis**: Build comparable company analyses, DCF models, and LBO models as fully functional Excel workbooks with live formulas, sensitivity tables, and industry-standard formatting
|
||||
- **Financial Modeling**: Populate 3-statement models from SEC filings, cross-check assumptions against peer data, and stress-test scenarios — with blue/black/green color coding conventions built in
|
||||
- **Deal Materials**: Draft CIMs, teasers, and process letters, then generate pitch deck slides and strip profiles using your firm's branded PowerPoint templates
|
||||
- **Portfolio to Presentation**: Screen opportunities, run diligence checklists, build IC memos, and track portfolio KPIs — moving seamlessly from data to deliverable
|
||||
|
||||
Each workflow connects upstream data sources (via MCP) to downstream outputs (Excel, PowerPoint, Word), so you move from question to finished work product without context-switching.
|
||||
|
||||
## Plugin Marketplace
|
||||
|
||||
Start with **financial analysis** — the core plugin that provides shared modeling tools and all MCP data connectors. Then add any function-specific plugins to enhance Claude's capabilities for your workflow.
|
||||
|
||||
| Plugin | Type | How it helps | Connectors |
|
||||
|--------|------|-------------|------------|
|
||||
| **[financial analysis](./financial-analysis)** | Core (install first) | Build comps, DCF models, LBO models, and 3-statement financials. QC presentations and create reusable PPT templates. Provides the shared foundation and all data connectors. | Daloopa, Morningstar, S&P Global, FactSet, Moody's, MT Newswires, Aiera, LSEG, PitchBook, Chronograph, Egnyte |
|
||||
| **[investment banking](./investment-banking)** | Add-on | Draft CIMs, teasers, and process letters. Build buyer lists, run merger models, create strip profiles, and track live deals through milestones. | — |
|
||||
| **[equity research](./equity-research)** | Add-on | Write earnings updates and initiating coverage reports. Maintain investment theses, track catalysts, draft morning notes, and screen for new ideas. | — |
|
||||
| **[private equity](./private-equity)** | Add-on | Source and screen deals, run due diligence checklists, analyze unit economics and returns, draft IC memos, and monitor portfolio company KPIs. | — |
|
||||
| **[wealth management](./wealth-management)** | Add-on | Prep for client meetings, build financial plans, rebalance portfolios, generate client reports, and identify tax-loss harvesting opportunities. | — |
|
||||
|
||||
**41 skills, 38 commands, 11 MCP integrations**
|
||||
|
||||
Install these directly from Cowork, browse the full collection here on GitHub, or build your own.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Cowork
|
||||
|
||||
Install plugins from [claude.com/plugins](https://claude.com/plugins/).
|
||||
|
||||
### Claude Code
|
||||
|
||||
```bash
|
||||
# Add the marketplace
|
||||
claude plugin marketplace add anthropic-experimental/fsi-plugins-dev
|
||||
|
||||
# Install the core plugin first (required)
|
||||
claude plugin install financial-analysis@fsi-plugins-dev
|
||||
|
||||
# Then add function-specific plugins as needed
|
||||
claude plugin install investment-banking@fsi-plugins-dev
|
||||
claude plugin install equity-research@fsi-plugins-dev
|
||||
claude plugin install private-equity@fsi-plugins-dev
|
||||
claude plugin install wealth-management@fsi-plugins-dev
|
||||
```
|
||||
|
||||
Once installed, plugins activate automatically. Skills fire when relevant, and slash commands are available in your session:
|
||||
|
||||
```bash
|
||||
/comps [company] # Comparable company analysis
|
||||
/dcf [company] # DCF valuation model
|
||||
/earnings [company] [quarter] # Post-earnings update report
|
||||
/one-pager [company] # One-page company profile
|
||||
/ic-memo [project name] # Investment committee memo
|
||||
/source [criteria] # Deal sourcing
|
||||
/client-review [client] # Client meeting prep
|
||||
```
|
||||
|
||||
## How Plugins Work
|
||||
|
||||
Every plugin follows the same structure:
|
||||
|
||||
```
|
||||
plugin-name/
|
||||
├── .claude-plugin/plugin.json # Manifest
|
||||
├── .mcp.json # Tool connections
|
||||
├── commands/ # Slash commands you invoke explicitly
|
||||
└── skills/ # Domain knowledge Claude draws on automatically
|
||||
```
|
||||
|
||||
- **Skills** encode the domain expertise, best practices, and step-by-step workflows Claude needs to deliver professional-quality financial work. Claude draws on them automatically when relevant.
|
||||
- **Commands** are explicit actions you trigger (e.g., `/comps`, `/earnings`, `/ic-memo`).
|
||||
- **Connectors** wire Claude to the external data sources your workflow depends on — financial data terminals, research platforms, document management, and more — via [MCP servers](https://modelcontextprotocol.io/).
|
||||
|
||||
Every component is file-based — markdown and JSON, no code, no infrastructure, no build steps.
|
||||
|
||||
## MCP Integrations
|
||||
|
||||
All connectors are centralized in the **financial analysis** core plugin and shared across all add-on plugins.
|
||||
|
||||
| Provider | URL |
|
||||
|----------|-----|
|
||||
| [Daloopa](https://www.daloopa.com/) | `https://mcp.daloopa.com/server/mcp` |
|
||||
| [Morningstar](https://www.morningstar.com/) | `https://mcp.morningstar.com/mcp` |
|
||||
| [S&P Global](https://www.spglobal.com/) | `https://kfinance.kensho.com/integrations/mcp` |
|
||||
| [FactSet](https://www.factset.com/) | `https://mcp.factset.com/mcp` |
|
||||
| [Moody's](https://www.moodys.com/) | `https://api.moodys.com/genai-ready-data/m1/mcp` |
|
||||
| [MT Newswires](https://www.mtnewswires.com/) | `https://vast-mcp.blueskyapi.com/mtnewswires` |
|
||||
| [Aiera](https://www.aiera.com/) | `https://mcp-pub.aiera.com` |
|
||||
| [LSEG](https://www.lseg.com/) | `https://api.analytics.lseg.com/lfa/mcp` |
|
||||
| [PitchBook](https://pitchbook.com/) | `https://premium.mcp.pitchbook.com/mcp` |
|
||||
| [Chronograph](https://www.chronograph.pe/) | `https://ai.chronograph.pe/mcp` |
|
||||
| [Egnyte](https://www.egnyte.com/) | `https://mcp-server.egnyte.com/mcp` |
|
||||
|
||||
> MCP access may require a subscription or API key from the respective provider.
|
||||
|
||||
## Making Them Yours
|
||||
|
||||
These plugins are starting points. They become much more useful when you customize them for how your firm actually works:
|
||||
|
||||
- **Swap connectors** — Edit `.mcp.json` to point at your specific data providers and internal tools.
|
||||
- **Add firm context** — Drop your terminology, deal processes, and formatting standards into skill files so Claude understands your world.
|
||||
- **Bring your templates** — Use `/ppt-template` to teach Claude your firm's branded PowerPoint layouts, so every deck matches your style guide.
|
||||
- **Adjust workflows** — Modify skill instructions to match how your team actually does analysis, not how a textbook says to.
|
||||
- **Build new plugins** — Follow the structure above to create plugins for workflows we haven't covered yet.
|
||||
|
||||
As your team builds and shares plugins, Claude becomes a cross-functional expert. The context you define gets baked into every relevant interaction, so leaders can spend less time enforcing processes and more time improving them.
|
||||
|
||||
## Plugin Details
|
||||
|
||||
### financial analysis
|
||||
|
||||
Core financial modeling and analysis tools. Install this first — it provides the shared foundation and all data connectors used by the add-on plugins.
|
||||
|
||||
| Skill | Command | Description |
|
||||
|-------|---------|-------------|
|
||||
| comps-analysis | `/comps` | Comparable company analysis with trading multiples |
|
||||
| dcf-model | `/dcf` | DCF valuation with WACC and sensitivity analysis |
|
||||
| lbo-model | `/lbo` | Leveraged buyout model |
|
||||
| 3-statements | `/3-statements` | Populate 3-statement financial model templates |
|
||||
| competitive-analysis | `/competitive-analysis` | Competitive landscape and market positioning |
|
||||
| check-deck | `/check-deck` | QC presentations for errors and consistency |
|
||||
| ppt-template-creator | `/ppt-template` | Create reusable PPT template skills |
|
||||
| skill-creator | — | Guide for creating new skills |
|
||||
|
||||
### investment banking
|
||||
|
||||
Deal execution and materials for sell-side and buy-side advisory.
|
||||
|
||||
| Skill | Command | Description |
|
||||
|-------|---------|-------------|
|
||||
| strip-profile | `/one-pager` | One-page company profiles for pitch books |
|
||||
| pitch-deck | — | Populate pitch deck templates with data |
|
||||
| datapack-builder | — | Build data packs from CIMs and filings |
|
||||
| cim-builder | `/cim` | Draft Confidential Information Memorandums |
|
||||
| teaser | `/teaser` | Anonymous one-page company teasers |
|
||||
| buyer-list | `/buyer-list` | Strategic and financial buyer universe |
|
||||
| merger-model | `/merger-model` | Accretion/dilution M&A analysis |
|
||||
| process-letter | `/process-letter` | Bid instructions and process correspondence |
|
||||
| deal-tracker | `/deal-tracker` | Track live deals, milestones, and action items |
|
||||
|
||||
### equity research
|
||||
|
||||
Equity research workflows for sell-side and buy-side analysts.
|
||||
|
||||
| Skill | Command | Description |
|
||||
|-------|---------|-------------|
|
||||
| earnings-analysis | `/earnings` | Post-earnings quarterly update reports |
|
||||
| earnings-preview | `/earnings-preview` | Pre-earnings scenario analysis and key metrics |
|
||||
| initiating-coverage | `/initiate` | Institutional-quality initiation reports |
|
||||
| model-update | `/model-update` | Update financial models with new data |
|
||||
| morning-note | `/morning-note` | Morning meeting notes and trade ideas |
|
||||
| sector-overview | `/sector` | Industry landscape and thematic reports |
|
||||
| thesis-tracker | `/thesis` | Maintain and update investment theses |
|
||||
| catalyst-calendar | `/catalysts` | Track upcoming catalysts across coverage |
|
||||
| idea-generation | `/screen` | Stock screening and idea sourcing |
|
||||
|
||||
### private equity
|
||||
|
||||
Full PE deal lifecycle from sourcing through portfolio operations.
|
||||
|
||||
| Skill | Command | Description |
|
||||
|-------|---------|-------------|
|
||||
| deal-sourcing | `/source` | Discover companies, check CRM, draft founder outreach |
|
||||
| deal-screening | `/screen-deal` | Quick pass/fail on inbound CIMs and teasers |
|
||||
| dd-checklist | `/dd-checklist` | Comprehensive due diligence checklists by workstream |
|
||||
| dd-meeting-prep | `/dd-prep` | Prep for management presentations and expert calls |
|
||||
| unit-economics | `/unit-economics` | ARR cohorts, LTV/CAC, net retention, revenue quality |
|
||||
| returns-analysis | `/returns` | IRR/MOIC sensitivity tables |
|
||||
| ic-memo | `/ic-memo` | Investment committee memo drafting |
|
||||
| portfolio-monitoring | `/portfolio` | Track portfolio company KPIs and variances |
|
||||
| value-creation-plan | `/value-creation` | Post-close 100-day plans and EBITDA bridges |
|
||||
|
||||
### wealth management
|
||||
|
||||
Client service, financial planning, and portfolio management for advisors and RIAs.
|
||||
|
||||
| Skill | Command | Description |
|
||||
|-------|---------|-------------|
|
||||
| client-review | `/client-review` | Prep for client meetings with performance and talking points |
|
||||
| financial-plan | `/financial-plan` | Retirement, education, estate, and cash flow projections |
|
||||
| portfolio-rebalance | `/rebalance` | Allocation drift analysis and tax-aware rebalancing |
|
||||
| client-report | `/client-report` | Client-facing performance reports |
|
||||
| investment-proposal | `/proposal` | Proposals for prospective clients |
|
||||
| tax-loss-harvesting | `/tlh` | Identify TLH opportunities and manage wash sales |
|
||||
|
||||
## Contributing
|
||||
|
||||
Plugins are just markdown files. Fork the repo, make your changes, and submit a PR. For new skills or plugins, include:
|
||||
|
||||
- A `SKILL.md` with clear trigger conditions and workflow steps
|
||||
- A corresponding command in `commands/` if user-invocable
|
||||
- Updated plugin manifest if adding new capabilities
|
||||
|
||||
## License
|
||||
|
||||
[Apache License 2.0](./LICENSE)
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "equity-research",
|
||||
"version": "0.1.0",
|
||||
"description": "Equity research tools: earnings analysis, initiating coverage reports, and research workflows",
|
||||
"author": {
|
||||
"name": "Anthropic FSI"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: View or update the catalyst calendar
|
||||
argument-hint: "[timeframe, e.g. 'next 2 weeks']"
|
||||
---
|
||||
|
||||
Load the `catalyst-calendar` skill to build or review upcoming catalysts across the coverage universe.
|
||||
|
||||
If a timeframe is provided, use it. Otherwise default to the next 2 weeks.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Build a pre-earnings preview with scenarios
|
||||
argument-hint: "[company ticker]"
|
||||
---
|
||||
|
||||
Load the `earnings-preview` skill and build a pre-earnings analysis with consensus estimates, key metrics to watch, and bull/base/bear scenarios.
|
||||
|
||||
If a ticker is provided, use it. Otherwise ask the user which company is reporting.
|
||||
@@ -0,0 +1,140 @@
|
||||
---
|
||||
description: Analyze quarterly earnings and create an earnings update report
|
||||
argument-hint: "[company name or ticker] [quarter, e.g. Q3 2024]"
|
||||
---
|
||||
|
||||
# Earnings Analysis Command
|
||||
|
||||
Create a professional equity research earnings update report analyzing quarterly results.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Information
|
||||
|
||||
Parse the input for:
|
||||
- Company name or ticker
|
||||
- Quarter (e.g., Q3 2024, Q2 FY25)
|
||||
|
||||
If not provided, ask:
|
||||
- "What company's earnings would you like to analyze?"
|
||||
- "Which quarter? (e.g., Q3 2024)"
|
||||
|
||||
### Step 2: Verify Timeliness
|
||||
|
||||
**CRITICAL**: Before proceeding, verify you have the latest data:
|
||||
1. Search for "[Company] latest earnings results [current year]"
|
||||
2. Verify the earnings release is within the last 3 months
|
||||
3. Confirm transcript date matches release date
|
||||
|
||||
If data is stale, inform the user and search for the latest.
|
||||
|
||||
### Step 3: Load Earnings Analysis Skill
|
||||
|
||||
Use `skill: "earnings-analysis"` to create the report:
|
||||
|
||||
1. **Data Collection** (search for latest):
|
||||
- Earnings release (press release)
|
||||
- 10-Q filing from SEC EDGAR
|
||||
- Earnings call transcript
|
||||
- Investor presentation/supplemental materials
|
||||
- Consensus estimates (Bloomberg/FactSet)
|
||||
|
||||
2. **Beat/Miss Analysis**:
|
||||
- Revenue vs consensus: Beat/Miss by $X or X%
|
||||
- EPS vs consensus: Beat/Miss by $X or X%
|
||||
- Key segment performance vs expectations
|
||||
- Explain WHY results differed
|
||||
|
||||
3. **Key Metrics Analysis**:
|
||||
- Revenue breakdown by segment/geography
|
||||
- Margin trends (gross, operating, net)
|
||||
- Guidance: raised/maintained/lowered
|
||||
- Updated forward estimates
|
||||
|
||||
4. **Generate Charts** (8-12):
|
||||
- Quarterly revenue progression
|
||||
- Quarterly EPS progression
|
||||
- Margin trends
|
||||
- Revenue by segment
|
||||
- Beat/miss summary
|
||||
- Estimate revisions
|
||||
- Valuation charts
|
||||
|
||||
5. **Create Report** (8-12 pages):
|
||||
- Page 1: Summary with rating and price target
|
||||
- Pages 2-3: Detailed results analysis
|
||||
- Pages 4-5: Key metrics & guidance
|
||||
- Pages 6-7: Updated investment thesis
|
||||
- Pages 8-10: Valuation & estimates
|
||||
- Sources section with clickable hyperlinks
|
||||
|
||||
### Step 4: Deliver Output
|
||||
|
||||
Provide:
|
||||
1. **DOCX report** - 8-12 page earnings update
|
||||
2. **Summary** highlighting:
|
||||
- Beat/miss on key metrics
|
||||
- Guidance changes
|
||||
- Thesis impact (positive/negative/neutral)
|
||||
|
||||
## Report Structure Reference
|
||||
|
||||
```
|
||||
PAGE 1: EARNINGS SUMMARY
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ [Company] Q3 2024 Earnings Update │
|
||||
│ Rating: BUY | Price Target: $XXX (from $XXX) │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ KEY TAKEAWAYS │
|
||||
│ • Revenue beat by X% on strong [segment] performance │
|
||||
│ • EPS beat by $X.XX driven by margin expansion │
|
||||
│ • FY guidance raised to $X.XX-$X.XX (from $X.XX-$X.XX) │
|
||||
│ • Thesis intact; maintain BUY rating │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ RESULTS SNAPSHOT │
|
||||
│ ┌─────────────┬──────────┬──────────┬──────────┐ │
|
||||
│ │ Metric │ Actual │ Consensus│ Beat/Miss│ │
|
||||
│ │ Revenue │ $X.XXB │ $X.XXB │ +X.X% │ │
|
||||
│ │ EPS │ $X.XX │ $X.XX │ +$X.XX │ │
|
||||
│ │ Gross Margin│ XX.X% │ XX.X% │ +XXbps │ │
|
||||
│ └─────────────┴──────────┴──────────┴──────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
|
||||
PAGES 2-3: DETAILED RESULTS
|
||||
- Segment-by-segment analysis
|
||||
- Geographic breakdown
|
||||
- Key drivers of beat/miss
|
||||
|
||||
PAGES 4-5: METRICS & GUIDANCE
|
||||
- Margin analysis
|
||||
- Full-year guidance comparison
|
||||
- Updated quarterly estimates
|
||||
|
||||
PAGES 6-7: THESIS UPDATE
|
||||
- What's changed
|
||||
- Risks and catalysts
|
||||
- Investment recommendation
|
||||
|
||||
PAGES 8-10: VALUATION
|
||||
- Updated DCF/comps if material
|
||||
- Price target justification
|
||||
- Scenario analysis
|
||||
|
||||
SOURCES SECTION (with clickable hyperlinks):
|
||||
- Earnings Release: [hyperlink]
|
||||
- Form 10-Q: [EDGAR hyperlink]
|
||||
- Earnings Call Transcript: [hyperlink]
|
||||
- Consensus estimates: Bloomberg as of [date]
|
||||
```
|
||||
|
||||
## Quality Checklist
|
||||
|
||||
Before delivery:
|
||||
- [ ] Earnings data is from latest quarter (not stale)
|
||||
- [ ] Beat/miss quantified with specific numbers
|
||||
- [ ] All charts embedded (8-12 total)
|
||||
- [ ] Sources section with clickable hyperlinks
|
||||
- [ ] Every figure/table has source citation
|
||||
- [ ] Guidance changes clearly documented
|
||||
- [ ] Rating and price target stated upfront
|
||||
- [ ] 8-12 pages, 3,000-5,000 words
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Create an initiating coverage report
|
||||
argument-hint: "[company ticker]"
|
||||
---
|
||||
|
||||
Load the `initiating-coverage` skill and begin the 5-task workflow to create an institutional-quality initiation report.
|
||||
|
||||
If a ticker is provided, use it. Otherwise ask the user which company to initiate on.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Update a financial model with new data
|
||||
argument-hint: "[company ticker]"
|
||||
---
|
||||
|
||||
Load the `model-update` skill and plug in new earnings, guidance, or revised assumptions.
|
||||
|
||||
If a ticker is provided, use it. Otherwise ask the user which model to update and what changed.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: Draft a morning meeting note
|
||||
argument-hint: ""
|
||||
---
|
||||
|
||||
Load the `morning-note` skill and draft a concise morning note covering overnight developments, earnings reactions, and trade ideas across the coverage universe.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Run a stock screen or generate investment ideas
|
||||
argument-hint: "[screen criteria, e.g. 'undervalued midcap tech']"
|
||||
---
|
||||
|
||||
Load the `idea-generation` skill and run quantitative screens or thematic sweeps to surface new investment ideas.
|
||||
|
||||
If criteria are provided, use them. Otherwise ask the user what they're looking for (long/short, sector, style, theme).
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Create a sector overview report
|
||||
argument-hint: "[sector or industry]"
|
||||
---
|
||||
|
||||
Load the `sector-overview` skill and create an industry landscape report covering market sizing, competitive dynamics, and investment implications.
|
||||
|
||||
If a sector is provided, use it. Otherwise ask the user which industry to cover.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Create or update an investment thesis
|
||||
argument-hint: "[company ticker]"
|
||||
---
|
||||
|
||||
Load the `thesis-tracker` skill to create a new thesis or update an existing one with new data points.
|
||||
|
||||
If a ticker is provided, use it. Otherwise ask the user which position to review.
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,81 @@
|
||||
# Catalyst Calendar
|
||||
|
||||
description: Build and maintain a calendar of upcoming catalysts across a coverage universe — earnings dates, conferences, product launches, regulatory decisions, and macro events. Helps prioritize attention and position ahead of events. Triggers on "catalyst calendar", "upcoming events", "what's coming up", "earnings calendar", "event calendar", or "catalyst tracker".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Define Coverage Universe
|
||||
|
||||
- List of companies to track (tickers or names)
|
||||
- Sector / industry focus
|
||||
- Include macro events? (Fed meetings, economic data, regulatory deadlines)
|
||||
- Time horizon (next 2 weeks, month, quarter)
|
||||
|
||||
### Step 2: Gather Catalysts
|
||||
|
||||
For each company, identify upcoming events:
|
||||
|
||||
**Earnings & Financial Events**
|
||||
- Quarterly earnings date and time (pre/post market)
|
||||
- Annual shareholder meeting
|
||||
- Investor day / analyst day
|
||||
- Capital markets day
|
||||
- Debt maturity / refinancing dates
|
||||
|
||||
**Corporate Events**
|
||||
- Product launches or announcements
|
||||
- FDA approvals / regulatory decisions
|
||||
- Contract renewals or expirations
|
||||
- M&A milestones (close dates, regulatory approvals)
|
||||
- Management transitions
|
||||
- Insider trading windows (lockup expirations)
|
||||
|
||||
**Industry Events**
|
||||
- Major conferences (dates, which companies presenting)
|
||||
- Trade shows and expos
|
||||
- Regulatory comment periods or rulings
|
||||
- Industry data releases (monthly sales, traffic, etc.)
|
||||
|
||||
**Macro Events**
|
||||
- Fed meetings (FOMC dates)
|
||||
- Jobs report, CPI, GDP releases
|
||||
- Central bank decisions (ECB, BOJ, etc.)
|
||||
- Geopolitical events with market impact
|
||||
|
||||
### Step 3: Calendar View
|
||||
|
||||
| Date | Event | Company/Sector | Type | Impact (H/M/L) | Our Positioning | Notes |
|
||||
|------|-------|---------------|------|-----------------|----------------|-------|
|
||||
| | | | Earnings/Corp/Industry/Macro | | Long/Short/Neutral | |
|
||||
|
||||
### Step 4: Weekly Preview
|
||||
|
||||
Each week, generate a forward-looking summary:
|
||||
|
||||
**This Week's Key Events:**
|
||||
1. [Day]: [Company] Q[X] earnings — consensus [$X EPS], our estimate [$X], key focus: [metric]
|
||||
2. [Day]: [Event] — why it matters for [stocks]
|
||||
3. [Day]: [Macro release] — expectations and positioning
|
||||
|
||||
**Next Week Preview:**
|
||||
- Early heads-up on important events coming
|
||||
|
||||
**Position Implications:**
|
||||
- Events that could move specific positions
|
||||
- Any pre-positioning recommended
|
||||
- Risk management ahead of binary events
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
- Excel workbook with calendar view and sortable columns
|
||||
- Weekly preview email/note (markdown)
|
||||
- Optional: integration with Google Calendar
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Earnings dates shift — verify against company IR pages and Bloomberg/FactSet closer to the date
|
||||
- Pre-announce risk: track companies with a history of pre-announcing (positive or negative)
|
||||
- Conference attendance lists are valuable — which companies are presenting and which are conspicuously absent?
|
||||
- Some catalysts are recurring (monthly industry data) — build a template and auto-populate
|
||||
- Color-code by impact level: Red = high impact, Yellow = moderate, Green = routine
|
||||
- Archive past catalysts with the actual outcome — builds pattern recognition over time
|
||||
@@ -0,0 +1,228 @@
|
||||
---
|
||||
name: earnings-analysis
|
||||
description: Create professional equity research earnings update reports (8-12 pages, 3,000-5,000 words) analyzing quarterly results for companies already under coverage. Fast-turnaround format focusing on beat/miss analysis, key metrics, updated estimates, and revised thesis. Includes 1-3 summary tables and 8-12 charts. Use when user requests "earnings update", "quarterly update", "earnings analysis", "Q1/Q2/Q3/Q4 results", or post-earnings report.
|
||||
---
|
||||
|
||||
# Equity Research Earnings Update
|
||||
|
||||
Create professional **EARNINGS UPDATE REPORTS** analyzing quarterly results for companies already under coverage, following institutional standards (JPMorgan, Goldman Sachs, Morgan Stanley format).
|
||||
|
||||
**Key Characteristics:**
|
||||
- **Length**: 8-12 pages
|
||||
- **Word Count**: 3,000-5,000 words
|
||||
- **Tables**: 1-3 summary tables (NOT comprehensive)
|
||||
- **Figures**: 8-12 charts
|
||||
- **Turnaround**: 1-2 days (within 24-48 hours of earnings)
|
||||
- **Audience**: Clients already familiar with the company
|
||||
- **Focus**: What's NEW - beat/miss, updated estimates, thesis impact
|
||||
- **Font**: Times New Roman throughout (unless user specifies otherwise)
|
||||
|
||||
## When to Use
|
||||
|
||||
Use when the user requests:
|
||||
- "Create an earnings update for [Company] Q3 2024"
|
||||
- "Analyze [Company]'s quarterly results"
|
||||
- "Post-earnings report for [Company]"
|
||||
- "Q1/Q2/Q3/Q4 update for [Company]"
|
||||
|
||||
**Do NOT use if:**
|
||||
- User requests "initiation report" → Use different skill
|
||||
- User requests "flash note" or "quick take" → Different format
|
||||
- Company is not already covered → Need initiation first
|
||||
|
||||
## Critical Requirements
|
||||
|
||||
### 1. Speed & Timeliness
|
||||
- Publish within 24-48 hours of earnings release
|
||||
- Focus on NEW information only
|
||||
- Don't rehash company background extensively
|
||||
|
||||
### 2. Beat/Miss Analysis
|
||||
- Lead with whether company beat or missed estimates
|
||||
- Quantify variances (e.g., "Revenue beat by $120M or 3%")
|
||||
- Explain WHY results differed from expectations
|
||||
|
||||
### 3. Summary Format
|
||||
- Keep tables to 1-3 (summary only, not comprehensive)
|
||||
- No full P&L/Cash Flow/Balance Sheet (just key metrics)
|
||||
- Assume reader has seen initiation report
|
||||
|
||||
### 4. Citations & Source Attribution ⭐⭐⭐ MANDATORY
|
||||
|
||||
**CRITICAL**: Properly cite all data with SPECIFIC sources and CLICKABLE HYPERLINKS.
|
||||
|
||||
**Include specific citations WITH CLICKABLE LINKS in every figure and table:**
|
||||
|
||||
```
|
||||
Source: Q3 2024 10-Q filed November 8, 2024; Company earnings release
|
||||
[Hyperlink "10-Q" to: https://www.sec.gov/cgi-bin/viewer?accession=...]
|
||||
[Hyperlink "earnings release" to: https://investor.company.com/news/q3-2024]
|
||||
```
|
||||
|
||||
**HOW HYPERLINKS SHOULD APPEAR IN WORD:**
|
||||
- Document names appear as blue, underlined clickable links
|
||||
- Reader can Ctrl+Click to open source directly
|
||||
- Not plain text URLs - formatted hyperlinks with display text
|
||||
|
||||
**REQUIRED SOURCES LIST:**
|
||||
|
||||
Cite in every earnings update:
|
||||
- ✅ Earnings release (with date and URL)
|
||||
- ✅ 10-Q filing (with filing date and EDGAR link)
|
||||
- ✅ Earnings call transcript (with date)
|
||||
- ✅ Investor presentation/supplemental materials (if available)
|
||||
- ✅ Consensus estimates source (Bloomberg/FactSet/etc. with date)
|
||||
- ✅ Prior guidance (from previous quarter's materials)
|
||||
|
||||
**REFERENCE SECTION WITH CLICKABLE HYPERLINKS:**
|
||||
|
||||
Include "Sources" section at end of report:
|
||||
|
||||
```
|
||||
SOURCES & REFERENCES
|
||||
|
||||
Earnings Materials (Q3 2024):
|
||||
• Earnings Release (November 7, 2024)
|
||||
[Hyperlink entire line to: https://investor.company.com/news/q3-2024-earnings]
|
||||
|
||||
• Form 10-Q (Filed November 8, 2024)
|
||||
[Hyperlink to: https://www.sec.gov/cgi-bin/viewer?accession=...]
|
||||
|
||||
• Earnings Call Transcript (November 7, 2024)
|
||||
[Hyperlink to: https://seekingalpha.com/article/...]
|
||||
|
||||
• Investor Presentation (November 7, 2024)
|
||||
[Hyperlink to: https://investor.company.com/presentations/q3-2024.pdf]
|
||||
```
|
||||
|
||||
**VERIFICATION CHECKLIST:**
|
||||
- [ ] Every figure has source with specific document and date
|
||||
- [ ] Every table has source with document reference
|
||||
- [ ] Beat/miss analysis cites consensus source with date
|
||||
- [ ] Guidance changes cite current and prior guidance sources
|
||||
- [ ] Key statistics have footnotes
|
||||
- [ ] Sources section lists all materials with URLs
|
||||
- [ ] ALL URLs are CLICKABLE HYPERLINKS (not plain text)
|
||||
- [ ] All SEC filings hyperlinked to EDGAR viewer
|
||||
|
||||
### 5. Updated Estimates
|
||||
- Update forward estimates based on results
|
||||
- Show old vs. new estimates clearly
|
||||
- Explain what changed and why
|
||||
|
||||
## High-Level Workflow
|
||||
|
||||
The earnings update process follows 5 phases:
|
||||
|
||||
### Phase 1: Data Collection (30-60 minutes)
|
||||
|
||||
**🚨🚨🚨 CRITICAL: TRAINING DATA IS OUTDATED 🚨🚨🚨**
|
||||
|
||||
**BEFORE STARTING - COMPLETE THESE 4 STEPS IN ORDER:**
|
||||
1. **CHECK TODAY'S DATE** - Write down the current date
|
||||
2. **SEARCH FOR LATEST** - Use web search: "[Company] latest earnings results"
|
||||
3. **VERIFY THE DATE** - Confirm earnings release is within last 3 months
|
||||
4. **CHECK TRANSCRIPT DATE** - Verify transcript date matches release date
|
||||
|
||||
**COMMON MISTAKE**: Using outdated earnings calls from training data instead of searching for the latest.
|
||||
|
||||
**REQUIREMENTS:**
|
||||
- ✅ Search for latest earnings - do NOT rely on training data
|
||||
- ✅ Write down today's date and the release date found
|
||||
- ✅ Verify release date is within 3 months of today
|
||||
- ✅ Verify transcript date matches release date
|
||||
- ✅ If dates don't match or are old (>3 months), search again
|
||||
|
||||
**See [references/workflow.md](references/workflow.md)** for detailed search procedures and verification steps.
|
||||
|
||||
### Phase 2: Analysis (2-3 hours)
|
||||
- Beat/miss analysis for each key metric
|
||||
- Segment/geographic/product breakdown
|
||||
- Margin and guidance analysis
|
||||
- Update financial model and estimates
|
||||
|
||||
**See [references/workflow.md](references/workflow.md)** for detailed analysis framework.
|
||||
|
||||
### Phase 3: Chart Generation (1-2 hours)
|
||||
Create 8-12 charts focusing on quarterly trends and what's new:
|
||||
- Quarterly revenue progression
|
||||
- Quarterly EPS progression
|
||||
- Quarterly margin trends
|
||||
- Revenue by segment/geography
|
||||
- Key operating metrics
|
||||
- Beat/miss summary
|
||||
- Estimate revisions
|
||||
- Valuation charts
|
||||
|
||||
**See [references/workflow.md](references/workflow.md)** for chart specifications.
|
||||
|
||||
### Phase 4: Report Creation (2-3 hours)
|
||||
Create 8-12 page DOCX report with specific structure.
|
||||
|
||||
**See [references/report-structure.md](references/report-structure.md)** for complete page-by-page templates and formatting requirements.
|
||||
|
||||
**High-level structure:**
|
||||
- Page 1: Earnings summary with rating and price target
|
||||
- Pages 2-3: Detailed results analysis
|
||||
- Pages 4-5: Key metrics & guidance
|
||||
- Pages 6-7: Updated investment thesis
|
||||
- Pages 8-10: Valuation & estimates
|
||||
- Pages 11-12: Appendix (optional)
|
||||
|
||||
### Phase 5: Quality Check & Delivery (30 minutes)
|
||||
Verify content, formatting, accuracy, and timeliness before delivery.
|
||||
|
||||
**See [references/best-practices.md](references/best-practices.md)** for quality checklist and common mistakes to avoid.
|
||||
|
||||
## Output Specification
|
||||
|
||||
**Primary Deliverable**: DOCX report (8-12 pages)
|
||||
**File Name**: `[Company]_Q[Quarter]_[Year]_Earnings_Update.docx`
|
||||
**Example**: `Nike_Q2_FY24_Earnings_Update.docx`
|
||||
|
||||
**Contents:**
|
||||
- Page 1: Summary with rating, price target, key takeaways
|
||||
- Pages 2-3: Detailed results analysis
|
||||
- Pages 4-5: Key metrics and guidance
|
||||
- Pages 6-7: Updated thesis assessment
|
||||
- Pages 8-10: Valuation and estimates
|
||||
- Pages 11-12: Appendix (optional)
|
||||
- 8-12 embedded charts
|
||||
- 1-3 summary tables
|
||||
- Complete sources section with clickable hyperlinks
|
||||
|
||||
**Optional Deliverable**: XLS model update (optional for earnings updates)
|
||||
|
||||
## Key Differences from Initiation Report
|
||||
|
||||
| Aspect | Earnings Update | Initiation Report |
|
||||
|--------|----------------|-------------------|
|
||||
| **Length** | 8-12 pages | 30-50 pages |
|
||||
| **Words** | 3,000-5,000 | 10,000-15,000 |
|
||||
| **Tables** | 1-3 summary | 12-20 comprehensive |
|
||||
| **Figures** | 8-12 | 25-35 |
|
||||
| **Turnaround** | 1-2 days | 3-6 weeks |
|
||||
| **Scope** | Quarterly results | Complete company |
|
||||
| **Focus** | What's NEW | Everything |
|
||||
| **Company Background** | Brief mention | 6-10 pages |
|
||||
| **XLS Model** | Optional | Required |
|
||||
|
||||
## Resources
|
||||
|
||||
### references/workflow.md
|
||||
Detailed Phase 1-5 instructions with step-by-step procedures for data collection, analysis, chart generation, and report creation.
|
||||
|
||||
### references/report-structure.md
|
||||
Complete page-by-page templates, table formats, and formatting requirements for the DOCX report.
|
||||
|
||||
### references/best-practices.md
|
||||
Examples of good/bad headlines, tips for success, common mistakes to avoid, and comprehensive quality checklist.
|
||||
|
||||
## Dependencies
|
||||
|
||||
**Required:**
|
||||
- Python (matplotlib, pandas, seaborn) for chart generation
|
||||
- DOCX skill for report creation
|
||||
|
||||
**Optional:**
|
||||
- XLS skill for model updates (not required for earnings updates)
|
||||
@@ -0,0 +1,248 @@
|
||||
# Best Practices, Examples, and Quality Guidelines
|
||||
|
||||
This document provides examples, tips for success, common mistakes to avoid, and comprehensive quality checklists.
|
||||
|
||||
## Example Headlines
|
||||
|
||||
### Good Earnings Update Headlines:
|
||||
- "Nike Q2 FY24: DTC Strength Offsets Wholesale Weakness - Maintaining OW, PT $95"
|
||||
- "Tesla Q3'24: Cybertruck Ramp Ahead of Plan - Raising Estimates, PT to $285"
|
||||
- "LVMH Q4'24: Fashion & Leather Resilient, Wines Weak - In-Line, Reiterating Buy"
|
||||
- "Apple Q1 FY24: Services Beat, iPhone Miss - Mixed Quarter, Lowering PT to $185"
|
||||
|
||||
### Bad Headlines (Avoid):
|
||||
- "Nike Quarterly Update" (too generic, no takeaway)
|
||||
- "Company Reports Earnings" (states obvious, no analysis)
|
||||
- "Q3 Results Analysis" (no company name, no view)
|
||||
|
||||
## Tips for Success
|
||||
|
||||
1. **Speed matters**: Published 24-48hrs post-earnings, not days later
|
||||
|
||||
2. **Lead with conclusion**: Beat or miss? Up or down estimates?
|
||||
|
||||
3. **Quantify everything**: "Strong" means nothing, "$150M beat on $1.2B revenue" is clear
|
||||
|
||||
4. **Focus on drivers**: Don't just say "revenue beat", explain WHY
|
||||
|
||||
5. **Show the work**: Old estimates → New estimates with reasons
|
||||
|
||||
6. **Update price target if material**: If estimates change >5%, usually PT changes too
|
||||
|
||||
7. **Acknowledge the call**: Reference management commentary, don't just analyze the press release
|
||||
|
||||
8. **Compare to peers**: If similar companies reported, note relative performance
|
||||
|
||||
9. **Be concise**: This is NOT a comprehensive report, stay focused on quarterly results
|
||||
|
||||
10. **Chart the trends**: Quarterly progression charts are most valuable
|
||||
|
||||
## Common Mistakes to Avoid
|
||||
|
||||
❌ **Too comprehensive**: Don't write an initiation-length report for quarterly results
|
||||
|
||||
❌ **Missing beat/miss**: Lead with whether results beat or missed expectations
|
||||
|
||||
❌ **Not updating estimates**: Must provide updated forward estimates
|
||||
|
||||
❌ **Vague language**: "Strong performance" without quantification
|
||||
|
||||
❌ **Ignoring guidance**: If company guides, analyze it thoroughly
|
||||
|
||||
❌ **Too slow**: Publishing 5+ days after earnings loses relevance
|
||||
|
||||
❌ **Rehashing basics**: Don't spend 3 pages explaining what the company does
|
||||
|
||||
❌ **Missing price target update**: If estimates changed materially, PT should too
|
||||
|
||||
❌ **No investment impact**: Must connect results to thesis and rating
|
||||
|
||||
❌ **Missing citations**: Every number needs a source with clickable hyperlinks
|
||||
|
||||
❌ **Plain text URLs**: All URLs must be formatted as clickable hyperlinks
|
||||
|
||||
## Comprehensive Quality Control Checklist
|
||||
|
||||
Before delivering earnings update, verify all items below:
|
||||
|
||||
### Content & Analysis Checklist
|
||||
|
||||
**Beat/Miss Analysis:**
|
||||
- [ ] Beat/miss analysis leads the report
|
||||
- [ ] Specific variances quantified (e.g., "beat by $120M or 3%")
|
||||
- [ ] Explanation of WHY results differed from expectations
|
||||
- [ ] Analysis of each key metric (revenue, EPS, margins, etc.)
|
||||
|
||||
**Metrics & Performance:**
|
||||
- [ ] All key metrics discussed with YoY comparisons
|
||||
- [ ] QoQ comparisons included where relevant
|
||||
- [ ] Segment/geographic/product breakdowns provided
|
||||
- [ ] Operating metrics analyzed (customers, ARPU, units, etc.)
|
||||
|
||||
**Guidance & Estimates:**
|
||||
- [ ] Guidance changes analyzed and quantified (if provided)
|
||||
- [ ] If no guidance, this is explicitly noted
|
||||
- [ ] Updated estimates provided for current year
|
||||
- [ ] Updated estimates provided for next year
|
||||
- [ ] Old vs. new estimates clearly shown
|
||||
- [ ] Explanation of what changed and why
|
||||
|
||||
**Valuation & Rating:**
|
||||
- [ ] Price target updated (if warranted by results)
|
||||
- [ ] If PT unchanged, explicitly maintained
|
||||
- [ ] Valuation methodology explained
|
||||
- [ ] Rating confirmed or changed with clear rationale
|
||||
- [ ] Investment thesis assessed and updated if needed
|
||||
|
||||
### Format & Length Checklist
|
||||
|
||||
**Overall Structure:**
|
||||
- [ ] Report is 8-12 pages (not shorter, not longer)
|
||||
- [ ] Page 1 has earnings summary format
|
||||
- [ ] Page 1 has "EARNINGS UPDATE" in title (NOT "Initiating Coverage")
|
||||
- [ ] Event-driven title (e.g., "Strong Q3 Results...")
|
||||
|
||||
**Tables:**
|
||||
- [ ] 1-3 summary tables included (NOT comprehensive tables)
|
||||
- [ ] All tables have clear column headers
|
||||
- [ ] All tables have header row shading
|
||||
- [ ] All tables have source lines at bottom
|
||||
- [ ] Estimates table shows old vs. new with change column
|
||||
|
||||
**Charts:**
|
||||
- [ ] 8-12 charts embedded throughout document
|
||||
- [ ] All charts have "Figure X - [Title]" caption above
|
||||
- [ ] All charts have "Source: [Source]" line below
|
||||
- [ ] Charts focus on quarterly trends
|
||||
- [ ] Charts highlight changes (beat/miss, revisions)
|
||||
- [ ] Charts use professional styling
|
||||
|
||||
### Citations & Sources Checklist ⭐⭐⭐ MANDATORY
|
||||
|
||||
**Figure & Table Citations:**
|
||||
- [ ] Every figure has specific source with document name and date
|
||||
- [ ] Every table has specific source with document reference
|
||||
- [ ] Source citations include page numbers or slide numbers where applicable
|
||||
|
||||
**Beat/Miss Citations:**
|
||||
- [ ] Beat/miss analysis cites consensus source (Bloomberg, FactSet, etc.)
|
||||
- [ ] Consensus source includes "as of" date (pre-earnings close)
|
||||
- [ ] Company reported results cited to earnings release or 10-Q
|
||||
|
||||
**Guidance Citations:**
|
||||
- [ ] Current guidance cited to earnings call transcript or release
|
||||
- [ ] Prior guidance cited to previous quarter's materials
|
||||
- [ ] Both current and prior guidance sources hyperlinked
|
||||
|
||||
**Statistics & Metrics:**
|
||||
- [ ] Key statistics have footnotes with sources
|
||||
- [ ] Footnotes reference specific documents and page/slide numbers
|
||||
- [ ] Management quotes cite speaker name and source document
|
||||
|
||||
**Hyperlinks:** ⭐⭐⭐ CRITICAL
|
||||
- [ ] ALL URLs are CLICKABLE HYPERLINKS (not plain text)
|
||||
- [ ] Hyperlinks formatted with meaningful display text
|
||||
- [ ] Blue, underlined hyperlink formatting in Word document
|
||||
- [ ] Hyperlinks tested and working (Ctrl+Click opens correct page)
|
||||
- [ ] All SEC filings hyperlinked to EDGAR viewer
|
||||
- [ ] All earnings materials hyperlinked (release, transcript, presentation)
|
||||
- [ ] Prior quarter materials hyperlinked for comparison
|
||||
- [ ] No raw URLs displayed anywhere in document
|
||||
|
||||
**Sources Section:**
|
||||
- [ ] "Sources & References" section included at end of report
|
||||
- [ ] Section lists all earnings materials with dates
|
||||
- [ ] All materials have clickable hyperlinks
|
||||
- [ ] Consensus data sources listed (even if no link for subscription data)
|
||||
- [ ] Prior period references included
|
||||
|
||||
### Accuracy Checklist
|
||||
|
||||
**Numerical Accuracy:**
|
||||
- [ ] Numbers match company's reported results exactly
|
||||
- [ ] Math checks out in all calculations
|
||||
- [ ] Estimate changes calculated correctly
|
||||
- [ ] Valuation math is accurate
|
||||
- [ ] Charts match text descriptions
|
||||
|
||||
**Factual Accuracy:**
|
||||
- [ ] No typos in ticker symbol
|
||||
- [ ] No typos in company name
|
||||
- [ ] Dates are current and accurate
|
||||
- [ ] Quarter/year references are correct
|
||||
- [ ] Year notation correct (A for actual, E for estimate)
|
||||
|
||||
### Timeliness Checklist
|
||||
|
||||
**Publication Timing:**
|
||||
- [ ] Report published within 24-48 hours of earnings release
|
||||
- [ ] If later than 48 hours, acknowledged as "delayed reaction"
|
||||
- [ ] ✅ **VERIFIED all data is from LATEST quarter by searching for recent earnings**
|
||||
- [ ] ✅ **Did NOT rely on knowledge cutoff - actively searched for current data**
|
||||
- [ ] Consensus estimates are pre-earnings (not post-earnings)
|
||||
- [ ] No outdated information included
|
||||
- [ ] Earnings release date is within last 1-3 months (not 6+ months old)
|
||||
|
||||
### Writing Style Checklist
|
||||
|
||||
**Clarity & Directness:**
|
||||
- [ ] Lead with numbers ("Revenue grew 15% to $1.2B" not "Strong revenue")
|
||||
- [ ] Use "vs." not "versus"
|
||||
- [ ] Be direct and concise throughout
|
||||
- [ ] Focus on what's NEW (not rehashing company basics)
|
||||
- [ ] Avoid vague language ("strong performance" without quantification)
|
||||
|
||||
**Professional Standards:**
|
||||
- [ ] Institutional tone maintained
|
||||
- [ ] Consistent terminology throughout
|
||||
- [ ] No informal language
|
||||
- [ ] Proper financial notation
|
||||
|
||||
## Pre-Delivery Final Check
|
||||
|
||||
Run through this quick final check before sending report to user:
|
||||
|
||||
### 5-Minute Final Review:
|
||||
1. **Page 1**: Rating clear? Price target updated? Key takeaways compelling?
|
||||
2. **Numbers**: Do reported results match company's press release exactly?
|
||||
3. **Citations**: Spot check 3-4 figures/tables - all have sources with clickable hyperlinks?
|
||||
4. **Estimates**: Old vs. new clearly shown? Changes explained?
|
||||
5. **Charts**: All 8-12 embedded? All numbered and captioned?
|
||||
6. **Length**: Is it 8-12 pages (not 6, not 15)?
|
||||
7. **Hyperlinks**: Test 3-4 hyperlinks - do they work with Ctrl+Click?
|
||||
8. **Timeliness**: Is this being published within 48 hours of earnings?
|
||||
|
||||
If all items check out, the report is ready for delivery.
|
||||
|
||||
## Summary Delivery Format
|
||||
|
||||
When delivering the completed report to the user, provide this summary:
|
||||
|
||||
```
|
||||
[Company] Q[X] [Year] Earnings Update Complete
|
||||
|
||||
Results: [BEAT / INLINE / MISS]
|
||||
- Revenue: $X.XB ([beat/missed] by $XXM or X%)
|
||||
- EPS: $X.XX ([beat/missed] by $X.XX)
|
||||
|
||||
Key Takeaways:
|
||||
■ [Takeaway 1]
|
||||
■ [Takeaway 2]
|
||||
■ [Takeaway 3]
|
||||
|
||||
Updated Estimates:
|
||||
- FY[Year]E Revenue: $XX.XB (prior: $XX.XB, [+/-]X%)
|
||||
- FY[Year]E EPS: $X.XX (prior: $X.XX, [+/-]X%)
|
||||
|
||||
Rating: [MAINTAINED / RAISED / LOWERED] [RATING]
|
||||
Price Target: $XXX (prior: $XXX) - [+/-]XX% upside
|
||||
|
||||
Deliverables:
|
||||
✓ 8-12 page earnings update report (DOCX)
|
||||
✓ 8-12 embedded charts
|
||||
✓ Updated estimates with old/new comparison
|
||||
✓ Complete sources section with clickable hyperlinks
|
||||
✓ [Optional: Updated XLS financial model]
|
||||
|
||||
File: [Company]_Q[X]_[Year]_Earnings_Update.docx
|
||||
```
|
||||
@@ -0,0 +1,368 @@
|
||||
# Report Structure and Templates
|
||||
|
||||
This document provides complete page-by-page templates and formatting requirements for the earnings update DOCX report.
|
||||
|
||||
## Complete Report Structure
|
||||
|
||||
**REPORT STRUCTURE:**
|
||||
|
||||
---
|
||||
|
||||
## PAGE 1: EARNINGS SUMMARY
|
||||
|
||||
**Top Section - Header:**
|
||||
```
|
||||
[COMPANY NAME] ([TICKER])
|
||||
[QUARTER] [YEAR] EARNINGS UPDATE
|
||||
|
||||
[Current Date]
|
||||
|
||||
Rating: [MAINTAIN/RAISE/LOWER] [RATING]
|
||||
Price (as of [date]): $XX.XX
|
||||
Price Target: [OLD → NEW if changed, or MAINTAIN $XXX]
|
||||
```
|
||||
|
||||
**Top Section - Quick Summary Box:**
|
||||
```
|
||||
EARNINGS SUMMARY
|
||||
─────────────────────────────────────────────────
|
||||
Q[X] [YEAR] RESULTS: [BEAT / INLINE / MISS]
|
||||
|
||||
Reported Est Variance
|
||||
Revenue $X,XXX $X,XXX +$XXX (+X%)
|
||||
EPS (Adj) $X.XX $X.XX +$X.XX (+X%)
|
||||
|
||||
Key Takeaways:
|
||||
■ [Takeaway 1 - one sentence]
|
||||
■ [Takeaway 2 - one sentence]
|
||||
■ [Takeaway 3 - one sentence]
|
||||
```
|
||||
|
||||
**Main Content - Investment Impact (3-4 bullets):**
|
||||
|
||||
Use ■ character with **bold headers** and paragraph-length explanations:
|
||||
|
||||
```
|
||||
■ **Results beat on strong [segment/geography/product], maintaining positive momentum**
|
||||
|
||||
Q[X] revenue of $X.XB exceeded our $X.XB estimate by X% and consensus by X%,
|
||||
driven primarily by [specific driver]. [Segment] revenue grew X% YoY (vs. our
|
||||
X% estimate), while [segment] grew X% (vs. X% estimate). Management highlighted
|
||||
[specific products/initiatives] as key growth drivers and maintained confident
|
||||
tone on outlook. The beat demonstrates [thesis point], reinforcing our positive
|
||||
view.
|
||||
|
||||
■ **Margins expanded XXbps YoY despite [headwind], showcasing operational leverage**
|
||||
|
||||
[Detailed margin analysis paragraph...]
|
||||
|
||||
■ **Guidance raised / maintained / lowered - implies [interpretation]**
|
||||
|
||||
[Detailed guidance analysis paragraph...]
|
||||
|
||||
■ **Maintaining [RATING] with [raised/unchanged] $XXX price target**
|
||||
|
||||
[Investment conclusion paragraph...]
|
||||
```
|
||||
|
||||
**Bottom Section - Updated Estimates Table:**
|
||||
|
||||
```
|
||||
UPDATED FINANCIAL ESTIMATES
|
||||
─────────────────────────────────────────────────────────────────
|
||||
FY2024E (OLD) FY2024E (NEW) Change FY2025E (NEW)
|
||||
Revenue ($M) XX,XXX XX,XXX +X% XX,XXX
|
||||
Revenue Growth (%) X.X% X.X% +XXbps X.X%
|
||||
Gross Margin (%) XX.X% XX.X% +XXbps XX.X%
|
||||
EBITDA ($M) X,XXX X,XXX +X% X,XXX
|
||||
EBITDA Margin (%) XX.X% XX.X% +XXbps XX.X%
|
||||
EPS (Adjusted) ($) X.XX X.XX +X% X.XX
|
||||
P/E (x) XX.Xx XX.Xx -X% XX.Xx
|
||||
|
||||
Note: "E" = Estimate. Old estimates from [prior report date].
|
||||
Source: Company data, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PAGES 2-3: DETAILED RESULTS ANALYSIS
|
||||
|
||||
Break down results by:
|
||||
|
||||
### Revenue Analysis (1 page)
|
||||
- Total revenue beat/miss explanation
|
||||
- Segment/geographic/product breakdown
|
||||
- YoY and sequential trends
|
||||
- Comparison to guidance (if provided)
|
||||
|
||||
**Table: Quarterly Revenue Progression**
|
||||
```
|
||||
Q[X-3] Q[X-2] Q[X-1] Q[X] YoY Chg QoQ Chg
|
||||
Total Revenue ($M) X,XXX X,XXX X,XXX X,XXX +X% +X%
|
||||
[Segment A] ($M) XXX XXX XXX XXX +X% +X%
|
||||
[Segment B] ($M) XXX XXX XXX XXX +X% +X%
|
||||
[Segment C] ($M) XXX XXX XXX XXX +X% +X%
|
||||
|
||||
Note: Q[X] = [Quarter] [Year]
|
||||
Source: Company reports, [Firm Name] analysis
|
||||
```
|
||||
|
||||
### Profitability Analysis (1 page)
|
||||
- Gross margin analysis (drivers, trends)
|
||||
- Operating margin analysis
|
||||
- Below-the-line items (interest, tax, etc.)
|
||||
- EPS reconciliation (adjusted vs. GAAP)
|
||||
|
||||
**Table: Margin Analysis**
|
||||
```
|
||||
Q[X-3] Q[X-2] Q[X-1] Q[X] YoY Chg
|
||||
Gross Margin (%) XX.X% XX.X% XX.X% XX.X% +XXbps
|
||||
Operating Margin (%) XX.X% XX.X% XX.X% XX.X% +XXbps
|
||||
Net Margin (%) XX.X% XX.X% XX.X% XX.X% +XXbps
|
||||
|
||||
Key Drivers:
|
||||
+ [Positive driver 1]
|
||||
+ [Positive driver 2]
|
||||
- [Negative driver 1]
|
||||
- [Negative driver 2]
|
||||
```
|
||||
|
||||
**Embed 2-3 charts on these pages:**
|
||||
- Chart 1: Quarterly revenue progression
|
||||
- Chart 2: Quarterly EPS progression
|
||||
- Chart 3: Margin trends
|
||||
|
||||
---
|
||||
|
||||
## PAGES 4-5: KEY METRICS & GUIDANCE
|
||||
|
||||
### Business Metrics (1 page)
|
||||
- Customer count, ARPU, units, store count, etc.
|
||||
- Whatever metrics company emphasizes
|
||||
- Comparison to expectations
|
||||
- Trends and outlook
|
||||
|
||||
**Table: Key Operating Metrics**
|
||||
```
|
||||
Q[X-3] Q[X-2] Q[X-1] Q[X] YoY Chg Our Est Var
|
||||
[Metric 1] XXX XXX XXX XXX +X% XXX +X%
|
||||
[Metric 2] XXX XXX XXX XXX +X% XXX +X%
|
||||
[Metric 3] XXX XXX XXX XXX +X% XXX +X%
|
||||
|
||||
Source: Company reports
|
||||
```
|
||||
|
||||
### Guidance & Outlook (1 page)
|
||||
- What guidance was provided (if any)
|
||||
- Comparison to prior guidance
|
||||
- Comparison to Street estimates
|
||||
- Our assessment of achievability
|
||||
- Key assumptions
|
||||
|
||||
**If guidance provided:**
|
||||
```
|
||||
MANAGEMENT GUIDANCE vs. ESTIMATES
|
||||
─────────────────────────────────────────────────────────────────
|
||||
New Guidance Old Guidance Change Street
|
||||
FY2024E Revenue $XX-XXB $XX-XXB Raised $XX.XB
|
||||
FY2024E EPS $X.XX-X.XX $X.XX-X.XX Raised $X.XX
|
||||
|
||||
Our Take: [Brief assessment of guidance]
|
||||
```
|
||||
|
||||
**Embed 2-3 charts:**
|
||||
- Chart 4: Key metrics trends
|
||||
- Chart 5: Guidance vs. Street comparison
|
||||
- Chart 6: Revenue by segment/geography
|
||||
|
||||
---
|
||||
|
||||
## PAGES 6-7: UPDATED INVESTMENT THESIS
|
||||
|
||||
### Thesis Impact Assessment (1-2 pages)
|
||||
|
||||
For each key thesis pillar, assess impact of results:
|
||||
|
||||
```
|
||||
■ **Thesis Pillar 1: [Original thesis statement]**
|
||||
|
||||
Status: [STRENGTHENED / UNCHANGED / WEAKENED]
|
||||
|
||||
Q[X] results [supported / challenged] this thesis pillar because [specific
|
||||
evidence from results]. [Detailed analysis of 150-200 words explaining how
|
||||
results impact this specific thesis element.]
|
||||
|
||||
■ **Thesis Pillar 2: [Original thesis statement]**
|
||||
|
||||
[Similar analysis]
|
||||
|
||||
■ **Thesis Pillar 3: [Original thesis statement]**
|
||||
|
||||
[Similar analysis]
|
||||
```
|
||||
|
||||
### Risks Update (0.5 pages)
|
||||
- Any new risks identified?
|
||||
- Have existing risks been mitigated or worsened?
|
||||
- Brief assessment
|
||||
|
||||
**Embed 1-2 charts:**
|
||||
- Chart 7: Valuation vs. historical
|
||||
- Chart 8: Estimate revision comparison
|
||||
|
||||
---
|
||||
|
||||
## PAGES 8-10: VALUATION & ESTIMATES
|
||||
|
||||
### Updated Valuation (1-2 pages)
|
||||
|
||||
**DCF Update:**
|
||||
```
|
||||
Updated DCF inputs based on Q[X] results:
|
||||
- Revenue growth FY24E: X.X% → X.X% (raised/lowered)
|
||||
- EBIT margin FY24E: XX.X% → XX.X%
|
||||
- Terminal growth: X.X% (unchanged)
|
||||
- WACC: X.X% (unchanged)
|
||||
|
||||
Updated DCF fair value: $XXX (prior: $XXX)
|
||||
```
|
||||
|
||||
**Comparable Companies:**
|
||||
```
|
||||
[Company] trades at XX.Xx NTM P/E vs. peer median of XX.Xx (-X% discount).
|
||||
Given [rationale], we believe [premium/discount/inline] valuation is warranted.
|
||||
```
|
||||
|
||||
**Price Target Methodology:**
|
||||
```
|
||||
Our $XXX price target (prior: $XXX) is based on:
|
||||
- XX% DCF
|
||||
- XX% NTM P/E of XX.Xx (vs. peers at XX.Xx)
|
||||
- XX% EV/EBITDA
|
||||
|
||||
Implied upside: +XX% from current price of $XXX
|
||||
```
|
||||
|
||||
### Updated Estimates Detail
|
||||
|
||||
Provide updated estimates for at least current year and next year:
|
||||
|
||||
```
|
||||
DETAILED ESTIMATE UPDATES
|
||||
─────────────────────────────────────────────────────────────────
|
||||
FY2024E FY2025E
|
||||
Old New Change New Estimate
|
||||
Revenue ($B) XX.X XX.X +X.X% XX.X
|
||||
[Segment A] XX.X XX.X +X.X% XX.X
|
||||
[Segment B] XX.X XX.X +X.X% XX.X
|
||||
|
||||
Gross Profit ($B) XX.X XX.X +X.X% XX.X
|
||||
Gross Margin (%) XX.X% XX.X% +XXbps XX.X%
|
||||
|
||||
EBITDA ($B) X.X X.X +X.X% X.X
|
||||
EBITDA Margin (%) XX.X% XX.X% +XXbps XX.X%
|
||||
|
||||
Operating Income X.X X.X +X.X% X.X
|
||||
Op Margin (%) XX.X% XX.X% +XXbps XX.X%
|
||||
|
||||
Net Income ($B) X.X X.X +X.X% X.X
|
||||
EPS - Adjusted ($) X.XX X.XX +X.X% X.XX
|
||||
EPS - GAAP ($) X.XX X.XX +X.X% X.XX
|
||||
|
||||
P/E (x) XX.Xx XX.Xx XX.Xx
|
||||
EV/EBITDA (x) XX.Xx XX.Xx XX.Xx
|
||||
|
||||
Source: [Firm Name] estimates
|
||||
```
|
||||
|
||||
**Embed 1-2 charts:**
|
||||
- Chart 9: P/E or EV/EBITDA bands
|
||||
- Chart 10: Price target walk (old → new)
|
||||
|
||||
---
|
||||
|
||||
## PAGES 11-12: APPENDIX (Optional)
|
||||
|
||||
### Detailed Quarterly Models (if space allows)
|
||||
- Income statement detail
|
||||
- Cash flow highlights
|
||||
- Balance sheet highlights
|
||||
|
||||
### Call Transcript Highlights (optional)
|
||||
- Key Q&A excerpts
|
||||
- Notable management quotes
|
||||
|
||||
### Peer Comparison (if peers have reported)
|
||||
- How results compare to competitors
|
||||
- Market share implications
|
||||
|
||||
**Embed final charts:**
|
||||
- Chart 11: Peer comparison
|
||||
- Chart 12: Additional supporting charts
|
||||
|
||||
---
|
||||
|
||||
## FORMATTING REQUIREMENTS
|
||||
|
||||
### 1. Page 1 Requirements
|
||||
- Clear rating (MAINTAIN OUTPERFORM, RAISE TO BUY, etc.)
|
||||
- Updated price target prominently displayed
|
||||
- Summary table with old/new estimates
|
||||
- 3-4 paragraph-length bullets with ■ character
|
||||
|
||||
### 2. All Tables Requirements
|
||||
- Source line at bottom
|
||||
- Clear column headers
|
||||
- Shading for header rows
|
||||
|
||||
### 3. All Charts Requirements
|
||||
- "Figure X - [Title]" caption above
|
||||
- "Source: [Source]" line below
|
||||
- Professional styling
|
||||
|
||||
### 4. Year Notation
|
||||
- Use A for actual (Q3'24A)
|
||||
- Use E for estimate (Q4'24E)
|
||||
|
||||
### 5. Writing Style
|
||||
- Lead with numbers ("Revenue grew 15% to $1.2B" not "Strong revenue growth")
|
||||
- Use "vs." not "versus"
|
||||
- Be direct and concise
|
||||
- Focus on what's NEW
|
||||
|
||||
### 6. Hyperlink Requirements ⭐⭐⭐
|
||||
- ALL URLs must be clickable hyperlinks in Word
|
||||
- Blue, underlined text that opens on Ctrl+Click
|
||||
- Display text meaningful (not raw URL)
|
||||
- Every source citation should have clickable link where applicable
|
||||
- No plain text URLs - always format as hyperlinks
|
||||
|
||||
## Citation Examples for Specific Content
|
||||
|
||||
### For Beat/Miss Analysis:
|
||||
```
|
||||
Revenue of $2.45B beat consensus of $2.39B by $60M (2.5%)¹
|
||||
|
||||
¹ Bloomberg consensus as of market close November 6, 2024; Company earnings release November 7, 2024
|
||||
[Hyperlink "earnings release" to: https://investor.company.com/news/q3-2024-earnings]
|
||||
```
|
||||
|
||||
### For Guidance:
|
||||
```
|
||||
Management raised FY2024 revenue guidance to $9.8-10.0B from prior $9.5-9.7B²
|
||||
|
||||
² Q3 2024 Earnings Call, November 7, 2024, CFO prepared remarks
|
||||
[Hyperlink "Earnings Call" to: https://seekingalpha.com/article/...]
|
||||
Prior guidance from Q2 earnings call August 8, 2024
|
||||
[Hyperlink "Q2 earnings call" to August transcript]
|
||||
```
|
||||
|
||||
### For Key Metrics:
|
||||
```
|
||||
Enterprise customers grew 23% YoY to 845, with net revenue retention at 128%³
|
||||
|
||||
³ Q3 2024 10-Q, page 23
|
||||
[Hyperlink "10-Q" to: https://www.sec.gov/cgi-bin/viewer?accession=...]
|
||||
Q3 2024 Investor Presentation slide 8
|
||||
[Hyperlink "Investor Presentation" to PDF]
|
||||
```
|
||||
@@ -0,0 +1,526 @@
|
||||
# Detailed Workflow for Earnings Updates
|
||||
|
||||
This document provides detailed step-by-step instructions for each phase of the earnings update process.
|
||||
|
||||
## ⚠️⚠️⚠️ CRITICAL WARNING: ALWAYS USE THE LATEST EARNINGS DATA ⚠️⚠️⚠️
|
||||
|
||||
**STOP AND READ THIS FIRST:**
|
||||
|
||||
Training data is OUTDATED. Actively search for and retrieve the MOST RECENT earnings materials. Using outdated earnings data is the #1 mistake in earnings analysis.
|
||||
|
||||
**BEFORE STARTING:**
|
||||
1. **CHECK TODAY'S DATE** - Write down the current date
|
||||
2. **SEARCH FOR LATEST** - Use web search to find the most recent earnings
|
||||
3. **VERIFY THE DATE** - Confirm the earnings release is within the last 3 months
|
||||
4. **IF OLDER THAN 3 MONTHS** - Wrong quarter obtained, search again
|
||||
|
||||
## Phase 1: Earnings Data Collection (30-60 minutes)
|
||||
|
||||
### Step 1: Identify the Latest Earnings Period
|
||||
|
||||
**CRITICAL**: ALWAYS SEARCH FOR THE LATEST EARNINGS - DO NOT RELY ON KNOWLEDGE CUTOFF.
|
||||
**CRITICAL**: NEVER USE EARNINGS DATA FROM TRAINING - IT IS OUTDATED.
|
||||
|
||||
**Step 1a: Search for Latest Earnings Release**
|
||||
|
||||
**🚨 ACTIVELY SEARCH - training data is outdated. 🚨**
|
||||
|
||||
**MANDATORY STEP 1: CHECK TODAY'S DATE**
|
||||
- **Write down today's date explicitly**: [Month] [Day], [Year]
|
||||
- **Use this to verify** that any earnings found are within 3 months
|
||||
- **Example**: "Today is October 29, 2024"
|
||||
|
||||
**MANDATORY STEP 2: SEARCH FOR "LATEST EARNINGS"**
|
||||
- **Use web search** with queries like:
|
||||
- `[Company name] latest earnings results`
|
||||
- `[Company name] most recent quarterly earnings`
|
||||
- `[Ticker symbol] earnings latest quarter`
|
||||
- **OR search company investor relations site**:
|
||||
- Go to `investor.[company].com` or `[company].com/investors`
|
||||
- Navigate to "Press Releases", "News", or "Earnings" section
|
||||
- **Sort by date to find MOST RECENT release**
|
||||
- Look for keywords: "earnings", "results", "financial results", "quarterly results"
|
||||
|
||||
**MANDATORY STEP 3: VERIFY THE RELEASE DATE**
|
||||
- **Look at the date of the earnings release found**
|
||||
- **Calculate**: Is this date within the last 3 months from today?
|
||||
- **If YES** → Proceed to next step
|
||||
- **If NO (older than 3 months)** → 🚨 WRONG QUARTER - Search again for more recent
|
||||
|
||||
**❌ COMMON MISTAKES TO AVOID:**
|
||||
- ❌ Using earnings data from training without searching
|
||||
- ❌ Assuming "Q3 2024" is latest based on expectations
|
||||
- ❌ Grabbing the first earnings release found without checking the date
|
||||
- ❌ Not comparing the release date to today's date
|
||||
- ❌ Proceeding when the release is 4+ months old
|
||||
|
||||
**✅ CORRECT APPROACH:**
|
||||
- ✅ Check today's date first
|
||||
- ✅ Search explicitly for "latest" or "most recent"
|
||||
- ✅ Read the actual release date on the materials
|
||||
- ✅ Confirm release date is within 3 months of today
|
||||
- ✅ If unsure, search again with different terms
|
||||
|
||||
**MANDATORY STEP 4: IDENTIFY THE QUARTER**
|
||||
- **Read the title/headline** to identify the quarter (Q1, Q2, Q3, Q4 or fiscal quarter)
|
||||
- **Read the release date** on the document itself
|
||||
- **Verify both the quarter name AND the date are recent**
|
||||
|
||||
3. **Alternative search methods if IR site is unclear:**
|
||||
- Web search: `[Company name] latest earnings results`
|
||||
- Web search: `[Company name] most recent quarterly earnings`
|
||||
- Web search: `[Ticker symbol] earnings latest quarter`
|
||||
- SEC EDGAR: Search for company and look at most recent 10-Q or 10-K filing date
|
||||
|
||||
**Example searches that find latest data:**
|
||||
- "Nike latest earnings results" → Returns most recent quarter reported
|
||||
- "AAPL most recent quarterly earnings" → Shows latest Apple earnings
|
||||
- "Tesla Q3 2024 earnings" → Results confirm Q3 2024 exists
|
||||
|
||||
**Step 1b: Understand Company's Fiscal Calendar**
|
||||
|
||||
After identifying the latest quarter from search, understand the company's fiscal year to interpret it correctly:
|
||||
|
||||
**Common fiscal year patterns:**
|
||||
- **Calendar year (CY)**: Q1=Jan-Mar, Q2=Apr-Jun, Q3=Jul-Sep, Q4=Oct-Dec
|
||||
- **Nike fiscal**: Q1=Jun-Aug, Q2=Sep-Nov, Q3=Dec-Feb, Q4=Mar-May (May fiscal year-end)
|
||||
- **Apple fiscal**: Q1=Oct-Dec, Q2=Jan-Mar, Q3=Apr-Jun, Q4=Jul-Sep (September fiscal year-end)
|
||||
- **Walmart fiscal**: Q1=Feb-Apr, Q2=May-Jul, Q3=Aug-Oct, Q4=Nov-Jan (January fiscal year-end)
|
||||
|
||||
Many companies state their fiscal year in the earnings release header. Search `[company] fiscal year calendar` if needed.
|
||||
|
||||
**Step 1c: MANDATORY VERIFICATION - Verify Latest Data Obtained**
|
||||
|
||||
🛑 **STOP - DO NOT PROCEED until verifying ALL of these:**
|
||||
|
||||
- [ ] ✅ **Today's date written down**: [Month] [Day], [Year]
|
||||
- [ ] ✅ **Actively searched** using "latest earnings" or "most recent earnings"
|
||||
- [ ] ✅ **Earnings release date found**: [Month] [Day], [Year]
|
||||
- [ ] ✅ **Verified release is within 3 months of today** (do the math!)
|
||||
- [ ] ✅ **Did NOT assume** the quarter based on today's date alone
|
||||
- [ ] ✅ **Can see the actual press release** confirming the quarter/period
|
||||
- [ ] ✅ **Opened and read** the actual earnings materials (not just assumed they exist)
|
||||
|
||||
**🚨 RED FLAGS - If ANY of these are true, WRONG quarter obtained:**
|
||||
- 🚨 Release date is more than 90 days old
|
||||
- 🚨 Relying on expectations rather than what was FOUND by searching
|
||||
- 🚨 Have not actually SEEN a press release or filing confirming this quarter exists
|
||||
- 🚨 Used data from training without searching
|
||||
- 🚨 Cannot state the exact release date
|
||||
- 🚨 Release date found is from 2023 or earlier (when today is 2024+)
|
||||
|
||||
**IF ANY RED FLAGS PRESENT**: STOP and search again. Do not proceed with outdated data.
|
||||
|
||||
**Step 1c: Handle Naming Variations**
|
||||
|
||||
Companies use different terminology - recognize these patterns:
|
||||
|
||||
**Quarter terminology:**
|
||||
- "Q1 2024", "Q1 FY24", "First Quarter 2024", "1Q24"
|
||||
- "Third Quarter Fiscal 2024", "Q3 FY2024", "3Q FY24"
|
||||
|
||||
**Earnings release titles:**
|
||||
- "[Company] Reports Q3 2024 Results"
|
||||
- "[Company] Announces Third Quarter Fiscal 2024 Financial Results"
|
||||
- "[Company] Q3 Revenue Grew 15% Year-over-Year"
|
||||
|
||||
**SEC filing searches:**
|
||||
- Company name may differ from common name (e.g., "Meta Platforms, Inc." vs "Facebook")
|
||||
- Search by ticker symbol to find filings reliably
|
||||
- Look for most recent 10-Q (quarterly) or 10-K (annual if Q4)
|
||||
|
||||
### Step 2: Gather Earnings Materials
|
||||
|
||||
After SEARCHING FOR and confirming the latest quarter, collect the following:
|
||||
|
||||
**⚠️ IMPORTANT: SEARCH for and ACCESS actual documents - do not rely on training data.**
|
||||
|
||||
**Primary Materials (REQUIRED):**
|
||||
- **Earnings press release** - Usually on company investor relations site under "Press Releases" or "News"
|
||||
- Navigate to IR site and find the actual press release
|
||||
- Search patterns: "[Company name] latest earnings", "[Company name] Q[X] [Year] earnings results"
|
||||
- Look for PDF or HTML version
|
||||
- **Verify the date matches what was found in Step 1** (should be within last 1-3 months)
|
||||
- **Read the actual document** to confirm the quarter and get reported numbers
|
||||
|
||||
- **10-Q or 10-K filing** - On SEC EDGAR (sec.gov/edgar/searchedgar/companysearch.html)
|
||||
- Search by ticker symbol
|
||||
- For quarters 1-3: Look for most recent 10-Q
|
||||
- For Q4: Look for 10-K (annual report)
|
||||
- Note: May be filed 1-5 days after earnings release
|
||||
- Direct link format: `https://www.sec.gov/cgi-bin/viewer?accession=[accession-number]`
|
||||
|
||||
- **Earnings call transcript** - 🚨 **VERIFY THE DATE ON THE TRANSCRIPT** 🚨
|
||||
- **Search for**: "[Company] latest earnings call transcript" or "[Company] Q[X] [Year] earnings call transcript"
|
||||
- **Sources**:
|
||||
- Company IR site (some post transcripts directly)
|
||||
- Seeking Alpha: Search "[Company] [latest quarter] earnings call transcript"
|
||||
- AlphaStreet, Motley Fool (alternative sources)
|
||||
- **CRITICAL DATE CHECK**:
|
||||
- ✅ **Before using ANY transcript, verify the date on the transcript itself**
|
||||
- ✅ **The transcript date MUST match the earnings release date from Step 1**
|
||||
- ✅ **If transcript says "Q2 2023" but release was "Q3 2024", WRONG transcript obtained**
|
||||
- 🚨 **Common mistake**: Grabbing an old transcript without checking the date
|
||||
- If transcript not yet available, listen to webcast replay or note to wait for transcript
|
||||
|
||||
**Supplemental Materials (if available):**
|
||||
- **Investor presentation/slides** - Often posted on IR site alongside press release
|
||||
- Usually titled "Q[X] [Year] Earnings Presentation" or "Investor Presentation"
|
||||
- PDF format with slides management presented during earnings call
|
||||
|
||||
- **Supplemental data file** - Some companies provide Excel files with detailed metrics
|
||||
- Look for "Supplemental Financial Information" or "Investor Data Sheet"
|
||||
|
||||
**Reference Materials (for comparison):**
|
||||
- **Prior quarter results** - For QoQ comparison
|
||||
- From prior quarter's earnings release (90 days ago)
|
||||
|
||||
- **Prior year same quarter** - For YoY comparison
|
||||
- From same quarter last year (4 quarters ago)
|
||||
|
||||
- **Prior estimates** - If this company was previously covered
|
||||
- From last earnings update or initiation report
|
||||
- Check what was estimated for this quarter's metrics
|
||||
|
||||
- **Consensus estimates** - From Bloomberg, FactSet, Refinitiv, or Yahoo Finance
|
||||
- CRITICAL: Use estimates from BEFORE earnings release
|
||||
- Look for "as of [date before earnings]" to ensure pre-announcement consensus
|
||||
- Needed for beat/miss analysis
|
||||
|
||||
**🛑 MANDATORY VERIFICATION before proceeding to Step 3:**
|
||||
|
||||
**DATES - Verify ALL dates match:**
|
||||
- [ ] ✅ **Today's date written down**: _______________
|
||||
- [ ] ✅ **Earnings release date**: _______________ (MUST be within 3 months of today)
|
||||
- [ ] ✅ **Earnings call transcript date**: _______________ (MUST match release date ±1 day)
|
||||
- [ ] ✅ **10-Q/10-K filing date**: _______________ (MUST be same quarter as release)
|
||||
- [ ] ✅ **ALL materials show SAME quarter** (e.g., all say "Q3 2024", not mixed quarters)
|
||||
|
||||
**SEARCH & ACCESS - Verify active search completed:**
|
||||
- [ ] ✅ **SEARCHED** for "latest earnings" (not assumed based on current date)
|
||||
- [ ] ✅ **ACCESSED** actual earnings press release and read it
|
||||
- [ ] ✅ **OPENED** actual earnings call transcript and verified date
|
||||
- [ ] ✅ **CONFIRMED** this is the MOST RECENT quarter by checking dates
|
||||
- [ ] ✅ Have full financial results (revenue, EPS, margins, etc.) from actual release
|
||||
- [ ] ✅ Have pre-earnings consensus estimates with source date
|
||||
|
||||
**🚨 RED FLAGS - STOP if ANY of these are true:**
|
||||
- 🚨 Did NOT actually search for or access the earnings materials
|
||||
- 🚨 Working from memory or training data instead of current documents
|
||||
- 🚨 The earnings release date is more than 90 days old
|
||||
- 🚨 Cannot state the EXACT DATE of the earnings release
|
||||
- 🚨 The transcript date does NOT match the release date
|
||||
- 🚨 Materials show different quarters (e.g., release says Q3 but transcript says Q2)
|
||||
- 🚨 Grabbed the first result without verifying the date
|
||||
|
||||
### Step 3: Extract Key Metrics
|
||||
|
||||
Create a structured summary:
|
||||
|
||||
```
|
||||
REPORTED RESULTS vs. ESTIMATES:
|
||||
─────────────────────────────────────────────────
|
||||
Reported Our Est Consensus Beat/(Miss)
|
||||
Revenue $X,XXX $X,XXX $X,XXX $XX (X%)
|
||||
Gross Margin XX.X% XX.X% XX.X% XXbps
|
||||
EBITDA $XXX $XXX $XXX $XX (X%)
|
||||
Operating Profit $XXX $XXX $XXX $XX (X%)
|
||||
EPS (Adjusted) $X.XX $X.XX $X.XX $X.XX
|
||||
EPS (GAAP) $X.XX $X.XX $X.XX $X.XX
|
||||
|
||||
KEY BUSINESS METRICS:
|
||||
─────────────────────────────────────────────────
|
||||
[Metric 1] XXX XXX XXX +X% YoY
|
||||
[Metric 2] XXX XXX XXX +X% YoY
|
||||
[Metric 3] XXX XXX XXX +X% YoY
|
||||
```
|
||||
|
||||
### Step 4: Identify Key Themes from Call
|
||||
|
||||
Listen to or read earnings call transcript and note:
|
||||
- Management's tone (confident, cautious, defensive?)
|
||||
- Key topics emphasized (product launches, geographic trends, competition)
|
||||
- Questions from analysts (what are investors concerned about?)
|
||||
- Guidance provided (raised, lowered, maintained, introduced?)
|
||||
- Any surprises or unexpected commentary
|
||||
|
||||
## Phase 2: Analysis (2-3 hours)
|
||||
|
||||
### Step 5: Beat/Miss Analysis
|
||||
|
||||
For EACH key metric that beat or missed, explain:
|
||||
|
||||
**If BEAT:**
|
||||
- What drove the outperformance?
|
||||
- Was it one-time or sustainable?
|
||||
- Did management guide higher going forward?
|
||||
- How does this impact our thesis?
|
||||
|
||||
**If MISS:**
|
||||
- What went wrong?
|
||||
- Was it company-specific or industry-wide?
|
||||
- Is management taking corrective action?
|
||||
- How does this impact our thesis?
|
||||
|
||||
**Example Format:**
|
||||
```
|
||||
■ **Revenue Beat by 3% Driven by Strong DTC Performance**
|
||||
|
||||
Revenue of $13.5B exceeded our estimate of $13.1B by $400M (3%) and consensus
|
||||
of $13.2B by $300M (2%). The outperformance was driven primarily by Direct-to-
|
||||
Consumer channels, which grew 18% YoY (vs. our 12% estimate), offsetting
|
||||
weaker-than-expected wholesale (-5% vs. flat estimate). Management cited strong
|
||||
digital demand and successful product launches (Pegasus 40 running shoe, new
|
||||
Jordan colorways) as key drivers. DTC now represents 42% of total revenue vs.
|
||||
38% a year ago, demonstrating successful channel shift strategy.
|
||||
```
|
||||
|
||||
### Step 6: Segment/Geographic/Product Analysis
|
||||
|
||||
Analyze performance by:
|
||||
- Business segment (if multi-segment company)
|
||||
- Geography (North America, Europe, China, etc.)
|
||||
- Product category
|
||||
- Channel (retail, wholesale, e-commerce)
|
||||
|
||||
Identify:
|
||||
- What outperformed expectations?
|
||||
- What underperformed?
|
||||
- Trends vs. prior quarters
|
||||
- Management commentary on outlook for each area
|
||||
|
||||
### Step 7: Margin Analysis
|
||||
|
||||
Analyze profitability:
|
||||
- Gross margin: up or down? why?
|
||||
- Operating margin: up or down? why?
|
||||
- Key drivers (pricing, mix, costs, leverage)
|
||||
- Outlook going forward
|
||||
|
||||
### Step 8: Guidance Analysis
|
||||
|
||||
If company provided guidance:
|
||||
- Compare new guidance to prior guidance
|
||||
- Compare to internal estimates and Street estimates
|
||||
- Assess credibility (does company have track record of sandbagging? beating?)
|
||||
- Identify key assumptions behind guidance
|
||||
|
||||
If company did NOT provide guidance:
|
||||
- Note this explicitly
|
||||
- Provide independent outlook based on results and commentary
|
||||
|
||||
### Step 9: Update Financial Model
|
||||
|
||||
Update estimates for:
|
||||
- Current year (remaining quarters)
|
||||
- Next year
|
||||
- Potentially year after
|
||||
|
||||
**Show clearly:**
|
||||
```
|
||||
UPDATED ESTIMATES:
|
||||
─────────────────────────────────────────────────
|
||||
Old Est New Est Change Reason
|
||||
FY2024E Revenue $XX.XB $XX.XB +X.X% [Brief reason]
|
||||
FY2024E EBITDA $X.XB $X.XB +X.X% [Brief reason]
|
||||
FY2024E EPS $X.XX $X.XX +X.X% [Brief reason]
|
||||
|
||||
FY2025E Revenue $XX.XB $XX.XB +X.X% [Brief reason]
|
||||
FY2025E EBITDA $X.XB $X.XB +X.X% [Brief reason]
|
||||
FY2025E EPS $X.XX $X.XX +X.X% [Brief reason]
|
||||
```
|
||||
|
||||
### Step 10: Update Valuation & Price Target
|
||||
|
||||
Based on updated estimates:
|
||||
- Recalculate DCF (use updated cash flows)
|
||||
- Update comparable company multiples (if peer group has reported)
|
||||
- Determine new fair value
|
||||
- Decide if price target changes
|
||||
|
||||
**Price Target Decision:**
|
||||
- If estimates changed significantly (>5%) → Usually change price target
|
||||
- If estimates changed marginally (<5%) → May maintain price target
|
||||
- If thesis strengthened/weakened → May change even without estimate change
|
||||
|
||||
### Step 11: Assess Rating Impact
|
||||
|
||||
Decide whether to change rating:
|
||||
- If results significantly better than expected + guidance raised → Consider upgrade
|
||||
- If results significantly worse + guidance cut → Consider downgrade
|
||||
- If inline or mixed → Usually maintain rating
|
||||
|
||||
**Consider:**
|
||||
- Stock reaction (up/down/flat?)
|
||||
- Valuation (expensive/cheap relative to new estimates?)
|
||||
- Risk/reward (asymmetry shifted?)
|
||||
|
||||
## Phase 3: Chart Generation (1-2 hours)
|
||||
|
||||
### Step 12: Generate 8-12 Charts
|
||||
|
||||
Create charts focusing on QUARTERLY TRENDS and WHAT'S NEW.
|
||||
|
||||
**REQUIRED CHARTS (8-12 total):**
|
||||
|
||||
1. **Quarterly Revenue Progression** (Bar chart)
|
||||
- Last 8-12 quarters
|
||||
- Show beat/miss vs. estimates each quarter
|
||||
- Highlight current quarter
|
||||
|
||||
2. **Quarterly EPS Progression** (Bar chart)
|
||||
- Last 8-12 quarters
|
||||
- Show beat/miss vs. estimates
|
||||
- Adjusted and GAAP
|
||||
|
||||
3. **Quarterly Margin Trend** (Line chart)
|
||||
- Gross margin, EBIT margin, net margin
|
||||
- Last 8-12 quarters
|
||||
- Show trajectory
|
||||
|
||||
4. **Revenue by Segment/Geography** (Stacked bar OR table)
|
||||
- Current quarter vs. YoY
|
||||
- Growth rates by segment
|
||||
|
||||
5. **Key Operating Metrics** (Multi-line chart)
|
||||
- Customer count, ARPU, units sold, etc. (whatever is relevant)
|
||||
- Last 8-12 quarters
|
||||
|
||||
6. **Beat/Miss Summary** (Waterfall or table)
|
||||
- Show components of beat/miss
|
||||
- What drove variance from estimates
|
||||
|
||||
7. **Estimate Revision Chart** (Before/after comparison)
|
||||
- Old FY estimates vs. new FY estimates
|
||||
- Bar chart showing change
|
||||
|
||||
8. **Valuation Chart** (P/E or EV/EBITDA multiple)
|
||||
- Historical multiple range
|
||||
- Current multiple
|
||||
- Fair value multiple
|
||||
|
||||
**OPTIONAL CHARTS (if space allows):**
|
||||
- Peer comparison (if peers have reported)
|
||||
- Guidance vs. Street comparison
|
||||
- Cash flow metrics
|
||||
- Balance sheet highlights (if notable)
|
||||
|
||||
**Chart Style Guidelines:**
|
||||
- Focus on TRENDS (quarterly progression)
|
||||
- Highlight CHANGES (beat/miss, estimate revisions)
|
||||
- Keep simple and clear (this is a fast-turnaround report)
|
||||
|
||||
## Phase 4: Report Creation (2-3 hours)
|
||||
|
||||
### Step 13: Create DOCX Report
|
||||
|
||||
Use DOCX skill to create 8-12 page report.
|
||||
|
||||
See [report-structure.md](report-structure.md) for complete page-by-page templates and formatting requirements.
|
||||
|
||||
**Key Steps:**
|
||||
1. Create Page 1 with earnings summary and quick takeaways
|
||||
2. Add detailed results analysis (Pages 2-3)
|
||||
3. Include key metrics and guidance (Pages 4-5)
|
||||
4. Update investment thesis (Pages 6-7)
|
||||
5. Provide valuation and estimates (Pages 8-10)
|
||||
6. Add appendix if needed (Pages 11-12)
|
||||
7. Embed all 8-12 charts throughout
|
||||
8. Add 1-3 summary tables
|
||||
9. Include complete sources section with clickable hyperlinks
|
||||
|
||||
### Step 14: Optional - Update XLS Model
|
||||
|
||||
If a full financial model exists for this company (from initiation), update it with:
|
||||
- Actual Q[X] results
|
||||
- Revised estimates for future quarters
|
||||
- Updated valuation
|
||||
|
||||
**Note**: For earnings updates, a full XLS file is OPTIONAL (not required like in initiation reports). The DOCX report is the primary deliverable.
|
||||
|
||||
If creating XLS, include:
|
||||
- Quarterly model tab
|
||||
- Updated annual projections
|
||||
- Revised DCF
|
||||
- Updated comps analysis
|
||||
|
||||
## Phase 5: Quality Check & Delivery (30 minutes)
|
||||
|
||||
### Step 15: Quality Checklist
|
||||
|
||||
Before publishing, verify:
|
||||
|
||||
**Content:**
|
||||
- [ ] Beat/miss clearly stated and quantified
|
||||
- [ ] Key drivers explained (not just "strong performance")
|
||||
- [ ] Updated estimates provided (old vs. new shown)
|
||||
- [ ] Price target updated or explicitly maintained
|
||||
- [ ] Rating confirmed or changed with rationale
|
||||
- [ ] Guidance analyzed (if provided)
|
||||
- [ ] Thesis impact assessed
|
||||
|
||||
**Formatting:**
|
||||
- [ ] Page 1 has summary box and key bullets
|
||||
- [ ] All tables have source lines
|
||||
- [ ] All figures numbered and captioned
|
||||
- [ ] Estimates table shows old vs. new
|
||||
- [ ] 8-12 charts embedded throughout
|
||||
- [ ] Report is 8-12 pages (not too long, not too short)
|
||||
|
||||
**Accuracy:**
|
||||
- [ ] Numbers match company's reported results exactly
|
||||
- [ ] Math checks out (estimates, valuation)
|
||||
- [ ] No typos in ticker, company name, numbers
|
||||
- [ ] Charts match text descriptions
|
||||
- [ ] Date is current
|
||||
|
||||
**Citations:** ⭐ MANDATORY
|
||||
- [ ] Every figure has specific source with document and date
|
||||
- [ ] Every table has specific source with document reference
|
||||
- [ ] Beat/miss analysis cites consensus source with date
|
||||
- [ ] Guidance changes cite current and prior guidance sources
|
||||
- [ ] Key statistics have footnotes with specific page/slide references
|
||||
- [ ] Sources section lists all materials with URLs
|
||||
- [ ] ALL URLs are CLICKABLE HYPERLINKS (not plain text)
|
||||
- [ ] Hyperlinks tested and working (Ctrl+Click opens correct page)
|
||||
- [ ] All SEC filings hyperlinked to EDGAR viewer
|
||||
- [ ] All earnings materials hyperlinked (release, transcript, presentation)
|
||||
- [ ] Prior guidance hyperlinked to prior quarter's materials
|
||||
- [ ] No raw URLs displayed - all formatted as clickable links
|
||||
- [ ] Earnings call quotes cite specific speaker and approximate timestamp
|
||||
|
||||
**Timeliness:**
|
||||
- [ ] Report published within 24-48 hours of earnings release
|
||||
- [ ] All data is from LATEST quarter
|
||||
- [ ] Consensus estimates are pre-earnings (not post-earnings)
|
||||
|
||||
### Step 16: Deliver Report
|
||||
|
||||
Provide user with:
|
||||
|
||||
1. **DOCX file**: `[Company]_Q[X]_[Year]_Earnings_Update.docx`
|
||||
2. **Chart files**: All PNG/JPG charts (for reference)
|
||||
3. **Optional XLS**: Updated financial model if maintained
|
||||
|
||||
**Brief summary for user:**
|
||||
```
|
||||
[Company] Q[X] [Year] Earnings Update Complete
|
||||
|
||||
Results: [BEAT / INLINE / MISS]
|
||||
- Revenue: $X.XB ([beat/missed] by $XXM or X%)
|
||||
- EPS: $X.XX ([beat/missed] by $X.XX)
|
||||
|
||||
Key Takeaways:
|
||||
■ [Takeaway 1]
|
||||
■ [Takeaway 2]
|
||||
■ [Takeaway 3]
|
||||
|
||||
Updated Estimates:
|
||||
- FY[Year]E Revenue: $XX.XB (prior: $XX.XB, [+/-]X%)
|
||||
- FY[Year]E EPS: $X.XX (prior: $X.XX, [+/-]X%)
|
||||
|
||||
Rating: [MAINTAINED / RAISED / LOWERED] [RATING]
|
||||
Price Target: $XXX (prior: $XXX) - [+/-]XX% upside
|
||||
|
||||
Deliverable: 8-12 page earnings update report with updated estimates and valuation.
|
||||
```
|
||||
@@ -0,0 +1,70 @@
|
||||
# Earnings Preview
|
||||
|
||||
description: Build pre-earnings analysis with estimate models, scenario frameworks, and key metrics to watch. Use before a company reports quarterly earnings to prepare positioning notes, set up bull/bear scenarios, and identify what will move the stock. Triggers on "earnings preview", "what to watch for [company] earnings", "pre-earnings", "earnings setup", or "preview Q[X] for [company]".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Context
|
||||
|
||||
- Identify the company and reporting quarter
|
||||
- Pull consensus estimates via web search (revenue, EPS, key segment metrics)
|
||||
- Find the earnings date and time (pre-market vs. after-hours)
|
||||
- Review the company's prior quarter earnings call for any guidance or commentary
|
||||
|
||||
### Step 2: Key Metrics Framework
|
||||
|
||||
Build a "what to watch" framework specific to the company:
|
||||
|
||||
**Financial Metrics:**
|
||||
- Revenue vs. consensus (total and by segment)
|
||||
- EPS vs. consensus
|
||||
- Margins (gross, operating, net) — expanding or contracting?
|
||||
- Free cash flow
|
||||
- Forward guidance vs. consensus
|
||||
|
||||
**Operational Metrics** (sector-specific):
|
||||
- Tech/SaaS: ARR, net retention, RPO, customer count
|
||||
- Retail: Same-store sales, traffic, basket size
|
||||
- Industrials: Backlog, book-to-bill, price vs. volume
|
||||
- Financials: NIM, credit quality, loan growth, fee income
|
||||
- Healthcare: Scripts, patient volumes, pipeline updates
|
||||
|
||||
### Step 3: Scenario Analysis
|
||||
|
||||
Build 3 scenarios with stock price implications:
|
||||
|
||||
| Scenario | Revenue | EPS | Key Driver | Stock Reaction |
|
||||
|----------|---------|-----|------------|----------------|
|
||||
| Bull | | | | |
|
||||
| Base | | | | |
|
||||
| Bear | | | | |
|
||||
|
||||
For each scenario:
|
||||
- What would need to happen operationally
|
||||
- What management commentary would signal this
|
||||
- Historical context — how has the stock moved on similar prints?
|
||||
|
||||
### Step 4: Catalyst Checklist
|
||||
|
||||
Identify the 3-5 things that will determine the stock's reaction:
|
||||
|
||||
1. [Metric] vs. [consensus/whisper number] — why it matters
|
||||
2. [Guidance item] — what the buy-side expects to hear
|
||||
3. [Narrative shift] — any strategic changes, M&A, restructuring
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
One-page earnings preview with:
|
||||
- Company, quarter, earnings date
|
||||
- Consensus estimates table
|
||||
- Key metrics to watch (ranked by importance)
|
||||
- Bull/base/bear scenario table
|
||||
- Catalyst checklist
|
||||
- Trading setup: recent stock performance, implied move from options
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Consensus estimates change — always note the source and date of estimates
|
||||
- "Whisper numbers" from buy-side surveys are often more relevant than published consensus
|
||||
- Historical earnings reactions help calibrate expectations (search for "[company] earnings reaction history")
|
||||
- Options-implied move tells you what the market expects — compare to your scenarios
|
||||
@@ -0,0 +1,111 @@
|
||||
# Idea Generation
|
||||
|
||||
description: Systematic stock screening and investment idea sourcing. Combines quantitative screens, thematic research, and pattern recognition to surface new long and short ideas. Use when looking for new ideas, running screens, or conducting thematic sweeps. Triggers on "idea generation", "stock screen", "find ideas", "what looks interesting", "screen for", "new ideas", or "pitch me something".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Define Search Criteria
|
||||
|
||||
Ask the user for parameters:
|
||||
- **Direction**: Long ideas, short ideas, or both
|
||||
- **Market cap**: Large, mid, small, micro
|
||||
- **Sector**: Specific sector or cross-sector
|
||||
- **Style**: Value, growth, quality, special situation, event-driven
|
||||
- **Geography**: US, international, global
|
||||
- **Theme**: Any specific thematic angle (AI, reshoring, aging demographics, etc.)
|
||||
|
||||
### Step 2: Quantitative Screens
|
||||
|
||||
Run screens based on the style:
|
||||
|
||||
**Value Screen**
|
||||
- P/E below sector median
|
||||
- EV/EBITDA below historical average
|
||||
- Free cash flow yield >5%
|
||||
- Price/book below 1.5x
|
||||
- Insider buying in last 90 days
|
||||
- Dividend yield above market average
|
||||
|
||||
**Growth Screen**
|
||||
- Revenue growth >15% YoY
|
||||
- Earnings growth >20% YoY
|
||||
- Revenue acceleration (growth rate increasing)
|
||||
- Expanding margins
|
||||
- High return on invested capital (>15%)
|
||||
- Strong net retention (>110% for SaaS)
|
||||
|
||||
**Quality Screen**
|
||||
- Consistent revenue growth (5+ years)
|
||||
- Stable or expanding margins
|
||||
- ROE >15%
|
||||
- Low debt/equity
|
||||
- High free cash flow conversion
|
||||
- Insider ownership >5%
|
||||
|
||||
**Short Screen**
|
||||
- Declining revenue or decelerating growth
|
||||
- Margin compression
|
||||
- Rising receivables / inventory vs. sales
|
||||
- Insider selling
|
||||
- Valuation premium to peers without justification
|
||||
- High short interest with deteriorating fundamentals
|
||||
- Accounting red flags (auditor changes, restatements)
|
||||
|
||||
**Special Situation Screen**
|
||||
- Recent IPOs / SPACs with lockup expirations
|
||||
- Spin-offs in last 12 months
|
||||
- Companies emerging from restructuring
|
||||
- Activist involvement
|
||||
- Management changes at underperforming companies
|
||||
|
||||
### Step 3: Thematic Sweep
|
||||
|
||||
For thematic ideas, research the theme and identify beneficiaries:
|
||||
|
||||
1. Define the thesis (e.g., "AI infrastructure spending accelerates through 2026")
|
||||
2. Map the value chain — who benefits directly vs. indirectly?
|
||||
3. Identify pure-play vs. diversified exposure
|
||||
4. Assess which names are already "priced in" vs. under-appreciated
|
||||
5. Look for second-order beneficiaries that the market hasn't connected to the theme
|
||||
|
||||
### Step 4: Idea Presentation
|
||||
|
||||
For each idea that passes the screen, present:
|
||||
|
||||
**[Company Name] — [Long/Short] — [One-Line Thesis]**
|
||||
|
||||
| Metric | Value | vs. Peers |
|
||||
|--------|-------|-----------|
|
||||
| Market cap | | |
|
||||
| EV/EBITDA (NTM) | | |
|
||||
| P/E (NTM) | | |
|
||||
| Revenue growth | | |
|
||||
| EBITDA margin | | |
|
||||
| FCF yield | | |
|
||||
|
||||
**Thesis (3-5 bullets):**
|
||||
- Why this is mispriced
|
||||
- What the market is missing
|
||||
- Catalyst to realize value
|
||||
|
||||
**Key Risks:**
|
||||
- What would make this wrong
|
||||
|
||||
**Suggested Next Steps:**
|
||||
- Build full model? Deep-dive diligence? Expert call?
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
- Shortlist of 5-10 ideas with one-page summaries
|
||||
- Screening criteria and methodology documented
|
||||
- Comparison table across all ideas
|
||||
- Prioritized list: which ideas to research first
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Screens surface candidates, not conclusions — every screen output needs fundamental work
|
||||
- The best ideas often come from intersections (e.g., quality company at value price due to temporary headwind)
|
||||
- Avoid crowded trades — check ownership data, short interest, and how many analysts cover the name
|
||||
- Contrarian ideas need a catalyst — being early without a catalyst is the same as being wrong
|
||||
- Track idea hit rates over time — which screens and approaches produce the best ideas?
|
||||
- Short ideas need higher conviction — timing is harder and risk is asymmetric
|
||||
@@ -0,0 +1,783 @@
|
||||
---
|
||||
name: initiating-coverage
|
||||
description: Create institutional-quality equity research initiation reports through a 5-task workflow. Tasks must be executed individually with verified prerequisites - (1) company research, (2) financial modeling, (3) valuation analysis, (4) chart generation, (5) final report assembly. Each task produces specific deliverables (markdown docs, Excel models, charts, or DOCX reports). Tasks 3-5 have dependencies on earlier tasks.
|
||||
---
|
||||
|
||||
# Initiating Coverage
|
||||
|
||||
Create institutional-quality equity research initiation reports through a structured 5-task workflow. Each task must be executed separately with verified inputs.
|
||||
|
||||
## Overview
|
||||
|
||||
This skill produces comprehensive first-time coverage reports following institutional standards (JPMorgan, Goldman Sachs, Morgan Stanley format). Tasks are executed individually, each verifying prerequisites before proceeding.
|
||||
|
||||
**Default Font**: Times New Roman throughout all documents (unless user specifies otherwise).
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ CRITICAL: One Task at a Time
|
||||
|
||||
**THIS SKILL OPERATES IN SINGLE-TASK MODE ONLY.**
|
||||
|
||||
### If User Requests Full Pipeline
|
||||
|
||||
When user requests:
|
||||
- "Create a coverage initiation report for [Company]"
|
||||
- "Write an initiation report for [Company]"
|
||||
- "Do the entire equity research process for [Company]"
|
||||
- "Complete all 5 tasks for [Company]"
|
||||
- Any request that implies running multiple tasks or the entire workflow
|
||||
|
||||
**REQUIRED RESPONSE:**
|
||||
|
||||
1. **Ask which specific task to perform:**
|
||||
```
|
||||
I can help you create an equity research initiation report for [Company].
|
||||
This involves 5 separate tasks that need to be completed individually:
|
||||
|
||||
1. Company Research - Research business, management, industry
|
||||
2. Financial Modeling - Build projection model
|
||||
3. Valuation Analysis - DCF and comparable companies
|
||||
4. Chart Generation - Create 25-35 charts
|
||||
5. Report Assembly - Compile final report
|
||||
|
||||
Which task would you like to start with?
|
||||
```
|
||||
|
||||
2. **When user explicitly requests all tasks together:**
|
||||
```
|
||||
I understand you'd like to complete the entire initiation report pipeline.
|
||||
Currently, this skill supports executing one task at a time, which allows
|
||||
for better quality control and review at each stage.
|
||||
|
||||
We're working on a seamless end-to-end workflow that will make this process
|
||||
more automated, but for now, we'll need to complete each task separately.
|
||||
|
||||
Would you like to start with Task 1 (Company Research)?
|
||||
```
|
||||
|
||||
3. **Never automatically assume which task to start** - always ask user to confirm.
|
||||
|
||||
4. **Never execute multiple tasks in sequence** - complete one task, deliver outputs, then wait for next user request.
|
||||
|
||||
### Task Execution Rules
|
||||
|
||||
- ✅ Execute exactly ONE task per user request
|
||||
- ✅ Always verify prerequisites before starting a task
|
||||
- ✅ Deliver task outputs and confirm completion
|
||||
- ✅ Wait for user to explicitly request the next task
|
||||
- ❌ Never chain multiple tasks together automatically
|
||||
- ❌ Never assume user wants to proceed to next task
|
||||
- ❌ Never execute Tasks 3-5 without verifying required inputs exist
|
||||
|
||||
### ⚠️ Deliverables Policy: NO SHORTCUTS
|
||||
|
||||
**DELIVER ONLY THE SPECIFIED OUTPUTS. DO NOT CREATE EXTRA DOCUMENTS.**
|
||||
|
||||
Each task specifies exact deliverables. Do NOT create:
|
||||
- ❌ "Completion summaries"
|
||||
- ❌ "Executive summaries"
|
||||
- ❌ "Quick reference guides"
|
||||
- ❌ "Next steps documents"
|
||||
- ❌ "Task completion reports"
|
||||
- ❌ Any other "helpful" documentation not explicitly specified
|
||||
|
||||
**Why**: These extras waste context and are not part of the professional workflow.
|
||||
|
||||
**What TO deliver**:
|
||||
- ✅ Task 1: Research document (.md) — **NOTHING ELSE**
|
||||
- ✅ Task 2: Financial model (.xlsx) — **NOTHING ELSE**
|
||||
- ✅ Task 3: Valuation analysis (.md) + Excel tabs added to Task 2 file — **NOTHING ELSE**
|
||||
- ✅ Task 4: Charts zip file (.zip) — **NOTHING ELSE**
|
||||
- ✅ Task 5: Final report (.docx) — **NOTHING ELSE**
|
||||
|
||||
**If a deliverable is not listed above, DO NOT CREATE IT.**
|
||||
|
||||
---
|
||||
|
||||
## Task Selection
|
||||
|
||||
Select which task to execute:
|
||||
|
||||
| Task | Name | Prerequisites | Output |
|
||||
|------|------|--------------|--------|
|
||||
| **1** | Company Research | Company name/ticker | 6-8K word document |
|
||||
| **2** | Financial Modeling | 10-K or financials access | Excel model (6 tabs) |
|
||||
| **3** | Valuation Analysis | Financial model (Task 2) | Valuation + price target |
|
||||
| **4** | Chart Generation | Tasks 1, 2, 3 + external data | 25-35 PNG/JPG charts |
|
||||
| **5** | Report Assembly | ALL previous tasks (1-4) | 30-50 page DOCX report |
|
||||
|
||||
---
|
||||
|
||||
## How to Use This Skill
|
||||
|
||||
### User Request Patterns and Responses
|
||||
|
||||
**Pattern 1: User specifies a specific task**
|
||||
```
|
||||
User: "Use anthropic-initiation-coverage, Task 1 for Tesla"
|
||||
Response: ✅ Execute Task 1 immediately
|
||||
```
|
||||
|
||||
**Pattern 2: User asks for "initiation report" or "full pipeline"**
|
||||
```
|
||||
User: "Create a coverage initiation report for Tesla"
|
||||
Response: ❌ DO NOT start any task automatically
|
||||
✅ Ask which task to start with (see template above)
|
||||
```
|
||||
|
||||
**Pattern 3: User wants to do "all tasks" or "entire workflow"**
|
||||
```
|
||||
User: "I want to complete all 5 tasks for Tesla"
|
||||
Response: ❌ DO NOT chain tasks together
|
||||
✅ Explain one-at-a-time limitation (see template above)
|
||||
✅ Ask if they want to start with Task 1
|
||||
```
|
||||
|
||||
### Correct Usage Examples
|
||||
|
||||
**Executing a single task:**
|
||||
```
|
||||
"Use anthropic-initiation-coverage skill, Task 1 for Tesla"
|
||||
"Do Task 2 of anthropic-initiation-coverage for Tesla"
|
||||
"Run Task 3 for Tesla using the anthropic-initiation-coverage skill"
|
||||
```
|
||||
|
||||
**Completing full report (requires 5 separate requests):**
|
||||
```
|
||||
Request 1: "Do Task 1 for Tesla" → Complete → Deliver outputs
|
||||
Request 2: "Do Task 2 for Tesla" → Complete → Deliver outputs
|
||||
Request 3: "Do Task 3 for Tesla" → Complete → Deliver outputs
|
||||
Request 4: "Do Task 4 for Tesla" → Complete → Deliver outputs
|
||||
Request 5: "Do Task 5 for Tesla" → Complete → Deliver outputs
|
||||
```
|
||||
|
||||
### Task Execution Order
|
||||
|
||||
For a complete initiation report, tasks must be executed in separate user requests following this order:
|
||||
|
||||
```
|
||||
Request 1: Task 1 - Company Research (independent)
|
||||
↓ [User reviews outputs and requests next task]
|
||||
Request 2: Task 2 - Financial Modeling (independent)
|
||||
↓ [User reviews outputs and requests next task]
|
||||
Request 3: Task 3 - Valuation Analysis (requires Task 2 output)
|
||||
↓ [User reviews outputs and requests next task]
|
||||
Request 4: Task 4 - Chart Generation (requires Tasks 2 & 3 outputs)
|
||||
↓ [User reviews outputs and requests next task]
|
||||
Request 5: Task 5 - Report Assembly (requires ALL previous task outputs)
|
||||
```
|
||||
|
||||
**Note**: Tasks 1 and 2 can be run in any order. Tasks 3-5 have strict dependencies and must verify inputs before proceeding.
|
||||
|
||||
---
|
||||
|
||||
## Task 1: Company Research
|
||||
|
||||
**Purpose**: Research company's business, management, competitive position, industry, and risks.
|
||||
|
||||
**Prerequisites**: ✅ None (fully independent)
|
||||
- Company name or ticker symbol
|
||||
|
||||
**Process**:
|
||||
1. Verify company name/ticker provided
|
||||
2. Load detailed instructions from references/task1-company-research.md
|
||||
3. Execute qualitative research workflow
|
||||
4. Deliver research document
|
||||
|
||||
**Output**: Company Research Document (6,000-8,000 words)
|
||||
- Company overview & history
|
||||
- Management bios (300-400 words × 3-4 execs)
|
||||
- Products & services analysis
|
||||
- Industry overview
|
||||
- Competitive analysis (5-10 competitors)
|
||||
- TAM sizing
|
||||
- Risk assessment (8-12 risks)
|
||||
|
||||
**File name**: `[Company]_Research_Document_[Date].md`
|
||||
|
||||
**⚠️ DELIVER ONLY THIS 1 FILE. NO completion summaries, no extra documents.**
|
||||
|
||||
**⚠️ DO NOT TAKE SHORTCUTS:**
|
||||
- ✅ Write full 6,000-8,000 words (not summaries)
|
||||
- ✅ Complete 300-400 word bios for ALL 3-4 executives
|
||||
- ✅ Analyze ALL 5-10 competitors thoroughly
|
||||
- ✅ Cover all 8-12 risks across 4 categories
|
||||
- ❌ Do not abbreviate sections to save time
|
||||
- ❌ Do not skip any required sections
|
||||
|
||||
**Verification before proceeding**: None required for this task.
|
||||
|
||||
---
|
||||
|
||||
## Task 2: Financial Modeling
|
||||
|
||||
**Purpose**: Extract historical financials and build comprehensive Excel financial model with projections and scenarios.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Access to company financial data
|
||||
- For public companies: Latest 10-K from SEC EDGAR
|
||||
- For private companies: Financial statements or available estimates
|
||||
- OR: Pre-extracted historical financials provided by user
|
||||
- **Optional**: Company research (Task 1) for business context
|
||||
|
||||
**Input Verification**:
|
||||
```
|
||||
BEFORE STARTING - Select approach:
|
||||
|
||||
Option A: Extract financials (most common)
|
||||
- [ ] Have access to 10-K or financial statements?
|
||||
- [ ] Ready to extract 3-5 years of data?
|
||||
|
||||
Option B: User provided pre-extracted financials
|
||||
- [ ] Historical financials file received?
|
||||
- [ ] Contains income statement, cash flow, balance sheet (3-5 years)?
|
||||
|
||||
Optional:
|
||||
- [ ] Company research (Task 1) complete for context?
|
||||
```
|
||||
|
||||
**Process**:
|
||||
1. Verify access to financial data
|
||||
2. Load detailed instructions from references/task2-financial-modeling.md
|
||||
3. **Step 1**: Extract historical financials (if needed)
|
||||
4. **Step 2+**: Build projection model with 6 essential tabs
|
||||
5. Deliver Excel model
|
||||
|
||||
**Output**: Excel Financial Model (.xlsx)
|
||||
- 6 essential tabs:
|
||||
1. **Revenue Model** - Product breakdown (20-30 rows) + Geography breakdown (15-20 rows)
|
||||
2. **Income Statement** - Full P&L with 40-50 line items, historical (3-5 years) + projected (5 years)
|
||||
3. **Cash Flow Statement** - Operating/Investing/Financing activities, historical + projected
|
||||
4. **Balance Sheet** - Assets/Liabilities/Equity, historical + projected
|
||||
5. **Scenarios** - Bull/Base/Bear comparison table
|
||||
6. **DCF Inputs** - Prepared for Task 3 valuation
|
||||
|
||||
**File name**: `[Company]_Financial_Model_[Date].xlsx`
|
||||
|
||||
**⚠️ DELIVER ONLY THIS 1 FILE. NO completion summaries, no extra documents.**
|
||||
|
||||
**⚠️ DO NOT TAKE SHORTCUTS:**
|
||||
- ✅ If extracting financials: Extract ALL line items from 3 financial statements (3-5 years)
|
||||
- ✅ Build ALL 6 projection tabs completely with full detail
|
||||
- ✅ Create detailed revenue model with 20-30 product rows AND 15-20 geography rows
|
||||
- ✅ Build complete income statement with 40-50 line items (not abbreviated)
|
||||
- ✅ Include full cash flow statement and balance sheet with all line items
|
||||
- ✅ Complete ALL three scenarios (Bull/Base/Bear) with different parameters
|
||||
- ❌ Do not create simplified/abbreviated versions
|
||||
- ❌ Do not skip any of the 6 essential tabs
|
||||
- ❌ Do not skip historical financials extraction if needed
|
||||
|
||||
**Verification before proceeding to Task 3**:
|
||||
- [ ] Historical financials extracted (if needed) or provided
|
||||
- [ ] Excel file created and can be opened
|
||||
- [ ] Model has all 6 essential tabs (Revenue Model, Income Statement, Cash Flow, Balance Sheet, Scenarios, DCF Inputs)
|
||||
- [ ] Historical data (3-5 years) incorporated
|
||||
- [ ] Projections complete (5 years forward)
|
||||
- [ ] Scenarios complete (Bull/Base/Bear)
|
||||
|
||||
---
|
||||
|
||||
## Task 3: Valuation Analysis
|
||||
|
||||
**Purpose**: Perform comprehensive valuation using DCF, comparables, and precedent transactions.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Financial model from Task 2
|
||||
- Projected income statements
|
||||
- Projected cash flows
|
||||
- Revenue and EBITDA forecasts
|
||||
- DCF inputs (unlevered FCF)
|
||||
|
||||
**⚠️ CRITICAL: DO NOT START THIS TASK UNLESS TASK 2 IS COMPLETE**
|
||||
|
||||
This task requires the financial model from Task 2. Starting without it will result in incomplete work.
|
||||
|
||||
**IF TASK 2 IS NOT COMPLETE**: Stop immediately and inform the user that Task 2 (Financial Modeling) must be completed first. Do not attempt to proceed or create placeholder valuations.
|
||||
|
||||
**Input Verification**:
|
||||
```
|
||||
BEFORE STARTING:
|
||||
- [ ] Task 2 complete? (Financial model exists)
|
||||
- [ ] Model file path/location known?
|
||||
- [ ] Can access projected financials from model?
|
||||
|
||||
Required from model:
|
||||
- [ ] Projected FCF (5 years)
|
||||
- [ ] Revenue projections
|
||||
- [ ] EBITDA projections
|
||||
- [ ] Terminal year metrics
|
||||
```
|
||||
|
||||
**Process**:
|
||||
1. Verify financial model is accessible
|
||||
2. Load detailed instructions from references/task3-valuation.md
|
||||
3. Execute valuation workflow
|
||||
4. Deliver valuation analysis
|
||||
|
||||
**Output**: Valuation Analysis (4-6 pages + Excel tabs)
|
||||
- DCF analysis with sensitivity tables
|
||||
- Comparable companies (5-10 peers with statistical summary)
|
||||
- Precedent transactions (if applicable)
|
||||
- Valuation football field
|
||||
- **Price target**: $XX.XX
|
||||
- **Recommendation**: BUY/HOLD/SELL
|
||||
- **Upside**: XX%
|
||||
- Key catalysts (3-5)
|
||||
|
||||
**Files**:
|
||||
- `[Company]_Valuation_Analysis_[Date].md` (written analysis document)
|
||||
- Excel tabs added to `[Company]_Financial_Model_[Date].xlsx` (from Task 2)
|
||||
- DCF tab with calculations
|
||||
- Sensitivity analysis tab
|
||||
- Comparable companies tab
|
||||
- Valuation summary tab
|
||||
|
||||
**⚠️ DELIVER ONLY: 1 markdown file + 4 tabs added to existing Excel. NO completion summaries, no extra documents.**
|
||||
|
||||
**⚠️ DO NOT TAKE SHORTCUTS:**
|
||||
- ✅ Complete full DCF analysis with sensitivity matrix (not simplified)
|
||||
- ✅ Analyze ALL 5-10 comparable companies with full data
|
||||
- ✅ Include statistical summary in comps table (max/75th/median/25th/min)
|
||||
- ✅ Create complete sensitivity analysis tab with multiple WACC and terminal growth scenarios
|
||||
- ✅ Write full 4-6 pages of valuation analysis (not abbreviated)
|
||||
- ✅ Research and justify price target with specific methodology
|
||||
- ❌ Do not skip comparable company analysis
|
||||
- ❌ Do not create simplified DCF without sensitivity
|
||||
|
||||
**Verification before proceeding to Task 4**:
|
||||
- [ ] Price target determined
|
||||
- [ ] Valuation uses multiple methods (DCF + Comps minimum)
|
||||
- [ ] DCF sensitivity table complete
|
||||
- [ ] Comparable companies table includes statistical summary
|
||||
|
||||
---
|
||||
|
||||
## Task 4: Chart Generation
|
||||
|
||||
**Purpose**: Generate 25-35 professional financial charts for the report.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Company research from Task 1
|
||||
- Company history and milestones (for timeline charts)
|
||||
- Management team and org structure (for org charts)
|
||||
- Product portfolio (for product charts)
|
||||
- Customer segmentation (for customer charts)
|
||||
- Competitive landscape (for competitive charts)
|
||||
- TAM analysis (for market size charts)
|
||||
- **Required**: Financial model from Task 2 (with Task 3 valuation tabs added)
|
||||
- Revenue by product/geography data (Task 2 tabs)
|
||||
- Margin trends (Task 2 tabs)
|
||||
- Scenario comparison data (Task 2 tabs)
|
||||
- DCF sensitivity table (Task 3 tab in same Excel file)
|
||||
- Comparable companies data (Task 3 tab in same Excel file)
|
||||
- Valuation ranges (Task 3 tab in same Excel file)
|
||||
- **Required**: External market data
|
||||
- Historical stock price data (Yahoo Finance, Bloomberg, etc.)
|
||||
- Historical valuation multiples (for historical trend charts)
|
||||
|
||||
**⚠️ CRITICAL: DO NOT START THIS TASK UNLESS TASKS 1, 2, AND 3 ARE COMPLETE**
|
||||
|
||||
This task requires outputs from all three previous tasks. Starting without them will result in incomplete charts.
|
||||
|
||||
**IF ANY OF TASKS 1, 2, OR 3 ARE NOT COMPLETE**: Stop immediately and inform the user which tasks need to be completed first. The specific requirements are:
|
||||
- Task 1: Company research document (for 9 charts)
|
||||
- Task 2: Financial model with all 6 tabs (for 8 charts)
|
||||
- Task 3: Valuation tabs added to the model (for 6 charts)
|
||||
- External data access (for 2 charts)
|
||||
|
||||
Do not attempt to create placeholder charts or skip charts due to missing data.
|
||||
|
||||
**Input Verification**:
|
||||
```
|
||||
BEFORE STARTING:
|
||||
- [ ] Task 1 complete? (Company research exists)
|
||||
- [ ] Task 2 complete? (Financial model exists)
|
||||
- [ ] Task 3 complete? (Valuation analysis exists)
|
||||
- [ ] Can access external market data sources?
|
||||
|
||||
Required from Task 1:
|
||||
- [ ] Company history and milestones (for charts 05, 06)
|
||||
- [ ] Management team structure (for chart 07)
|
||||
- [ ] Product portfolio details (for chart 08)
|
||||
- [ ] Customer segmentation data (for chart 09)
|
||||
- [ ] Competitive landscape analysis (for charts 16, 17, 18)
|
||||
- [ ] TAM sizing and market data (for chart 15)
|
||||
|
||||
Required from Task 2:
|
||||
- [ ] Revenue by product (historical + projected) - for chart 03 ⭐
|
||||
- [ ] Revenue by geography (historical + projected) - for chart 04 ⭐
|
||||
- [ ] Income statement with margins (for charts 02, 10, 11)
|
||||
- [ ] Cash flow statement (for chart 12)
|
||||
- [ ] Scenario comparison data (for chart 14)
|
||||
|
||||
Required from Task 3:
|
||||
- [ ] DCF sensitivity matrix - for chart 28 ⭐
|
||||
- [ ] DCF components (for chart 29)
|
||||
- [ ] Comparable companies data (for charts 30, 31)
|
||||
- [ ] Valuation ranges - for chart 32 ⭐
|
||||
|
||||
Required from External Sources:
|
||||
- [ ] Historical stock price data (for chart 01)
|
||||
- [ ] Historical valuation multiples (for chart 34)
|
||||
```
|
||||
|
||||
**Process**:
|
||||
1. Verify model and valuation outputs are accessible
|
||||
2. Load detailed instructions from references/task4-chart-generation.md
|
||||
3. Execute chart generation workflow
|
||||
4. Package all charts into a zip file
|
||||
5. Deliver zip file
|
||||
|
||||
**Output**: 25-35 Professional Chart Files (PNG/JPG, 300 DPI) packaged in zip
|
||||
|
||||
**4 MANDATORY Charts** (must be present) ⭐:
|
||||
- chart_03: Revenue by product (stacked area)
|
||||
- chart_04: Revenue by geography (stacked bar)
|
||||
- chart_28: DCF sensitivity (2-way heatmap)
|
||||
- chart_32: Valuation football field (horizontal bars)
|
||||
|
||||
**25 REQUIRED Charts** (specific list):
|
||||
- Investment Summary: chart_01
|
||||
- Financial Performance: charts 02, 03⭐, 04⭐, 10, 11, 12, 14
|
||||
- Company 101: charts 05, 06, 07, 08, 09, 15, 16
|
||||
- Competitive/Market: charts 17, 18
|
||||
- Scenario Analysis: chart 13
|
||||
- Valuation: charts 28⭐, 29, 30, 31, 32⭐, 33, 34
|
||||
|
||||
**10 OPTIONAL Charts** (for 26-35 range):
|
||||
- charts 19-27, 35 (customer acquisition, unit economics, product roadmap, etc.)
|
||||
|
||||
**IMPORTANT**: Task 5 embeds ALL charts created (25-35) for visual density (1 chart per 200-300 words).
|
||||
|
||||
**File naming**: `chart_01_description.png`, `chart_02_description.png`, etc.
|
||||
|
||||
**Deliverable**: `[Company]_Charts_[Date].zip` containing all 25-35 chart files + chart_index.txt
|
||||
|
||||
**⚠️ DELIVER ONLY THIS 1 ZIP FILE. NO completion summaries, no separate chart lists, no extra documents.**
|
||||
|
||||
**⚠️ DO NOT TAKE SHORTCUTS:**
|
||||
- ✅ Create ALL 25 required charts minimum (specific list provided in task4-chart-generation.md)
|
||||
- ✅ Include ALL 4 mandatory charts:
|
||||
- chart_03: Revenue by product (stacked area) ⭐
|
||||
- chart_04: Revenue by geography (stacked bar) ⭐
|
||||
- chart_28: DCF sensitivity (heatmap) ⭐
|
||||
- chart_32: Valuation football field ⭐
|
||||
- ✅ Optional: Add 1-10 more charts to reach 26-35 total for greater visual density
|
||||
- ✅ Generate professional-quality charts at 300 DPI (not low-res placeholders)
|
||||
- ✅ Create unique, well-formatted charts for each visualization
|
||||
- ✅ Package all charts in zip file with chart index
|
||||
- ❌ Do not create only 10-15 charts (minimum is 25)
|
||||
- ❌ Do not skip any of the 4 mandatory charts
|
||||
- ❌ Do not use low-quality/placeholder images
|
||||
|
||||
**Verification before proceeding to Task 5**:
|
||||
- [ ] Minimum 25 chart files created (required)
|
||||
- [ ] All 4 mandatory charts present:
|
||||
- [ ] chart_03: Revenue by product ⭐
|
||||
- [ ] chart_04: Revenue by geography ⭐
|
||||
- [ ] chart_28: DCF sensitivity ⭐
|
||||
- [ ] chart_32: Valuation football field ⭐
|
||||
- [ ] All charts open and display correctly
|
||||
- [ ] Charts saved at 300 DPI (print quality)
|
||||
- [ ] Chart index created listing all files with categories
|
||||
- [ ] All charts packaged in zip file
|
||||
- [ ] File naming follows convention: chart_##_description.png
|
||||
|
||||
---
|
||||
|
||||
## Task 5: Report Assembly
|
||||
|
||||
**Purpose**: Write and assemble the comprehensive final DOCX report.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Company research from Task 1
|
||||
- All 6-8K words of content
|
||||
- Management bios
|
||||
- Competitive analysis
|
||||
- Risk assessment
|
||||
- **Required**: Financial model from Task 2
|
||||
- Excel workbook
|
||||
- All projections and scenarios
|
||||
- **Required**: Valuation analysis from Task 3
|
||||
- Price target and recommendation
|
||||
- DCF, comps, precedent transactions
|
||||
- All valuation data
|
||||
- **Required**: Chart files from Task 4
|
||||
- Zip file containing all 25-35 PNG/JPG files
|
||||
- Chart index included in zip
|
||||
|
||||
**⚠️ CRITICAL: DO NOT START THIS TASK UNLESS ALL TASKS 1-4 ARE COMPLETE**
|
||||
|
||||
This is the final assembly task. It cannot be completed without all previous work products.
|
||||
|
||||
**IF ANY OF TASKS 1, 2, 3, OR 4 ARE NOT COMPLETE**: Stop immediately and inform the user which tasks need to be completed first. The specific requirements are:
|
||||
- Task 1: Company research document (6-8K words)
|
||||
- Task 2: Financial model with all 6 tabs
|
||||
- Task 3: Valuation analysis with price target and recommendation
|
||||
- Task 4: Charts zip file with 25-35 charts
|
||||
|
||||
Do not attempt to create placeholder content, substitute missing sections, or assemble an incomplete report. The report requires ALL inputs to be publication-ready.
|
||||
|
||||
**Input Verification**:
|
||||
```
|
||||
BEFORE STARTING - ALL TASKS MUST BE COMPLETE:
|
||||
|
||||
Task 1 Verification:
|
||||
- [ ] Company research document exists? (6-8K words)
|
||||
- [ ] Management bios complete? (300-400 words × 3-4 execs)
|
||||
- [ ] Competitive analysis complete? (5-10 competitors)
|
||||
- [ ] Risk assessment complete? (8-12 risks)
|
||||
|
||||
Task 2 Verification:
|
||||
- [ ] Financial model exists and can be opened?
|
||||
- [ ] Model has projections (5 years)?
|
||||
- [ ] Scenarios exist (Bull/Base/Bear)?
|
||||
|
||||
Task 3 Verification:
|
||||
- [ ] Valuation analysis complete?
|
||||
- [ ] Price target determined?
|
||||
- [ ] Recommendation set? (BUY/HOLD/SELL)
|
||||
- [ ] DCF and comps complete?
|
||||
|
||||
Task 4 Verification:
|
||||
- [ ] Chart zip file exists?
|
||||
- [ ] Can extract/access all 25-35 chart files from zip?
|
||||
- [ ] All 4 mandatory charts present?
|
||||
- [ ] Revenue by product (stacked area)
|
||||
- [ ] Revenue by geography (stacked bar)
|
||||
- [ ] DCF sensitivity (heatmap)
|
||||
- [ ] Valuation football field
|
||||
- [ ] Chart files accessible and can be opened?
|
||||
|
||||
IF ANY VERIFICATION FAILS: Stop and complete missing task first.
|
||||
```
|
||||
|
||||
**Process**:
|
||||
1. **CRITICAL**: Verify ALL prerequisites before starting
|
||||
2. Load detailed instructions from references/task5-report-assembly.md
|
||||
3. Execute report assembly workflow using Claude's built-in skills:
|
||||
- **Use DOCX skill** to create and manipulate the Word document
|
||||
- **Use XLSX skill** to read Excel data from Task 2/3
|
||||
- **Use Read tool** to read Task 1 and Task 3 markdown files
|
||||
- Read Task 1 .md file → Convert to Word formatting → Insert charts inline
|
||||
- Read Task 2 .xlsx file → Extract tables → Write quantitative analysis
|
||||
- Read Task 3 .md file + Excel tabs → Copy/adapt valuation analysis
|
||||
- Insert Task 4 .png chart files throughout using DOCX skill
|
||||
- Create text-dense report with charts interspersed every 200-300 words
|
||||
4. Save and deliver final DOCX report
|
||||
|
||||
**Key Principles**:
|
||||
- Use Claude's DOCX and XLSX skills (NOT Python libraries)
|
||||
- Use actual file operations (read .md/.xlsx/.png files, write .docx file)
|
||||
- Good equity research reports are text-dense with lots of illustrating images (60-80% page coverage, 1+ chart per page)
|
||||
|
||||
**🔥 CRITICAL: GO ALL OUT ON THIS TASK**
|
||||
|
||||
**THIS IS THE FINAL DELIVERABLE. DO NOT TAKE SHORTCUTS.**
|
||||
|
||||
- ✅ **Use full token budget** - This is the culmination of all previous work
|
||||
- ✅ **Write every section completely** - Do not summarize or abbreviate
|
||||
- ✅ **Hit ALL minimum requirements** - 30+ pages, 10,000+ words, 25+ charts, 12+ tables
|
||||
- ✅ **Be thorough on projection assumptions** - 2,000-3,000 words with product-by-product detail
|
||||
- ✅ **Be comprehensive on scenarios** - 1,500-2,000 words with specific Bull/Base/Bear parameters
|
||||
- ✅ **Insert ALL charts from Task 4** - Not just a few, ALL 25-35 charts throughout
|
||||
- ✅ **Create ALL tables from Task 2/3** - Extract every financial table, don't skip any
|
||||
- ✅ **Use Task 1 content verbatim** - Copy/paste full Company 101 sections (6-8K words)
|
||||
- ✅ **Professional quality only** - This must be indistinguishable from JPMorgan/Goldman Sachs research
|
||||
|
||||
**NEVER:**
|
||||
- ❌ "This section would include..." - WRITE THE ACTUAL SECTION
|
||||
- ❌ "Charts would be inserted here..." - INSERT THE ACTUAL CHARTS
|
||||
- ❌ "See financial model for details..." - EXTRACT AND INCLUDE THE DETAILS
|
||||
- ❌ Skip sections due to length - Every section MUST be complete
|
||||
- ❌ Abbreviate for token conservation - Use whatever tokens are needed
|
||||
|
||||
**This is publication-ready institutional research. Spare no effort, tokens, or detail.**
|
||||
|
||||
**Output**: Comprehensive Equity Research Report (.docx)
|
||||
|
||||
**Specifications**:
|
||||
- **Length**: 30-50 pages (MINIMUM 30)
|
||||
- **Word count**: 10,000-15,000 words (MINIMUM 10,000)
|
||||
- **Charts**: 25-35 embedded images
|
||||
- **Tables**: 12-20 comprehensive tables
|
||||
- **Format**: Professional DOCX with clickable hyperlinks
|
||||
|
||||
**Structure**:
|
||||
- Page 1: Investment Summary (INITIATING COVERAGE format)
|
||||
- Pages 2-5: Investment thesis & risks
|
||||
- Pages 6-17: Company 101
|
||||
- Pages 18-30: Financial analysis & projections
|
||||
- Pages 31-40: Valuation analysis
|
||||
- Pages 41-50: Appendices
|
||||
|
||||
**File name**: `[Company]_Initiation_Report_[Date].docx`
|
||||
|
||||
**⚠️ DELIVER ONLY THIS 1 DOCX FILE. NO executive summaries, no "highlights" documents, no extra files.**
|
||||
|
||||
**Final Verification**:
|
||||
- [ ] Report is 30-50 pages
|
||||
- [ ] Word count is 10,000-15,000
|
||||
- [ ] 25-35 charts embedded
|
||||
- [ ] 12-20 tables included
|
||||
- [ ] All citations are clickable hyperlinks
|
||||
- [ ] Numbers match financial model exactly
|
||||
|
||||
---
|
||||
|
||||
## Input Verification Protocol
|
||||
|
||||
### Why Input Verification Matters
|
||||
|
||||
Each task has strict prerequisites. Running a task without required inputs will:
|
||||
- Waste time with incomplete work
|
||||
- Produce low-quality outputs
|
||||
- Require rework
|
||||
|
||||
**Always verify inputs before starting a task.**
|
||||
|
||||
### Verification Checklist by Task
|
||||
|
||||
**Task 1**: ✅ No verification needed (independent)
|
||||
|
||||
**Task 2**: Check historical financials available
|
||||
|
||||
**Task 3**: Check financial model exists and is accessible
|
||||
|
||||
**Task 4**: Check both model (Task 2) AND valuation (Task 3) exist
|
||||
|
||||
**Task 5**: Check ALL previous tasks complete (1, 2, 3, 4)
|
||||
|
||||
### What to Do if Verification Fails
|
||||
|
||||
```
|
||||
IF prerequisites are missing:
|
||||
1. Stop the current task
|
||||
2. Identify which prerequisite task(s) need to be completed
|
||||
3. Execute the missing task(s) first
|
||||
4. Return to current task once prerequisites are met
|
||||
```
|
||||
|
||||
### Example Verification Dialogue
|
||||
|
||||
```
|
||||
User: "Use anthropic-initiation-coverage, Task 5 for Tesla"
|
||||
|
||||
Claude: "Starting Task 5: Report Assembly for Tesla
|
||||
|
||||
VERIFICATION - Checking prerequisites:
|
||||
- Task 1 (Company research)... ❌ NOT FOUND
|
||||
- Task 2 (Financial model)... ❌ NOT FOUND
|
||||
- Task 3 (Valuation)... ❌ NOT FOUND
|
||||
- Task 4 (Charts)... ❌ NOT FOUND
|
||||
|
||||
⚠️ VERIFICATION FAILED
|
||||
|
||||
Task 5 requires ALL previous tasks to be complete.
|
||||
|
||||
To proceed:
|
||||
1. Complete Task 1: Company Research
|
||||
2. Complete Task 2: Financial Modeling
|
||||
3. Complete Task 3: Valuation Analysis
|
||||
4. Complete Task 4: Chart Generation
|
||||
5. Then return to Task 5
|
||||
|
||||
Would you like to start with Task 1 first?"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task Reference Files
|
||||
|
||||
Detailed instructions for each task are in separate reference files to keep this skill lean:
|
||||
|
||||
- **references/task1-company-research.md** - Company research workflow
|
||||
- **references/task2-financial-modeling.md** - Financial modeling workflow
|
||||
- **references/task3-valuation.md** - Valuation methodology
|
||||
- Also see: references/valuation-methodologies.md for DCF/comps deep dive
|
||||
- **references/task4-chart-generation.md** - Chart generation workflow
|
||||
- **references/task5-report-assembly.md** - Report writing workflow
|
||||
- Also see: assets/report-template.md for report structure
|
||||
- Also see: assets/quality-checklist.md for quality checks
|
||||
|
||||
**When to load reference files**: Load ONLY the reference file associated with the specific task being performed. These files are very large - do not load multiple reference files at once. Read the appropriate task reference file at the start of the task for detailed step-by-step instructions.
|
||||
|
||||
---
|
||||
|
||||
## Quality Standards
|
||||
|
||||
All outputs meet institutional standards from leading investment banks (JPMorgan, Goldman Sachs, Morgan Stanley):
|
||||
|
||||
- **Comprehensive**: Meet all minimum requirements
|
||||
- **Detailed**: Specific data and examples, not generic statements
|
||||
- **Quantified**: Lead with numbers and metrics
|
||||
- **Cited**: Proper sources with clickable hyperlinks
|
||||
- **Professional**: Institutional-quality formatting
|
||||
- **Accurate**: All numbers verified and cross-checked
|
||||
|
||||
---
|
||||
|
||||
## Important Notes
|
||||
|
||||
### Task Independence
|
||||
|
||||
- **Task 1** can run anytime (no dependencies)
|
||||
- **Task 2** can run anytime (just needs historical data)
|
||||
- **Tasks 1 & 2** can run in parallel
|
||||
- **Task 3** requires Task 2
|
||||
- **Task 4** requires Tasks 2 & 3
|
||||
- **Task 5** requires Tasks 1, 2, 3, & 4
|
||||
|
||||
### Session Management
|
||||
|
||||
**Same session**: Outputs automatically available to subsequent tasks
|
||||
|
||||
**Different sessions**: Reference previous task outputs explicitly
|
||||
```
|
||||
"Use Task 3 with the model from yesterday at [path]"
|
||||
"Use Task 5 with the research document at [path]"
|
||||
```
|
||||
|
||||
### File Organization
|
||||
|
||||
Recommended structure during workflow:
|
||||
```
|
||||
ProjectFolder/
|
||||
├── Task1_Research/
|
||||
│ └── [Company]_Research_Document.md
|
||||
├── Task2_Model/
|
||||
│ └── [Company]_Financial_Model.xlsx
|
||||
├── Task3_Valuation/
|
||||
│ └── [Company]_Valuation_Analysis.pdf
|
||||
├── Task4_Charts/
|
||||
│ ├── chart_01.png
|
||||
│ └── ... (25-35 files)
|
||||
└── Task5_Report/
|
||||
└── [Company]_Initiation_Report.docx
|
||||
```
|
||||
|
||||
### No End-to-End Execution
|
||||
|
||||
This skill does **NOT** support running all tasks automatically in sequence. Each task must be explicitly requested and verified.
|
||||
|
||||
**Why**: This ensures:
|
||||
- Quality control at each stage
|
||||
- Ability to review outputs before proceeding
|
||||
- Flexibility to pause/resume workflow
|
||||
- Clear verification of prerequisites
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
A successful initiation report workflow should:
|
||||
1. Complete all 5 tasks in order
|
||||
2. Pass all input verifications
|
||||
3. Meet all quality standards
|
||||
4. Produce all required deliverables
|
||||
5. Numbers cross-check between outputs
|
||||
6. Final report is publication-ready
|
||||
|
||||
**Output quality**: Institutional (JPMorgan/Goldman/Morgan Stanley level)
|
||||
**Use case**: First-time comprehensive coverage of a company
|
||||
@@ -0,0 +1,251 @@
|
||||
# Quality Control Checklist for Initiation Reports
|
||||
|
||||
Before delivering an initiation report, verify all items below are complete.
|
||||
|
||||
## Critical Minimums - Reports Must Meet These
|
||||
|
||||
**CRITICAL DO NOT DELIVER IF:**
|
||||
- ❌ DOCX report fewer than 30 pages → INCOMPLETE
|
||||
- ❌ Fewer than 25 embedded charts → INCOMPLETE
|
||||
- ❌ Fewer than 12 comprehensive tables → INCOMPLETE
|
||||
- ❌ Fewer than 10,000 words → INCOMPLETE
|
||||
- ❌ No XLS financial model → MISSING DELIVERABLE
|
||||
- ❌ Charts are text descriptions, not actual PNG/JPG files → MAJOR FAILURE
|
||||
|
||||
## Deliverables Checklist
|
||||
|
||||
- [ ] DOCX report file created
|
||||
- [ ] XLS financial model file created
|
||||
- [ ] Both files named properly: `[Company]_Initiation_Report_[Date].docx` and `[Company]_Financial_Model_[Date].xlsx`
|
||||
|
||||
## DOCX Report - Length & Content
|
||||
|
||||
**Length Verification:**
|
||||
- [ ] Report is 30-50 pages (count pages in final document)
|
||||
- [ ] Word count is 10,000-15,000 words
|
||||
- [ ] If under 30 pages: STOP and add more content
|
||||
|
||||
**Visual Elements:**
|
||||
- [ ] 25-35 charts embedded (count them: _____ charts)
|
||||
- [ ] All charts are actual PNG/JPG image files (NOT text descriptions)
|
||||
- [ ] 12-20 comprehensive tables included (count them: _____ tables)
|
||||
- [ ] Charts and tables interspersed throughout, not grouped at end
|
||||
|
||||
**Chart Requirements:**
|
||||
- [ ] Revenue by product chart: Stacked Area format ✓
|
||||
- [ ] Revenue by geography chart: Stacked Bar format ✓
|
||||
- [ ] DCF sensitivity: 2-way Heat Map with color coding ✓
|
||||
- [ ] Valuation football field: Horizontal bar chart ✓
|
||||
- [ ] All other charts are actual image files ✓
|
||||
|
||||
**Table Requirements:**
|
||||
- [ ] Full Income Statement (40-50 rows) with 5 years historical + 5 years projected
|
||||
- [ ] Full Cash Flow Statement (30-40 rows)
|
||||
- [ ] Full Balance Sheet (35-45 rows)
|
||||
- [ ] Revenue by product table (20-30 rows)
|
||||
- [ ] Revenue by geography table (15-20 rows)
|
||||
- [ ] Revenue by channel table (10-15 rows)
|
||||
- [ ] Comparable companies table with statistical summary (max/75th/median/25th/min)
|
||||
- [ ] DCF calculation table (30-40 rows)
|
||||
- [ ] WACC calculation table (8-10 rows)
|
||||
- [ ] Two sensitivity tables
|
||||
- [ ] 2-3 additional financial/competitive tables
|
||||
|
||||
## DOCX Report - Structure
|
||||
|
||||
**Page 1 Requirements:**
|
||||
- [ ] "INITIATING COVERAGE" header present (NOT "Company Update")
|
||||
- [ ] Thesis-focused title (NOT event-driven like "Strong Q4 Results")
|
||||
- [ ] Rating box with rating, price, target price, 52-week range, market cap, EV
|
||||
- [ ] 3-4 paragraph-length bullets with ■ character and bold headers
|
||||
- [ ] Financial & valuation metrics table with 2-3 years historical, 2 years projected
|
||||
- [ ] Table shows "A" suffix for actuals, "E" suffix for estimates
|
||||
- [ ] Source lines on all visuals
|
||||
|
||||
**Content Sections:**
|
||||
- [ ] Table of Contents (Page 2)
|
||||
- [ ] Investment Thesis & Risks (3-5 pages)
|
||||
- [ ] Company Overview (6-12 pages) including:
|
||||
- [ ] Company description
|
||||
- [ ] History and milestones
|
||||
- [ ] Management bios (300-400 words EACH for 3-4 executives)
|
||||
- [ ] Products/services detail
|
||||
- [ ] Competitive landscape
|
||||
- [ ] Financial Analysis & Projections (10-15 pages)
|
||||
- [ ] Valuation Analysis (8-12 pages)
|
||||
- [ ] Assumptions section (2,000-3,000 words documenting ALL projection assumptions)
|
||||
- [ ] Scenario Analysis (1,500-2,000 words with Bull/Base/Bear parameters)
|
||||
- [ ] Appendices including Data Sources & References page
|
||||
|
||||
## DOCX Report - Formatting
|
||||
|
||||
**Figure & Table Formatting:**
|
||||
- [ ] Every figure has caption above: "Figure X - [Company] [Descriptive Title]"
|
||||
- [ ] Every figure has source line below: "Source: [Specific sources with dates]"
|
||||
- [ ] Sequential figure numbering (Figure 1, 2, 3... no gaps)
|
||||
- [ ] Every table has header row with shading
|
||||
- [ ] Every table has source line at bottom
|
||||
- [ ] All years use "A" for actual, "E" for estimate notation
|
||||
|
||||
**Professional Formatting:**
|
||||
- [ ] Consistent fonts throughout (Calibri, Arial, or similar)
|
||||
- [ ] Headers and footers with page numbers
|
||||
- [ ] Dense layout: 60-80% page coverage, minimal white space
|
||||
- [ ] Every page has both text AND visuals (charts or tables)
|
||||
- [ ] Professional business report template used
|
||||
|
||||
## Citations & Sources ⭐⭐⭐ CRITICAL
|
||||
|
||||
**Source Attribution:**
|
||||
- [ ] Every figure has specific source with document name and date
|
||||
- [ ] Every table has specific source with document reference
|
||||
- [ ] Key statistics throughout text have footnotes with sources
|
||||
- [ ] NOT just generic "Company data" - must be specific
|
||||
|
||||
**Hyperlinks:** ⭐⭐⭐ MANDATORY
|
||||
- [ ] ALL URLs are CLICKABLE HYPERLINKS (not plain text)
|
||||
- [ ] SEC filings hyperlinked to EDGAR viewer
|
||||
- [ ] Earnings transcripts hyperlinked (Seeking Alpha or company IR)
|
||||
- [ ] Press releases hyperlinked to company IR page
|
||||
- [ ] Presentations hyperlinked to PDF URLs
|
||||
- [ ] Industry reports hyperlinked (if publicly available)
|
||||
- [ ] Subscription data (Bloomberg, FactSet) noted as "(subscription required)"
|
||||
- [ ] No raw URLs displayed anywhere - all formatted as hyperlinks
|
||||
- [ ] Test 3-5 sample hyperlinks to ensure they work (Ctrl+Click)
|
||||
|
||||
**Reference Page:**
|
||||
- [ ] "Data Sources & References" page at end of report
|
||||
- [ ] Lists ALL sources used in report
|
||||
- [ ] Sources organized by category (SEC Filings, Earnings Transcripts, etc.)
|
||||
- [ ] Every source has date
|
||||
- [ ] Every source has clickable hyperlink (where applicable)
|
||||
|
||||
## XLS Financial Model - Structure
|
||||
|
||||
**File Structure:**
|
||||
- [ ] 15+ tabs in Excel workbook
|
||||
- [ ] Tabs include: Executive Summary, Assumptions, Historical Financials, Revenue Model, Operating Expenses, Income Statement, Balance Sheet, Cash Flow, Supporting Schedules, DCF Valuation, Comps Analysis, Precedent Transactions, Scenarios, Sensitivity Analysis, Charts
|
||||
|
||||
**Formatting:**
|
||||
- [ ] Blue text for hardcoded inputs
|
||||
- [ ] Black text for formulas
|
||||
- [ ] Green text for links to other sheets
|
||||
- [ ] Professional formatting with borders and shading
|
||||
- [ ] Clear section headers and labels
|
||||
|
||||
**Model Functionality:**
|
||||
- [ ] All numbers flow (change assumption → entire model updates)
|
||||
- [ ] DCF links to assumptions and projections
|
||||
- [ ] No circular references or errors
|
||||
- [ ] All important cells/ranges are named
|
||||
- [ ] Sensitivity tables work dynamically
|
||||
|
||||
## XLS Financial Model - Content
|
||||
|
||||
**Projections:**
|
||||
- [ ] 3-5 years historical data
|
||||
- [ ] 5 years forward projections (FY+1 through FY+5)
|
||||
- [ ] Revenue broken down by product, geography, channel
|
||||
- [ ] Full P&L with 40-50 line items
|
||||
- [ ] Full cash flow with 30-40 line items
|
||||
- [ ] Full balance sheet with 35-45 line items
|
||||
|
||||
**Valuation:**
|
||||
- [ ] Complete DCF model with all calculations shown
|
||||
- [ ] WACC calculation with all components
|
||||
- [ ] Terminal value calculation
|
||||
- [ ] Comparable companies analysis (5-10 companies)
|
||||
- [ ] Precedent transactions analysis (5-10 deals)
|
||||
- [ ] Scenario analysis (Bull/Base/Bear)
|
||||
- [ ] Two sensitivity tables
|
||||
|
||||
## Cross-File Consistency
|
||||
|
||||
**CRITICAL**: Numbers must match EXACTLY between DOCX and XLS
|
||||
|
||||
- [ ] Revenue numbers match across both files
|
||||
- [ ] EPS numbers match across both files
|
||||
- [ ] Margin percentages match across both files
|
||||
- [ ] Valuation numbers match across both files
|
||||
- [ ] Price target matches across both files
|
||||
- [ ] All projected years match across both files
|
||||
|
||||
**Verification Method**: Spot check 10-15 key numbers between DOCX report and XLS model.
|
||||
|
||||
## Content Quality
|
||||
|
||||
**Investment Thesis:**
|
||||
- [ ] 3-5 clear thesis pillars
|
||||
- [ ] Each pillar supported with specific data and quantification
|
||||
- [ ] Financial impact quantified for each pillar
|
||||
- [ ] Catalysts identified with timelines
|
||||
|
||||
**Analysis Depth:**
|
||||
- [ ] Comprehensive business model analysis
|
||||
- [ ] Detailed competitive assessment
|
||||
- [ ] 3-5 year financial trends analyzed
|
||||
- [ ] 8-12 risks identified and quantified
|
||||
- [ ] Management team analyzed (300-400 words per executive)
|
||||
|
||||
**Assumptions:**
|
||||
- [ ] 2,000-3,000 words documenting ALL assumptions
|
||||
- [ ] Revenue growth assumptions by category/geography
|
||||
- [ ] Margin assumptions with bridge showing drivers
|
||||
- [ ] Working capital assumptions
|
||||
- [ ] CapEx assumptions
|
||||
- [ ] Each assumption has specific quantification
|
||||
|
||||
**Scenarios:**
|
||||
- [ ] 1,500-2,000 words on scenario analysis
|
||||
- [ ] Bull case with specific parameters and catalysts
|
||||
- [ ] Base case with detailed rationale
|
||||
- [ ] Bear case with specific triggers
|
||||
- [ ] Probability assessments for each scenario
|
||||
|
||||
## Writing Quality
|
||||
|
||||
**Style:**
|
||||
- [ ] Lead with numbers ("Revenue grew 15% to $1.2B" not "Strong revenue")
|
||||
- [ ] Use "vs." not "versus"
|
||||
- [ ] Be direct and concise
|
||||
- [ ] Professional institutional tone throughout
|
||||
- [ ] No informal language
|
||||
|
||||
**Accuracy:**
|
||||
- [ ] No typos in ticker symbol
|
||||
- [ ] No typos in company name
|
||||
- [ ] All dates accurate
|
||||
- [ ] All calculations verified
|
||||
- [ ] Charts match text descriptions
|
||||
- [ ] All numbers properly formatted ($ signs, % signs, commas)
|
||||
|
||||
## Pre-Delivery Final Check
|
||||
|
||||
Run through this quick final review:
|
||||
|
||||
1. **Deliverables**: Both DOCX and XLS files created ✓
|
||||
2. **Length**: DOCX is 30-50 pages ✓
|
||||
3. **Charts**: 25-35 actual PNG/JPG files embedded ✓
|
||||
4. **Tables**: 12-20 comprehensive tables included ✓
|
||||
5. **Words**: 10,000-15,000 words ✓
|
||||
6. **Hyperlinks**: Test 3-5 hyperlinks - all work ✓
|
||||
7. **Cross-check**: Spot check 10 numbers match between DOCX and XLS ✓
|
||||
8. **Page 1**: "INITIATING COVERAGE" header present ✓
|
||||
|
||||
If ANY item fails, DO NOT DELIVER. Go back and fix.
|
||||
|
||||
## Actual Count Verification
|
||||
|
||||
**Before delivery, fill in actual counts:**
|
||||
|
||||
DOCX Report:
|
||||
- Page count: _____ pages (MUST BE 30-50)
|
||||
- Chart count: _____ charts (MUST BE 25-35)
|
||||
- Table count: _____ tables (MUST BE 12-20)
|
||||
- Word count: _____ words (MUST BE 10,000-15,000)
|
||||
|
||||
XLS Model:
|
||||
- Tab count: _____ tabs (SHOULD BE 15+)
|
||||
- Model years: _____ historical + _____ projected
|
||||
|
||||
If any count is below minimum, STOP and add content before delivery.
|
||||
@@ -0,0 +1,845 @@
|
||||
# Equity Research Initiation Report Template
|
||||
|
||||
This template provides the structure for creating a comprehensive equity research initiation report. Use this as a guide when constructing the final report document.
|
||||
|
||||
**NOTE:** The actual report MUST be created using the DOCX skill. DO NOT generate markdown content.
|
||||
|
||||
**CRITICAL REQUIREMENTS:**
|
||||
1. **Generate 20-30+ chart images** using Python (matplotlib/plotly) BEFORE creating the Word document
|
||||
2. **Use DOCX skill**: Create professional report with proper styles, headers/footers, and formatting
|
||||
3. **Embed actual chart images**: Insert the generated PNG/JPG chart files into the Word document at appropriate locations
|
||||
4. **NO MARKDOWN**: Do not generate markdown content. Use DOCX skill to create a .docx file.
|
||||
|
||||
**CRITICAL FORMATTING GUIDANCE:**
|
||||
- **MAXIMUM DENSITY**: Every page should be packed with information. Intersperse text, charts, and tables throughout.
|
||||
- **NO ORPHANED SECTIONS**: Never have a section header alone or a single chart on its own page.
|
||||
- **20-30+ ACTUAL CHART IMAGES**: Generate charts as image files, then embed within text sections using DOCX skill.
|
||||
|
||||
---
|
||||
|
||||
## PAGE 1: INVESTMENT UPDATE (MOST IMPORTANT PAGE)
|
||||
|
||||
**CRITICAL**: Page 1 is NOT a traditional executive summary. It is an **Investment Update** with a specific institutional format used by professional equity research firms.
|
||||
|
||||
**IMPORTANT STRUCTURAL NOTES:**
|
||||
- This is an "Investment Update" or "Company Update" page, not "Executive Summary"
|
||||
- Uses a rating box in top left corner
|
||||
- Features stock price performance chart (Figure 1) prominently
|
||||
- Contains 3-4 detailed bullet points with ■ character
|
||||
- Each bullet has **bold topic header** followed by 3-5 sentence explanation
|
||||
- Bottom section has financial and valuation metrics table
|
||||
- All charts must have figure numbers (Figure 1, Figure 2, etc.) with source lines
|
||||
|
||||
### Layout Structure
|
||||
|
||||
**TOP LEFT - RATING BOX:**
|
||||
```
|
||||
Rating: [OUTPERFORM / NEUTRAL / UNDERWEIGHT / etc.]
|
||||
Price ([Date]): $[XX.XX]
|
||||
Target Price: $[XX.XX]
|
||||
52-Week Range: $[XX.XX] - $[XX.XX]
|
||||
Market Cap: $[XX.X]B
|
||||
Enterprise Value: $[XX.X]B
|
||||
```
|
||||
|
||||
**TOP LEFT - RESEARCH ANALYSTS:**
|
||||
```
|
||||
[Name], [Credentials (Ph.D., CFA, M.D., etc.)]
|
||||
[Email] | [Phone]
|
||||
|
||||
[Name 2], [Credentials]
|
||||
[Email] | [Phone]
|
||||
```
|
||||
|
||||
**TOP RIGHT - STOCK PRICE PERFORMANCE:**
|
||||
```
|
||||
Figure 1 - [Company Name] Stock Price Performance
|
||||
[Line chart showing stock price over 12-24 months with benchmark comparison]
|
||||
Source: Company data, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
**MAIN CONTENT - GRAY HEADER BAR:**
|
||||
```
|
||||
[OUTPERFORM / NEUTRAL / etc.] RECOMMENDATION / COMPANY UPDATE
|
||||
```
|
||||
|
||||
**MAIN CONTENT - DETAILED BULLETS (3-4 bullets):**
|
||||
|
||||
Use ■ character for bullets. Each bullet follows this format:
|
||||
```
|
||||
■ **[Bold Topic Header capturing main point].** Regular text explanation providing 3-5 sentences of detail with specific numbers, comparisons, and analysis. Lead with numbers and quantification where possible. Use "vs." not "versus". Be specific and concrete.
|
||||
|
||||
■ **[Second Topic Header].** [3-5 sentences of detailed explanation...]
|
||||
|
||||
■ **[Third Topic Header].** [3-5 sentences of detailed explanation...]
|
||||
|
||||
■ **[Fourth Topic Header - Optional].** [3-5 sentences of detailed explanation...]
|
||||
```
|
||||
|
||||
**EXAMPLE BULLET FORMAT:**
|
||||
```
|
||||
■ **Constitutional safety and enterprise focus should enable $635bn+ TAM by 2030.**
|
||||
Safety-first model development ethos, strong coding capabilities and distribution partnerships
|
||||
have aided Anthropic's enterprise market adoption. With the AI market expected to reach $635bn+
|
||||
by 2030, Anthropic is well-positioned to capture share given its focus on safety and enterprise
|
||||
use cases. Management has indicated that 60% of current revenue comes from enterprise customers,
|
||||
suggesting strong product-market fit in high-value segments.
|
||||
```
|
||||
|
||||
**BOTTOM SECTION - FINANCIAL AND VALUATION METRICS TABLE:**
|
||||
```
|
||||
[Year-3]A [Year-2]A [Year-1]A [Year]E [Year+1]E
|
||||
Revenue ($M) [X] [X] [X] [X] [X]
|
||||
Revenue Growth (%) X.X% X.X% X.X% X.X% X.X%
|
||||
Gross Margin (%) X.X% X.X% X.X% X.X% X.X%
|
||||
EBITDA ($M) [X] [X] [X] [X] [X]
|
||||
EBITDA Margin (%) X.X% X.X% X.X% X.X% X.X%
|
||||
EPS ($) X.XX X.XX X.XX X.XX X.XX
|
||||
P/E (x) XX.Xx XX.Xx XX.Xx XX.Xx XX.Xx
|
||||
EV/Revenue (x) X.Xx X.Xx X.Xx X.Xx X.Xx
|
||||
EV/EBITDA (x) XX.Xx XX.Xx XX.Xx XX.Xx XX.Xx
|
||||
|
||||
Note: Use "A" suffix for actual/historical years, "E" suffix for estimated/projected years
|
||||
Source: Company data, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## FIGURE NUMBERING AND FORMATTING STANDARDS
|
||||
|
||||
**CRITICAL**: All charts, graphs, and tables must follow strict figure numbering conventions used in professional equity research.
|
||||
|
||||
### Figure Numbering Format
|
||||
|
||||
**Every chart/table must have:**
|
||||
1. **Sequential numbering**: Figure 1, Figure 2, Figure 3, etc. (continue sequentially throughout entire report)
|
||||
2. **Descriptive title**: "Figure X - [Company] [Specific Metric] [Type of Chart/Analysis]"
|
||||
3. **Source line** (always at bottom): "Source: Company data, [Firm Name] estimates."
|
||||
|
||||
**Examples:**
|
||||
- Figure 1 - [Company] Stock Price Performance
|
||||
- Figure 2 - [Company] Historical and Projected Revenue Mix by Product
|
||||
- Figure 3 - [Company] Revenue by Geographic Region
|
||||
- Figure 4 - [Product Name] Revenue and Price per Patient per Year
|
||||
- Figure 5 - [Company] Gross Margin Evolution
|
||||
- Figure 6 - DCF Sensitivity Analysis ($/share)
|
||||
- Figure 7 - Valuation Football Field
|
||||
|
||||
### Caption Format
|
||||
|
||||
```
|
||||
Figure X - [Descriptive Title]
|
||||
[Chart/Table/Graph content]
|
||||
Source: Company data, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
For tables with multiple data sources:
|
||||
```
|
||||
Figure X - [Descriptive Title]
|
||||
[Table content]
|
||||
Source: Company filings, FactSet, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
### Placement Guidelines
|
||||
|
||||
- Figures should be numbered in order of appearance in the report
|
||||
- First figure (Figure 1) is typically the stock price chart or revenue growth trajectory on Page 1
|
||||
- Each figure must have its caption directly below the visual
|
||||
- Source line should be in smaller font, italicized, at the very bottom of the figure
|
||||
|
||||
---
|
||||
|
||||
## PAGE 2: TABLE OF CONTENTS
|
||||
|
||||
```
|
||||
Executive Summary....................................................1
|
||||
Investment Thesis & Risks..........................................3
|
||||
Company Overview.......................................................6
|
||||
Business Description & History................................6
|
||||
Management & Ownership..........................................8
|
||||
Products & Technology...........................................9
|
||||
Customers & Go-to-Market......................................11
|
||||
Growth Outlook & Drivers...........................................13
|
||||
Financial Analysis & Performance.................................16
|
||||
Historical Performance........................................16
|
||||
Financial Projections.........................................19
|
||||
Industry Overview & Competitive Landscape.....................21
|
||||
Market Size & TAM..............................................21
|
||||
Competitive Analysis..........................................23
|
||||
Industry Trends................................................25
|
||||
Valuation Analysis..................................................27
|
||||
Appendices & Disclosures...........................................31
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PAGES 3-5: INVESTMENT THESIS & RISKS
|
||||
|
||||
**LAYOUT PRINCIPLE**: Intersperse text with 2-3 charts in this section. Each page should have both text AND graphics. Never have pages with text only or charts only.
|
||||
|
||||
### Investment Thesis
|
||||
|
||||
**[Thesis Pillar 1]: [Title - e.g., "Large and Growing TAM"]**
|
||||
|
||||
[Opening sentence with key statistic]
|
||||
|
||||
[Paragraph 1: Market opportunity quantification]
|
||||
- Current market size
|
||||
- Growth drivers
|
||||
- Company's positioning
|
||||
|
||||
[Paragraph 2: Why company will capture share]
|
||||
- Competitive advantages
|
||||
- Go-to-market strategy
|
||||
- Early traction/proof points
|
||||
|
||||
[Paragraph 3: Financial impact]
|
||||
- Revenue opportunity
|
||||
- Margin profile
|
||||
- Timeline
|
||||
|
||||
**[EMBED CHART: TAM Growth Chart]** - Stacked area chart showing market size evolution and company's opportunity
|
||||
|
||||
**[Thesis Pillar 2]: [Title - e.g., "Differentiated Technology/Product"]**
|
||||
|
||||
[Similar structure - 3 paragraphs covering the opportunity, competitive positioning, and financial impact]
|
||||
|
||||
**[EMBED CHART: Competitive Positioning Matrix]** - 2×2 chart showing company vs. competitors on key dimensions
|
||||
|
||||
**[Thesis Pillar 3]: [Title - e.g., "Strong Execution and Management"]**
|
||||
|
||||
[Similar structure]
|
||||
|
||||
**[Add 2-3 more pillars as needed]**
|
||||
|
||||
**[EMBED CHART: Margin Expansion Pathway]** - Waterfall or line chart showing path to margin improvement
|
||||
|
||||
### Investment Risks
|
||||
|
||||
**Company-Specific Risks**
|
||||
|
||||
**[Risk 1]: [Title - e.g., "Customer Concentration"]**
|
||||
[Description of risk, quantification if possible, mitigating factors. 2-3 sentences.]
|
||||
|
||||
**[Risk 2]: [Title - e.g., "Execution Risk on Product Roadmap"]**
|
||||
[Description. 2-3 sentences.]
|
||||
|
||||
**[Risk 3-5]: [Additional company-specific risks]**
|
||||
[Continue with 3-5 total company risks]
|
||||
|
||||
**Industry/Market Risks**
|
||||
|
||||
**[Risk 1]: [Title - e.g., "Regulatory Uncertainty"]**
|
||||
[Description. 2-3 sentences.]
|
||||
|
||||
**[Risk 2]: [Title - e.g., "Intense Competition"]**
|
||||
[Description. 2-3 sentences.]
|
||||
|
||||
**[Risk 3-4]: [Additional industry/market risks]**
|
||||
[Continue with 2-4 total industry risks]
|
||||
|
||||
---
|
||||
|
||||
## PAGES 8-19: COMPANY 101
|
||||
|
||||
### Company Description (1 page)
|
||||
|
||||
**Overview**
|
||||
[3-4 paragraphs describing:
|
||||
- What the company does (in plain English)
|
||||
- How it makes money
|
||||
- Who its customers are
|
||||
- Geographic presence
|
||||
- Scale/size metrics]
|
||||
|
||||
**Business Model Diagram/Visual**
|
||||
[Insert visual showing how the company creates value]
|
||||
|
||||
### Company History (2-3 pages)
|
||||
|
||||
**The Early Days: [Founding Story Title]**
|
||||
|
||||
[Paragraph on founding: who, when, why, initial vision]
|
||||
|
||||
**Timeline of Key Milestones**
|
||||
|
||||
```
|
||||
[Year]: [Founding event, initial funding]
|
||||
[Year]: [Product launch, key milestone]
|
||||
[Year]: [Major partnership, funding round]
|
||||
[Year]: [Geographic expansion, new product]
|
||||
[Year]: [Recent achievement]
|
||||
```
|
||||
|
||||
**[Major Turning Point or Pivot]**
|
||||
[If applicable, describe any major strategic shifts]
|
||||
|
||||
**[Company Name] Today: [Current State Title]**
|
||||
[Paragraphs describing current position, recent developments, current strategy]
|
||||
|
||||
### Management & Ownership (2 pages)
|
||||
|
||||
**Key Executives**
|
||||
|
||||
For each executive:
|
||||
```
|
||||
[Name] - [Title]
|
||||
[Bio paragraph including:
|
||||
- Current role and responsibilities
|
||||
- Prior experience and track record
|
||||
- Key accomplishments at company
|
||||
- Education/credentials]
|
||||
```
|
||||
|
||||
**Corporate Structure & Governance**
|
||||
- Entity type (C-Corp, PBC, etc.)
|
||||
- Board composition
|
||||
- Special governance features
|
||||
- [Include governance diagram if applicable]
|
||||
|
||||
**Ownership Structure** [if disclosed]
|
||||
- Major shareholders and ownership %
|
||||
- Strategic investors
|
||||
- Employee ownership
|
||||
- Insider ownership trends
|
||||
|
||||
### Core Technology/Products (2-3 pages)
|
||||
|
||||
**Technology Overview**
|
||||
[Description of core technology/platform]
|
||||
|
||||
**Product Portfolio**
|
||||
|
||||
For each major product:
|
||||
```
|
||||
[Product Name]
|
||||
|
||||
Description:
|
||||
[What it does, key features]
|
||||
|
||||
Target Customers:
|
||||
[Who uses it, use cases]
|
||||
|
||||
Pricing Model:
|
||||
[How it's priced, typical contract values]
|
||||
|
||||
Competitive Positioning:
|
||||
[How it compares to alternatives]
|
||||
|
||||
Traction:
|
||||
[Customers, revenue, growth metrics]
|
||||
```
|
||||
|
||||
**Product Roadmap**
|
||||
[Future products/features in development]
|
||||
|
||||
### Customers & Distribution (2-3 pages)
|
||||
|
||||
**Customer Base**
|
||||
- Total customers: [number]
|
||||
- Customer segments (Enterprise, Mid-Market, SMB)
|
||||
- Geographic breakdown
|
||||
- Customer case studies/testimonials
|
||||
|
||||
**Go-to-Market Strategy**
|
||||
- Sales channels (direct, partner, etc.)
|
||||
- Sales cycle and CAC
|
||||
- Key partnerships for distribution
|
||||
- Marketing strategy
|
||||
|
||||
**Customer Economics**
|
||||
- LTV/CAC ratio
|
||||
- Net retention rate
|
||||
- Churn rates
|
||||
- Expansion rates
|
||||
|
||||
---
|
||||
|
||||
## PAGES 20-22: GROWTH OUTLOOK
|
||||
|
||||
### Growth Framework Overview
|
||||
|
||||
**Short-term Growth Drivers (1-2 years)**
|
||||
1. [Driver 1]
|
||||
2. [Driver 2]
|
||||
3. [Driver 3]
|
||||
|
||||
**Medium-term Growth Drivers (3-5 years)**
|
||||
1. [Driver 1]
|
||||
2. [Driver 2]
|
||||
|
||||
### Detailed Growth Driver Analysis
|
||||
|
||||
**[Growth Driver 1]: [Title]**
|
||||
|
||||
*Current State:*
|
||||
[Baseline metrics, current performance]
|
||||
|
||||
*Opportunity:*
|
||||
[Market size, company positioning, growth potential]
|
||||
|
||||
*Timeline & Milestones:*
|
||||
- Near-term (1-2 years): [Expected progress]
|
||||
- Medium-term (3-5 years): [Expected progress]
|
||||
|
||||
*Risks & Challenges:*
|
||||
[What could prevent realization of this opportunity]
|
||||
|
||||
**[Repeat for each major growth driver]**
|
||||
|
||||
### Financial Projections
|
||||
|
||||
**Revenue Build-up**
|
||||
[Visual showing how revenue grows from current to projected]
|
||||
|
||||
**Scenario Analysis**
|
||||
[Table or chart showing Bear/Base/Bull case projections]
|
||||
|
||||
---
|
||||
|
||||
## PAGES 21-24: FINANCIAL ANALYSIS & PERFORMANCE
|
||||
|
||||
**LAYOUT PRINCIPLE**: This section should be VERY DENSE with 5-7 charts interspersed with financial tables. Each page should have multiple elements (table + 1-2 charts).
|
||||
|
||||
### Historical Financial Analysis
|
||||
|
||||
**Income Statement Highlights (3-5 Year History)**
|
||||
```
|
||||
2021 2022 2023 2024 LTM
|
||||
Revenue ($M) [X] [X] [X] [X] [X]
|
||||
Growth % - X% X% X% X%
|
||||
Gross Profit ($M) [X] [X] [X] [X] [X]
|
||||
Margin % X% X% X% X% X%
|
||||
EBITDA ($M) [X] [X] [X] [X] [X]
|
||||
Margin % X% X% X% X% X%
|
||||
Net Income ($M) [X] [X] [X] [X] [X]
|
||||
Margin % X% X% X% X% X%
|
||||
FCF ($M) [X] [X] [X] [X] [X]
|
||||
```
|
||||
|
||||
**[CHART 1: Revenue Growth Trajectory]**
|
||||
Line chart showing historical revenue with annotations for key milestones. Include growth % labels on chart.
|
||||
|
||||
**[CHART 2: REVENUE BY PRODUCT/SEGMENT]** ⭐ CRITICAL
|
||||
Stacked area chart showing revenue composition by product line or business segment over time. This shows mix shift and which products are driving growth.
|
||||
```
|
||||
Example segments:
|
||||
- Product A Revenue
|
||||
- Product B Revenue
|
||||
- Product C Revenue
|
||||
- Services Revenue
|
||||
```
|
||||
|
||||
**[CHART 3: REVENUE BY GEOGRAPHY]** ⭐ CRITICAL
|
||||
Stacked bar chart showing revenue breakdown by geographic region over time.
|
||||
```
|
||||
Example regions:
|
||||
- North America
|
||||
- Europe
|
||||
- Asia-Pacific
|
||||
- Rest of World
|
||||
```
|
||||
|
||||
### Financial Performance Analysis
|
||||
|
||||
**[CHART 4: Gross Margin Evolution]**
|
||||
Line chart with annotations explaining margin drivers (scale, pricing, mix, etc.)
|
||||
|
||||
**[CHART 5: Operating Margin Progression]**
|
||||
Waterfall chart showing path from gross margin to operating margin, or line chart showing EBITDA margin trend
|
||||
|
||||
**[CHART 6: Free Cash Flow Generation]**
|
||||
Bar + line combo chart: Bars = FCF, Line = FCF margin %
|
||||
|
||||
**[CHART 7: Key Operating Metrics Dashboard]**
|
||||
Multi-panel chart showing 3-4 key metrics:
|
||||
- Customer count or user growth
|
||||
- ARPU (Average Revenue Per User) or ACV (Annual Contract Value)
|
||||
- Customer cohort retention or net revenue retention
|
||||
- LTV/CAC or magic number or other unit economic metric
|
||||
|
||||
### Forward Projections (3-5 Years)
|
||||
|
||||
**Projected Financial Model**
|
||||
```
|
||||
2025E 2026E 2027E 2028E 2029E
|
||||
Revenue ($M) [X] [X] [X] [X] [X]
|
||||
Growth % X% X% X% X% X%
|
||||
Gross Profit ($M) [X] [X] [X] [X] [X]
|
||||
Margin % X% X% X% X% X%
|
||||
EBITDA ($M) [X] [X] [X] [X] [X]
|
||||
Margin % X% X% X% X% X%
|
||||
FCF ($M) [X] [X] [X] [X] [X]
|
||||
FCF Margin % X% X% X% X% X%
|
||||
```
|
||||
|
||||
**Key Assumptions**
|
||||
- Revenue growth drivers and assumptions
|
||||
- Margin progression assumptions
|
||||
- CapEx as % of revenue
|
||||
- Working capital assumptions
|
||||
|
||||
**Charts:**
|
||||
- Revenue bridge showing growth drivers
|
||||
- Margin waterfall showing path to profitability/margin expansion
|
||||
- Free cash flow trajectory
|
||||
|
||||
### Fundraising & Valuation [For Private Companies]
|
||||
|
||||
**Fundraising History**
|
||||
```
|
||||
Round Date Amount Valuation Lead Investor(s)
|
||||
Seed [Date] $XM $XM [Investor]
|
||||
Series A [Date] $XM $XM [Investor]
|
||||
Series B [Date] $XM $XM [Investor]
|
||||
[etc.]
|
||||
```
|
||||
|
||||
**Valuation Evolution Chart**
|
||||
[Visual showing valuation progression over time]
|
||||
|
||||
**Current Valuation Metrics**
|
||||
- Latest valuation: $XXbn
|
||||
- Implied valuation multiple: XX.Xx
|
||||
- Comparison to public peers
|
||||
|
||||
---
|
||||
|
||||
## PAGES 26-31: INDUSTRY OVERVIEW
|
||||
|
||||
### Industry Definition & Market Size
|
||||
|
||||
**Industry Overview**
|
||||
[2-3 paragraphs on:
|
||||
- Industry definition and scope
|
||||
- Current market size
|
||||
- Historical growth rates
|
||||
- Key trends and drivers]
|
||||
|
||||
**Market Size Chart**
|
||||
[Visual showing market growth from historical through projected]
|
||||
|
||||
### Competitive Landscape
|
||||
|
||||
**Competitive Positioning Matrix**
|
||||
[2x2 chart showing company vs. competitors on key dimensions]
|
||||
|
||||
**Competitive Comparison Table**
|
||||
```
|
||||
Metric [Company] Comp A Comp B Comp C Comp D
|
||||
Revenue ($B) [X] [X] [X] [X] [X]
|
||||
Growth % X% X% X% X% X%
|
||||
Market Share X% X% X% X% X%
|
||||
Gross Margin X% X% X% X% X%
|
||||
Key Differentiator [X] [X] [X] [X] [X]
|
||||
```
|
||||
|
||||
**Competitive Analysis Narrative**
|
||||
[2-3 paragraphs analyzing:
|
||||
- Competitive strengths and weaknesses
|
||||
- Market positioning
|
||||
- Share gains/losses
|
||||
- Competitive moats]
|
||||
|
||||
### Total Addressable Market
|
||||
|
||||
**TAM Calculation**
|
||||
```
|
||||
Current TAM (2025): $XXbn
|
||||
Projected TAM (2030): $XXbn
|
||||
CAGR: XX%
|
||||
|
||||
Segmentation:
|
||||
- [Segment A]: $XXbn
|
||||
- [Segment B]: $XXbn
|
||||
- [Segment C]: $XXbn
|
||||
```
|
||||
|
||||
**TAM Growth Chart**
|
||||
[Visual showing TAM expansion over time by segment]
|
||||
|
||||
**Company's Market Opportunity**
|
||||
```
|
||||
Total TAM (2030): $XXbn
|
||||
Serviceable TAM: $XXbn
|
||||
Company's Realistic Share: XX%
|
||||
Implied Revenue Potential: $XXbn
|
||||
```
|
||||
|
||||
### Industry Dynamics
|
||||
|
||||
**Porter's Five Forces Analysis**
|
||||
- Threat of new entrants: [High/Medium/Low] - [Explanation]
|
||||
- Bargaining power of suppliers: [High/Medium/Low] - [Explanation]
|
||||
- Bargaining power of buyers: [High/Medium/Low] - [Explanation]
|
||||
- Threat of substitutes: [High/Medium/Low] - [Explanation]
|
||||
- Industry rivalry: [High/Medium/Low] - [Explanation]
|
||||
|
||||
**Key Industry Trends**
|
||||
1. [Trend 1]: [Description and impact]
|
||||
2. [Trend 2]: [Description and impact]
|
||||
3. [Trend 3]: [Description and impact]
|
||||
|
||||
---
|
||||
|
||||
## PAGES 32-34: VALUATION ANALYSIS
|
||||
|
||||
### Valuation Methodology Summary
|
||||
|
||||
```
|
||||
Valuation Method Weight Implied Value Weighted Value
|
||||
DCF Analysis 50% $XX - $YY $ZZ
|
||||
Trading Comparables 30% $XX - $YY $ZZ
|
||||
Precedent Transactions 20% $XX - $YY $ZZ
|
||||
──── ───────────── ─────────
|
||||
Weighted Average Price Target $AA - $BB $CC
|
||||
```
|
||||
|
||||
### DCF Analysis
|
||||
|
||||
**Key Assumptions**
|
||||
```
|
||||
Revenue Growth (2025-2029): XX% CAGR
|
||||
Terminal Growth Rate: X.X%
|
||||
WACC: X.X%
|
||||
Terminal Year EBITDA Margin: XX%
|
||||
```
|
||||
|
||||
**Figure X - DCF Sensitivity Analysis ($/share)**
|
||||
|
||||
CRITICAL FORMAT: DCF sensitivity must be shown as a 2-way heat map table with color coding.
|
||||
|
||||
```
|
||||
Terminal Growth Rate
|
||||
WACC 2.0% 2.5% 3.0% 3.5% 4.0%
|
||||
8.0% $52 $55 $58 $62 $66
|
||||
9.0% $48 $51 $54 $57 $61
|
||||
10.0% $45 $47 $50 $53 $56
|
||||
11.0% $42 $44 $47 $49 $52
|
||||
12.0% $39 $41 $44 $46 $49
|
||||
|
||||
Color coding: Green (higher values) → Yellow (mid) → Red (lower values)
|
||||
Source: [Firm Name] estimates.
|
||||
```
|
||||
|
||||
**Scenario Analysis**
|
||||
```
|
||||
Scenario Enterprise Value Equity Value Price/Share
|
||||
Bear Case $XXbn $XXbn $XX
|
||||
Base Case $XXbn $XXbn $XX
|
||||
Bull Case $XXbn $XXbn $XX
|
||||
```
|
||||
|
||||
### Trading Comparables
|
||||
|
||||
**Figure X - Comparable Companies Analysis**
|
||||
|
||||
CRITICAL FORMAT: Comp table must have two-part structure with statistical summary.
|
||||
|
||||
**Part 1: Individual Company Data**
|
||||
```
|
||||
Company Ticker Market EV/Rev EV/Rev EV/EBITDA EV/EBITDA Rev EBITDA
|
||||
Cap($B) 2024E 2025E 2024E 2025E Growth Margin
|
||||
Peer A PERA XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
Peer B PERB XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
Peer C PERC XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
Peer D PERD XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
[Company] COMP XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
```
|
||||
|
||||
**Part 2: Statistical Summary**
|
||||
```
|
||||
Max XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
75th Percentile XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
Median XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
25th Percentile XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
Min XX.X X.Xx X.Xx XX.X XX.X XX% XX%
|
||||
|
||||
Source: FactSet, company filings, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
**Implied Valuation**
|
||||
[Calculation showing application of peer multiples to company's metrics]
|
||||
|
||||
### Precedent Transactions [If Applicable]
|
||||
|
||||
**Figure X - Precedent Transaction Analysis**
|
||||
```
|
||||
Date Target Acquirer Deal EV/Rev EV/EBITDA Premium
|
||||
Value($B)
|
||||
[MM/YYYY] [Company A] [Buyer A] X.X X.Xx XX.X XX%
|
||||
[MM/YYYY] [Company B] [Buyer B] X.X X.Xx XX.X XX%
|
||||
[MM/YYYY] [Company C] [Buyer C] X.X X.Xx XX.X XX%
|
||||
────────────────────────────────────────────────────────────────────
|
||||
Median X.Xx XX.X XX%
|
||||
|
||||
Source: Capital IQ, company filings, [Firm Name] estimates.
|
||||
```
|
||||
|
||||
**Control Premium Analysis**
|
||||
[Discussion of typical premiums in the industry]
|
||||
|
||||
### Valuation Summary
|
||||
|
||||
**Figure X - Valuation Football Field**
|
||||
|
||||
CRITICAL FORMAT: Football field must be a horizontal bar chart showing all valuation methods.
|
||||
|
||||
```
|
||||
Valuation Method Low End ────── Range ────── High End
|
||||
|
||||
DCF Analysis $42 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ $58
|
||||
|
||||
Trading Comps (NTM) $45 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ $55
|
||||
|
||||
Precedent Trans. $48 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ $60
|
||||
↑
|
||||
Current Price: $50
|
||||
────────────────────────────────────────────────────────────────
|
||||
Valuation Range: $42 $60
|
||||
|
||||
Color coding: Each method should have distinct color bar
|
||||
Add vertical line showing current stock price
|
||||
Source: [Firm Name] estimates.
|
||||
```
|
||||
|
||||
**Price Target & Recommendation**
|
||||
```
|
||||
Current Price: $XX.XX ([Date])
|
||||
Price Target: $YY.YY
|
||||
Upside/Downside: ZZ%
|
||||
|
||||
Recommendation: BUY / HOLD / SELL
|
||||
Time Horizon: 12 months
|
||||
|
||||
Catalysts:
|
||||
• [Near-term catalyst with timeframe]
|
||||
• [Medium-term catalyst with timeframe]
|
||||
• [Long-term catalyst with timeframe]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PAGES 35+: APPENDICES & DISCLOSURES
|
||||
|
||||
### Appendix A: Detailed Financial Model
|
||||
[Reference to Excel model]
|
||||
|
||||
### Appendix B: Management Bios
|
||||
[Extended bios if not included in main text]
|
||||
|
||||
### Appendix C: Product Detail
|
||||
[Additional product information if needed]
|
||||
|
||||
### Appendix D: Industry Data Sources
|
||||
[List of sources used for industry analysis]
|
||||
|
||||
### Required Disclosures
|
||||
- Analyst certification
|
||||
- Important disclosures
|
||||
- Company-specific disclosures
|
||||
- Legal entity disclosures
|
||||
- Other regulatory disclosures
|
||||
|
||||
---
|
||||
|
||||
## GRAPHICS & CHARTS TO INCLUDE
|
||||
|
||||
**TARGET: 20-30+ charts throughout the report**
|
||||
|
||||
**CRITICAL PRINCIPLE**: Charts should be embedded within text sections, NOT grouped on separate pages. Every page (except TOC) should have at least one chart or table.
|
||||
|
||||
### Page 1 - Executive Summary (3 charts)
|
||||
1. Revenue/ARR growth trajectory (line chart, historical + projected)
|
||||
2. Key metrics dashboard (multi-panel chart)
|
||||
3. Market positioning or margin progression
|
||||
|
||||
### Pages 3-5 - Investment Thesis & Risks (3 charts)
|
||||
4. TAM growth and opportunity (stacked area chart)
|
||||
5. Competitive positioning matrix (2×2 with bubbles)
|
||||
6. Margin expansion pathway (waterfall or line)
|
||||
|
||||
### Pages 6-17 - Company 101 (6-8 charts)
|
||||
7. Business model diagram (flow chart)
|
||||
8. Company timeline (horizontal timeline)
|
||||
9. Funding history (bar chart with valuation line)
|
||||
10. Organization chart
|
||||
11. Product portfolio matrix
|
||||
12. Customer segmentation (pie or tree map)
|
||||
13. Geographic revenue breakdown
|
||||
14. Customer cohort retention
|
||||
|
||||
### Pages 18-20 - Growth Outlook (4 charts)
|
||||
15. Revenue bridge showing drivers (waterfall)
|
||||
16. Market share evolution (line chart)
|
||||
17. Product roadmap (timeline)
|
||||
18. Geographic expansion (map with timeline)
|
||||
|
||||
### Pages 21-24 - Financials (7 charts) ⭐ CRITICAL SECTION
|
||||
19. Revenue growth trajectory (line with annotations)
|
||||
20. **Revenue by product/segment** (stacked area) ⭐ MUST HAVE
|
||||
21. **Revenue by geography** (stacked bar) ⭐ MUST HAVE
|
||||
22. Gross margin evolution (line chart)
|
||||
23. Operating margin progression (waterfall or line)
|
||||
24. Free cash flow trajectory (bar + line combo)
|
||||
25. Key operating metrics dashboard (multi-panel)
|
||||
26. Scenario comparison (grouped bar: Bear/Base/Bull)
|
||||
|
||||
### Pages 25-30 - Industry Overview (6 charts)
|
||||
27. Market size evolution (area chart with CAGR)
|
||||
28. Competitive landscape map (2×2)
|
||||
29. Market share pie chart
|
||||
30. Market share evolution over time (line chart)
|
||||
31. TAM segmentation
|
||||
32. Industry trend charts
|
||||
|
||||
### Pages 31-34 - Valuation (5 charts)
|
||||
33. DCF sensitivity analysis (heat map)
|
||||
34. DCF waterfall (PV of cash flows → equity value)
|
||||
35. Trading comps scatter plot (growth vs. multiple)
|
||||
36. Peer valuation multiples (grouped bar)
|
||||
37. Valuation football field (range chart)
|
||||
38. Price target scenarios (bar with upside/downside)
|
||||
|
||||
**Chart Style Guidelines:**
|
||||
- **Consistent color scheme** throughout (pick 3-5 brand colors)
|
||||
- **Professional fonts** (Arial, Calibri, or similar)
|
||||
- **Clear labels and legends** on every chart
|
||||
- **Source citations** at bottom of each chart
|
||||
- **High information density** - use chart space efficiently
|
||||
- **Mix of chart types** for visual interest
|
||||
- **Annotations** to highlight key insights
|
||||
- **Embedded in text** - never standalone pages
|
||||
- **Sparklines in tables** where appropriate
|
||||
|
||||
---
|
||||
|
||||
## NOTES ON USING THIS TEMPLATE
|
||||
|
||||
1. **PAGE 1 IS CRITICAL:** The executive summary on page 1 must contain ALL key information - fast facts, financial snapshot, 3 charts, valuation summary, thesis, and risks. This is the most important page.
|
||||
|
||||
2. **MAXIMUM DENSITY:** Professional equity research is EXTREMELY information-dense. Every page should be packed with interspersed text, charts, and tables. Aim for 60-80% page coverage with minimal white space.
|
||||
|
||||
3. **NO ORPHANED SECTIONS:** Never have a section header alone, or a single chart/table on its own page. Always combine elements. Example: DON'T put "Financial Snapshot" on page 6 by itself - integrate it with surrounding content.
|
||||
|
||||
4. **20-30+ CHARTS:** Include extensive graphics throughout, with specific emphasis on:
|
||||
- **Revenue by product/segment** (stacked area chart)
|
||||
- **Revenue by geography** (stacked bar chart)
|
||||
- **Financial performance trends** (multiple charts)
|
||||
- Charts should be embedded within text, not grouped separately
|
||||
|
||||
5. **Use DOC Skill:** This outline should be converted to a professional Word document using the DOC skill, with proper formatting, styles, headers/footers, and page numbers
|
||||
|
||||
6. **Intersplice Content:** Text paragraphs should have charts embedded inline. Each page should have 2-4 distinct elements (tables, charts, text blocks).
|
||||
|
||||
7. **Consistent Formatting:** Use consistent styles for headers, body text, tables, and charts throughout. Pick a color scheme and stick to it.
|
||||
|
||||
8. **References:** Include citations and sources for all data points
|
||||
|
||||
9. **Proofread:** Always proofread for accuracy, especially financial data and calculations
|
||||
|
||||
10. **Executive Summary Last:** While it appears on page 1, write this section last after completing the full analysis
|
||||
|
||||
11. **Balance:** Present both positive and negative aspects objectively
|
||||
|
||||
12. **Specific > Generic:** Use specific data and examples rather than generic statements
|
||||
@@ -0,0 +1,456 @@
|
||||
# Task 1: Company Research - Detailed Workflow
|
||||
|
||||
This document provides step-by-step instructions for executing Task 1 (Company Research) of the anthropic-initiation-coverage skill.
|
||||
|
||||
## Task Overview
|
||||
|
||||
**Purpose**: Research company's business, management, competitive position, industry, and risks.
|
||||
|
||||
**Prerequisites**: ✅ None (fully independent)
|
||||
- Company name or ticker symbol only
|
||||
|
||||
**Output**: Company Research Document (6,000-8,000 words)
|
||||
|
||||
---
|
||||
|
||||
## Data Sources to Gather
|
||||
|
||||
### Primary Sources (Company)
|
||||
- **SEC Filings (for public companies):**
|
||||
- Latest 10-K: Business description, risk factors, MD&A, financials
|
||||
- Recent 10-Qs: Quarterly updates
|
||||
- DEF 14A (Proxy): Executive compensation, board composition
|
||||
- 8-Ks: Material events, acquisitions, management changes
|
||||
|
||||
- **Company Website & IR:**
|
||||
- Investor presentations
|
||||
- Earnings transcripts (last 2-3 quarters)
|
||||
- Press releases
|
||||
- Product documentation
|
||||
|
||||
- **For Private Companies:**
|
||||
- Company website and blog
|
||||
- Press releases and media coverage
|
||||
- LinkedIn for management bios
|
||||
- Crunchbase or PitchBook for funding history
|
||||
|
||||
### Secondary Sources (Industry/Competitive)
|
||||
- Competitor websites and SEC filings
|
||||
- Industry research reports (Gartner, Forrester, IDC, etc.)
|
||||
- News articles and trade publications
|
||||
- Market research reports
|
||||
- LinkedIn profiles for key executives
|
||||
|
||||
### Key Information to Extract
|
||||
|
||||
**Key Information:**
|
||||
- Company founding date, headquarters, employee count
|
||||
- Revenue size and growth trajectory (if available)
|
||||
- Product portfolio and pricing
|
||||
- Customer segments and case studies
|
||||
- Management backgrounds and track records
|
||||
- Competitive landscape and market share
|
||||
- Industry trends and growth drivers
|
||||
- Regulatory considerations
|
||||
- High-level financial metrics (from 10-K prose, not detailed extraction)
|
||||
|
||||
---
|
||||
|
||||
## Step-by-Step Research Workflow
|
||||
|
||||
### Step 1: Initial Data Collection
|
||||
|
||||
1. **Start with company website**
|
||||
- Read About/Company pages
|
||||
- Review product pages
|
||||
- Identify customer case studies
|
||||
- Note key metrics mentioned (employees, customers, etc.)
|
||||
|
||||
2. **Gather SEC filings (if public)**
|
||||
- Download latest 10-K from SEC EDGAR
|
||||
- Download most recent 10-Q
|
||||
- Download latest DEF 14A (proxy statement)
|
||||
- Note filing dates
|
||||
|
||||
3. **Read earnings materials**
|
||||
- Latest earnings transcript
|
||||
- Most recent investor presentation
|
||||
- Press releases from last 12 months
|
||||
|
||||
4. **Document basic facts**
|
||||
- Founding date and story
|
||||
- Headquarters location
|
||||
- Employee count
|
||||
- Products/services
|
||||
- Key customers
|
||||
|
||||
### Step 2: Business Model Analysis
|
||||
|
||||
1. **Map revenue streams**
|
||||
- What does the company sell?
|
||||
- How is it priced? (subscription, transaction, license, etc.)
|
||||
- Who pays?
|
||||
- What are typical deal sizes?
|
||||
|
||||
2. **Understand customer segments**
|
||||
- Enterprise vs. SMB vs. consumer
|
||||
- Industries served
|
||||
- Geographic distribution
|
||||
- Customer concentration (top 10 customers)
|
||||
|
||||
3. **Document go-to-market**
|
||||
- Direct sales vs. channel partners
|
||||
- Sales cycle length
|
||||
- Customer acquisition strategy
|
||||
- Distribution model
|
||||
|
||||
4. **Identify unit economics**
|
||||
- LTV/CAC if available
|
||||
- Gross margins
|
||||
- Net revenue retention
|
||||
- Payback periods
|
||||
|
||||
### Step 3: Management Research
|
||||
|
||||
**For each of 3-4 key executives:**
|
||||
|
||||
1. **Identify key leaders**
|
||||
- CEO (always required)
|
||||
- CFO (always required)
|
||||
- COO, CTO, or other C-suite (2 additional)
|
||||
|
||||
2. **Research each executive**
|
||||
- Find LinkedIn profile
|
||||
- Review DEF 14A for background
|
||||
- Search for press interviews
|
||||
- Note tenure at company
|
||||
|
||||
3. **Write 300-400 word bio including:**
|
||||
- Current role and responsibilities
|
||||
- Prior roles and companies (last 2-3 positions)
|
||||
- Key accomplishments and track record
|
||||
- Education and credentials
|
||||
- Years of experience in industry
|
||||
- Time at current company
|
||||
|
||||
4. **Assess governance**
|
||||
- Board composition and independence
|
||||
- Key board members and their backgrounds
|
||||
- Insider ownership percentage
|
||||
- Executive compensation structure
|
||||
|
||||
### Step 4: Competitive Intelligence
|
||||
|
||||
1. **Identify 5-10 competitors**
|
||||
- Direct competitors (same products/markets)
|
||||
- Indirect competitors (substitute solutions)
|
||||
- Emerging competitors (disruptors)
|
||||
- Check 10-K for company's own list of competitors
|
||||
|
||||
2. **Research each competitor**
|
||||
- Visit competitor website
|
||||
- Review their SEC filings (if public)
|
||||
- Note key products and positioning
|
||||
- Identify differentiators
|
||||
- Estimate market share (if data available)
|
||||
|
||||
3. **Create competitive framework**
|
||||
- Map on key dimensions (price, features, scale, etc.)
|
||||
- Identify company's competitive advantages
|
||||
- Note competitive vulnerabilities
|
||||
- Assess switching costs and network effects
|
||||
|
||||
4. **Document competitive insights**
|
||||
- Who are the market leaders?
|
||||
- Where does this company rank?
|
||||
- What are unique differentiators?
|
||||
- What are competitive threats?
|
||||
|
||||
### Step 5: Industry Analysis
|
||||
|
||||
1. **Define the industry**
|
||||
- Industry classification (NAICS/SIC)
|
||||
- Scope and boundaries
|
||||
- Related/adjacent industries
|
||||
|
||||
2. **Size the market**
|
||||
- Total addressable market (TAM)
|
||||
- Serviceable addressable market (SAM)
|
||||
- Serviceable obtainable market (SOM)
|
||||
- Current penetration rate
|
||||
|
||||
3. **Research growth drivers**
|
||||
- Historical market growth rate
|
||||
- Projected growth rate (next 3-5 years)
|
||||
- Key trends accelerating/decelerating growth
|
||||
- Technology changes impacting industry
|
||||
|
||||
4. **Understand industry structure**
|
||||
- Fragmented vs. consolidated
|
||||
- Barriers to entry
|
||||
- Supplier/buyer power
|
||||
- Threat of substitutes
|
||||
- Regulatory environment
|
||||
|
||||
### Step 6: Risk Assessment
|
||||
|
||||
Identify 8-12 risks across four categories. For each risk, write 50-100 words.
|
||||
|
||||
**Company-Specific Risks (4-6 risks):**
|
||||
- Execution risk (can management deliver?)
|
||||
- Customer concentration (top customers)
|
||||
- Key person dependency
|
||||
- Product/technology obsolescence
|
||||
- Geographic concentration
|
||||
- Integration risk (if recent M&A)
|
||||
|
||||
**Industry/Market Risks (3-4 risks):**
|
||||
- Competitive intensity
|
||||
- Regulatory changes
|
||||
- Technology disruption
|
||||
- Market saturation
|
||||
|
||||
**Financial Risks (2-3 risks):**
|
||||
- Profitability timeline
|
||||
- Funding requirements
|
||||
- Debt levels and covenants
|
||||
- Cash burn rate (if unprofitable)
|
||||
|
||||
**Macroeconomic Risks (2-3 risks):**
|
||||
- Economic sensitivity (cyclical vs. defensive)
|
||||
- Interest rate sensitivity
|
||||
- Foreign exchange exposure
|
||||
- Geopolitical factors
|
||||
|
||||
**For each risk:**
|
||||
- Describe the risk clearly
|
||||
- Quantify impact if possible
|
||||
- Note likelihood/severity
|
||||
- Identify mitigating factors
|
||||
|
||||
### Step 7: Synthesis and Writing
|
||||
|
||||
**Write document following this structure:**
|
||||
|
||||
1. **Company Overview** (800-1,200 words)
|
||||
- What does the company do? (plain English)
|
||||
- How do they make money? (business model)
|
||||
- Where do they operate? (geographic presence)
|
||||
- How large are they? (revenue, employees, customers)
|
||||
- Key metrics and scale indicators
|
||||
|
||||
2. **Company History** (800-1,200 words)
|
||||
- Founding story (who, when, why, where)
|
||||
- Timeline of major milestones
|
||||
- Strategic pivots or transformations
|
||||
- Key acquisitions
|
||||
- Recent developments (last 1-2 years)
|
||||
|
||||
3. **Management Team** (1,000-1,400 words)
|
||||
- 300-400 word bio for each of 3-4 executives
|
||||
- Board composition and governance
|
||||
- Insider ownership
|
||||
- Management track record assessment
|
||||
|
||||
4. **Products & Services** (700-1,000 words)
|
||||
- Detailed product portfolio
|
||||
- Key features and capabilities
|
||||
- Product differentiation
|
||||
- Target customers and use cases
|
||||
- Pricing models and typical deal sizes
|
||||
|
||||
5. **Customers & Go-to-Market** (500-700 words)
|
||||
- Customer segments and profiles
|
||||
- Distribution channels
|
||||
- Sales strategy and cycle
|
||||
- Key partnerships
|
||||
- Customer case studies
|
||||
|
||||
6. **Industry Overview** (800-1,200 words)
|
||||
- Industry definition and scope
|
||||
- Market size and structure
|
||||
- Growth rates (historical and projected)
|
||||
- Key trends and drivers
|
||||
- Regulatory environment
|
||||
- Industry dynamics
|
||||
|
||||
7. **Competitive Landscape** (700-1,000 words)
|
||||
- Analysis of 5-10 key competitors
|
||||
- Market positioning framework
|
||||
- Company's competitive advantages
|
||||
- Competitive vulnerabilities
|
||||
- Market share analysis
|
||||
|
||||
8. **Market Opportunity** (500-700 words)
|
||||
- TAM sizing and methodology
|
||||
- Market growth projections
|
||||
- Company's serviceable market
|
||||
- Market share opportunity
|
||||
- Penetration strategy
|
||||
|
||||
9. **Risk Assessment** (600-900 words)
|
||||
- Company-specific risks (4-6)
|
||||
- Industry/market risks (3-4)
|
||||
- Financial risks (2-3)
|
||||
- Macroeconomic risks (2-3)
|
||||
- Each risk: 50-100 word description
|
||||
|
||||
**Data Sources Section**
|
||||
- List all sources used
|
||||
- Include dates and URLs
|
||||
- Organize by source type
|
||||
|
||||
---
|
||||
|
||||
## Quality Standards
|
||||
|
||||
### Content Depth
|
||||
- Each section must meet minimum word count targets
|
||||
- Analysis should be substantive, not just descriptive
|
||||
- Use specific examples and quantitative data
|
||||
- Cite sources throughout
|
||||
- Maintain objectivity and balance
|
||||
|
||||
### Management Bios
|
||||
- 300-400 words per executive for 3-4 key executives
|
||||
- Must include: current role, prior experience, key accomplishments, education
|
||||
- Provide enough detail to assess track record and capabilities
|
||||
|
||||
### Competitive Analysis
|
||||
- Must analyze 5-10 specific competitors
|
||||
- Include both direct and indirect competitors
|
||||
- Assess relative positioning on key dimensions
|
||||
- Identify company's competitive advantages and vulnerabilities
|
||||
- Use specific data and examples
|
||||
|
||||
### Risk Assessment
|
||||
- Must identify 8-12 distinct risks across all four categories
|
||||
- Each risk needs 50-100 word description
|
||||
- Quantify impact where possible
|
||||
- Note mitigating factors
|
||||
- Cover all four risk categories
|
||||
|
||||
### Writing Quality
|
||||
- Professional, analytical tone
|
||||
- Lead with key insights
|
||||
- Use concrete examples and data
|
||||
- Avoid generic statements
|
||||
- Proper citations throughout
|
||||
|
||||
---
|
||||
|
||||
## Output Format
|
||||
|
||||
```
|
||||
COMPANY RESEARCH REPORT: [Company Name]
|
||||
Date: [Date]
|
||||
Analyst: [Your name if applicable]
|
||||
|
||||
TABLE OF CONTENTS
|
||||
1. Company Overview
|
||||
2. Company History
|
||||
3. Management Team
|
||||
4. Products & Services
|
||||
5. Customers & Go-to-Market
|
||||
6. Industry Overview
|
||||
7. Competitive Landscape
|
||||
8. Market Opportunity (TAM)
|
||||
9. Risk Assessment
|
||||
|
||||
======================================
|
||||
|
||||
1. COMPANY OVERVIEW (800-1,200 words)
|
||||
|
||||
[Content]
|
||||
|
||||
2. COMPANY HISTORY (800-1,200 words)
|
||||
|
||||
[Content]
|
||||
|
||||
3. MANAGEMENT TEAM (1,000-1,400 words)
|
||||
|
||||
[Name], [Title]
|
||||
[300-400 word bio]
|
||||
|
||||
[Repeat for 3-4 key executives]
|
||||
|
||||
[Governance section]
|
||||
|
||||
4. PRODUCTS & SERVICES (700-1,000 words)
|
||||
|
||||
[Content]
|
||||
|
||||
5. CUSTOMERS & GO-TO-MARKET (500-700 words)
|
||||
|
||||
[Content]
|
||||
|
||||
6. INDUSTRY OVERVIEW (800-1,200 words)
|
||||
|
||||
[Content]
|
||||
|
||||
7. COMPETITIVE LANDSCAPE (700-1,000 words)
|
||||
|
||||
[Content]
|
||||
|
||||
8. MARKET OPPORTUNITY (500-700 words)
|
||||
|
||||
[Content]
|
||||
|
||||
9. RISK ASSESSMENT (600-900 words)
|
||||
|
||||
Company-Specific Risks:
|
||||
[4-6 risks with descriptions]
|
||||
|
||||
Industry/Market Risks:
|
||||
[3-4 risks with descriptions]
|
||||
|
||||
Financial Risks:
|
||||
[2-3 risks with descriptions]
|
||||
|
||||
Macroeconomic Risks:
|
||||
[2-3 risks with descriptions]
|
||||
|
||||
======================================
|
||||
|
||||
DATA SOURCES
|
||||
[List all sources with dates and URLs]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
A successful Task 1 completion should deliver:
|
||||
|
||||
1. Meet 6,000-8,000 word target (verify word count)
|
||||
2. Include all 9 required sections with target word counts
|
||||
3. Provide substantive analysis, not just description
|
||||
4. Use specific examples and quantitative data
|
||||
5. Cite all sources properly
|
||||
6. Enable reader to understand:
|
||||
- What the company does and how it makes money
|
||||
- Quality and track record of management team
|
||||
- Company's competitive position
|
||||
- Market opportunity size
|
||||
- Key risks to consider
|
||||
|
||||
---
|
||||
|
||||
## File Naming Convention
|
||||
|
||||
Save the output as:
|
||||
|
||||
`[Company]_Research_Document_[Date].md`
|
||||
|
||||
Example: `Tesla_Research_Document_2024-10-27.md`
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After completing Task 1, the research document will be used:
|
||||
|
||||
- As standalone company analysis
|
||||
- As input for Task 2 (Financial Modeling) - provides business context for projections
|
||||
- As input for Task 4 (Chart Generation) - provides data for company/competitive charts
|
||||
- As foundation for Task 5 (Report Assembly) - Company 101 sections copied verbatim
|
||||
@@ -0,0 +1,665 @@
|
||||
# Task 2: Financial Modeling - Detailed Workflow
|
||||
|
||||
This document provides step-by-step instructions for executing Task 2 (Financial Modeling) of the anthropic-initiation-coverage skill.
|
||||
|
||||
## Task Overview
|
||||
|
||||
**Purpose**: Extract historical financials and build comprehensive Excel financial model with projections and scenarios.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Access to company financial data
|
||||
- For public companies: Latest 10-K and recent 10-Qs from SEC EDGAR
|
||||
- For private companies: Financial statements or estimates from available sources
|
||||
- OR: Pre-extracted historical financials provided by user
|
||||
- **Optional**: Company research (Task 1) for business context
|
||||
|
||||
**Output**: Excel Financial Model (.xlsx) with 6 essential tabs:
|
||||
1. Revenue Model
|
||||
2. Income Statement
|
||||
3. Cash Flow Statement
|
||||
4. Balance Sheet
|
||||
5. Scenarios
|
||||
6. DCF Inputs
|
||||
|
||||
---
|
||||
|
||||
## Input Verification
|
||||
|
||||
**BEFORE STARTING - CHECK:**
|
||||
|
||||
**Option A: Extract financials directly (most common)**
|
||||
- [ ] Have access to 10-K filings (public company)?
|
||||
- [ ] OR have access to financial statements (private company)?
|
||||
- [ ] Ready to create Excel file for historical extraction?
|
||||
|
||||
**Option B: User has pre-extracted financials**
|
||||
- [ ] Historical financials file provided? (.xlsx or other format)
|
||||
- [ ] Contains 3-5 years of income statement, cash flow, balance sheet?
|
||||
- [ ] Data is clean and ready to use?
|
||||
|
||||
**Optional Context:**
|
||||
- [ ] Company research (Task 1) complete for business understanding?
|
||||
|
||||
**IF VERIFICATION FAILS**: Stop and obtain access to financial statements (10-K or equivalent) before proceeding.
|
||||
|
||||
---
|
||||
|
||||
## Model Structure and Formatting
|
||||
|
||||
### Color Coding (Industry Standard)
|
||||
- **Blue text**: Hardcoded inputs (user can change)
|
||||
- **Black text**: Formulas and calculations
|
||||
- **Green text**: Links to other sheets
|
||||
- **Red text**: Errors or flags (should be resolved)
|
||||
|
||||
### Formatting Standards
|
||||
- Professional borders and shading
|
||||
- Clear section headers
|
||||
- Grouped rows for collapsibility
|
||||
- Named ranges for key inputs/outputs
|
||||
- No hardcoded numbers in formulas (except constants like 12 months)
|
||||
- Clear units ($ thousands, $ millions, etc.)
|
||||
|
||||
### Formula Best Practices
|
||||
- All numbers should flow from assumptions
|
||||
- Change an assumption → entire model updates
|
||||
- No circular references
|
||||
- Use named ranges for key cells
|
||||
- Keep formulas simple and auditable
|
||||
- Add comments for complex calculations
|
||||
|
||||
---
|
||||
|
||||
## Step-by-Step Modeling Workflow
|
||||
|
||||
### Step 1: Extract Historical Financials
|
||||
|
||||
**If historical financials are already extracted, skip to Step 2.**
|
||||
|
||||
**For Public Companies:**
|
||||
|
||||
1. **Download 10-K Filing**
|
||||
- Go to SEC EDGAR (https://www.sec.gov/edgar/searchedgar/companysearch.html)
|
||||
- Search for company name or ticker
|
||||
- Download latest 10-K (annual report)
|
||||
- Navigate to Item 8: Financial Statements and Supplementary Data
|
||||
|
||||
2. **Create Historical Financials Excel File**
|
||||
- File name: `[Company]_Historical_Financials_[Date].xlsx`
|
||||
- This file will be the foundation for the model
|
||||
|
||||
3. **Extract Income Statement (3-5 years)**
|
||||
- Create Sheet 1: "Historical Income Statement"
|
||||
- Extract ALL line items for 3-5 years:
|
||||
- Revenue (total and by segment if disclosed)
|
||||
- Cost of revenue / COGS
|
||||
- Gross profit
|
||||
- Operating expenses (R&D, Sales & Marketing, G&A broken out)
|
||||
- EBITDA (calculate if not disclosed: EBIT + D&A)
|
||||
- EBIT / Operating income
|
||||
- Interest expense/income
|
||||
- Other income/expense
|
||||
- Pre-tax income
|
||||
- Income tax and tax rate
|
||||
- Net income
|
||||
- EPS (basic and diluted)
|
||||
- Shares outstanding (basic and diluted)
|
||||
|
||||
4. **Extract Cash Flow Statement (3-5 years)**
|
||||
- Create Sheet 2: "Historical Cash Flow"
|
||||
- Extract ALL line items:
|
||||
- Operating activities (starting from net income)
|
||||
- Depreciation & amortization
|
||||
- Stock-based compensation
|
||||
- Changes in working capital (receivables, inventory, payables)
|
||||
- Cash from operations
|
||||
- Investing activities (CapEx, acquisitions)
|
||||
- Financing activities (debt issuance/repayment, equity, dividends)
|
||||
- Net change in cash
|
||||
- Beginning and ending cash
|
||||
|
||||
5. **Extract Balance Sheet (3-5 years)**
|
||||
- Create Sheet 3: "Historical Balance Sheet"
|
||||
- Extract ALL line items:
|
||||
- Current assets (cash, receivables, inventory, other)
|
||||
- Non-current assets (PP&E, intangibles, goodwill)
|
||||
- Total assets
|
||||
- Current liabilities (payables, accrued expenses, current debt)
|
||||
- Non-current liabilities (long-term debt, deferred taxes)
|
||||
- Total liabilities
|
||||
- Shareholders' equity (common stock, retained earnings)
|
||||
- Total liabilities + equity
|
||||
|
||||
6. **Calculate Historical Metrics**
|
||||
- Create Sheet 4: "Historical Metrics"
|
||||
- Calculate from statements:
|
||||
- Revenue growth % (YoY)
|
||||
- Gross margin %
|
||||
- EBITDA margin %
|
||||
- Operating margin %
|
||||
- Net margin %
|
||||
- Free cash flow (CFO - CapEx)
|
||||
- FCF margin %
|
||||
- ROIC (approximate: NOPAT / Invested Capital)
|
||||
- Debt/Equity ratio
|
||||
- Current ratio (Current Assets / Current Liabilities)
|
||||
|
||||
7. **Document Sources and Notes**
|
||||
- Create Sheet 5: "Notes"
|
||||
- Document:
|
||||
- 10-K filing date and fiscal year end
|
||||
- Any one-time items or adjustments noted
|
||||
- Non-GAAP vs GAAP differences
|
||||
- Segment breakdown (if revenue split by product/geography)
|
||||
- Data quality notes and limitations
|
||||
|
||||
**For Private Companies:**
|
||||
|
||||
1. **Gather Available Data**
|
||||
- Financial statements (if available)
|
||||
- Press releases with revenue figures
|
||||
- Funding announcements
|
||||
- Industry estimates or comparable company data
|
||||
|
||||
2. **Create Simplified Historical File**
|
||||
- Estimated revenue (if available)
|
||||
- Estimated margins (from comparables if needed)
|
||||
- Key ratios and metrics
|
||||
- Document all assumptions and sources
|
||||
|
||||
**Verification:**
|
||||
- [ ] All 3 financial statements extracted (3-5 years)
|
||||
- [ ] Numbers reconcile across statements (net income ties)
|
||||
- [ ] Key metrics calculated correctly
|
||||
- [ ] Excel file saved and can be opened
|
||||
- [ ] Data sources documented (10-K dates, page numbers)
|
||||
|
||||
**Foundation for projection model is now complete. Proceed to Step 2.**
|
||||
- Capital expenditures
|
||||
- Working capital items
|
||||
- Debt and interest expense
|
||||
- Share count (basic and diluted)
|
||||
|
||||
3. **Organize historical data for entry**
|
||||
- Prepare 3-5 years of actuals
|
||||
- Will be entered directly into Income Statement, Cash Flow Statement, and Balance Sheet tabs
|
||||
- Historical years in columns, projected years following
|
||||
|
||||
4. **Calculate historical trends**
|
||||
- Revenue CAGR
|
||||
- Margin progression
|
||||
- OpEx leverage
|
||||
- Working capital patterns
|
||||
- CapEx as % of revenue
|
||||
- These trends will inform projection assumptions
|
||||
|
||||
**Note**: Assumptions will be documented directly in each tab as blue text inputs, not in a separate tab.
|
||||
|
||||
### Step 2: Model Revenue
|
||||
|
||||
**CRITICAL: This is the most important and detailed part of the model.**
|
||||
|
||||
#### A. Revenue by Product/Category (20-30 rows)
|
||||
|
||||
Create detailed table:
|
||||
```
|
||||
2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
Product Category A
|
||||
Sub-product A1 XX XX XX XX XX XX XX XX XX
|
||||
Sub-product A2 XX XX XX XX XX XX XX XX XX
|
||||
Sub-product A3 XX XX XX XX XX XX XX XX XX
|
||||
Category A Total XX XX XX XX XX XX XX XX XX
|
||||
% of Total Rev X% X% X% X% X% X% X% X% X%
|
||||
YoY Growth % - X% X% X% X% X% X% X% X%
|
||||
|
||||
Product Category B
|
||||
[Similar structure]
|
||||
|
||||
[Continue for all product categories]
|
||||
|
||||
Services Revenue XX XX XX XX XX XX XX XX XX
|
||||
Other Revenue XX XX XX XX XX XX XX XX XX
|
||||
|
||||
TOTAL REVENUE XX XX XX XX XX XX XX XX XX
|
||||
Total Revenue Growth % - X% X% X% X% X% X% X% X%
|
||||
```
|
||||
|
||||
**Key Requirements:**
|
||||
- Show absolute revenue ($M) for each category
|
||||
- Calculate % of total revenue for each category
|
||||
- Show YoY growth % for each category
|
||||
- Must have granular sub-categories (not just 3-5 top-level categories)
|
||||
- Show mix shift over time
|
||||
- Link all projections to Assumptions tab
|
||||
|
||||
#### B. Revenue by Geography (15-20 rows)
|
||||
|
||||
Create detailed table:
|
||||
```
|
||||
2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
North America
|
||||
United States XX XX XX XX XX XX XX XX XX
|
||||
Canada XX XX XX XX XX XX XX XX XX
|
||||
Mexico XX XX XX XX XX XX XX XX XX
|
||||
NA Total XX XX XX XX XX XX XX XX XX
|
||||
% of Total X% X% X% X% X% X% X% X% X%
|
||||
YoY Growth % - X% X% X% X% X% X% X% X%
|
||||
|
||||
Europe
|
||||
UK XX XX XX XX XX XX XX XX XX
|
||||
Germany XX XX XX XX XX XX XX XX XX
|
||||
France XX XX XX XX XX XX XX XX XX
|
||||
Other Europe XX XX XX XX XX XX XX XX XX
|
||||
Europe Total XX XX XX XX XX XX XX XX XX
|
||||
% of Total X% X% X% X% X% X% X% X% X%
|
||||
YoY Growth % - X% X% X% X% X% X% X% X%
|
||||
|
||||
Asia-Pacific
|
||||
[Similar structure]
|
||||
|
||||
Rest of World
|
||||
[Similar structure]
|
||||
|
||||
TOTAL REVENUE XX XX XX XX XX XX XX XX XX
|
||||
```
|
||||
|
||||
**Verification:**
|
||||
- Revenue by product total = Revenue by geography total = Total revenue
|
||||
- All percentages sum to 100%
|
||||
- Growth rates calculated correctly
|
||||
|
||||
#### C. Revenue by Channel (if applicable)
|
||||
|
||||
```
|
||||
2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
Direct Sales XX XX XX XX XX XX XX XX XX
|
||||
E-commerce/Online XX XX XX XX XX XX XX XX XX
|
||||
Wholesale/Partner XX XX XX XX XX XX XX XX XX
|
||||
Retail Stores
|
||||
Company-owned stores XX XX XX XX XX XX XX XX XX
|
||||
Store count XX XX XX XX XX XX XX XX XX
|
||||
Sales per store XX XX XX XX XX XX XX XX XX
|
||||
Other Channels XX XX XX XX XX XX XX XX XX
|
||||
|
||||
TOTAL REVENUE XX XX XX XX XX XX XX XX XX
|
||||
```
|
||||
|
||||
### Step 3: Model Operating Expenses
|
||||
|
||||
#### A. Cost of Revenue
|
||||
1. **Break down COGS components**
|
||||
- Product costs (materials, manufacturing)
|
||||
- Shipping and logistics
|
||||
- Service delivery costs
|
||||
- Other direct costs
|
||||
|
||||
2. **Link to revenue**
|
||||
- Calculate COGS as % of revenue
|
||||
- Model gross margin by year
|
||||
- Link to Assumptions tab
|
||||
|
||||
#### B. R&D Expenses
|
||||
```
|
||||
Research & Development 2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
R&D Headcount XX XX XX XX XX XX XX XX XX
|
||||
R&D Comp per head XX XX XX XX XX XX XX XX XX
|
||||
R&D Personnel Costs XX XX XX XX XX XX XX XX XX
|
||||
R&D Other Costs XX XX XX XX XX XX XX XX XX
|
||||
Total R&D XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
```
|
||||
|
||||
#### C. Sales & Marketing Expenses
|
||||
```
|
||||
Sales & Marketing 2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
S&M Headcount XX XX XX XX XX XX XX XX XX
|
||||
S&M Comp per head XX XX XX XX XX XX XX XX XX
|
||||
S&M Personnel Costs XX XX XX XX XX XX XX XX XX
|
||||
Marketing Spend XX XX XX XX XX XX XX XX XX
|
||||
S&M Other Costs XX XX XX XX XX XX XX XX XX
|
||||
Total S&M XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
```
|
||||
|
||||
#### D. General & Administrative
|
||||
```
|
||||
G&A 2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
G&A Headcount XX XX XX XX XX XX XX XX XX
|
||||
G&A Comp per head XX XX XX XX XX XX XX XX XX
|
||||
G&A Personnel Costs XX XX XX XX XX XX XX XX XX
|
||||
G&A Other Costs XX XX XX XX XX XX XX XX XX
|
||||
Total G&A XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
```
|
||||
|
||||
#### E. Depreciation & Amortization
|
||||
- Link to CapEx schedule
|
||||
- Apply depreciation rates from Assumptions
|
||||
- Calculate annual D&A
|
||||
|
||||
### Step 4: Build Income Statement
|
||||
|
||||
**Create full P&L with 40-50 line items:**
|
||||
|
||||
```
|
||||
INCOME STATEMENT 2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
|
||||
REVENUE
|
||||
[Link to Revenue Model tab]
|
||||
Total Revenue XX XX XX XX XX XX XX XX XX
|
||||
YoY Growth % - X% X% X% X% X% X% X% X%
|
||||
|
||||
COST OF REVENUE
|
||||
[Link to COGS breakdown]
|
||||
Total COGS XX XX XX XX XX XX XX XX XX
|
||||
|
||||
GROSS PROFIT XX XX XX XX XX XX XX XX XX
|
||||
Gross Margin % X% X% X% X% X% X% X% X% X%
|
||||
|
||||
OPERATING EXPENSES
|
||||
Total R&D XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
Total S&M XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
Total G&A XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
Depreciation & Amort. XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Total Operating Exp. XX XX XX XX XX XX XX XX XX
|
||||
% of Revenue X% X% X% X% X% X% X% X% X%
|
||||
|
||||
EBITDA XX XX XX XX XX XX XX XX XX
|
||||
EBITDA Margin % X% X% X% X% X% X% X% X% X%
|
||||
|
||||
EBIT XX XX XX XX XX XX XX XX XX
|
||||
EBIT Margin % X% X% X% X% X% X% X% X% X%
|
||||
|
||||
Interest expense (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Interest income XX XX XX XX XX XX XX XX XX
|
||||
Other income/(expense) XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Pre-tax income XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Income tax (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Tax rate % X% X% X% X% X% X% X% X% X%
|
||||
|
||||
NET INCOME XX XX XX XX XX XX XX XX XX
|
||||
Net Margin % X% X% X% X% X% X% X% X% X%
|
||||
|
||||
SHARES OUTSTANDING
|
||||
Basic shares (M) XX XX XX XX XX XX XX XX XX
|
||||
Diluted shares (M) XX XX XX XX XX XX XX XX XX
|
||||
|
||||
EARNINGS PER SHARE
|
||||
Basic EPS $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX
|
||||
Diluted EPS $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX $X.XX
|
||||
```
|
||||
|
||||
### Step 5: Build Cash Flow Statement
|
||||
|
||||
```
|
||||
CASH FLOW STATEMENT 2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
|
||||
OPERATING ACTIVITIES
|
||||
Net Income XX XX XX XX XX XX XX XX XX
|
||||
Adjustments:
|
||||
Depreciation & Amort. XX XX XX XX XX XX XX XX XX
|
||||
Stock-based comp XX XX XX XX XX XX XX XX XX
|
||||
Other non-cash XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Changes in WC:
|
||||
Accounts Receivable (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Inventory (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Accounts Payable XX XX XX XX XX XX XX XX XX
|
||||
Other working capital (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
|
||||
Cash from Operations XX XX XX XX XX XX XX XX XX
|
||||
|
||||
INVESTING ACTIVITIES
|
||||
Capital Expenditures (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Acquisitions (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Other investing XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Cash from Investing (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
|
||||
FREE CASH FLOW XX XX XX XX XX XX XX XX XX
|
||||
FCF Margin % X% X% X% X% X% X% X% X% X%
|
||||
|
||||
FINANCING ACTIVITIES
|
||||
Debt issuance XX XX XX XX XX XX XX XX XX
|
||||
Debt repayment (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Equity issuance XX XX XX XX XX XX XX XX XX
|
||||
Dividends paid (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Other financing XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Cash from Financing XX XX XX XX XX XX XX XX XX
|
||||
|
||||
NET CHANGE IN CASH XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Beginning Cash XX XX XX XX XX XX XX XX XX
|
||||
Ending Cash XX XX XX XX XX XX XX XX XX
|
||||
```
|
||||
|
||||
### Step 6: Build Balance Sheet
|
||||
|
||||
Create full balance sheet with 35-45 line items:
|
||||
|
||||
```
|
||||
BALANCE SHEET 2021A 2022A 2023A 2024A 2025E 2026E 2027E 2028E 2029E
|
||||
|
||||
ASSETS
|
||||
Current Assets:
|
||||
Cash & Equivalents XX XX XX XX XX XX XX XX XX
|
||||
Accounts Receivable XX XX XX XX XX XX XX XX XX
|
||||
Inventory XX XX XX XX XX XX XX XX XX
|
||||
Prepaid expenses XX XX XX XX XX XX XX XX XX
|
||||
Other current assets XX XX XX XX XX XX XX XX XX
|
||||
Total Current Assets XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Non-Current Assets:
|
||||
PP&E, gross XX XX XX XX XX XX XX XX XX
|
||||
Accumulated Depr. (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
PP&E, net XX XX XX XX XX XX XX XX XX
|
||||
Intangible assets XX XX XX XX XX XX XX XX XX
|
||||
Goodwill XX XX XX XX XX XX XX XX XX
|
||||
Other non-current XX XX XX XX XX XX XX XX XX
|
||||
Total Non-Current XX XX XX XX XX XX XX XX XX
|
||||
|
||||
TOTAL ASSETS XX XX XX XX XX XX XX XX XX
|
||||
|
||||
LIABILITIES
|
||||
Current Liabilities:
|
||||
Accounts Payable XX XX XX XX XX XX XX XX XX
|
||||
Accrued expenses XX XX XX XX XX XX XX XX XX
|
||||
Deferred revenue XX XX XX XX XX XX XX XX XX
|
||||
Current debt XX XX XX XX XX XX XX XX XX
|
||||
Other current liab. XX XX XX XX XX XX XX XX XX
|
||||
Total Current Liab. XX XX XX XX XX XX XX XX XX
|
||||
|
||||
Non-Current Liabilities:
|
||||
Long-term debt XX XX XX XX XX XX XX XX XX
|
||||
Deferred taxes XX XX XX XX XX XX XX XX XX
|
||||
Other non-current XX XX XX XX XX XX XX XX XX
|
||||
Total Non-Current Liab. XX XX XX XX XX XX XX XX XX
|
||||
|
||||
TOTAL LIABILITIES XX XX XX XX XX XX XX XX XX
|
||||
|
||||
EQUITY
|
||||
Common stock XX XX XX XX XX XX XX XX XX
|
||||
Additional paid-in XX XX XX XX XX XX XX XX XX
|
||||
Retained earnings XX XX XX XX XX XX XX XX XX
|
||||
Treasury stock (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX) (XX)
|
||||
Other equity XX XX XX XX XX XX XX XX XX
|
||||
TOTAL EQUITY XX XX XX XX XX XX XX XX XX
|
||||
|
||||
TOTAL LIAB + EQUITY XX XX XX XX XX XX XX XX XX
|
||||
|
||||
BALANCE CHECK OK OK OK OK OK OK OK OK OK
|
||||
```
|
||||
|
||||
**Balance Check Formula:**
|
||||
- Total Assets must equal Total Liabilities + Equity for each year
|
||||
- Flag any imbalances in red
|
||||
|
||||
### Step 7: Build DCF Inputs Tab
|
||||
|
||||
Prepare inputs for valuation (Task 3):
|
||||
|
||||
```
|
||||
DCF INPUTS 2025E 2026E 2027E 2028E 2029E
|
||||
|
||||
EBIT XX XX XX XX XX
|
||||
Tax Rate X% X% X% X% X%
|
||||
NOPAT XX XX XX XX XX
|
||||
|
||||
Add: D&A XX XX XX XX XX
|
||||
Less: CapEx (XX) (XX) (XX) (XX) (XX)
|
||||
Less: Chg in NWC (XX) (XX) (XX) (XX) (XX)
|
||||
|
||||
UNLEVERED FCF XX XX XX XX XX
|
||||
|
||||
Terminal Year Metrics:
|
||||
2029E Revenue $X,XXX
|
||||
2029E EBITDA $XXX
|
||||
2029E EBIT $XXX
|
||||
2029E Unlevered FCF $XXX
|
||||
```
|
||||
|
||||
### Step 8: Build Scenarios Tab
|
||||
|
||||
Create three scenarios with different assumptions:
|
||||
|
||||
#### Scenario Assumptions Table
|
||||
```
|
||||
Assumption Bull Base Bear
|
||||
Revenue CAGR (2025-2029) XX% XX% XX%
|
||||
Gross Margin 2029E XX% XX% XX%
|
||||
EBITDA Margin 2029E XX% XX% XX%
|
||||
CapEx as % of Revenue X% X% X%
|
||||
[Add other key assumptions]
|
||||
```
|
||||
|
||||
#### Scenario Output Table
|
||||
```
|
||||
Metric Bull Base Bear
|
||||
2029E Revenue ($M) $X,XXX $X,XXX $X,XXX
|
||||
2029E EBITDA ($M) $XXX $XXX $XXX
|
||||
2029E EBITDA Margin XX% XX% XX%
|
||||
2029E Net Income ($M) $XXX $XXX $XXX
|
||||
2029E EPS $X.XX $X.XX $X.XX
|
||||
2029E FCF ($M) $XXX $XXX $XXX
|
||||
2029E FCF Margin XX% XX% XX%
|
||||
|
||||
Cumulative FCF 2025-2029 ($M) $XXX $XXX $XXX
|
||||
```
|
||||
|
||||
**Document scenario rationale:**
|
||||
- Bull case: [Describe optimistic but achievable assumptions]
|
||||
- Base case: [Describe most likely scenario]
|
||||
- Bear case: [Describe downside risks and triggers]
|
||||
|
||||
### Step 9: Quality Check
|
||||
|
||||
**Verify model integrity:**
|
||||
1. [ ] Test all formulas (spot check calculations)
|
||||
2. [ ] Change assumption → verify model updates correctly
|
||||
3. [ ] Test scenario switching
|
||||
4. [ ] Verify color coding (blue/black/green)
|
||||
5. [ ] Check balance sheet balances for all years
|
||||
6. [ ] Verify no circular references (Excel will flag)
|
||||
7. [ ] Check for hardcoded numbers in projections
|
||||
8. [ ] Verify all cross-sheet links work
|
||||
9. [ ] Test that revenue totals tie across all tabs
|
||||
10. [ ] Review formatting and presentation
|
||||
|
||||
---
|
||||
|
||||
## Quality Standards
|
||||
|
||||
### Model Integrity
|
||||
- All formulas link properly across sheets
|
||||
- No hardcoded numbers in projections (except in Assumptions tab)
|
||||
- No circular references
|
||||
- Balance sheet balances for all years
|
||||
- Scenario switching works properly
|
||||
|
||||
### Completeness
|
||||
- All 6 essential tabs: Revenue Model, Income Statement, Cash Flow Statement, Balance Sheet, Scenarios, DCF Inputs
|
||||
- 40-50 line items in Income Statement
|
||||
- 20-30 rows in Revenue Model (product breakdown)
|
||||
- 15-20 rows in Revenue Model (geography breakdown)
|
||||
- Full cash flow and balance sheet with all line items
|
||||
- Bull/Base/Bear scenarios complete
|
||||
|
||||
### Professional Formatting
|
||||
- Consistent color coding (blue/black/green)
|
||||
- Clear headers and labels
|
||||
- Proper borders and shading
|
||||
- Named ranges for key cells
|
||||
- Grouped rows for collapsibility
|
||||
- Units clearly labeled ($ thousands vs. $ millions)
|
||||
|
||||
### Documentation
|
||||
- Assumptions documented with rationale (blue text cells with comments)
|
||||
- Data sources noted in cell comments or notes section within tabs
|
||||
- Complex calculations explained with comments
|
||||
- Methodology described
|
||||
|
||||
---
|
||||
|
||||
## File Naming Convention
|
||||
|
||||
Save the financial model as:
|
||||
`[Company]_Financial_Model_[Date].xlsx`
|
||||
|
||||
Example: `Tesla_Financial_Model_2024-10-27.xlsx`
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
A successful financial model should:
|
||||
1. Have all 6 essential tabs (Revenue Model, Income Statement, Cash Flow Statement, Balance Sheet, Scenarios, DCF Inputs)
|
||||
2. Be fully dynamic (change assumption → model updates)
|
||||
3. Have no hardcoded numbers in projections
|
||||
4. Include detailed revenue breakdowns (20-30 rows by product, 15-20 rows by geography)
|
||||
5. Contain 40-50 line items in Income Statement
|
||||
6. Include Bull/Base/Bear scenarios
|
||||
7. Be professionally formatted with color coding
|
||||
8. Balance properly (balance sheet, cash flows)
|
||||
9. Be auditable and easy to follow
|
||||
10. Support valuation analysis with proper FCF calculations
|
||||
|
||||
---
|
||||
|
||||
## Common Model Types - Special Considerations
|
||||
|
||||
### High-Growth Tech/SaaS
|
||||
- Focus on ARR growth and net retention
|
||||
- Model by product line and geography
|
||||
- Heavy R&D and S&M spend
|
||||
- Path to profitability timeline
|
||||
- Unit economics (LTV/CAC)
|
||||
|
||||
### E-commerce/Retail
|
||||
- Revenue by product category and channel
|
||||
- Store count and comp store growth (if applicable)
|
||||
- Inventory turns and working capital
|
||||
- Fulfillment costs
|
||||
- Customer acquisition
|
||||
|
||||
### Manufacturing/Industrial
|
||||
- Production capacity utilization
|
||||
- Raw material costs and pricing
|
||||
- Gross margin bridge (volume/price/mix/cost)
|
||||
- CapEx heavy models
|
||||
- Working capital cycles
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After completing Task 2, the financial model will be used for:
|
||||
- **Task 3 (Valuation)**: DCF inputs, projected financials
|
||||
- **Task 4 (Charts)**: Data for revenue trends, margin charts, scenario comparisons
|
||||
- **Task 5 (Report Assembly)**: Financial data for report tables and analysis
|
||||
@@ -0,0 +1,698 @@
|
||||
# Task 3: Valuation Analysis - Detailed Workflow
|
||||
|
||||
This document provides step-by-step instructions for executing Task 3 (Valuation Analysis) of the anthropic-initiation-coverage skill.
|
||||
|
||||
## Task Overview
|
||||
|
||||
**Purpose**: Perform comprehensive valuation using DCF, comparables, and precedent transactions.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Financial model from Task 2
|
||||
- Projected income statements
|
||||
- Projected cash flows
|
||||
- Revenue and EBITDA forecasts
|
||||
- DCF inputs (unlevered FCF)
|
||||
|
||||
**⚠️ CRITICAL: DO NOT START THIS TASK UNLESS TASK 2 IS COMPLETE**
|
||||
|
||||
This task requires the financial model from Task 2. Starting without it will result in incomplete work.
|
||||
|
||||
**IF TASK 2 IS NOT COMPLETE**: Stop immediately and inform the user that Task 2 (Financial Modeling) must be completed first. Do not attempt to proceed or create placeholder valuations.
|
||||
|
||||
**Output**: Valuation Analysis (4-6 pages + Excel tabs)
|
||||
- DCF analysis with sensitivity tables
|
||||
- Comparable companies analysis
|
||||
- Precedent transactions (if applicable)
|
||||
- Valuation football field
|
||||
- Price target and recommendation
|
||||
|
||||
---
|
||||
|
||||
## Input Verification
|
||||
|
||||
**BEFORE STARTING - CHECK:**
|
||||
- [ ] Task 2 complete? (Financial model exists)
|
||||
- [ ] Model file path/location known?
|
||||
- [ ] Can access projected financials from model?
|
||||
|
||||
**Required from model:**
|
||||
- [ ] Projected FCF (5 years)
|
||||
- [ ] Revenue projections
|
||||
- [ ] EBITDA projections
|
||||
- [ ] Terminal year metrics
|
||||
- [ ] Balance sheet data (debt, cash, shares)
|
||||
|
||||
**IF VERIFICATION FAILS**: Stop and complete Task 2 (Financial Modeling) before proceeding.
|
||||
|
||||
---
|
||||
|
||||
## Detailed Methodology Reference
|
||||
|
||||
For deep dive on valuation methodologies, formulas, and theory, see:
|
||||
**[valuation-methodologies.md](valuation-methodologies.md)**
|
||||
|
||||
This workflow document focuses on execution steps. Reference the methodology file for:
|
||||
- DCF theory and formulas
|
||||
- WACC calculation details
|
||||
- Terminal value methods
|
||||
- Comparable companies theory
|
||||
- Precedent transactions theory
|
||||
|
||||
---
|
||||
|
||||
## Step-by-Step Valuation Workflow
|
||||
|
||||
### Step 1: Extract Data from Financial Model
|
||||
|
||||
**From Task 2's financial model, extract:**
|
||||
|
||||
1. **Projected Financials (5 years)**
|
||||
- Revenue by year (2025E-2029E)
|
||||
- EBITDA by year
|
||||
- EBIT by year
|
||||
- Tax rate
|
||||
- D&A by year
|
||||
- CapEx by year
|
||||
- Change in NWC by year
|
||||
|
||||
2. **Unlevered Free Cash Flow**
|
||||
```
|
||||
Extract from DCF Inputs tab in financial model:
|
||||
|
||||
2025E 2026E 2027E 2028E 2029E
|
||||
EBIT $XXX $XXX $XXX $XXX $XXX
|
||||
× (1 - Tax Rate)
|
||||
= NOPAT $XXX $XXX $XXX $XXX $XXX
|
||||
+ D&A $XXX $XXX $XXX $XXX $XXX
|
||||
- CapEx ($XX) ($XX) ($XX) ($XX) ($XX)
|
||||
- Chg in NWC ($XX) ($XX) ($XX) ($XX) ($XX)
|
||||
= Unlevered FCF $XXX $XXX $XXX $XXX $XXX
|
||||
```
|
||||
|
||||
3. **Balance Sheet Data (current)**
|
||||
- Total debt
|
||||
- Cash & equivalents
|
||||
- Net debt (Debt - Cash)
|
||||
- Diluted shares outstanding
|
||||
|
||||
4. **Scenario Data**
|
||||
- Bull case revenue CAGR and terminal margin
|
||||
- Base case revenue CAGR and terminal margin
|
||||
- Bear case revenue CAGR and terminal margin
|
||||
|
||||
### Step 2: Build DCF Analysis
|
||||
|
||||
#### A. Calculate WACC
|
||||
|
||||
**1. Determine Risk-Free Rate**
|
||||
- Use 10-year Treasury yield (check current rate)
|
||||
- Example: 4.0-4.5% as of late 2024
|
||||
|
||||
**2. Determine Cost of Equity (CAPM)**
|
||||
```
|
||||
Cost of Equity = Risk-Free Rate + Beta × Equity Risk Premium
|
||||
|
||||
Inputs:
|
||||
- Risk-Free Rate: [Current 10-year Treasury, e.g., 4.2%]
|
||||
- Beta: [Company beta from Bloomberg/FactSet or peer average]
|
||||
- Equity Risk Premium: 5-6% (historical average)
|
||||
|
||||
Example:
|
||||
Cost of Equity = 4.2% + 1.3 × 5.5% = 11.35%
|
||||
```
|
||||
|
||||
**3. Determine Cost of Debt**
|
||||
```
|
||||
Cost of Debt = Current borrowing rate or implied yield on bonds
|
||||
|
||||
For private companies:
|
||||
Cost of Debt = Risk-Free Rate + Credit Spread (based on rating)
|
||||
|
||||
Example:
|
||||
Cost of Debt (pre-tax) = 6.5%
|
||||
Cost of Debt (after-tax) = 6.5% × (1 - 25% tax rate) = 4.875%
|
||||
```
|
||||
|
||||
**4. Determine Capital Structure**
|
||||
```
|
||||
Use market values (not book values):
|
||||
|
||||
Market Value of Equity (E) = Share Price × Shares Outstanding
|
||||
Market Value of Debt (D) = Total Debt (use book value if bonds not traded)
|
||||
Total Value (V) = E + D
|
||||
|
||||
Weight of Equity = E / V
|
||||
Weight of Debt = D / V
|
||||
|
||||
Example:
|
||||
E = $5,000M (90.9%)
|
||||
D = $500M (9.1%)
|
||||
V = $5,500M (100%)
|
||||
```
|
||||
|
||||
**5. Calculate WACC**
|
||||
```
|
||||
WACC = (E/V × Cost of Equity) + (D/V × Cost of Debt × (1 - Tax Rate))
|
||||
|
||||
Example:
|
||||
WACC = (90.9% × 11.35%) + (9.1% × 6.5% × (1 - 25%))
|
||||
WACC = 10.32% + 0.44% = 10.76%
|
||||
|
||||
Round to: 10.8% for base case
|
||||
```
|
||||
|
||||
#### B. Calculate Terminal Value
|
||||
|
||||
**Method 1: Perpetuity Growth (Preferred)**
|
||||
```
|
||||
Terminal Value = FCF(2029) × (1 + g) / (WACC - g)
|
||||
|
||||
Where:
|
||||
- FCF(2029) = Final year unlevered FCF from model
|
||||
- g = Perpetual growth rate (typically 2.0-3.0%)
|
||||
- Should not exceed long-term GDP growth
|
||||
- Use 2.5% as base case
|
||||
|
||||
Example:
|
||||
FCF(2029) = $500M
|
||||
g = 2.5%
|
||||
WACC = 10.8%
|
||||
|
||||
Terminal Value = $500M × (1.025) / (0.108 - 0.025)
|
||||
Terminal Value = $512.5M / 0.083 = $6,175M
|
||||
```
|
||||
|
||||
**Method 2: Exit Multiple (Alternative)**
|
||||
```
|
||||
Terminal Value = EBITDA(2029) × Exit Multiple
|
||||
|
||||
Where:
|
||||
- Exit Multiple = Current peer trading median (e.g., 12-15x EBITDA)
|
||||
|
||||
Example:
|
||||
EBITDA(2029) = $800M
|
||||
Exit Multiple = 13x
|
||||
|
||||
Terminal Value = $800M × 13x = $10,400M
|
||||
```
|
||||
|
||||
**Choose one method or average both.**
|
||||
|
||||
#### C. Discount Cash Flows to Present Value
|
||||
|
||||
```
|
||||
PV of Projected FCF = Σ [FCFt / (1 + WACC)^t] for t = 1 to 5
|
||||
|
||||
Example:
|
||||
Year FCF Discount PV of FCF
|
||||
($M) Factor ($M)
|
||||
2025 $250 1/(1.108)^1 = 0.9026 $226
|
||||
2026 $320 1/(1.108)^2 = 0.8147 $261
|
||||
2027 $390 1/(1.108)^3 = 0.7353 $287
|
||||
2028 $450 1/(1.108)^4 = 0.6636 $299
|
||||
2029 $500 1/(1.108)^5 = 0.5988 $299
|
||||
Total PV: $1,372M
|
||||
|
||||
PV of Terminal Value = Terminal Value / (1 + WACC)^5
|
||||
PV of Terminal Value = $6,175M / (1.108)^5 = $6,175M × 0.5988 = $3,697M
|
||||
|
||||
Enterprise Value = $1,372M + $3,697M = $5,069M
|
||||
```
|
||||
|
||||
#### D. Calculate Equity Value and Price Per Share
|
||||
|
||||
```
|
||||
Enterprise Value $5,069M
|
||||
- Net Debt (Debt - Cash) ($450M)
|
||||
+ Non-operating Assets $0M
|
||||
- Minority Interest $0M
|
||||
- Preferred Stock $0M
|
||||
= Equity Value $4,619M
|
||||
|
||||
Diluted Shares Outstanding 100M
|
||||
|
||||
Price Per Share = $4,619M / 100M = $46.19
|
||||
|
||||
Current Stock Price: $42.00
|
||||
Implied Upside: 10.0%
|
||||
```
|
||||
|
||||
#### E. DCF Sensitivity Analysis **CRITICAL**
|
||||
|
||||
**Table 1: WACC vs. Terminal Growth Rate**
|
||||
|
||||
Create 2-way sensitivity table:
|
||||
```
|
||||
Price Per Share ($) Terminal Growth Rate
|
||||
WACC 1.5% 2.0% 2.5% 3.0% 3.5%
|
||||
9.0% $52 $55 $59 $63 $68
|
||||
9.5% $48 $51 $54 $58 $62
|
||||
10.0% $45 $48 $51 $54 $57
|
||||
10.5% $42 $45 $47 $50 $53
|
||||
11.0% $40 $42 $44 $47 $50
|
||||
11.5% $38 $40 $42 $44 $47
|
||||
12.0% $36 $38 $40 $42 $44
|
||||
|
||||
Base Case: WACC = 10.8%, g = 2.5% → $46
|
||||
Format as heatmap: Green (high values) → Yellow → Red (low values)
|
||||
```
|
||||
|
||||
**Table 2: Revenue CAGR vs. Terminal EBITDA Margin**
|
||||
```
|
||||
Price Per Share ($) Terminal EBITDA Margin (2029E)
|
||||
Revenue CAGR 28% 30% 32% 34% 36%
|
||||
15% $38 $42 $46 $50 $54
|
||||
20% $42 $46 $51 $56 $61
|
||||
25% $46 $51 $56 $62 $68
|
||||
30% $51 $56 $62 $68 $75
|
||||
35% $56 $62 $68 $75 $83
|
||||
|
||||
Base Case: Rev CAGR = 25%, EBITDA Margin = 32% → $56
|
||||
```
|
||||
|
||||
### Step 3: Comparable Companies Analysis
|
||||
|
||||
#### A. Select Comparable Companies
|
||||
|
||||
**Selection Criteria:**
|
||||
- Same industry/sector (primary requirement)
|
||||
- Similar business model
|
||||
- Comparable size (market cap, revenue)
|
||||
- Similar growth profile
|
||||
- Similar geographies
|
||||
|
||||
**Identify 5-10 peer companies:**
|
||||
1. [Peer 1] - Direct competitor
|
||||
2. [Peer 2] - Direct competitor
|
||||
3. [Peer 3] - Adjacent player
|
||||
4. [Peer 4] - Similar business model
|
||||
5. [Peer 5] - Regional competitor
|
||||
6. [Add 3-5 more]
|
||||
|
||||
**Document rationale for each peer selected.**
|
||||
|
||||
#### B. Gather Peer Financial Data
|
||||
|
||||
**For each comparable, gather:**
|
||||
- Current stock price
|
||||
- Shares outstanding (diluted)
|
||||
- Market capitalization
|
||||
- Total debt and cash (for EV calculation)
|
||||
- Enterprise value
|
||||
- LTM (Last Twelve Months) financials:
|
||||
- Revenue
|
||||
- EBITDA
|
||||
- EBIT
|
||||
- Net Income
|
||||
- NTM (Next Twelve Months) consensus estimates
|
||||
- Revenue growth rate
|
||||
- EBITDA margin
|
||||
|
||||
**Data sources:**
|
||||
- FactSet, CapitalIQ, Bloomberg (preferred)
|
||||
- Company 10-Ks/10-Qs for actuals
|
||||
- Consensus estimates from Yahoo Finance, Seeking Alpha (if pro tools unavailable)
|
||||
|
||||
#### C. Calculate Valuation Multiples
|
||||
|
||||
**For each peer, calculate:**
|
||||
```
|
||||
EV/Revenue (LTM) = Enterprise Value / LTM Revenue
|
||||
EV/Revenue (NTM) = Enterprise Value / NTM Revenue (est.)
|
||||
EV/EBITDA (LTM) = Enterprise Value / LTM EBITDA
|
||||
EV/EBITDA (NTM) = Enterprise Value / NTM EBITDA (est.)
|
||||
P/E (NTM) = Market Cap / NTM Net Income (est.)
|
||||
```
|
||||
|
||||
#### D. Create Comparable Companies Table (MANDATORY FORMAT)
|
||||
|
||||
```
|
||||
COMPARABLE COMPANIES ANALYSIS
|
||||
|
||||
Company Ticker Mkt Cap EV/Rev EV/Rev EV/EBITDA EV/EBITDA P/E Rev EBITDA
|
||||
($B) LTM NTM LTM NTM NTM Growth Margin
|
||||
Peer A PRA 45.2 3.5x 3.2x 15.2x 13.8x 25x 18% 23%
|
||||
Peer B PRB 32.8 3.2x 2.9x 14.1x 12.5x 22x 15% 23%
|
||||
Peer C PRC 28.5 2.8x 2.6x 12.8x 11.2x 20x 12% 22%
|
||||
Peer D PRD 52.1 4.1x 3.7x 17.5x 15.2x 29x 22% 23%
|
||||
Peer E PRE 38.9 3.6x 3.3x 15.8x 14.1x 25x 17% 23%
|
||||
Peer F PRF 41.2 3.7x 3.4x 16.1x 13.9x 26x 19% 23%
|
||||
Peer G PRG 35.5 3.3x 3.0x 14.5x 12.8x 23x 16% 22%
|
||||
|
||||
[Target] TRGT 38.0 3.4x 3.1x 14.8x 13.0x 24x 17% 23%
|
||||
|
||||
STATISTICAL SUMMARY
|
||||
Maximum 52.1 4.1x 3.7x 17.5x 15.2x 29x 22% 23%
|
||||
75th Percentile 45.2 3.7x 3.4x 16.1x 14.1x 26x 19% 23%
|
||||
Median 38.9 3.5x 3.2x 15.2x 13.8x 25x 17% 23%
|
||||
25th Percentile 32.8 3.2x 2.9x 14.1x 12.5x 22x 15% 22%
|
||||
Minimum 28.5 2.8x 2.6x 12.8x 11.2x 20x 12% 22%
|
||||
|
||||
Note: Market data as of [Date]. LTM = Last Twelve Months. NTM = Next Twelve Months.
|
||||
Source: FactSet, company filings, [Analyst] estimates.
|
||||
```
|
||||
|
||||
**CRITICAL**: The statistical summary (max/75th/median/25th/min) is MANDATORY.
|
||||
|
||||
#### E. Apply Multiples to Target Company
|
||||
|
||||
**Choose primary multiple (typically EV/EBITDA for mature companies):**
|
||||
|
||||
```
|
||||
Target Company NTM EBITDA = $550M (from financial model)
|
||||
|
||||
Apply Median Peer Multiple:
|
||||
Peer Median EV/EBITDA (NTM) = 13.8x
|
||||
Implied EV = $550M × 13.8x = $7,590M
|
||||
|
||||
Apply 25th Percentile (Conservative):
|
||||
25th Percentile EV/EBITDA (NTM) = 12.5x
|
||||
Implied EV = $550M × 12.5x = $6,875M
|
||||
|
||||
Apply 75th Percentile (Optimistic):
|
||||
75th Percentile EV/EBITDA (NTM) = 14.1x
|
||||
Implied EV = $550M × 14.1x = $7,755M
|
||||
|
||||
Valuation Range (Comps): $6,875M - $7,755M
|
||||
Midpoint: $7,315M
|
||||
|
||||
Convert to Equity Value:
|
||||
Implied EV (Median) $7,590M
|
||||
- Net Debt ($450M)
|
||||
= Implied Equity Value $7,140M
|
||||
|
||||
Shares Outstanding 100M
|
||||
Implied Price/Share $71.40
|
||||
```
|
||||
|
||||
**Justify Premium/Discount:**
|
||||
- Target is growing 17% vs. peer median 17% → In-line
|
||||
- Target EBITDA margin 23% vs. peer median 23% → In-line
|
||||
- Target market position → [Justify premium/discount]
|
||||
- **Conclusion**: Apply median multiple (no adjustment)
|
||||
|
||||
### Step 4: Precedent Transactions (Optional)
|
||||
|
||||
**Note**: Only if M&A is relevant for this sector/company.
|
||||
|
||||
#### A. Identify Relevant Transactions
|
||||
|
||||
**Search for 5-10 M&A deals:**
|
||||
- Same industry, last 3-5 years
|
||||
- Similar size (0.5x to 2x target's size)
|
||||
- Announced and closed deals
|
||||
|
||||
**Example:**
|
||||
```
|
||||
PRECEDENT TRANSACTIONS ANALYSIS
|
||||
|
||||
Date Target Acquirer Deal EV/Rev EV/EBITDA Premium Rationale
|
||||
Value($B) LTM LTM
|
||||
Q1 2024 Comp A Strategic $5.2B 4.2x 16.5x 35% Consolidation
|
||||
Q3 2023 Comp B PE Firm $3.8B 3.8x 14.2x 28% Platform
|
||||
Q4 2023 Comp C Strategic $4.5B 4.0x 15.8x 32% Geographic
|
||||
Q2 2023 Comp D Strategic $6.1B 4.5x 17.2x 38% Strategic fit
|
||||
Q1 2023 Comp E PE Firm $3.2B 3.5x 13.5x 25% Carve-out
|
||||
|
||||
Median 4.0x 15.8x 32%
|
||||
|
||||
Source: CapitalIQ, company filings, press releases.
|
||||
```
|
||||
|
||||
#### B. Apply to Target Company
|
||||
|
||||
```
|
||||
Target Company LTM EBITDA = $500M
|
||||
Precedent Median EV/EBITDA (LTM) = 15.8x
|
||||
|
||||
Implied EV (Precedent) = $500M × 15.8x = $7,900M
|
||||
|
||||
Note: Precedent multiples typically 10-20% higher than trading comps
|
||||
due to control premium and synergies.
|
||||
```
|
||||
|
||||
### Step 5: Valuation Reconciliation
|
||||
|
||||
#### A. Create Valuation Summary Table
|
||||
|
||||
```
|
||||
VALUATION SUMMARY
|
||||
|
||||
Method Low Base High Weight Weighted Value
|
||||
DCF Analysis $42 $46 $51 50% $23.00
|
||||
Trading Comps (NTM) $64 $71 $78 40% $28.40
|
||||
Precedent Trans. $70 $79 $88 10% $7.90
|
||||
-------
|
||||
Weighted Average Target 100% $59.30
|
||||
|
||||
Rounded Price Target: $59.00
|
||||
|
||||
Current Price (as of [Date]): $42.00
|
||||
Upside to Target: 40% ($59.00 / $42.00 - 1)
|
||||
```
|
||||
|
||||
#### B. Determine Weighting Rationale
|
||||
|
||||
**Typical Weighting:**
|
||||
- DCF: 40-60% (higher when forecasts reliable)
|
||||
- Trading Comps: 25-40% (reflects market sentiment)
|
||||
- Precedent Trans: 10-25% (lower unless M&A likely)
|
||||
|
||||
**For this example:**
|
||||
- DCF 50%: High confidence in projections
|
||||
- Comps 40%: Robust peer set
|
||||
- Precedent 10%: M&A unlikely near-term
|
||||
|
||||
#### C. Create Valuation Football Field Chart
|
||||
|
||||
```
|
||||
VALUATION FOOTBALL FIELD
|
||||
|
||||
Method Low ◄────────── Range ──────────► High
|
||||
|
||||
DCF Analysis $42 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ $51
|
||||
|
||||
Trading Comps (NTM) $64 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ $78
|
||||
|
||||
Precedent Trans. $70 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ $88
|
||||
↑
|
||||
Current: $42
|
||||
─────────────────────────────────────────────────────────
|
||||
Valuation Range $42 $88
|
||||
Price Target: $59 (weighted average)
|
||||
|
||||
Color code:
|
||||
- DCF: Blue
|
||||
- Trading Comps: Green
|
||||
- Precedent Trans: Orange
|
||||
- Vertical line at current price: Red dashed
|
||||
- Vertical line at target: Black solid
|
||||
```
|
||||
|
||||
#### D. Scenario-Based Valuations
|
||||
|
||||
```
|
||||
VALUATION BY SCENARIO
|
||||
|
||||
Scenario Probability Revenue EBITDA DCF Comps Weighted
|
||||
CAGR Margin Value Multiple Avg
|
||||
Bear Case 20% 18% 28% $38 11.5x $42
|
||||
Base Case 60% 25% 32% $46 13.8x $59
|
||||
Bull Case 20% 32% 36% $58 16.0x $82
|
||||
|
||||
Expected Value (probability-weighted): $59
|
||||
```
|
||||
|
||||
### Step 6: Final Price Target & Recommendation
|
||||
|
||||
```
|
||||
═══════════════════════════════════════════════════════════
|
||||
INVESTMENT RECOMMENDATION
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
Current Price: $42.00 (as of [Date])
|
||||
Price Target: $59.00 (12-month)
|
||||
Upside/(Downside): +40.5%
|
||||
|
||||
Rating: BUY / OUTPERFORM
|
||||
|
||||
Valuation Methodology: Based on weighted average of DCF (50%),
|
||||
trading comparables (40%), and precedent
|
||||
transactions (10%).
|
||||
|
||||
Time Horizon: 12 months
|
||||
|
||||
───────────────────────────────────────────────────────────
|
||||
KEY INVESTMENT CATALYSTS
|
||||
───────────────────────────────────────────────────────────
|
||||
|
||||
1. New Product Launch (Q2 2025)
|
||||
- Expected to drive 15-20% revenue acceleration
|
||||
- Already seeing strong pre-orders
|
||||
|
||||
2. Margin Expansion (FY2025-2026)
|
||||
- Operating leverage from scale
|
||||
- Path to 35% EBITDA margin (from current 28%)
|
||||
|
||||
3. Market Share Gains (Ongoing)
|
||||
- Taking share from legacy competitors
|
||||
- Net Promoter Score improvement
|
||||
|
||||
4. International Expansion (H2 2025)
|
||||
- Entry into European markets
|
||||
- Potential $200M incremental revenue opportunity
|
||||
|
||||
5. Potential M&A Target (12-18 months)
|
||||
- Strategic fit for larger players
|
||||
- Precedent transactions suggest 30-40% premium
|
||||
|
||||
───────────────────────────────────────────────────────────
|
||||
KEY RISKS TO PRICE TARGET
|
||||
───────────────────────────────────────────────────────────
|
||||
|
||||
Downside Risks:
|
||||
1. Competitive Pressure (High probability, -15% impact)
|
||||
- New entrant launched competing product
|
||||
- Could pressure pricing and market share
|
||||
|
||||
2. Execution Risk (Medium probability, -10% impact)
|
||||
- New product launch delays or underperformance
|
||||
- Management turnover
|
||||
|
||||
3. Macro Slowdown (Medium probability, -20% impact)
|
||||
- Economic recession would impact customer spending
|
||||
- Operating leverage would reverse
|
||||
|
||||
4. Regulatory Risk (Low probability, -25% impact)
|
||||
- Potential new regulations in key market
|
||||
- Would increase compliance costs
|
||||
|
||||
Upside Risks:
|
||||
1. M&A Bid (Low probability, +35% impact)
|
||||
- Strategic acquirer pays control premium
|
||||
|
||||
2. Beat-and-Raise (Medium probability, +10% impact)
|
||||
- Consistent outperformance vs. estimates
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quality Standards
|
||||
|
||||
### DCF Quality Checks
|
||||
- [ ] WACC properly calculated with documented components
|
||||
- [ ] Terminal value reasonable (< 70% of total enterprise value)
|
||||
- [ ] Sensitivity analysis covers realistic ranges (±200-300bps for WACC, ±100bps for terminal growth)
|
||||
- [ ] Unlevered FCF properly calculated from EBIT
|
||||
- [ ] Enterprise to equity value bridge correct
|
||||
- [ ] Share count is diluted shares, not basic
|
||||
|
||||
### Comparables Quality Checks
|
||||
- [ ] 5-10 comparable companies selected
|
||||
- [ ] Peer selection defensible (document why each peer was chosen)
|
||||
- [ ] Statistical summary included (max/75th/median/25th/min) - MANDATORY
|
||||
- [ ] Multiple selection appropriate (EV/EBITDA for mature, EV/Revenue for high-growth)
|
||||
- [ ] Premium/discount justified with specific factors
|
||||
- [ ] Data sourced properly with dates noted
|
||||
|
||||
### Overall Valuation Quality Checks
|
||||
- [ ] At least 2 valuation methods used (DCF + Comps minimum)
|
||||
- [ ] Weighting explained and appropriate
|
||||
- [ ] Valuation range provided (low/base/high), not just point estimate
|
||||
- [ ] Scenarios analyzed (Bull/Base/Bear)
|
||||
- [ ] Sanity checks performed (see below)
|
||||
- [ ] All assumptions documented with rationale
|
||||
|
||||
---
|
||||
|
||||
## Sanity Checks
|
||||
|
||||
**Always perform these validation checks:**
|
||||
|
||||
1. **Historical Multiple Check**
|
||||
- Is implied multiple in line with company's historical trading range?
|
||||
- If not, explain why
|
||||
|
||||
2. **Peer Comparison**
|
||||
- Is premium/discount vs. peers justified by fundamentals?
|
||||
- Check: growth, margins, market position
|
||||
|
||||
3. **Implied Growth Check**
|
||||
- What growth is market pricing in at current price?
|
||||
- Is that reasonable given company trajectory?
|
||||
|
||||
4. **Market Cap Reasonableness**
|
||||
- Does total market cap make sense given company size and peers?
|
||||
- Would company be too large/small relative to industry?
|
||||
|
||||
5. **Terminal Value Check**
|
||||
- Is terminal value < 60-70% of total enterprise value?
|
||||
- If > 70%, projections may not be long enough
|
||||
|
||||
6. **WACC Reasonableness**
|
||||
- Is WACC 8-14% range for typical companies?
|
||||
- Tech/high-growth: 10-14%
|
||||
- Mature/stable: 7-10%
|
||||
|
||||
7. **Implied Returns Check**
|
||||
- What IRR from current price to target over 12 months?
|
||||
- Is that consistent with recommendation rating?
|
||||
|
||||
---
|
||||
|
||||
## Output Files
|
||||
|
||||
Create the following deliverables:
|
||||
|
||||
### 1. Valuation Analysis Document
|
||||
**File**: `[Company]_Valuation_Analysis_[Date].md` (written analysis)
|
||||
|
||||
**Contents** (4-6 pages):
|
||||
- Executive summary with price target
|
||||
- DCF analysis (1 page) with sensitivity table
|
||||
- Comparable companies analysis (1 page) with statistical summary
|
||||
- Precedent transactions (0.5 page) if applicable
|
||||
- Valuation summary and football field (0.5 page)
|
||||
- Investment recommendation (1 page)
|
||||
- Key catalysts and risks (1 page)
|
||||
|
||||
### 2. Excel Valuation Tabs
|
||||
**Add to Task 2's financial model file:** `[Company]_Financial_Model_[Date].xlsx`
|
||||
|
||||
**IMPORTANT**: Do NOT create a separate Excel file. Add these tabs to the existing financial model from Task 2. This keeps all quantitative data in one place.
|
||||
|
||||
**Tabs to add:**
|
||||
- DCF tab with full calculations
|
||||
- Sensitivity analysis tab
|
||||
- Comps tab with peer data
|
||||
- Precedent transactions tab (if applicable)
|
||||
- Valuation summary tab
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
A successful valuation analysis should:
|
||||
1. Use at least 2 methods (DCF + Comps minimum)
|
||||
2. Include comprehensive DCF sensitivity analysis (2-way tables)
|
||||
3. Include statistical summary in comps (max/75th/median/25th/min)
|
||||
4. Provide valuation range (low/base/high), not point estimate
|
||||
5. Document all key assumptions with clear rationale
|
||||
6. Perform sanity checks
|
||||
7. Arrive at defensible price target
|
||||
8. Provide clear buy/hold/sell recommendation
|
||||
9. Identify 3-5 key catalysts
|
||||
10. Identify 3-5 key risks
|
||||
11. Be auditable and transparent
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After completing Task 3, the valuation analysis will be used for:
|
||||
- **Task 4 (Charts)**: Create DCF sensitivity heatmaps, valuation football field, scenario comparison charts
|
||||
- **Task 5 (Report Assembly)**: Integrate valuation analysis into final report
|
||||
|
||||
The price target and recommendation are the foundation of the final investment recommendation in the equity research report.
|
||||
@@ -0,0 +1,920 @@
|
||||
# Task 4: Chart Generation - Detailed Workflow
|
||||
|
||||
This document provides step-by-step instructions for executing Task 4 (Chart Generation) of the anthropic-initiation-coverage skill.
|
||||
|
||||
## Task Overview
|
||||
|
||||
**Purpose**: Generate 25-35 professional financial charts for the report.
|
||||
|
||||
**Prerequisites**: ⚠️ Verify before starting
|
||||
- **Required**: Company research from Task 1
|
||||
- Company history, milestones (for timeline charts)
|
||||
- Management team, org structure (for org charts)
|
||||
- Product portfolio (for product charts)
|
||||
- Customer segmentation (for customer charts)
|
||||
- Competitive landscape (for competitive positioning charts)
|
||||
- TAM analysis (for market size charts)
|
||||
- **Required**: Financial model from Task 2
|
||||
- Revenue by product/geography data
|
||||
- Margin trends
|
||||
- Scenario comparison data
|
||||
- **Required**: Valuation analysis from Task 3
|
||||
- DCF sensitivity table
|
||||
- Comparable companies data
|
||||
- Valuation ranges
|
||||
- **Required**: External market data
|
||||
- Historical stock price data (Yahoo Finance, Bloomberg)
|
||||
- Historical valuation multiples (optional for chart 34)
|
||||
|
||||
**⚠️ CRITICAL: DO NOT START THIS TASK UNLESS TASKS 1, 2, AND 3 ARE COMPLETE**
|
||||
|
||||
This task requires outputs from all three previous tasks. Starting without them will result in incomplete charts.
|
||||
|
||||
**IF ANY OF TASKS 1, 2, OR 3 ARE NOT COMPLETE**: Stop immediately and inform the user which tasks need to be completed first. The specific requirements are:
|
||||
- Task 1: Company research document (for 9 charts)
|
||||
- Task 2: Financial model with all 6 tabs (for 8 charts)
|
||||
- Task 3: Valuation tabs added to the model (for 6 charts)
|
||||
- External data access (for 2 charts)
|
||||
|
||||
Do not attempt to create placeholder charts or skip charts due to missing data.
|
||||
|
||||
**Output**: 25-35 Professional Chart Files (PNG/JPG, 300 DPI)
|
||||
|
||||
---
|
||||
|
||||
## Input Verification
|
||||
|
||||
**BEFORE STARTING - CHECK ALL PREREQUISITES:**
|
||||
|
||||
### Task 1 Verification (Company Research)
|
||||
- [ ] Task 1 complete? (Company research document exists)
|
||||
- [ ] Company history and milestones documented? (for charts 05, 06)
|
||||
- [ ] Management team and org structure described? (for chart 07)
|
||||
- [ ] Product portfolio detailed? (for chart 08)
|
||||
- [ ] Customer segmentation analyzed? (for chart 09)
|
||||
- [ ] Competitive landscape mapped? (for charts 16, 17, 18)
|
||||
- [ ] TAM sizing completed? (for chart 15)
|
||||
|
||||
### Task 2 Verification (Financial Model)
|
||||
- [ ] Task 2 complete? (Financial model Excel file exists)
|
||||
- [ ] Revenue by product breakdown available? (for chart 03 ⭐)
|
||||
- [ ] Revenue by geography breakdown available? (for chart 04 ⭐)
|
||||
- [ ] Historical + projected financials complete? (for charts 02, 10, 11, 12)
|
||||
- [ ] Scenario analysis (Bull/Base/Bear) complete? (for chart 14)
|
||||
- [ ] Operating metrics available? (for chart 13)
|
||||
|
||||
### Task 3 Verification (Valuation)
|
||||
- [ ] Task 3 complete? (Valuation tabs added to model)
|
||||
- [ ] DCF sensitivity matrix exists? (for chart 28 ⭐)
|
||||
- [ ] DCF calculation details available? (for chart 29)
|
||||
- [ ] Comparable companies data collected? (for charts 30, 31)
|
||||
- [ ] Valuation ranges calculated? (for chart 32 ⭐)
|
||||
|
||||
### External Data Verification
|
||||
- [ ] Can access historical stock price data? (Yahoo Finance, Bloomberg for chart 01)
|
||||
- [ ] Can access historical valuation data? (Optional, for chart 34)
|
||||
|
||||
**IF ANY VERIFICATION FAILS**:
|
||||
- Missing Task 1? → Complete Task 1 (Company Research) first
|
||||
- Missing Task 2? → Complete Task 2 (Financial Modeling) first
|
||||
- Missing Task 3? → Complete Task 3 (Valuation Analysis) first
|
||||
- Missing external data? → Gather from Yahoo Finance, Bloomberg, or similar sources
|
||||
|
||||
---
|
||||
|
||||
## Chart Requirements: 25 Required + 10 Optional
|
||||
|
||||
**IMPORTANT**: Task 5 (Report Assembly) will embed **ALL charts created** throughout the report. The report requires dense visual content (1 chart every 200-300 words), so create comprehensive chart coverage.
|
||||
|
||||
### 4 MANDATORY Charts (Non-Negotiable) ⭐
|
||||
|
||||
These 4 charts are critical visualizations that MUST be present:
|
||||
|
||||
1. **chart_03**: Revenue by Product/Segment - Stacked Area Chart ⭐
|
||||
2. **chart_04**: Revenue by Geography - Stacked Bar Chart ⭐
|
||||
3. **chart_28**: DCF Sensitivity Analysis - 2-Way Heatmap ⭐
|
||||
4. **chart_32**: Valuation Football Field - Horizontal Bar Chart ⭐
|
||||
|
||||
### 25 REQUIRED Charts (Complete Set)
|
||||
|
||||
Create all 25 of these charts. Each has a specific purpose in Task 5:
|
||||
|
||||
**Investment Summary Section (1 chart):**
|
||||
- chart_01: Stock Price Performance (12-24 months)
|
||||
|
||||
**Financial Performance Section (6 charts):**
|
||||
- chart_02: Revenue Growth Trajectory
|
||||
- chart_03: Revenue by Product - Stacked Area ⭐ MANDATORY
|
||||
- chart_04: Revenue by Geography - Stacked Bar ⭐ MANDATORY
|
||||
- chart_10: Gross Margin Evolution
|
||||
- chart_11: EBITDA Margin Progression
|
||||
- chart_12: Free Cash Flow Trend
|
||||
|
||||
**Company 101 Section (7 charts):**
|
||||
- chart_05: Company Overview/Timeline
|
||||
- chart_06: Key Milestones Timeline
|
||||
- chart_07: Organizational Structure
|
||||
- chart_08: Product Portfolio Overview
|
||||
- chart_09: Customer Segmentation
|
||||
- chart_15: Market Size Evolution (TAM)
|
||||
- chart_16: Competitive Positioning Matrix
|
||||
|
||||
**Competitive & Market Section (2 charts):**
|
||||
- chart_17: Market Share Breakdown
|
||||
- chart_18: Competitive Benchmarking
|
||||
|
||||
**Scenario Analysis Section (2 charts):**
|
||||
- chart_13: Operating Metrics Dashboard
|
||||
- chart_14: Scenario Comparison (Bull/Base/Bear)
|
||||
|
||||
**Valuation Section (7 charts):**
|
||||
- chart_28: DCF Sensitivity Heatmap ⭐ MANDATORY
|
||||
- chart_29: DCF Valuation Waterfall
|
||||
- chart_30: Trading Comps Scatter Plot
|
||||
- chart_31: Peer Multiples Comparison
|
||||
- chart_32: Valuation Football Field ⭐ MANDATORY
|
||||
- chart_33: Price Target Scenarios
|
||||
- chart_34: Historical Valuation Multiples
|
||||
|
||||
**Total: 25 Required Charts**
|
||||
|
||||
### 10 OPTIONAL Charts (For 30-35 Range)
|
||||
|
||||
Add these for greater visual density and storytelling (reach 26-35 total):
|
||||
|
||||
- chart_19: Customer Acquisition Trends
|
||||
- chart_20: Unit Economics Evolution
|
||||
- chart_21: Product Roadmap Timeline
|
||||
- chart_22: Geographic Expansion Map
|
||||
- chart_23: R&D Investment Trends
|
||||
- chart_24: Sales & Marketing Efficiency
|
||||
- chart_25: Working Capital Trends
|
||||
- chart_26: Debt Maturity Schedule
|
||||
- chart_27: Ownership Structure
|
||||
- chart_35: Analyst Price Target Distribution
|
||||
|
||||
**Total Range: 25-35 Charts (25 required + 0-10 optional)**
|
||||
|
||||
---
|
||||
|
||||
## Data Source Mapping for Required Charts
|
||||
|
||||
Understanding where each chart's data comes from:
|
||||
|
||||
### From Task 1 (Company Research) - 9 charts
|
||||
- chart_05: Company Overview → Task 1: Company Overview section
|
||||
- chart_06: Key Milestones → Task 1: Company History section
|
||||
- chart_07: Org Structure → Task 1: Management Team section
|
||||
- chart_08: Product Portfolio → Task 1: Products & Services section
|
||||
- chart_09: Customer Segmentation → Task 1: Customers & Go-to-Market section
|
||||
- chart_15: Market Size Evolution → Task 1: Market Opportunity (TAM) section
|
||||
- chart_16: Competitive Positioning → Task 1: Competitive Landscape section
|
||||
- chart_17: Market Share → Task 1: Competitive Landscape section
|
||||
- chart_18: Competitive Benchmarking → Task 1: Competitive Landscape section
|
||||
|
||||
### From Task 2 (Financial Model) - 8 charts
|
||||
- chart_02: Revenue Growth → Income Statement tab (Revenue row)
|
||||
- chart_03: Revenue by Product ⭐ → Revenue Model tab (Product breakdown)
|
||||
- chart_04: Revenue by Geography ⭐ → Revenue Model tab (Geography breakdown)
|
||||
- chart_10: Gross Margin → Income Statement tab (Gross Profit / Revenue)
|
||||
- chart_11: EBITDA Margin → Income Statement tab (EBITDA / Revenue)
|
||||
- chart_12: Free Cash Flow → Cash Flow Statement tab (CFO - CapEx)
|
||||
- chart_13: Operating Metrics → Multiple tabs (Income Statement, Cash Flow)
|
||||
- chart_14: Scenario Comparison → Scenarios tab (Bull/Base/Bear)
|
||||
|
||||
### From Task 3 (Valuation) - 6 charts
|
||||
- chart_28: DCF Sensitivity ⭐ → Sensitivity Analysis tab
|
||||
- chart_29: DCF Waterfall → DCF tab (Enterprise Value components)
|
||||
- chart_30: Trading Comps Scatter → Comparable Companies tab
|
||||
- chart_31: Peer Multiples → Comparable Companies tab
|
||||
- chart_32: Valuation Football Field ⭐ → Valuation Summary tab
|
||||
- chart_33: Price Target Scenarios → Valuation Summary tab (or calculate from scenarios)
|
||||
|
||||
### From External Sources - 2 charts
|
||||
- chart_01: Stock Price Performance → Yahoo Finance, Bloomberg, Alpha Vantage
|
||||
- chart_34: Historical Valuation Multiples → Yahoo Finance, Bloomberg (historical P/E, EV/EBITDA)
|
||||
|
||||
**IMPORTANT**: Require ALL three tasks (1, 2, 3) complete PLUS external data access to create all 25 required charts.
|
||||
|
||||
---
|
||||
|
||||
## Step-by-Step Chart Generation Workflow
|
||||
|
||||
### Step 1: Set Up Environment
|
||||
|
||||
**Install required libraries:**
|
||||
```bash
|
||||
pip install matplotlib seaborn pandas numpy plotly
|
||||
```
|
||||
|
||||
**Create Python script header:**
|
||||
```python
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
from matplotlib.patches import Rectangle
|
||||
import warnings
|
||||
warnings.filterwarnings('ignore')
|
||||
|
||||
# Set global style
|
||||
plt.style.use('seaborn-v0_8-darkgrid')
|
||||
sns.set_palette("husl")
|
||||
|
||||
# Global settings
|
||||
DPI = 300
|
||||
FIGURE_WIDTH = 10
|
||||
FIGURE_HEIGHT = 6
|
||||
TITLE_FONT_SIZE = 14
|
||||
AXIS_FONT_SIZE = 12
|
||||
LABEL_FONT_SIZE = 10
|
||||
```
|
||||
|
||||
### Step 2: Extract Data from Model and Valuation
|
||||
|
||||
#### A. Extract Revenue Data
|
||||
```python
|
||||
# Revenue by Product (from Task 2 model)
|
||||
years = [2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029]
|
||||
|
||||
# Extract from Excel or define manually from model
|
||||
product_a = [100, 120, 145, 175, 210, 252, 302, 363, 435, 522]
|
||||
product_b = [80, 95, 115, 138, 165, 198, 238, 285, 342, 411]
|
||||
product_c = [50, 62, 78, 98, 122, 153, 191, 239, 299, 374]
|
||||
product_d = [30, 38, 48, 61, 77, 97, 122, 153, 191, 239]
|
||||
|
||||
# Revenue by Geography
|
||||
north_america = [150, 180, 220, 265, 320, 384, 461, 553, 664, 797]
|
||||
europe = [80, 95, 115, 140, 170, 204, 245, 294, 353, 423]
|
||||
asia_pacific = [40, 50, 63, 80, 101, 127, 159, 199, 249, 311]
|
||||
rest_of_world = [20, 25, 32, 40, 51, 64, 80, 100, 125, 156]
|
||||
```
|
||||
|
||||
#### B. Extract Margin Data
|
||||
```python
|
||||
# Margin evolution
|
||||
gross_margin = [58.0, 59.2, 60.5, 61.8, 63.0, 64.5, 66.0, 67.0, 67.5, 68.0]
|
||||
ebitda_margin = [12.0, 15.5, 18.8, 22.0, 25.0, 28.0, 30.5, 32.0, 33.0, 34.0]
|
||||
fcf_margin = [8.0, 11.0, 14.5, 18.0, 21.0, 24.0, 26.5, 28.0, 29.0, 30.0]
|
||||
```
|
||||
|
||||
#### C. Extract DCF Sensitivity Data
|
||||
```python
|
||||
# DCF Sensitivity (from Task 3 valuation)
|
||||
wacc_values = [7.0, 8.0, 9.0, 10.0, 11.0, 12.0]
|
||||
terminal_growth = [1.5, 2.0, 2.5, 3.0, 3.5]
|
||||
|
||||
# Price per share matrix (rows = WACC, columns = terminal growth)
|
||||
dcf_sensitivity = np.array([
|
||||
[66, 71, 76, 82, 89],
|
||||
[58, 62, 67, 72, 78],
|
||||
[52, 55, 59, 63, 68],
|
||||
[47, 50, 53, 56, 60],
|
||||
[42, 45, 48, 51, 54],
|
||||
[39, 41, 44, 46, 49]
|
||||
])
|
||||
```
|
||||
|
||||
#### D. Extract Valuation Ranges
|
||||
```python
|
||||
# Valuation Football Field (from Task 3)
|
||||
valuation_methods = ['DCF Analysis', 'Trading Comps\n(NTM)', 'Precedent\nTransactions']
|
||||
valuation_low = [48, 45, 52]
|
||||
valuation_high = [62, 57, 66]
|
||||
current_price = 50
|
||||
target_price = 55
|
||||
```
|
||||
|
||||
### Step 3: Create Mandatory Charts
|
||||
|
||||
#### Chart 1: Revenue by Product - Stacked Area ⭐ MANDATORY
|
||||
|
||||
```python
|
||||
def create_revenue_by_product_chart():
|
||||
"""Create revenue by product stacked area chart"""
|
||||
|
||||
fig, ax = plt.subplots(figsize=(10, 6))
|
||||
|
||||
# Create stacked area chart
|
||||
ax.stackplot(years, product_a, product_b, product_c, product_d,
|
||||
labels=['Product A', 'Product B', 'Product C', 'Product D'],
|
||||
colors=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'],
|
||||
alpha=0.8)
|
||||
|
||||
# Formatting
|
||||
ax.set_xlabel('Year', fontsize=12, fontweight='bold')
|
||||
ax.set_ylabel('Revenue ($M)', fontsize=12, fontweight='bold')
|
||||
ax.set_title('Figure 3 - Revenue by Product/Segment (2020-2029E)',
|
||||
fontsize=14, fontweight='bold', pad=20)
|
||||
|
||||
# Legend
|
||||
ax.legend(loc='upper left', frameon=False, fontsize=10)
|
||||
|
||||
# Grid
|
||||
ax.grid(axis='y', alpha=0.3, linestyle='--')
|
||||
ax.set_axisbelow(True)
|
||||
|
||||
# Remove top and right spines
|
||||
ax.spines['top'].set_visible(False)
|
||||
ax.spines['right'].set_visible(False)
|
||||
|
||||
# Add vertical line to separate historical from projected
|
||||
ax.axvline(x=2024, color='gray', linestyle='--', linewidth=1, alpha=0.5)
|
||||
ax.text(2024.2, ax.get_ylim()[1]*0.95, 'Projected →',
|
||||
fontsize=9, color='gray', ha='left')
|
||||
|
||||
# Source line
|
||||
fig.text(0.12, 0.02, 'Source: Company data, [Firm] estimates',
|
||||
fontsize=9, style='italic', color='gray')
|
||||
|
||||
# Save
|
||||
plt.tight_layout()
|
||||
plt.savefig('chart_03_revenue_by_product_stacked_area.png',
|
||||
dpi=300, bbox_inches='tight', facecolor='white')
|
||||
plt.close()
|
||||
print("✓ Created: chart_03_revenue_by_product_stacked_area.png")
|
||||
|
||||
create_revenue_by_product_chart()
|
||||
```
|
||||
|
||||
#### Chart 2: Revenue by Geography - Stacked Bar ⭐ MANDATORY
|
||||
|
||||
```python
|
||||
def create_revenue_by_geography_chart():
|
||||
"""Create revenue by geography stacked bar chart"""
|
||||
|
||||
years_labels = ['2020', '2021', '2022', '2023', '2024',
|
||||
'2025E', '2026E', '2027E', '2028E', '2029E']
|
||||
|
||||
fig, ax = plt.subplots(figsize=(10, 6))
|
||||
|
||||
# Create stacked bar chart
|
||||
width = 0.6
|
||||
x = np.arange(len(years_labels))
|
||||
|
||||
p1 = ax.bar(x, north_america, width, label='North America', color='#1f77b4')
|
||||
p2 = ax.bar(x, europe, width, bottom=north_america,
|
||||
label='Europe', color='#ff7f0e')
|
||||
p3 = ax.bar(x, asia_pacific, width,
|
||||
bottom=np.array(north_america) + np.array(europe),
|
||||
label='Asia-Pacific', color='#2ca02c')
|
||||
p4 = ax.bar(x, rest_of_world, width,
|
||||
bottom=np.array(north_america) + np.array(europe) + np.array(asia_pacific),
|
||||
label='Rest of World', color='#d62728')
|
||||
|
||||
# Formatting
|
||||
ax.set_xlabel('Year', fontsize=12, fontweight='bold')
|
||||
ax.set_ylabel('Revenue ($M)', fontsize=12, fontweight='bold')
|
||||
ax.set_title('Figure 4 - Revenue by Geography (2020-2029E)',
|
||||
fontsize=14, fontweight='bold', pad=20)
|
||||
ax.set_xticks(x)
|
||||
ax.set_xticklabels(years_labels, rotation=45, ha='right')
|
||||
|
||||
# Legend
|
||||
ax.legend(loc='upper left', frameon=False, fontsize=10)
|
||||
|
||||
# Grid
|
||||
ax.grid(axis='y', alpha=0.3, linestyle='--')
|
||||
ax.set_axisbelow(True)
|
||||
|
||||
# Remove top and right spines
|
||||
ax.spines['top'].set_visible(False)
|
||||
ax.spines['right'].set_visible(False)
|
||||
|
||||
# Source line
|
||||
fig.text(0.12, 0.02, 'Source: Company data, [Firm] estimates',
|
||||
fontsize=9, style='italic', color='gray')
|
||||
|
||||
# Save
|
||||
plt.tight_layout()
|
||||
plt.savefig('chart_04_revenue_by_geography_stacked_bar.png',
|
||||
dpi=300, bbox_inches='tight', facecolor='white')
|
||||
plt.close()
|
||||
print("✓ Created: chart_04_revenue_by_geography_stacked_bar.png")
|
||||
|
||||
create_revenue_by_geography_chart()
|
||||
```
|
||||
|
||||
#### Chart 3: DCF Sensitivity - Heatmap ⭐ MANDATORY
|
||||
|
||||
```python
|
||||
def create_dcf_sensitivity_heatmap():
|
||||
"""Create DCF sensitivity analysis heatmap"""
|
||||
|
||||
# Create DataFrame
|
||||
df = pd.DataFrame(dcf_sensitivity,
|
||||
index=[f'{w}%' for w in wacc_values],
|
||||
columns=[f'{g}%' for g in terminal_growth])
|
||||
|
||||
fig, ax = plt.subplots(figsize=(8, 6))
|
||||
|
||||
# Create heatmap
|
||||
sns.heatmap(df, annot=True, fmt='d', cmap='RdYlGn',
|
||||
cbar_kws={'label': 'Price per Share ($)'},
|
||||
linewidths=0.5, linecolor='white',
|
||||
ax=ax, vmin=35, vmax=95)
|
||||
|
||||
# Formatting
|
||||
ax.set_xlabel('Terminal Growth Rate', fontsize=12, fontweight='bold')
|
||||
ax.set_ylabel('WACC', fontsize=12, fontweight='bold')
|
||||
ax.set_title('Figure 28 - DCF Sensitivity Analysis ($/share)',
|
||||
fontsize=14, fontweight='bold', pad=20)
|
||||
|
||||
# Rotate y-axis labels
|
||||
plt.yticks(rotation=0)
|
||||
|
||||
# Source line
|
||||
fig.text(0.12, 0.02, 'Source: [Firm] estimates',
|
||||
fontsize=9, style='italic', color='gray')
|
||||
|
||||
# Save
|
||||
plt.tight_layout()
|
||||
plt.savefig('chart_28_dcf_sensitivity_heatmap.png',
|
||||
dpi=300, bbox_inches='tight', facecolor='white')
|
||||
plt.close()
|
||||
print("✓ Created: chart_28_dcf_sensitivity_heatmap.png")
|
||||
|
||||
create_dcf_sensitivity_heatmap()
|
||||
```
|
||||
|
||||
#### Chart 4: Valuation Football Field ⭐ MANDATORY
|
||||
|
||||
```python
|
||||
def create_valuation_football_field():
|
||||
"""Create valuation football field chart"""
|
||||
|
||||
fig, ax = plt.subplots(figsize=(10, 5))
|
||||
|
||||
# Create horizontal bars
|
||||
y_positions = np.arange(len(valuation_methods))
|
||||
colors = ['#1f77b4', '#ff7f0e', '#2ca02c']
|
||||
|
||||
for i, (method, low, high, color) in enumerate(
|
||||
zip(valuation_methods, valuation_low, valuation_high, colors)):
|
||||
ax.barh(i, high - low, left=low, height=0.6,
|
||||
color=color, alpha=0.7, label=method)
|
||||
|
||||
# Add value labels at ends
|
||||
ax.text(low - 1, i, f'${low}', va='center', ha='right', fontsize=10)
|
||||
ax.text(high + 1, i, f'${high}', va='center', ha='left', fontsize=10)
|
||||
|
||||
# Add current price line
|
||||
ax.axvline(x=current_price, color='red', linestyle='--', linewidth=2,
|
||||
label=f'Current: ${current_price}', alpha=0.7)
|
||||
|
||||
# Add target price line
|
||||
ax.axvline(x=target_price, color='black', linestyle='-', linewidth=2,
|
||||
label=f'Target: ${target_price}')
|
||||
|
||||
# Formatting
|
||||
ax.set_yticks(y_positions)
|
||||
ax.set_yticklabels(valuation_methods, fontsize=11)
|
||||
ax.set_xlabel('Price Per Share ($)', fontsize=12, fontweight='bold')
|
||||
ax.set_title('Figure 32 - Valuation Football Field',
|
||||
fontsize=14, fontweight='bold', pad=20)
|
||||
|
||||
# Set x-axis limits
|
||||
ax.set_xlim(40, 70)
|
||||
|
||||
# Remove spines
|
||||
ax.spines['top'].set_visible(False)
|
||||
ax.spines['right'].set_visible(False)
|
||||
ax.spines['left'].set_visible(False)
|
||||
|
||||
# Grid
|
||||
ax.grid(axis='x', alpha=0.3, linestyle='--')
|
||||
ax.set_axisbelow(True)
|
||||
|
||||
# Legend
|
||||
ax.legend(loc='upper right', frameon=False, fontsize=9)
|
||||
|
||||
# Source line
|
||||
fig.text(0.12, 0.02, 'Source: [Firm] estimates',
|
||||
fontsize=9, style='italic', color='gray')
|
||||
|
||||
# Save
|
||||
plt.tight_layout()
|
||||
plt.savefig('chart_32_valuation_football_field.png',
|
||||
dpi=300, bbox_inches='tight', facecolor='white')
|
||||
plt.close()
|
||||
print("✓ Created: chart_32_valuation_football_field.png")
|
||||
|
||||
create_valuation_football_field()
|
||||
```
|
||||
|
||||
### Step 4: Create Remaining Required Charts (Charts 1-34)
|
||||
|
||||
**Complete the 25 REQUIRED charts** by creating all remaining charts from the required list. Each chart has a specific purpose in Task 5.
|
||||
|
||||
#### Investment Summary (1 chart)
|
||||
```python
|
||||
# chart_01: Stock Price Performance (12-24 months)
|
||||
# - Line chart showing stock price over time vs. market index
|
||||
# - Used on Page 1 of final report
|
||||
```
|
||||
|
||||
#### Financial Performance (5 additional charts beyond chart_03 and chart_04)
|
||||
```python
|
||||
# chart_02: Revenue Growth Trajectory
|
||||
# chart_10: Gross Margin Evolution
|
||||
# chart_11: EBITDA Margin Progression
|
||||
# chart_12: Free Cash Flow Trend
|
||||
# chart_14: Scenario Comparison (Bull/Base/Bear)
|
||||
```
|
||||
|
||||
#### Company 101 Section (7 charts)
|
||||
```python
|
||||
# chart_05: Company Overview/Timeline
|
||||
# chart_06: Key Milestones Timeline
|
||||
# chart_07: Organizational Structure
|
||||
# chart_08: Product Portfolio Overview
|
||||
# chart_09: Customer Segmentation
|
||||
# chart_15: Market Size Evolution (TAM)
|
||||
# chart_16: Competitive Positioning Matrix
|
||||
```
|
||||
|
||||
#### Competitive & Market (2 charts)
|
||||
```python
|
||||
# chart_17: Market Share Breakdown
|
||||
# chart_18: Competitive Benchmarking
|
||||
```
|
||||
|
||||
#### Scenario Analysis (1 chart)
|
||||
```python
|
||||
# chart_13: Operating Metrics Dashboard
|
||||
```
|
||||
|
||||
#### Valuation Section (6 additional charts beyond chart_28 and chart_32)
|
||||
```python
|
||||
# chart_29: DCF Valuation Waterfall
|
||||
# chart_30: Trading Comps Scatter Plot
|
||||
# chart_31: Peer Multiples Comparison
|
||||
# chart_33: Price Target Scenarios
|
||||
# chart_34: Historical Valuation Multiples
|
||||
```
|
||||
|
||||
**Use consistent formatting across all charts:**
|
||||
- 300 DPI resolution
|
||||
- Professional color scheme
|
||||
- Clear labels, legends, and titles
|
||||
- Figure numbers (e.g., "Figure 5 - Company Timeline")
|
||||
- Source citations at bottom
|
||||
|
||||
### Step 4B: Create Optional Charts (For 26-35 Total)
|
||||
|
||||
**Optional**: Add 1-10 additional charts from this list for greater visual density:
|
||||
|
||||
```python
|
||||
# chart_19: Customer Acquisition Trends
|
||||
# chart_20: Unit Economics Evolution
|
||||
# chart_21: Product Roadmap Timeline
|
||||
# chart_22: Geographic Expansion Map
|
||||
# chart_23: R&D Investment Trends
|
||||
# chart_24: Sales & Marketing Efficiency
|
||||
# chart_25: Working Capital Trends
|
||||
# chart_26: Debt Maturity Schedule
|
||||
# chart_27: Ownership Structure
|
||||
# chart_35: Analyst Price Target Distribution
|
||||
```
|
||||
|
||||
These optional charts provide additional visual storytelling and help achieve the "1 chart per 200-300 words" density target in Task 5.
|
||||
|
||||
### Step 5: Create Chart Index
|
||||
|
||||
Create a text file documenting all charts:
|
||||
|
||||
```python
|
||||
def create_chart_index():
|
||||
"""Create index of all charts"""
|
||||
|
||||
# 25 REQUIRED CHARTS
|
||||
required_charts = [
|
||||
"chart_01_stock_price_performance.png - Stock Price Performance (12-24M)",
|
||||
"chart_02_revenue_growth_trajectory.png - Revenue Growth Trajectory",
|
||||
"chart_03_revenue_by_product_stacked_area.png - Revenue by Product [MANDATORY]",
|
||||
"chart_04_revenue_by_geography_stacked_bar.png - Revenue by Geography [MANDATORY]",
|
||||
"chart_05_company_overview.png - Company Overview/Timeline",
|
||||
"chart_06_key_milestones_timeline.png - Key Milestones Timeline",
|
||||
"chart_07_organizational_structure.png - Organizational Structure",
|
||||
"chart_08_product_portfolio.png - Product Portfolio Overview",
|
||||
"chart_09_customer_segmentation.png - Customer Segmentation",
|
||||
"chart_10_gross_margin_evolution.png - Gross Margin Evolution",
|
||||
"chart_11_ebitda_margin_progression.png - EBITDA Margin Progression",
|
||||
"chart_12_free_cash_flow_trend.png - Free Cash Flow Trend",
|
||||
"chart_13_operating_metrics_dashboard.png - Operating Metrics Dashboard",
|
||||
"chart_14_scenario_comparison.png - Scenario Comparison (Bull/Base/Bear)",
|
||||
"chart_15_market_size_evolution.png - Market Size Evolution (TAM)",
|
||||
"chart_16_competitive_positioning.png - Competitive Positioning Matrix",
|
||||
"chart_17_market_share.png - Market Share Breakdown",
|
||||
"chart_18_competitive_benchmarking.png - Competitive Benchmarking",
|
||||
"chart_28_dcf_sensitivity_heatmap.png - DCF Sensitivity Heatmap [MANDATORY]",
|
||||
"chart_29_dcf_waterfall.png - DCF Valuation Waterfall",
|
||||
"chart_30_trading_comps_scatter.png - Trading Comps Scatter Plot",
|
||||
"chart_31_peer_multiples_comparison.png - Peer Multiples Comparison",
|
||||
"chart_32_valuation_football_field.png - Valuation Football Field [MANDATORY]",
|
||||
"chart_33_price_target_scenarios.png - Price Target Scenarios",
|
||||
"chart_34_historical_valuation_multiples.png - Historical Valuation Multiples",
|
||||
]
|
||||
|
||||
# 10 OPTIONAL CHARTS (for 26-35 range)
|
||||
optional_charts = [
|
||||
"chart_19_customer_acquisition_trends.png - Customer Acquisition Trends [OPTIONAL]",
|
||||
"chart_20_unit_economics_evolution.png - Unit Economics Evolution [OPTIONAL]",
|
||||
"chart_21_product_roadmap_timeline.png - Product Roadmap Timeline [OPTIONAL]",
|
||||
"chart_22_geographic_expansion_map.png - Geographic Expansion Map [OPTIONAL]",
|
||||
"chart_23_rd_investment_trends.png - R&D Investment Trends [OPTIONAL]",
|
||||
"chart_24_sales_marketing_efficiency.png - Sales & Marketing Efficiency [OPTIONAL]",
|
||||
"chart_25_working_capital_trends.png - Working Capital Trends [OPTIONAL]",
|
||||
"chart_26_debt_maturity_schedule.png - Debt Maturity Schedule [OPTIONAL]",
|
||||
"chart_27_ownership_structure.png - Ownership Structure [OPTIONAL]",
|
||||
"chart_35_analyst_price_targets.png - Analyst Price Target Distribution [OPTIONAL]",
|
||||
]
|
||||
|
||||
with open('chart_index.txt', 'w') as f:
|
||||
f.write("CHART INDEX FOR [COMPANY] EQUITY RESEARCH REPORT\n")
|
||||
f.write("=" * 60 + "\n\n")
|
||||
|
||||
f.write("4 MANDATORY CHARTS (Must be present):\n")
|
||||
f.write("- chart_03: Revenue by Product (Stacked Area) ⭐\n")
|
||||
f.write("- chart_04: Revenue by Geography (Stacked Bar) ⭐\n")
|
||||
f.write("- chart_28: DCF Sensitivity (Heatmap) ⭐\n")
|
||||
f.write("- chart_32: Valuation Football Field ⭐\n\n")
|
||||
|
||||
f.write("25 REQUIRED CHARTS:\n")
|
||||
for chart in required_charts:
|
||||
f.write(f" {chart}\n")
|
||||
|
||||
f.write("\n10 OPTIONAL CHARTS (for 26-35 total):\n")
|
||||
for chart in optional_charts:
|
||||
f.write(f" {chart}\n")
|
||||
|
||||
f.write("\n" + "=" * 60 + "\n")
|
||||
f.write("NOTE: Task 5 will embed ALL charts created (25-35) throughout\n")
|
||||
f.write("the report for visual density (1 chart every 200-300 words).\n")
|
||||
|
||||
print("✓ Created: chart_index.txt")
|
||||
|
||||
create_chart_index()
|
||||
```
|
||||
|
||||
### Step 6: Quality Check
|
||||
|
||||
**Run verification checks:**
|
||||
|
||||
```python
|
||||
import os
|
||||
|
||||
def verify_charts():
|
||||
"""Verify all charts were created successfully"""
|
||||
|
||||
mandatory_charts = [
|
||||
'chart_03_revenue_by_product_stacked_area.png',
|
||||
'chart_04_revenue_by_geography_stacked_bar.png',
|
||||
'chart_28_dcf_sensitivity_heatmap.png',
|
||||
'chart_32_valuation_football_field.png'
|
||||
]
|
||||
|
||||
print("\n" + "="*60)
|
||||
print("CHART GENERATION VERIFICATION")
|
||||
print("="*60)
|
||||
|
||||
# Check mandatory charts
|
||||
print("\n1. MANDATORY CHARTS:")
|
||||
all_mandatory_present = True
|
||||
for chart in mandatory_charts:
|
||||
if os.path.exists(chart):
|
||||
size = os.path.getsize(chart) / 1024 # KB
|
||||
print(f" ✓ {chart} ({size:.1f} KB)")
|
||||
else:
|
||||
print(f" ✗ MISSING: {chart}")
|
||||
all_mandatory_present = False
|
||||
|
||||
# Count total charts
|
||||
chart_files = [f for f in os.listdir('.') if f.startswith('chart_') and f.endswith('.png')]
|
||||
print(f"\n2. TOTAL CHARTS: {len(chart_files)}")
|
||||
print(f" Target: 25-35 charts")
|
||||
print(f" Status: {'✓ PASS' if 25 <= len(chart_files) <= 35 else '⚠ WARNING'}")
|
||||
|
||||
# Check file sizes (should be > 50KB for 300 DPI)
|
||||
print("\n3. FILE SIZE CHECK:")
|
||||
small_files = []
|
||||
for chart in chart_files[:5]: # Sample first 5
|
||||
size = os.path.getsize(chart) / 1024
|
||||
if size < 50:
|
||||
small_files.append(chart)
|
||||
print(f" {chart}: {size:.1f} KB")
|
||||
|
||||
if small_files:
|
||||
print(f" ⚠ WARNING: {len(small_files)} files may be low resolution")
|
||||
else:
|
||||
print(f" ✓ All sampled files have adequate size")
|
||||
|
||||
# Final verdict
|
||||
print("\n" + "="*60)
|
||||
if all_mandatory_present and 25 <= len(chart_files) <= 35:
|
||||
print("✓ VERIFICATION PASSED - Ready for Task 5")
|
||||
else:
|
||||
print("✗ VERIFICATION FAILED - Review missing charts")
|
||||
print("="*60 + "\n")
|
||||
|
||||
verify_charts()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Quality Standards
|
||||
|
||||
### Visual Quality
|
||||
- [ ] High resolution (300 DPI minimum)
|
||||
- [ ] Professional color scheme (consistent across all charts)
|
||||
- [ ] Clear, legible text (no fonts smaller than 9pt)
|
||||
- [ ] Proper aspect ratio (no distortion)
|
||||
- [ ] No pixelation or artifacts
|
||||
|
||||
### Data Accuracy
|
||||
- [ ] Data matches source (financial model and valuation)
|
||||
- [ ] Proper units and labels ($ millions, percentages, etc.)
|
||||
- [ ] Appropriate scale and range
|
||||
- [ ] Consistent time periods across charts
|
||||
- [ ] Verified calculations
|
||||
|
||||
### Formatting Quality
|
||||
- [ ] Consistent styling across all charts
|
||||
- [ ] Proper figure numbering (sequential)
|
||||
- [ ] Clear titles and captions
|
||||
- [ ] Source citations on every chart
|
||||
- [ ] Professional appearance
|
||||
|
||||
### Completeness
|
||||
- [ ] All 4 mandatory charts created
|
||||
- [ ] 25-35 total charts
|
||||
- [ ] Proper file naming (chart_01, chart_02, etc.)
|
||||
- [ ] Chart index created
|
||||
- [ ] Ready for embedding in Word
|
||||
|
||||
---
|
||||
|
||||
## Chart Types Reference
|
||||
|
||||
### When to Use Each Chart Type
|
||||
|
||||
**Line Charts**: Time series trends (revenue, margins, stock price)
|
||||
|
||||
**Stacked Area**: Revenue by product ⭐, market size composition
|
||||
|
||||
**Stacked Bar**: Revenue by geography ⭐, quarterly breakdowns
|
||||
|
||||
**Heatmap**: DCF sensitivity ⭐, correlation matrices
|
||||
|
||||
**Horizontal Bar**: Valuation football field ⭐, peer rankings
|
||||
|
||||
**Waterfall**: Revenue bridges, margin analysis, DCF build-up
|
||||
|
||||
**Scatter/Bubble**: Growth vs. valuation, competitive positioning
|
||||
|
||||
**2×2 Matrix**: Competitive positioning, product portfolio
|
||||
|
||||
---
|
||||
|
||||
## File Naming Convention
|
||||
|
||||
**Always use this format:**
|
||||
```
|
||||
chart_[NUMBER]_[DESCRIPTION].png
|
||||
|
||||
Examples:
|
||||
chart_01_stock_price_performance.png
|
||||
chart_03_revenue_by_product_stacked_area.png
|
||||
chart_28_dcf_sensitivity_heatmap.png
|
||||
```
|
||||
|
||||
**Number charts sequentially** based on their position in the report, not creation order.
|
||||
|
||||
---
|
||||
|
||||
## Common Chart Generation Issues
|
||||
|
||||
### Issue 1: Low Resolution
|
||||
**Problem**: Chart looks pixelated
|
||||
**Solution**: Ensure `dpi=300` in `plt.savefig()`
|
||||
|
||||
### Issue 2: Text Cutoff
|
||||
**Problem**: Labels or titles cut off at edges
|
||||
**Solution**: Use `bbox_inches='tight'` in `plt.savefig()`
|
||||
|
||||
### Issue 3: Poor Colors
|
||||
**Problem**: Colors don't look professional
|
||||
**Solution**: Use established palettes like Tableau10 or define custom corporate colors
|
||||
|
||||
### Issue 4: Overlapping Labels
|
||||
**Problem**: Axis labels overlap
|
||||
**Solution**: Rotate labels (e.g., `rotation=45`) or reduce font size
|
||||
|
||||
### Issue 5: White Space
|
||||
**Problem**: Too much white space around chart
|
||||
**Solution**: Use `plt.tight_layout()` before saving
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
|
||||
A successful chart package should:
|
||||
1. **Include all 4 mandatory charts** (verified) ⭐
|
||||
- chart_03: Revenue by Product
|
||||
- chart_04: Revenue by Geography
|
||||
- chart_28: DCF Sensitivity
|
||||
- chart_32: Valuation Football Field
|
||||
2. **Create 25 required charts minimum** (verified)
|
||||
3. **Optional: 1-10 additional charts** for 26-35 total
|
||||
4. Have consistent professional styling across all charts
|
||||
5. Be high resolution (300 DPI) for print quality
|
||||
6. Have clear labels, legends, and titles on every chart
|
||||
7. Include proper figure numbers and source citations
|
||||
8. Be ready for immediate embedding in Word
|
||||
9. Cover all key financial metrics and analyses
|
||||
10. Tell a visual story complementing the written analysis
|
||||
11. Be accurate and auditable to source data (model/valuation)
|
||||
12. All charts packaged in zip file with chart index
|
||||
|
||||
**Remember**: Task 5 will embed ALL charts created (25-35) throughout the report for visual density.
|
||||
|
||||
---
|
||||
|
||||
## Output Files
|
||||
|
||||
After completing Task 4, deliverables include:
|
||||
|
||||
**25 REQUIRED Chart Files (Minimum):**
|
||||
1. chart_01_stock_price_performance.png
|
||||
2. chart_02_revenue_growth_trajectory.png
|
||||
3. chart_03_revenue_by_product_stacked_area.png ⭐ MANDATORY
|
||||
4. chart_04_revenue_by_geography_stacked_bar.png ⭐ MANDATORY
|
||||
5. chart_05_company_overview.png
|
||||
6. chart_06_key_milestones_timeline.png
|
||||
7. chart_07_organizational_structure.png
|
||||
8. chart_08_product_portfolio.png
|
||||
9. chart_09_customer_segmentation.png
|
||||
10. chart_10_gross_margin_evolution.png
|
||||
11. chart_11_ebitda_margin_progression.png
|
||||
12. chart_12_free_cash_flow_trend.png
|
||||
13. chart_13_operating_metrics_dashboard.png
|
||||
14. chart_14_scenario_comparison.png
|
||||
15. chart_15_market_size_evolution.png
|
||||
16. chart_16_competitive_positioning.png
|
||||
17. chart_17_market_share.png
|
||||
18. chart_18_competitive_benchmarking.png
|
||||
19-27. *Reserved for optional charts if created*
|
||||
28. chart_28_dcf_sensitivity_heatmap.png ⭐ MANDATORY
|
||||
29. chart_29_dcf_waterfall.png
|
||||
30. chart_30_trading_comps_scatter.png
|
||||
31. chart_31_peer_multiples_comparison.png
|
||||
32. chart_32_valuation_football_field.png ⭐ MANDATORY
|
||||
33. chart_33_price_target_scenarios.png
|
||||
34. chart_34_historical_valuation_multiples.png
|
||||
35. *Reserved for optional chart if created*
|
||||
|
||||
**10 OPTIONAL Chart Files (For 26-35 Total):**
|
||||
- chart_19 through chart_27, chart_35 (if created)
|
||||
|
||||
**Chart Index** (1 text file):
|
||||
- chart_index.txt (listing all charts with descriptions and categories)
|
||||
|
||||
**All chart files must be:**
|
||||
- 300 DPI resolution (print quality)
|
||||
- 6-10 inches wide (standard Word embedding size)
|
||||
- White background (professional appearance)
|
||||
- PNG format (lossless quality)
|
||||
- Ready for immediate Word embedding
|
||||
|
||||
**Final Step: Package All Charts**
|
||||
|
||||
Create a zip file containing all chart files and the chart index:
|
||||
|
||||
```
|
||||
[Company]_Charts_[Date].zip
|
||||
├── chart_01_stock_price_performance.png
|
||||
├── chart_02_revenue_growth_trajectory.png
|
||||
├── chart_03_revenue_by_product_stacked_area.png ⭐
|
||||
├── chart_04_revenue_by_geography_stacked_bar.png ⭐
|
||||
├── chart_05_company_overview.png
|
||||
├── ... (all 25-35 chart files)
|
||||
├── chart_28_dcf_sensitivity_heatmap.png ⭐
|
||||
├── chart_32_valuation_football_field.png ⭐
|
||||
├── chart_34_historical_valuation_multiples.png
|
||||
└── chart_index.txt
|
||||
```
|
||||
|
||||
**Example**: `Tesla_Charts_2024-10-28.zip`
|
||||
|
||||
**Why this matters**: Task 5 will embed ALL charts created (25-35) throughout the report. The report requires visual density (1 chart per 200-300 words), so all charts serve a purpose—either for specific analytical sections or for visual storytelling and page density.
|
||||
- Verify all 25-35 charts are present
|
||||
- Extract charts for Task 5 (Report Assembly)
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
After completing Task 4, the zip file will be used for:
|
||||
- **Task 5 (Report Assembly)**: Extract charts and embed all into the final DOCX report at appropriate locations throughout the document
|
||||
|
||||
The 4 mandatory charts are critical for the valuation and financial analysis sections of the report.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,421 @@
|
||||
# Valuation Methodologies for Equity Research
|
||||
|
||||
This reference document provides comprehensive guidance on the three primary valuation methodologies used in equity research: Discounted Cash Flow (DCF), Trading Comparables, and Precedent Transactions.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Discounted Cash Flow (DCF) Analysis](#discounted-cash-flow-dcf-analysis)
|
||||
2. [Trading Comparables Analysis](#trading-comparables-analysis)
|
||||
3. [Precedent Transactions Analysis](#precedent-transactions-analysis)
|
||||
4. [Valuation Reconciliation](#valuation-reconciliation)
|
||||
|
||||
---
|
||||
|
||||
## Discounted Cash Flow (DCF) Analysis
|
||||
|
||||
### Overview
|
||||
|
||||
DCF analysis values a company based on the present value of its projected future cash flows. This is considered the most theoretically sound valuation method as it's based on fundamental value creation.
|
||||
|
||||
### Step-by-Step DCF Process
|
||||
|
||||
#### 1. Historical Financial Analysis
|
||||
- Collect 3-5 years of historical financials
|
||||
- Calculate historical FCF = EBIT(1-Tax Rate) + D&A - CapEx - Change in NWC
|
||||
- Analyze historical growth rates and margins
|
||||
- Identify trends and cyclicality
|
||||
|
||||
#### 2. Build Revenue Projections (5-10 years)
|
||||
**Approaches:**
|
||||
- **Top-down**: Start with market size (TAM) → Market share → Revenue
|
||||
- **Bottom-up**: Units sold × Price per unit
|
||||
- **Hybrid**: Combine multiple drivers
|
||||
|
||||
**Key Considerations:**
|
||||
- Management guidance and historical growth
|
||||
- Industry growth rates and market trends
|
||||
- Competitive dynamics and market share evolution
|
||||
- Product pipeline and new market opportunities
|
||||
- Macroeconomic factors
|
||||
|
||||
#### 3. Project Operating Expenses
|
||||
- **COGS**: As % of revenue (analyze historical margins)
|
||||
- **SG&A**: Often semi-fixed; model as % of revenue with scale effects
|
||||
- **R&D**: Critical for tech/pharma; model as % of revenue
|
||||
- **D&A**: Based on CapEx assumptions
|
||||
|
||||
**Calculate EBIT** = Revenue - COGS - Operating Expenses
|
||||
|
||||
#### 4. Calculate Unlevered Free Cash Flow
|
||||
```
|
||||
EBIT
|
||||
× (1 - Tax Rate)
|
||||
= NOPAT (Net Operating Profit After Tax)
|
||||
+ Depreciation & Amortization
|
||||
- Capital Expenditures
|
||||
- Increase in Net Working Capital
|
||||
= Unlevered Free Cash Flow (UFCF)
|
||||
```
|
||||
|
||||
**CapEx Assumptions:**
|
||||
- Maintenance CapEx: Required to maintain current operations (typically 2-4% of revenue)
|
||||
- Growth CapEx: Required for expansion
|
||||
- Consider industry benchmarks and company guidance
|
||||
|
||||
**Net Working Capital:**
|
||||
- NWC = (Accounts Receivable + Inventory) - Accounts Payable
|
||||
- Model as % of revenue or days (DSO, DIO, DPO)
|
||||
- An increase in NWC is a use of cash
|
||||
|
||||
#### 5. Determine Terminal Value
|
||||
|
||||
**Method A: Perpetuity Growth Method**
|
||||
```
|
||||
Terminal Value = FCF(final year) × (1 + g) / (WACC - g)
|
||||
```
|
||||
- g = perpetual growth rate (typically 2-3%, not exceeding GDP growth)
|
||||
- Use when company has reached stable, mature growth
|
||||
|
||||
**Method B: Exit Multiple Method**
|
||||
```
|
||||
Terminal Value = EBITDA(final year) × Exit Multiple
|
||||
```
|
||||
- Exit multiple based on current trading comps
|
||||
- More appropriate for cyclical businesses
|
||||
|
||||
#### 6. Calculate Weighted Average Cost of Capital (WACC)
|
||||
|
||||
```
|
||||
WACC = (E/V × Cost of Equity) + (D/V × Cost of Debt × (1 - Tax Rate))
|
||||
```
|
||||
|
||||
**Cost of Equity (using CAPM):**
|
||||
```
|
||||
Cost of Equity = Risk-Free Rate + Beta × Equity Risk Premium
|
||||
```
|
||||
- Risk-Free Rate: 10-year Treasury yield
|
||||
- Beta: Regression of stock returns vs. market (or use comparable beta)
|
||||
- Equity Risk Premium: Historical average ~5-6%
|
||||
|
||||
**Cost of Debt:**
|
||||
```
|
||||
Cost of Debt = Risk-Free Rate + Credit Spread
|
||||
```
|
||||
- Use company's current borrowing rate or implied from bonds
|
||||
- Adjust for credit rating if no bonds outstanding
|
||||
|
||||
**Capital Structure:**
|
||||
- E/V = Market value of equity / Total value
|
||||
- D/V = Market value of debt / Total value
|
||||
- Use target capital structure, not current (if significantly different)
|
||||
|
||||
#### 7. Discount Cash Flows to Present Value
|
||||
|
||||
```
|
||||
PV = Σ [FCFt / (1 + WACC)^t] + [Terminal Value / (1 + WACC)^n]
|
||||
```
|
||||
|
||||
#### 8. Calculate Enterprise Value and Equity Value
|
||||
|
||||
```
|
||||
Enterprise Value = PV of Projected FCF + PV of Terminal Value
|
||||
Less: Net Debt (Total Debt - Cash)
|
||||
Plus: Non-operating Assets
|
||||
Less: Minority Interest
|
||||
Less: Preferred Stock
|
||||
= Equity Value
|
||||
|
||||
Price Per Share = Equity Value / Diluted Shares Outstanding
|
||||
```
|
||||
|
||||
### DCF Sensitivity Analysis
|
||||
|
||||
Always perform sensitivity analysis on key variables:
|
||||
|
||||
1. **Two-way sensitivity table**: WACC vs. Terminal Growth Rate
|
||||
2. **Revenue growth scenarios**: Base / Bull / Bear cases
|
||||
3. **Margin assumptions**: Operating leverage scenarios
|
||||
4. **Terminal multiple sensitivity**: If using exit multiple method
|
||||
|
||||
**Example Sensitivity Table:**
|
||||
```
|
||||
Terminal Growth Rate
|
||||
WACC 2.0% 2.5% 3.0%
|
||||
8.0% $45 $48 $52
|
||||
9.0% $40 $43 $46
|
||||
10.0% $36 $39 $41
|
||||
```
|
||||
|
||||
### Common DCF Pitfalls to Avoid
|
||||
|
||||
1. **Double-counting growth**: Don't project high growth without corresponding investment (CapEx, NWC)
|
||||
2. **Unrealistic terminal growth**: Should not exceed long-term GDP growth
|
||||
3. **Ignoring cyclicality**: Normalize earnings for cyclical businesses
|
||||
4. **Wrong cash flow definition**: Use unlevered FCF, not net income
|
||||
5. **Inconsistent assumptions**: Match discount rate to cash flows (unlevered FCF → WACC)
|
||||
|
||||
---
|
||||
|
||||
## Trading Comparables Analysis
|
||||
|
||||
### Overview
|
||||
|
||||
Trading comps values a company based on how similar companies are valued in the public markets. This reflects current market sentiment and relative valuation.
|
||||
|
||||
### Step-by-Step Comps Process
|
||||
|
||||
#### 1. Select Comparable Companies
|
||||
|
||||
**Selection Criteria:**
|
||||
- Same industry/sector (primary criterion)
|
||||
- Similar business model and revenue streams
|
||||
- Comparable size (market cap, revenue)
|
||||
- Similar growth profile and margins
|
||||
- Similar end markets and geographies
|
||||
|
||||
**Typical Universe:**
|
||||
- Start with 8-15 companies
|
||||
- Remove companies with unique circumstances
|
||||
- Final set of 5-10 companies
|
||||
|
||||
#### 2. Gather Financial Information
|
||||
|
||||
**Required Data:**
|
||||
- Current stock price and shares outstanding
|
||||
- Latest fiscal year financial statements
|
||||
- Next-year (NTM) estimates from consensus
|
||||
- Historical growth rates
|
||||
|
||||
**Calculate Market Metrics:**
|
||||
- Market Cap = Share Price × Shares Outstanding
|
||||
- Enterprise Value = Market Cap + Debt + Minority Interest + Preferred - Cash
|
||||
- Net Debt = Total Debt - Cash & Equivalents
|
||||
|
||||
#### 3. Calculate Valuation Multiples
|
||||
|
||||
**Enterprise Value Multiples:**
|
||||
- **EV/Revenue**: Good for early-stage/high-growth companies
|
||||
- **EV/EBITDA**: Most common; good for capital-intensive businesses
|
||||
- **EV/EBIT**: Useful when D&A varies significantly
|
||||
|
||||
**Equity Value Multiples:**
|
||||
- **P/E (Price/Earnings)**: Most widely used
|
||||
- **P/B (Price/Book)**: Good for financial institutions
|
||||
- **P/S (Price/Sales)**: For unprofitable companies
|
||||
|
||||
**Calculate for:**
|
||||
- Last Twelve Months (LTM) - historical
|
||||
- Next Twelve Months (NTM) - forward-looking (preferred)
|
||||
|
||||
#### 4. Analyze and Select Multiples
|
||||
|
||||
**Create Comparable Company Table:**
|
||||
|
||||
| Company | Market Cap | EV/Revenue | EV/EBITDA | EV/EBIT | P/E (NTM) | Revenue Growth | EBITDA Margin |
|
||||
|---------|-----------|------------|-----------|---------|-----------|----------------|---------------|
|
||||
| Comp A | $10B | 3.5x | 12.0x | 18.0x | 22.0x | 15% | 28% |
|
||||
| Comp B | $8B | 3.0x | 10.5x | 16.0x | 19.0x | 12% | 27% |
|
||||
| ... | ... | ... | ... | ... | ... | ... | ... |
|
||||
| Median | - | **3.2x** | **11.0x** | **17.0x** | **20.5x** | 13% | 27.5% |
|
||||
|
||||
**Adjustments:**
|
||||
- Remove outliers (typically >2 standard deviations)
|
||||
- Consider using median instead of mean (less affected by outliers)
|
||||
- Weight multiples if some comps are more comparable
|
||||
- Adjust for differences in growth, margins, risk
|
||||
|
||||
#### 5. Apply Multiples to Target Company
|
||||
|
||||
**Example Calculation:**
|
||||
```
|
||||
Target Company NTM EBITDA = $500M
|
||||
Selected EV/EBITDA Multiple = 11.0x
|
||||
Implied Enterprise Value = $500M × 11.0x = $5,500M
|
||||
|
||||
Less: Net Debt = $1,000M
|
||||
Equity Value = $4,500M
|
||||
|
||||
Shares Outstanding = 100M
|
||||
Implied Price Per Share = $45.00
|
||||
```
|
||||
|
||||
#### 6. Select Appropriate Multiple
|
||||
|
||||
**Choose based on:**
|
||||
- **EV/Revenue**: High-growth, unprofitable companies (tech, biotech pre-profit)
|
||||
- **EV/EBITDA**: Most common; capital-intensive industries (manufacturing, telecom)
|
||||
- **P/E**: Profitable companies with stable cap structure (consumer, retail)
|
||||
- **Sector-specific**: P/B for banks, EV/Production for oil & gas, EV/Subscriber for media
|
||||
|
||||
### Premium/Discount Analysis
|
||||
|
||||
Apply premiums or discounts based on:
|
||||
- **Growth premium**: Higher growth → higher multiple
|
||||
- **Profitability**: Higher margins → higher multiple
|
||||
- **Size**: Larger companies typically trade at premium (liquidity)
|
||||
- **Market position**: Market leaders → premium
|
||||
- **Geographic**: Developed vs. emerging markets
|
||||
|
||||
---
|
||||
|
||||
## Precedent Transactions Analysis
|
||||
|
||||
### Overview
|
||||
|
||||
Precedent transactions values a company based on prices paid for similar companies in M&A transactions. This reflects control premiums and strategic value.
|
||||
|
||||
### Step-by-Step Process
|
||||
|
||||
#### 1. Identify Relevant Transactions
|
||||
|
||||
**Selection Criteria:**
|
||||
- Same or similar industry
|
||||
- Similar size (within 0.5x to 2x target's size)
|
||||
- Similar business characteristics
|
||||
- Recent transactions (last 3-5 years preferred)
|
||||
- Announced and closed deals (avoid withdrawn deals)
|
||||
|
||||
**Typical Universe:**
|
||||
- 5-10 transactions minimum
|
||||
- Focus on recent deals (weight more recent higher)
|
||||
|
||||
#### 2. Gather Transaction Details
|
||||
|
||||
**Required Information:**
|
||||
- Transaction date (announcement and close)
|
||||
- Acquisition price and structure (cash, stock, mixed)
|
||||
- Target's financials at time of transaction
|
||||
- Strategic rationale and synergies
|
||||
- Control premium paid
|
||||
|
||||
**Sources:**
|
||||
- SEC filings (S-4, 8-K, proxy statements)
|
||||
- Press releases and investor presentations
|
||||
- M&A databases (CapIQ, FactSet, Bloomberg)
|
||||
|
||||
#### 3. Calculate Transaction Multiples
|
||||
|
||||
**Same multiples as trading comps, but based on transaction value:**
|
||||
|
||||
```
|
||||
Transaction Value = Equity Purchase Price + Assumed Debt - Cash Acquired
|
||||
|
||||
EV/Revenue (LTM) = Transaction Value / Target's LTM Revenue
|
||||
EV/EBITDA (LTM) = Transaction Value / Target's LTM EBITDA
|
||||
EV/EBIT (LTM) = Transaction Value / Target's LTM EBIT
|
||||
```
|
||||
|
||||
**Calculate Control Premium:**
|
||||
```
|
||||
Control Premium = (Offer Price - Unaffected Price) / Unaffected Price
|
||||
```
|
||||
- Unaffected Price = Target's stock price 1-2 days before announcement
|
||||
- Typical range: 20-40%
|
||||
|
||||
#### 4. Analyze Precedent Transactions
|
||||
|
||||
**Create Precedent Transactions Table:**
|
||||
|
||||
| Date | Target | Acquirer | Deal Value | EV/Revenue | EV/EBITDA | Premium | Rationale |
|
||||
|------|--------|----------|------------|------------|-----------|---------|-----------|
|
||||
| Q1'24 | CompX | BuyerA | $5.0B | 4.0x | 14.0x | 35% | Market consolidation |
|
||||
| Q3'23 | CompY | BuyerB | $3.5B | 3.5x | 12.5x | 28% | Strategic fit |
|
||||
| Median | - | - | - | **3.8x** | **13.0x** | **31%** | - |
|
||||
|
||||
#### 5. Apply to Target Company
|
||||
|
||||
**Important Considerations:**
|
||||
- Precedent multiples typically higher than trading comps (include control premium)
|
||||
- Adjust for differences in transaction rationale
|
||||
- Consider market conditions at time of transactions vs. current
|
||||
- Weight recent transactions more heavily
|
||||
|
||||
**Example Calculation:**
|
||||
```
|
||||
Target Company LTM EBITDA = $450M
|
||||
Selected EV/EBITDA Multiple = 13.0x (precedent)
|
||||
vs Trading Comps Multiple = 11.0x
|
||||
|
||||
Implied EV (Precedent) = $450M × 13.0x = $5,850M
|
||||
Implied EV (Trading) = $450M × 11.0x = $4,950M
|
||||
|
||||
Implied Control Premium = $5,850M / $4,950M - 1 = 18%
|
||||
```
|
||||
|
||||
### Adjustments to Transaction Multiples
|
||||
|
||||
**Consider adjusting for:**
|
||||
- **Market conditions**: Bull vs. bear market (M&A activity levels)
|
||||
- **Deal structure**: Strategic vs. financial buyer
|
||||
- **Synergies**: Transactions with high synergies command premiums
|
||||
- **Competitive dynamics**: Single vs. multiple bidders
|
||||
- **Time value**: Older transactions less relevant
|
||||
|
||||
---
|
||||
|
||||
## Valuation Reconciliation
|
||||
|
||||
### Creating a Valuation Bridge
|
||||
|
||||
Present all three methods in a single framework:
|
||||
|
||||
**Example Valuation Summary:**
|
||||
|
||||
| Method | Enterprise Value | Equity Value | Price/Share | Weight | Implied Value |
|
||||
|--------|------------------|--------------|-------------|--------|---------------|
|
||||
| DCF Analysis | $5,200M | $4,200M | $42.00 | 50% | $21.00 |
|
||||
| Trading Comps | $5,500M | $4,500M | $45.00 | 30% | $13.50 |
|
||||
| Precedent Trans. | $5,850M | $4,850M | $48.50 | 20% | $9.70 |
|
||||
| **Weighted Avg** | - | - | **$44.20** | - | **$44.20** |
|
||||
|
||||
### Weighting the Methods
|
||||
|
||||
**Typical Weighting:**
|
||||
- **DCF**: 40-60% (fundamental value, but assumes accuracy of projections)
|
||||
- **Trading Comps**: 25-40% (reflects current market sentiment)
|
||||
- **Precedent Trans.**: 15-25% (less relevant unless M&A likely)
|
||||
|
||||
**Adjust weights based on:**
|
||||
- **Confidence in forecasts**: Higher confidence → higher DCF weight
|
||||
- **Market conditions**: Bull/bear market affects comps reliability
|
||||
- **M&A likelihood**: Higher if company in play or industry consolidating
|
||||
- **Company maturity**: Mature companies → higher weight on comps; growth → higher DCF weight
|
||||
|
||||
### Valuation Range
|
||||
|
||||
Always present a valuation range, not a point estimate:
|
||||
|
||||
**Approach:**
|
||||
- **Base Case**: Most likely scenario
|
||||
- **Bull Case**: Optimistic assumptions (revenue growth, margins)
|
||||
- **Bear Case**: Conservative assumptions
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Bear Case: $38 - $40
|
||||
Base Case: $42 - $46
|
||||
Bull Case: $48 - $52
|
||||
|
||||
Recommendation: BUY with target price of $45 (midpoint of base case)
|
||||
```
|
||||
|
||||
### Sanity Checks
|
||||
|
||||
**Cross-check valuation with:**
|
||||
1. **Historical multiples**: Is current valuation in line with history?
|
||||
2. **Peer comparison**: Justified premium/discount vs. peers?
|
||||
3. **Implied growth**: What growth is market pricing in?
|
||||
4. **Implied returns**: IRR from current price to target price
|
||||
5. **Market cap analysis**: Does total market cap make sense?
|
||||
|
||||
---
|
||||
|
||||
## Conclusion
|
||||
|
||||
Using all three valuation methods provides a robust framework for determining fair value:
|
||||
|
||||
- **DCF** provides intrinsic value based on fundamentals
|
||||
- **Trading Comps** reflects current market valuation
|
||||
- **Precedent Transactions** indicates M&A value and control premium
|
||||
|
||||
The key is to understand the assumptions driving each method and to present a well-reasoned valuation range that considers multiple scenarios and methodologies.
|
||||
@@ -0,0 +1,92 @@
|
||||
# Model Update
|
||||
|
||||
description: Update financial models with new data — quarterly earnings, management guidance, macro changes, or revised assumptions. Adjusts estimates, recalculates valuation, and flags material changes. Use after earnings, guidance updates, or when assumptions need refreshing. Triggers on "update model", "plug earnings", "refresh estimates", "update numbers for [company]", "new guidance", or "revise estimates".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Identify What Changed
|
||||
|
||||
Determine the update trigger:
|
||||
- **Earnings release**: New quarterly actuals to plug in
|
||||
- **Guidance change**: Company updated forward outlook
|
||||
- **Estimate revision**: Analyst changing assumptions based on new data
|
||||
- **Macro update**: Interest rates, FX, commodity prices changed
|
||||
- **Event-driven**: M&A, restructuring, new product, management change
|
||||
|
||||
### Step 2: Plug New Data
|
||||
|
||||
#### After Earnings
|
||||
Update the model with reported actuals:
|
||||
|
||||
| Line Item | Prior Estimate | Actual | Delta | Notes |
|
||||
|-----------|---------------|--------|-------|-------|
|
||||
| Revenue | | | | |
|
||||
| Gross Margin | | | | |
|
||||
| Operating Expenses | | | | |
|
||||
| EBITDA | | | | |
|
||||
| EPS | | | | |
|
||||
| [Key metric 1] | | | | |
|
||||
| [Key metric 2] | | | | |
|
||||
|
||||
**Segment Detail** (if applicable):
|
||||
- Update each segment's revenue and margin
|
||||
- Note any segment mix shifts
|
||||
|
||||
**Balance Sheet / Cash Flow Updates**:
|
||||
- Cash and debt balances
|
||||
- Share count (buybacks, dilution)
|
||||
- Capex actual vs. estimate
|
||||
- Working capital changes
|
||||
|
||||
### Step 3: Revise Forward Estimates
|
||||
|
||||
Based on the new data, adjust forward estimates:
|
||||
|
||||
| | Old FY Est | New FY Est | Change | Old Next FY | New Next FY | Change |
|
||||
|---|-----------|-----------|--------|------------|------------|--------|
|
||||
| Revenue | | | | | | |
|
||||
| EBITDA | | | | | | |
|
||||
| EPS | | | | | | |
|
||||
|
||||
**Key Assumption Changes:**
|
||||
- What assumptions are you changing and why?
|
||||
- Revenue growth rate: old → new (reason)
|
||||
- Margin assumption: old → new (reason)
|
||||
- Any new items (restructuring charges, one-time gains, etc.)
|
||||
|
||||
### Step 4: Valuation Impact
|
||||
|
||||
Recalculate valuation with updated estimates:
|
||||
|
||||
| Valuation Method | Prior | Updated | Change |
|
||||
|-----------------|-------|---------|--------|
|
||||
| DCF fair value | | | |
|
||||
| P/E (NTM EPS × target multiple) | | | |
|
||||
| EV/EBITDA (NTM EBITDA × target multiple) | | | |
|
||||
| **Price Target** | | | |
|
||||
|
||||
### Step 5: Summary & Action
|
||||
|
||||
**Estimate Change Summary:**
|
||||
- One paragraph: what changed, why, and what it means for the stock
|
||||
- Is this a thesis-changing event or noise?
|
||||
|
||||
**Rating / Price Target:**
|
||||
- Maintain or change rating?
|
||||
- New price target (if changed) with methodology
|
||||
- Upside/downside to current price
|
||||
|
||||
### Step 6: Output
|
||||
|
||||
- Updated Excel model (if user provides the existing model)
|
||||
- Estimate change summary (markdown or Word)
|
||||
- Updated price target derivation
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Always reconcile your estimates to the company's reported figures before projecting forward
|
||||
- Note any non-recurring items and whether your estimates are GAAP or adjusted
|
||||
- Track your estimate revision history — it shows your analytical progression
|
||||
- If the quarter was noisy, separate signal from noise in your estimate changes
|
||||
- Check consensus after updating — how do your revised estimates compare to the Street?
|
||||
- Share count matters — dilution from stock comp, converts, or buybacks can materially affect EPS
|
||||
@@ -0,0 +1,86 @@
|
||||
# Morning Note
|
||||
|
||||
description: Draft concise morning meeting notes summarizing overnight developments, trade ideas, and key events for coverage stocks. Designed for the 7am morning meeting format — tight, opinionated, actionable. Triggers on "morning note", "morning meeting", "what happened overnight", "trade idea", "morning call prep", or "daily note".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Overnight Developments
|
||||
|
||||
Scan for relevant events across coverage universe:
|
||||
|
||||
**Earnings & Guidance**
|
||||
- Any coverage companies reporting overnight or pre-market?
|
||||
- Earnings surprises (beat/miss on revenue, EPS, key metrics)
|
||||
- Guidance changes (raised, lowered, maintained)
|
||||
|
||||
**News & Events**
|
||||
- M&A announcements or rumors
|
||||
- Management changes
|
||||
- Product launches or regulatory decisions
|
||||
- Analyst upgrades/downgrades from competitors
|
||||
- Macro data or policy changes affecting the sector
|
||||
|
||||
**Market Context**
|
||||
- Overnight futures / pre-market moves
|
||||
- Sector ETF performance
|
||||
- Relevant commodity or currency moves
|
||||
- Key economic data releases today
|
||||
|
||||
### Step 2: Morning Note Format
|
||||
|
||||
Keep it tight — a morning note should be readable in 2 minutes:
|
||||
|
||||
---
|
||||
|
||||
**[Date] Morning Note — [Analyst Name]**
|
||||
**[Sector Coverage]**
|
||||
|
||||
**Top Call: [Headline — the one thing PMs need to hear]**
|
||||
- 2-3 sentences on the key development and why it matters
|
||||
- Stock impact: price target, rating reiteration/change
|
||||
|
||||
**Overnight/Pre-Market Developments**
|
||||
- [Company A]: One-line summary of earnings/news + our take
|
||||
- [Company B]: One-line summary + our take
|
||||
- [Sector/Macro]: Relevant sector-wide development
|
||||
|
||||
**Key Events Today**
|
||||
- [Time]: [Company] earnings call
|
||||
- [Time]: Economic data release (expectations vs. our view)
|
||||
- [Time]: Conference or investor day
|
||||
|
||||
**Trade Ideas** (if any)
|
||||
- [Long/Short] [Company]: 1-2 sentence thesis + catalyst
|
||||
- Risk: What would make this wrong
|
||||
|
||||
---
|
||||
|
||||
### Step 3: Quick Takes on Earnings
|
||||
|
||||
If a coverage company reported, provide a quick reaction:
|
||||
|
||||
| Metric | Consensus | Actual | Beat/Miss |
|
||||
|--------|-----------|--------|-----------|
|
||||
| Revenue | | | |
|
||||
| EPS | | | |
|
||||
| [Key metric] | | | |
|
||||
| Guidance | | | |
|
||||
|
||||
**Our Take**: 2-3 sentences — is this good or bad for the stock? Does it change our thesis?
|
||||
|
||||
**Action**: Maintain / Upgrade / Downgrade rating? Adjust price target?
|
||||
|
||||
### Step 4: Output
|
||||
|
||||
- Markdown text for email/Slack distribution
|
||||
- Word document if formal distribution is needed
|
||||
- Keep to 1 page max — PMs and traders won't read more
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Be opinionated — morning notes that just summarize news without a view are useless
|
||||
- Lead with the most important thing — don't bury the headline
|
||||
- "No news" is a valid morning note — say "nothing material overnight, maintaining positioning"
|
||||
- Distinguish between actionable events (earnings, M&A) and noise (minor analyst notes, non-events)
|
||||
- Time-stamp your takes — if you're writing at 6am, note that pre-market may change by open
|
||||
- If you're wrong, own it in the next morning note — credibility matters more than being right every time
|
||||
@@ -0,0 +1,85 @@
|
||||
# Sector Overview
|
||||
|
||||
description: Create comprehensive industry and sector landscape reports covering market dynamics, competitive positioning, key players, and thematic trends. Use for client requests, sector initiations, thematic research pieces, or internal knowledge building. Triggers on "sector overview", "industry report", "market landscape", "sector analysis", "industry deep dive", or "thematic research".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Define Scope
|
||||
|
||||
- **Sector / subsector**: What industry and how narrowly defined?
|
||||
- **Purpose**: Client report, internal research, pitch material, idea generation
|
||||
- **Depth**: High-level overview (5-10 pages) or deep dive (20-30 pages)
|
||||
- **Angle**: Neutral landscape vs. thematic thesis (e.g., "AI infrastructure buildout")
|
||||
- **Universe**: Public companies only, or include private?
|
||||
|
||||
### Step 2: Market Overview
|
||||
|
||||
**Market Size & Growth**
|
||||
- Total addressable market (TAM) with source
|
||||
- Historical growth rate (5-year CAGR)
|
||||
- Forecast growth rate and key assumptions
|
||||
- Market segmentation (by product, geography, end market, customer type)
|
||||
|
||||
**Industry Structure**
|
||||
- Fragmented vs. consolidated — top 5 market share
|
||||
- Value chain map — where does value accrue?
|
||||
- Business model types (subscription, transaction, licensing, services)
|
||||
- Barriers to entry (capital, regulatory, technical, network effects)
|
||||
|
||||
**Key Trends & Drivers**
|
||||
- Secular tailwinds (3-5 major trends)
|
||||
- Headwinds and risks
|
||||
- Technology disruption vectors
|
||||
- Regulatory developments
|
||||
- M&A activity and consolidation trends
|
||||
|
||||
### Step 3: Competitive Landscape
|
||||
|
||||
**Company Profiles** (for top 5-10 players):
|
||||
|
||||
| Company | Revenue | Growth | EBITDA Margin | Market Share | Key Differentiator |
|
||||
|---------|---------|--------|--------------|-------------|-------------------|
|
||||
| | | | | | |
|
||||
|
||||
For each company, brief profile:
|
||||
- Business description (2-3 sentences)
|
||||
- Strategic positioning and moat
|
||||
- Recent developments (earnings, M&A, product launches)
|
||||
- Valuation snapshot (P/E, EV/EBITDA, EV/Revenue)
|
||||
|
||||
**Competitive Dynamics**
|
||||
- How do companies compete? (price, product, service, distribution)
|
||||
- Who is gaining/losing share and why?
|
||||
- Disruption risk from new entrants or adjacent players
|
||||
|
||||
### Step 4: Valuation Context
|
||||
|
||||
- Sector trading multiples (current and historical range)
|
||||
- Premium/discount drivers (growth, margins, market position)
|
||||
- Recent M&A transaction multiples
|
||||
- How does the sector compare to the broader market?
|
||||
|
||||
### Step 5: Investment Implications
|
||||
|
||||
- Where are the best risk/reward opportunities?
|
||||
- What thematic bets can be expressed through this sector?
|
||||
- Key debates in the sector (bull vs. bear arguments)
|
||||
- Catalysts that could change the sector narrative
|
||||
|
||||
### Step 6: Output
|
||||
|
||||
- Word document or PowerPoint with:
|
||||
- Market overview and sizing
|
||||
- Competitive landscape map
|
||||
- Company comparison table
|
||||
- Valuation summary
|
||||
- Key charts: market growth, share trends, valuation history
|
||||
- Excel appendix with detailed company data
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Source all market size data — cite the research firm or methodology
|
||||
- Distinguish between TAM hype and realistic addressable market
|
||||
- Sector overviews age fast — note the date and flag data that may be stale
|
||||
- Charts are essential — market size waterfall, competitive positioning matrix, valuation scatter plot
|
||||
- If for a client, tailor the "so what" to their specific situation (M&A target identification, competitive positioning, market entry)
|
||||
@@ -0,0 +1,64 @@
|
||||
# Thesis Tracker
|
||||
|
||||
description: Maintain and update investment theses for portfolio positions and watchlist names. Track key data points, catalysts, and thesis milestones over time. Use when updating a thesis with new information, reviewing position rationale, or checking if a thesis is still intact. Triggers on "update thesis for [company]", "is my thesis still intact", "thesis check", "add data point to [company]", or "review my positions".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Define or Load Thesis
|
||||
|
||||
If creating a new thesis:
|
||||
- **Company**: Name and ticker
|
||||
- **Position**: Long or Short
|
||||
- **Thesis statement**: 1-2 sentence core thesis (e.g., "Long ACME — margin expansion from pricing power + operating leverage as mix shifts to software")
|
||||
- **Key pillars**: 3-5 supporting arguments
|
||||
- **Key risks**: 3-5 risks that would invalidate the thesis
|
||||
- **Catalysts**: Upcoming events that could prove/disprove the thesis (earnings, product launches, regulatory decisions)
|
||||
- **Target price / valuation**: What's it worth if the thesis plays out
|
||||
- **Stop-loss trigger**: What would make you exit
|
||||
|
||||
If updating an existing thesis, ask the user for the new data point or development.
|
||||
|
||||
### Step 2: Update Log
|
||||
|
||||
For each new data point or development:
|
||||
|
||||
- **Date**: When this happened
|
||||
- **Data point**: What changed (earnings beat, management departure, competitor move, etc.)
|
||||
- **Thesis impact**: Does this strengthen, weaken, or neutralize a specific pillar?
|
||||
- **Action**: No change / Increase position / Trim / Exit
|
||||
- **Updated conviction**: High / Medium / Low
|
||||
|
||||
### Step 3: Thesis Scorecard
|
||||
|
||||
Maintain a running scorecard:
|
||||
|
||||
| Pillar | Original Expectation | Current Status | Trend |
|
||||
|--------|---------------------|----------------|-------|
|
||||
| Revenue growth >20% | On track | Q3 was 22% | Stable |
|
||||
| Margin expansion | Behind | Margins flat YoY | Concerning |
|
||||
| New product launch | Pending | Delayed to Q2 | Watch |
|
||||
|
||||
### Step 4: Catalyst Calendar
|
||||
|
||||
Track upcoming catalysts:
|
||||
|
||||
| Date | Event | Expected Impact | Notes |
|
||||
|------|-------|-----------------|-------|
|
||||
| | | | |
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
Thesis summary suitable for:
|
||||
- Morning meeting discussion
|
||||
- Portfolio review
|
||||
- Risk committee presentation
|
||||
|
||||
Format: Concise markdown or Word doc with the scorecard, recent updates, and current conviction level.
|
||||
|
||||
## Important Notes
|
||||
|
||||
- A thesis should be falsifiable — if nothing could disprove it, it's not a thesis
|
||||
- Track disconfirming evidence as rigorously as confirming evidence
|
||||
- Review theses at least quarterly, even when nothing dramatic has happened
|
||||
- If the user manages multiple positions, offer to do a full portfolio thesis review
|
||||
- Store thesis data in a structured format so it can be referenced across sessions
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "financial-analysis",
|
||||
"version": "0.1.0",
|
||||
"description": "Core financial modeling and analysis tools: DCF, comps, LBO, 3-statement models, competitive analysis, and deck QC",
|
||||
"author": {
|
||||
"name": "Anthropic FSI"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"daloopa": {
|
||||
"type": "http",
|
||||
"url": "https://mcp.daloopa.com/server/mcp"
|
||||
},
|
||||
"morningstar": {
|
||||
"type": "http",
|
||||
"url": "https://mcp.morningstar.com/mcp"
|
||||
},
|
||||
"sp-global": {
|
||||
"type": "http",
|
||||
"url": "https://kfinance.kensho.com/integrations/mcp"
|
||||
},
|
||||
"factset": {
|
||||
"type": "http",
|
||||
"url": "https://mcp.factset.com/mcp"
|
||||
},
|
||||
"moodys": {
|
||||
"type": "http",
|
||||
"url": "https://api.moodys.com/genai-ready-data/m1/mcp"
|
||||
},
|
||||
"mtnewswire": {
|
||||
"type": "http",
|
||||
"url": "https://vast-mcp.blueskyapi.com/mtnewswires"
|
||||
},
|
||||
"aiera": {
|
||||
"type": "http",
|
||||
"url": "https://mcp-pub.aiera.com"
|
||||
},
|
||||
"lseg": {
|
||||
"type": "http",
|
||||
"url": "https://api.analytics.lseg.com/lfa/mcp"
|
||||
},
|
||||
"pitchbook": {
|
||||
"type": "http",
|
||||
"url": "https://premium.mcp.pitchbook.com/mcp"
|
||||
},
|
||||
"chronograph": {
|
||||
"type": "http",
|
||||
"url": "https://ai.chronograph.pe/mcp"
|
||||
},
|
||||
"egnyte": {
|
||||
"type": "http",
|
||||
"url": "https://mcp-server.egnyte.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Fill out a 3-statement financial model template
|
||||
argument-hint: "[path to template file]"
|
||||
---
|
||||
|
||||
Load the `3-statements` skill and populate a 3-statement financial model (Income Statement, Balance Sheet, Cash Flow Statement).
|
||||
|
||||
If a file path is provided, use it as the template. Otherwise ask the user for their model template.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: QC a presentation deck for errors and consistency
|
||||
argument-hint: "[path to .pptx file]"
|
||||
---
|
||||
|
||||
Load the `check-deck` skill and review the specified presentation for formatting errors, data inconsistencies, and quality issues.
|
||||
|
||||
If a file path is provided, use it. Otherwise ask the user for the deck to review.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Create a competitive landscape analysis
|
||||
argument-hint: "[company or industry]"
|
||||
---
|
||||
|
||||
Load the `competitive-analysis` skill and build a competitive landscape analysis for the specified company or industry.
|
||||
|
||||
If a company/industry is provided as an argument, use it. Otherwise ask the user what they want to analyze.
|
||||
@@ -0,0 +1,109 @@
|
||||
---
|
||||
description: Build a comparable company analysis with trading multiples
|
||||
argument-hint: "[company name or ticker]"
|
||||
---
|
||||
|
||||
# Comparable Company Analysis Command
|
||||
|
||||
Build an institutional-grade comparable company analysis with operating metrics, valuation multiples, and statistical benchmarking.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Company Information
|
||||
|
||||
If a company name or ticker is provided, use it. Otherwise ask:
|
||||
- "What company would you like to analyze?"
|
||||
|
||||
### Step 2: Load Comps Analysis Skill
|
||||
|
||||
Use `skill: "comps-analysis"` to build the analysis:
|
||||
|
||||
1. **Clarify the analysis purpose**:
|
||||
- "What's the key question?" (valuation, efficiency, growth comparison)
|
||||
- "Who is the audience?" (IC, board, quick reference)
|
||||
- "Do you have a preferred format or template?"
|
||||
|
||||
2. **Identify peer group** (4-6 comparable companies):
|
||||
- Similar business model
|
||||
- Similar scale/market cap range
|
||||
- Same industry/sector
|
||||
- Geographic comparability
|
||||
|
||||
3. **Gather data** (prioritize MCP sources if available):
|
||||
- Operating metrics: Revenue, Growth, Gross Margin, EBITDA, EBITDA Margin
|
||||
- Valuation: Market Cap, Enterprise Value, EV/Revenue, EV/EBITDA, P/E
|
||||
- Additional metrics based on industry (Rule of 40 for SaaS, etc.)
|
||||
|
||||
4. **Build the analysis**:
|
||||
- Operating Statistics section with company data + statistics (Max, 75th, Median, 25th, Min)
|
||||
- Valuation Multiples section with same statistical summary
|
||||
- Notes & Methodology documentation
|
||||
|
||||
### Step 3: Create Excel Output
|
||||
|
||||
Generate Excel file with:
|
||||
- Header block (analysis title, companies, date, units)
|
||||
- Operating Statistics & Financial Metrics section
|
||||
- Valuation Multiples section
|
||||
- Statistical summary for each metric
|
||||
- Notes section documenting sources and methodology
|
||||
|
||||
### Step 4: Deliver Output
|
||||
|
||||
Provide:
|
||||
1. **Excel file** (.xlsx) - the comps analysis
|
||||
2. **Summary** highlighting:
|
||||
- Peer group selection rationale
|
||||
- Key insights (who trades at premium/discount)
|
||||
- Median multiples for reference
|
||||
|
||||
## Output Format Reference
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ [SECTOR] - COMPARABLE COMPANY ANALYSIS │
|
||||
│ [Company 1] • [Company 2] • [Company 3] • [Company 4] │
|
||||
│ As of [Date] | All figures in USD Millions │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ OPERATING STATISTICS & FINANCIAL METRICS │
|
||||
├──────────┬─────────┬─────────┬──────────┬─────────┬────────────┤
|
||||
│ Company │ Revenue │ Growth │ Gross │ EBITDA │ EBITDA │
|
||||
│ │ (LTM) │ (YoY) │ Margin │ (LTM) │ Margin │
|
||||
├──────────┼─────────┼─────────┼──────────┼─────────┼────────────┤
|
||||
│ [Data rows for each company] │
|
||||
│ │
|
||||
│ Maximum │ =MAX │ =MAX │ =MAX │ =MAX │ =MAX │
|
||||
│ 75th % │ =QUART │ =QUART │ =QUART │ =QUART │ =QUART │
|
||||
│ Median │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │
|
||||
│ 25th % │ =QUART │ =QUART │ =QUART │ =QUART │ =QUART │
|
||||
│ Minimum │ =MIN │ =MIN │ =MIN │ =MIN │ =MIN │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ VALUATION MULTIPLES │
|
||||
├──────────┬──────────┬──────────┬──────────┬───────────┬────────┤
|
||||
│ Company │ Mkt Cap │ EV │ EV/Rev │ EV/EBITDA │ P/E │
|
||||
├──────────┼──────────┼──────────┼──────────┼───────────┼────────┤
|
||||
│ [Data rows + statistics] │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Industry-Specific Metrics
|
||||
|
||||
| Industry | Additional Metrics |
|
||||
|----------|-------------------|
|
||||
| Software/SaaS | ARR, Net Dollar Retention, Rule of 40 |
|
||||
| Retail | Same-store sales, Inventory Turns |
|
||||
| Financials | ROE, ROA, Efficiency Ratio |
|
||||
| Manufacturing | Asset Turnover, CapEx/Revenue |
|
||||
| Healthcare | R&D/Revenue, Pipeline Value |
|
||||
|
||||
## Quality Checklist
|
||||
|
||||
Before delivery:
|
||||
- [ ] 4-6 truly comparable companies
|
||||
- [ ] Consistent time periods (all LTM or all FY)
|
||||
- [ ] All formulas reference cells (no hardcoded values)
|
||||
- [ ] Cell comments on all hardcoded inputs with sources
|
||||
- [ ] Statistics include Max, 75th, Median, 25th, Min
|
||||
- [ ] Notes section documents sources and methodology
|
||||
- [ ] Blue = inputs, Black = formulas
|
||||
- [ ] Sanity checks pass (margins logical, multiples reasonable)
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
description: Build a DCF valuation model with comps-informed terminal multiples
|
||||
argument-hint: "[company name or ticker]"
|
||||
---
|
||||
|
||||
# DCF Valuation Command
|
||||
|
||||
Build an institutional-quality DCF model that uses comparable company analysis to inform valuation ranges.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Company Information
|
||||
|
||||
If a company name or ticker is provided, use it. Otherwise ask:
|
||||
- "What company would you like to value?"
|
||||
|
||||
### Step 2: Run Comparable Company Analysis
|
||||
|
||||
**First, load the comps-analysis skill** to build trading comps:
|
||||
|
||||
Use `skill: "comps-analysis"` to:
|
||||
1. Identify 4-6 comparable public companies
|
||||
2. Pull operating metrics (Revenue, EBITDA, margins, growth)
|
||||
3. Pull valuation multiples (EV/Revenue, EV/EBITDA, P/E)
|
||||
4. Calculate statistical summary (median, 25th/75th percentiles)
|
||||
|
||||
**Key outputs to capture from comps:**
|
||||
- Median EV/EBITDA multiple → informs terminal value exit multiple
|
||||
- Median EV/Revenue multiple → sanity check on DCF output
|
||||
- Peer growth rates → benchmark for revenue projections
|
||||
- Peer margins → benchmark for margin assumptions
|
||||
|
||||
### Step 3: Build DCF Model
|
||||
|
||||
**Load the dcf-model skill** to construct the valuation:
|
||||
|
||||
Use `skill: "dcf-model"` to:
|
||||
1. Gather historical financials and market data
|
||||
2. Build revenue projections (Bear/Base/Bull cases)
|
||||
3. Model operating expenses and FCF
|
||||
4. Calculate WACC using CAPM
|
||||
5. Discount cash flows and calculate terminal value
|
||||
6. Bridge to equity value and implied share price
|
||||
|
||||
**Use comps to inform DCF assumptions:**
|
||||
|
||||
| Comps Output | DCF Input |
|
||||
|--------------|-----------|
|
||||
| Peer median EV/EBITDA | Terminal exit multiple range |
|
||||
| Peer 25th-75th EV/EBITDA | Sensitivity analysis range |
|
||||
| Peer median growth rate | Benchmark for revenue assumptions |
|
||||
| Peer median EBITDA margin | Target margin in terminal year |
|
||||
| Peer median P/E | Cross-check implied P/E from DCF |
|
||||
|
||||
### Step 4: Cross-Check Valuation
|
||||
|
||||
After DCF is complete, validate:
|
||||
1. **Implied EV/EBITDA** from DCF vs peer median
|
||||
- If DCF implies 25x but peers trade at 12x, investigate why
|
||||
2. **Implied P/E** from DCF vs peer median
|
||||
3. **Terminal value as % of EV** (should be 50-70%)
|
||||
4. **Implied growth** embedded in valuation vs peer growth rates
|
||||
|
||||
### Step 5: Deliver Output
|
||||
|
||||
Provide:
|
||||
1. **Comps analysis spreadsheet** (.xlsx) with peer trading multiples
|
||||
2. **DCF model** (.xlsx) with:
|
||||
- Bear/Base/Bull scenarios
|
||||
- Sensitivity tables (WACC vs Terminal Growth, etc.)
|
||||
- Valuation summary with implied upside/downside
|
||||
3. **Summary** explaining:
|
||||
- Key valuation drivers
|
||||
- How comps informed the analysis
|
||||
- Risks and sensitivities to watch
|
||||
|
||||
## Example Output Summary
|
||||
|
||||
```
|
||||
VALUATION SUMMARY: [Company] ([Ticker])
|
||||
|
||||
Comparable Companies Analysis:
|
||||
- Peer Group: [List of 4-6 comps]
|
||||
- Median EV/EBITDA: 12.5x (range: 10.2x - 15.8x)
|
||||
- Median EV/Revenue: 3.2x (range: 2.1x - 4.5x)
|
||||
|
||||
DCF Valuation (Base Case):
|
||||
- Implied Share Price: $XX.XX
|
||||
- Current Price: $YY.YY
|
||||
- Implied Upside: +XX%
|
||||
|
||||
Valuation Cross-Check:
|
||||
- DCF Implied EV/EBITDA: 13.2x (vs peer median 12.5x)
|
||||
- DCF Implied P/E: 22.4x (vs peer median 20.1x)
|
||||
- Terminal Value: 62% of EV (within normal range)
|
||||
|
||||
Key Assumptions:
|
||||
- Revenue CAGR: X% (vs peer median X%)
|
||||
- Terminal EBITDA Margin: X% (vs peer median X%)
|
||||
- WACC: X.X%
|
||||
- Terminal Growth: X.X%
|
||||
```
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Debug and audit a financial model for errors
|
||||
argument-hint: "[path to .xlsx model file]"
|
||||
---
|
||||
|
||||
Load the `check-model` skill and audit the specified financial model for broken formulas, balance sheet imbalances, hardcoded overrides, circular references, and logic errors.
|
||||
|
||||
If a file path is provided, use it. Otherwise ask the user for the model to review.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Build an LBO model for a PE acquisition
|
||||
argument-hint: "[company name or deal details]"
|
||||
---
|
||||
|
||||
Load the `lbo-model` skill and build a leveraged buyout model for the specified company or deal.
|
||||
|
||||
If a company name is provided as an argument, use it. Otherwise ask the user for the target company and deal parameters.
|
||||
@@ -0,0 +1,31 @@
|
||||
---
|
||||
description: Create a reusable PPT template skill from a PowerPoint template file
|
||||
argument-hint: "[path to .pptx or .potx file]"
|
||||
allowed-tools: ["Read", "Write", "Bash", "Glob"]
|
||||
---
|
||||
|
||||
# PPT Template Creator Command
|
||||
|
||||
Create a self-contained PPT template skill from a user-provided PowerPoint template.
|
||||
|
||||
## Instructions
|
||||
|
||||
1. **Ask for the template file** if not provided:
|
||||
- "Please provide the path to your PowerPoint template file (.pptx or .potx)"
|
||||
- The template should contain the slide layouts and branding you want to use
|
||||
|
||||
2. **Load the ppt-template-creator skill**:
|
||||
- Use the `skill: "ppt-template-creator"` tool to load the full skill instructions
|
||||
- Follow the workflow in the skill to analyze the template and generate a new skill
|
||||
|
||||
3. **Gather additional info**:
|
||||
- Company/template name (for naming the skill)
|
||||
- Primary use cases (pitch decks, board materials, client presentations, etc.)
|
||||
|
||||
4. **Execute the skill workflow**:
|
||||
- Analyze template structure (layouts, placeholders, dimensions)
|
||||
- Generate skill directory with assets/ and SKILL.md
|
||||
- Create example presentation to validate
|
||||
- Package the skill
|
||||
|
||||
5. **Deliver the packaged skill** to the user
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,368 @@
|
||||
---
|
||||
name: anthropic-fsi-3-statements
|
||||
description: Complete, populate and fill out 3-statement financial model templates (Income Statement, Balance Sheet, Cash Flow Statement) . Use when asked to fill out model templates, complete existing model frameworks, populate financial models with data, complete a partially filled IS/BS/CF framework, or link integrated financial statements within an existing template structure. Triggers include requests to fill in, complete, or populate a 3-statement model template
|
||||
---
|
||||
|
||||
# 3-Statement Financial Model Template Completion
|
||||
|
||||
Complete and populate integrated financial model templates with proper linkages between Income Statement, Balance Sheet, and Cash Flow Statement.
|
||||
|
||||
## Model Structure
|
||||
|
||||
### Identifying Template Tab Organization
|
||||
|
||||
Templates vary in their tab naming conventions and organization. Before populating, review all tabs to understand the template's structure. Below are common tab names and their typical contents:
|
||||
|
||||
| Common Tab Names | Contents to Look For |
|
||||
|------------------|----------------------|
|
||||
| IS, P&L, Income Statement | Income Statement |
|
||||
| BS, Balance Sheet | Balance Sheet |
|
||||
| CF, CFS, Cash Flow | Cash Flow Statement |
|
||||
| WC, Working Capital | Working Capital Schedule |
|
||||
| DA, D&A, Depreciation, PP&E | Depreciation & Amortization Schedule |
|
||||
| Debt, Debt Schedule | Debt Schedule |
|
||||
| NOL, Tax, DTA | Net Operating Loss Schedule |
|
||||
| Assumptions, Inputs, Drivers | Driver assumptions and inputs |
|
||||
| Checks, Audit, Validation | Error-checking dashboard |
|
||||
|
||||
**Template Review Checklist**
|
||||
- Identify which tabs exist in the template (not all templates include every schedule)
|
||||
- Note any template-specific tabs not listed above
|
||||
- Understand tab dependencies (e.g., which schedules feed into the main statements)
|
||||
- Locate input cells vs. formula cells on each tab
|
||||
|
||||
### Understanding Template Structure
|
||||
|
||||
Before populating a template, familiarize yourself with its existing layout to ensure data is entered in the correct locations and formulas remain intact.
|
||||
|
||||
**Identifying Row Structure**
|
||||
- Locate the model title at top of each tab
|
||||
- Identify section headers and their visual separation
|
||||
- Find the units row indicating $ millions, %, x, etc.
|
||||
- Note column headers distinguishing Actuals vs. Estimates periods
|
||||
- Confirm period labels (e.g., FY2024A, FY2025E)
|
||||
- Identify input cells vs. formula cells (typically distinguished by font color)
|
||||
|
||||
**Identifying Column Structure**
|
||||
- Confirm line item labels in leftmost column
|
||||
- Verify historical years precede projection years
|
||||
- Note the visual border separating historical from projected periods
|
||||
- Check for consistent column order across all tabs
|
||||
|
||||
**Working with Named Ranges**
|
||||
Templates often use named ranges for key inputs and outputs. Before entering data:
|
||||
- Review existing named ranges in the template (Formulas → Name Manager in Excel)
|
||||
- Common named ranges include: Revenue growth rates, cost percentages, key outputs (Net Income, EBITDA, Total Debt, Cash), scenario selector cell
|
||||
- Ensure inputs are entered in cells that feed into these named ranges
|
||||
|
||||
### Projection Period
|
||||
- Templates typically project 5 years forward from last historical year
|
||||
- Verify historical (A) vs. projected (E) columns are clearly separated
|
||||
- Confirm columns use fiscal year notation (e.g., FY2024A, FY2025E)
|
||||
|
||||
## Margin Analysis
|
||||
|
||||
**Note: The following margin analysis should only be performed if prompted by the user or if the template explicitly requires it. If no prompt is given, skip this section.**
|
||||
|
||||
Calculate and display profitability margins on the Income Statement (IS) tab to track operational efficiency and enable peer comparison.
|
||||
|
||||
### Core Margins to Include
|
||||
|
||||
| Margin | Formula | What It Measures |
|
||||
|--------|---------|------------------|
|
||||
| Gross Margin | Gross Profit / Revenue | Pricing power, production efficiency |
|
||||
| EBITDA Margin | EBITDA / Revenue | Core operating profitability |
|
||||
| EBIT Margin | EBIT / Revenue | Operating profitability after D&A |
|
||||
| Net Income Margin | Net Income / Revenue | Bottom-line profitability |
|
||||
|
||||
### Income Statement Layout with Margins
|
||||
|
||||
Display margin percentages directly below each profit line item:
|
||||
- Gross Margin % below Gross Profit
|
||||
- EBIT Margin % below EBIT
|
||||
- EBITDA Margin % below EBITDA
|
||||
- Net Income Margin % below Net Income
|
||||
|
||||
## Credit Metrics
|
||||
|
||||
**Note: The following Credit analysis should only be performed if prompted by the user or if the template explicitly requires it. If no prompt is given, skip this section.**
|
||||
|
||||
Calculate and display credit/leverage metrics on the Balance Sheet (BS) tab to assess financial health, debt capacity, and covenant compliance.
|
||||
|
||||
### Core Credit Metrics to Include
|
||||
|
||||
| Metric | Formula | What It Measures |
|
||||
|--------|---------|------------------|
|
||||
| Total Debt / EBITDA | Total Debt / LTM EBITDA | Leverage multiple |
|
||||
| Net Debt / EBITDA | (Total Debt - Cash) / LTM EBITDA | Leverage net of cash |
|
||||
| Interest Coverage | EBITDA / Interest Expense | Ability to service debt |
|
||||
| Debt / Total Cap | Total Debt / (Total Debt + Equity) | Capital structure |
|
||||
| Debt / Equity | Total Debt / Total Equity | Financial leverage |
|
||||
| Current Ratio | Current Assets / Current Liabilities | Short-term liquidity |
|
||||
| Quick Ratio | (Current Assets - Inventory) / Current Liabilities | Immediate liquidity |
|
||||
|
||||
### Credit Metric Hierarchy Checks
|
||||
|
||||
Validate that Upside shows strongest credit profile:
|
||||
- Leverage: Upside < Base < Downside (lower is better)
|
||||
- Coverage: Upside > Base > Downside (higher is better)
|
||||
- Liquidity: Upside > Base > Downside (higher is better)
|
||||
|
||||
### Covenant Compliance Tracking
|
||||
|
||||
If debt covenants are known, add explicit compliance checks comparing actual metrics to covenant thresholds.
|
||||
|
||||
## Scenario Analysis (Base / Upside / Downside)
|
||||
|
||||
Use a scenario toggle (dropdown) in the Assumptions tab with CHOOSE or INDEX/MATCH formulas.
|
||||
|
||||
| Scenario | Description |
|
||||
|----------|-------------|
|
||||
| Base Case | Management guidance or consensus estimates |
|
||||
| Upside Case | Above-guidance growth, margin expansion |
|
||||
| Downside Case | Below-trend growth, margin compression |
|
||||
|
||||
**Key Drivers to Sensitize**: Revenue growth, Gross margin, SG&A %, DSO/DIO/DPO, CapEx %, Interest rate, Tax rate.
|
||||
|
||||
**Scenario Audit Checks**: Toggle switches all statements, BS balances in all scenarios, Cash ties out, Hierarchy holds (Upside > Base > Downside for NI, EBITDA, FCF, margins).
|
||||
|
||||
## SEC Filings Data Extraction
|
||||
|
||||
If the template specifically requires pulling data from SEC filings (10-K, 10-Q), see [references/sec-filings.md](references/sec-filings.md) for detailed extraction guidance. This reference is only needed when populating templates with public company data from regulatory filings.
|
||||
|
||||
## Completing Model Templates
|
||||
|
||||
This section provides general guidance for completing any 3-statement financial model template while preserving existing formulas and ensuring data integrity.
|
||||
|
||||
### Step 1: Analyze the Template Structure
|
||||
|
||||
Before entering any data, thoroughly review the template to understand its architecture:
|
||||
|
||||
**Identify Input vs. Formula Cells**
|
||||
- Look for visual cues (font color, cell shading) that distinguish input cells from formula cells
|
||||
- Common conventions: Blue font = inputs, Black font = formulas, Green font = links to other sheets
|
||||
- Use Excel's Trace Precedents/Dependents (Formulas → Trace Precedents) to understand cell relationships
|
||||
- Check for named ranges that may control key inputs (Formulas → Name Manager)
|
||||
|
||||
**Map the Template's Flow**
|
||||
- Identify which tabs feed into others (e.g., Assumptions → IS → BS → CF)
|
||||
- Note any supporting schedules and their linkages to main statements
|
||||
- Document the template's specific line items and structure before populating
|
||||
|
||||
### Step 2: Filling in Data Without Breaking Formulas
|
||||
|
||||
**Golden Rules for Data Entry**
|
||||
|
||||
| Rule | Description |
|
||||
|------|-------------|
|
||||
| Only edit input cells | Never overwrite cells containing formulas unless intentionally replacing the formula |
|
||||
| Preserve cell references | When copying data, use Paste Values (Ctrl+Shift+V) to avoid overwriting formulas with source formatting |
|
||||
| Match the template's units | Verify if template uses thousands, millions, or actual values before entering data |
|
||||
| Respect sign conventions | Follow the template's existing sign convention (e.g., expenses as positive or negative) |
|
||||
| Check for circular references | If the template uses iterative calculations, ensure Enable Iterative Calculation is turned on |
|
||||
|
||||
**Safe Data Entry Process**
|
||||
1. Identify the exact cells designated for input (usually highlighted or labeled)
|
||||
2. Enter historical data first, then verify formulas are calculating correctly for those periods
|
||||
3. Enter assumption drivers that feed forecast calculations
|
||||
4. Review calculated outputs to confirm formulas are working as intended
|
||||
5. If a formula cell must be modified, document the original formula before making changes
|
||||
|
||||
**Handling Pre-Built Formulas**
|
||||
- If formulas reference cells you haven't populated yet, expect temporary errors (#REF!, #DIV/0!) until all inputs are complete
|
||||
- When formulas produce unexpected results, trace precedents to identify missing or incorrect inputs
|
||||
- Never delete rows/columns without checking for formula dependencies across all tabs
|
||||
|
||||
### Step 3: Validating Formulas
|
||||
|
||||
**Formula Integrity Checks**
|
||||
|
||||
Before relying on template outputs, validate that formulas are functioning correctly:
|
||||
|
||||
| Check Type | Method |
|
||||
|------------|--------|
|
||||
| Trace precedents | Select a formula cell → Formulas → Trace Precedents to verify it references correct inputs |
|
||||
| Trace dependents | Verify key inputs flow to expected output cells |
|
||||
| Evaluate formula | Use Formulas → Evaluate Formula to step through complex calculations |
|
||||
| Check for hardcodes | Projection formulas should reference assumptions, not contain hardcoded values |
|
||||
| Test with known values | Input simple test values to verify formulas produce expected results |
|
||||
| Cross-tab consistency | Ensure the same formula logic applies across all projection periods |
|
||||
|
||||
**Common Formula Issues to Watch For**
|
||||
- Mixed absolute/relative references causing incorrect results when copied across periods
|
||||
- Broken links to external files or deleted ranges (#REF! errors)
|
||||
- Division by zero in early periods before revenue ramps (#DIV/0! errors)
|
||||
- Circular reference warnings (may be intentional for interest calculations)
|
||||
- Inconsistent formulas across projection columns (use Ctrl+\ to find differences)
|
||||
|
||||
**Validating Cross-Tab Linkages**
|
||||
- Confirm values that appear on multiple tabs are linked (not duplicated)
|
||||
- Verify schedule totals tie to corresponding line items on main statements
|
||||
- Check that period labels align across all tabs
|
||||
|
||||
### Step 4: Quality Checks by Sheet
|
||||
|
||||
Perform these validation checks on each sheet after populating the template:
|
||||
|
||||
**Income Statement (IS) Quality Checks**
|
||||
- Revenue figures match source data for historical periods
|
||||
- All expense line items sum to reported totals
|
||||
- Subtotals (Gross Profit, EBIT, EBT, Net Income) calculate correctly
|
||||
- Tax calculation logic is appropriate (handles losses correctly)
|
||||
- Forecast drivers reference assumptions tab (no hardcodes)
|
||||
- Period-over-period changes are directionally reasonable
|
||||
|
||||
**Balance Sheet (BS) Quality Checks**
|
||||
- Assets = Liabilities + Equity for every period (primary check)
|
||||
- Cash balance matches Cash Flow Statement ending cash
|
||||
- Working capital accounts tie to supporting schedules (if applicable)
|
||||
- Retained Earnings rolls forward correctly: Prior RE + Net Income - Dividends +/- Adjustments = Ending RE
|
||||
- Debt balances tie to debt schedule (if applicable)
|
||||
- All balance sheet items have appropriate signs (assets positive, most liabilities positive)
|
||||
|
||||
**Cash Flow Statement (CF) Quality Checks**
|
||||
- Net Income at top of CFO matches Income Statement Net Income
|
||||
- Non-cash add-backs (D&A, SBC, etc.) tie to their source schedules/statements
|
||||
- Working capital changes have correct signs (increase in asset = use of cash = negative)
|
||||
- CapEx ties to PP&E schedule or fixed asset roll-forward
|
||||
- Financing activities tie to changes in debt and equity accounts on BS
|
||||
- Ending Cash matches Balance Sheet Cash
|
||||
- Beginning Cash equals prior period Ending Cash
|
||||
|
||||
**Supporting Schedule Quality Checks**
|
||||
- Opening balances equal prior period closing balances
|
||||
- Roll-forward logic is complete (Beginning + Additions - Deductions = Ending)
|
||||
- Schedule totals tie to main statement line items
|
||||
- Assumptions used in calculations match Assumptions tab
|
||||
|
||||
### Step 5: Cross-Statement Integrity Checks
|
||||
|
||||
After validating individual sheets, confirm the three statements are properly integrated:
|
||||
|
||||
| Check | Formula | Expected Result |
|
||||
|-------|---------|-----------------|
|
||||
| Balance Sheet Balance | Assets - Liabilities - Equity | = 0 |
|
||||
| Cash Tie-Out | CF Ending Cash - BS Cash | = 0 |
|
||||
| Net Income Link | IS Net Income - CF Starting Net Income | = 0 |
|
||||
| Retained Earnings | Prior RE + NI - Dividends - BS Ending RE | = 0 (adjust for SBC/other items as needed) |
|
||||
|
||||
### Step 6: Final Review
|
||||
|
||||
Before considering the model complete:
|
||||
- Toggle through all scenarios (if applicable) to verify checks pass in each case
|
||||
- Review all #REF!, #DIV/0!, #VALUE!, and #NAME? errors and resolve or document
|
||||
- Confirm all input cells have been populated (search for placeholder values)
|
||||
- Verify units are consistent across all tabs
|
||||
- Save a clean version before making any additional modifications
|
||||
|
||||
## Model Validation and Audit
|
||||
|
||||
This section consolidates all validation checks and audit procedures for completed templates.
|
||||
|
||||
### Core Linkages (Must Always Hold)
|
||||
|
||||
See [references/formulas.md](references/formulas.md) for all formula details.
|
||||
|
||||
| Check | Formula | Expected Result |
|
||||
|-------|---------|-----------------|
|
||||
| Balance Sheet Balance | Assets - Liabilities - Equity | = 0 |
|
||||
| Cash Tie-Out | CF Ending Cash - BS Cash | = 0 |
|
||||
| Cash Monthly vs Annual | Closing Cash (Monthly) - Closing Cash (Annual) | = 0 |
|
||||
| Net Income Link | IS Net Income - CF Starting Net Income | = 0 |
|
||||
| Retained Earnings | Prior RE + NI + SBC - Dividends - BS Ending RE | = 0 |
|
||||
| Equity Financing | ΔCommon Stock/APIC (BS) - Equity Issuance (CFF) | = 0 |
|
||||
| Year 0 Equity | Equity Raised (Year 0) - Beginning Equity Capital (Year 1) | = 0 |
|
||||
|
||||
### Sign Convention Reference
|
||||
|
||||
| Statement | Item | Sign Convention |
|
||||
|-----------|------|-----------------|
|
||||
| CFO | D&A, SBC | Positive (add-back) |
|
||||
| CFO | ΔAR (increase) | Negative (use of cash) |
|
||||
| CFO | ΔAP (increase) | Positive (source of cash) |
|
||||
| CFI | CapEx | Negative |
|
||||
| CFF | Debt issuance | Positive |
|
||||
| CFF | Debt repayments | Negative |
|
||||
| CFF | Dividends | Negative |
|
||||
|
||||
### Circular Reference Handling
|
||||
|
||||
Interest expense creates circularity: Interest → Net Income → Cash → Debt Balance → Interest
|
||||
|
||||
Enable iterative calculation in Excel: File → Options → Formulas → Enable iterative calculation. Set maximum iterations to 100, maximum change to 0.001. Add a circuit breaker toggle in Assumptions tab.
|
||||
|
||||
### Check Categories
|
||||
|
||||
**Section 1: Currency Consistency**
|
||||
- Currency identified and documented in Assumptions
|
||||
- All tabs use consistent currency symbol and scale
|
||||
- Units row matches model currency
|
||||
|
||||
**Section 2: Balance Sheet Integrity**
|
||||
- Assets = Liabilities + Equity (for each period)
|
||||
- Formula: Assets - Liabilities - Equity (must = 0)
|
||||
|
||||
**Section 3: Cash Flow Integrity**
|
||||
- Cash ties to BS (CF Ending Cash = BS Cash)
|
||||
- Cash Monthly vs Annual: Closing Cash (Monthly) = Closing Cash (Annual)
|
||||
- NI ties to IS (CF Net Income = IS Net Income)
|
||||
- D&A ties to schedule
|
||||
- SBC ties to IS
|
||||
- ΔAR, ΔInventory, ΔAP tie to WC schedule
|
||||
- CapEx ties to DA schedule
|
||||
|
||||
**Section 4: Retained Earnings**
|
||||
- RE roll-forward check: Prior RE + NI + SBC - Dividends = Ending RE
|
||||
- Show component breakdown for debugging
|
||||
|
||||
**Section 5: Working Capital**
|
||||
- AR, Inventory, AP tie to BS
|
||||
- DSO, DIO, DPO reasonability checks (flag if outside normal ranges)
|
||||
|
||||
**Section 6: Debt Schedule**
|
||||
- Total Debt ties to BS (Current + LT Debt)
|
||||
- Interest calculation ties to IS
|
||||
|
||||
**Section 6b: Equity Financing**
|
||||
- Equity issuance proceeds tie to BS Common Stock/APIC increase
|
||||
- Cash increase from equity = Equity account increase (must balance)
|
||||
- Equity Raise Tie-Out: ΔCommon Stock/APIC (BS) = Equity Issuance (CFF) (must = 0)
|
||||
- Year 0 Equity Tie-Out: Equity Raised (Year 0) = Beginning Equity Capital (Year 1)
|
||||
|
||||
**Section 6c: NOL Schedule**
|
||||
- Beginning NOL (Year 1 / Formation) = 0 (new business starts with zero NOL)
|
||||
- NOL increases only when EBT < 0 (losses must be realized to generate NOL)
|
||||
- DTA ties to BS (NOL Schedule DTA = BS Deferred Tax Asset)
|
||||
- NOL utilization ≤ 80% of EBT (post-2017 federal limitation)
|
||||
- NOL balance is non-negative (cannot utilize more than available)
|
||||
- NOL generated only when EBT < 0
|
||||
- Tax expense = 0 when taxable income ≤ 0
|
||||
|
||||
**Section 7: Scenario Hierarchy**
|
||||
- Absolute metrics: Upside > Base > Downside (NI, EBITDA, FCF)
|
||||
- Margins: Upside > Base > Downside (GM%, EBITDA%, NI%)
|
||||
- Credit metrics: Upside < Base < Downside for leverage (inverted)
|
||||
|
||||
**Section 8: Formula Integrity**
|
||||
- COGS, S&M, G&A, R&D, SBC driven by % of Revenue (no hardcodes)
|
||||
- Consistent formulas across projection years
|
||||
- No #REF!, #DIV/0!, #VALUE! errors
|
||||
|
||||
**Section 9: Credit Metric Thresholds**
|
||||
- Flag metrics as Green/Yellow/Red based on covenant thresholds
|
||||
- Summary of any red flags
|
||||
|
||||
### Master Check Formula
|
||||
|
||||
Aggregate all section statuses into a single master check:
|
||||
- If all sections pass → "✓ ALL CHECKS PASS"
|
||||
- If any section fails → "✗ ERRORS DETECTED - REVIEW BELOW"
|
||||
|
||||
### Quick Debug Workflow
|
||||
|
||||
When Master Status shows errors:
|
||||
1. Scroll to find red-highlighted sections
|
||||
2. Identify which check category has failures
|
||||
3. Navigate to source tab to investigate
|
||||
4. Fix the underlying issue
|
||||
5. Return to Checks tab to verify resolution
|
||||
@@ -0,0 +1,118 @@
|
||||
# Formatting Standards Reference
|
||||
|
||||
| Element | Format |
|
||||
|---------|--------|
|
||||
| Hard-coded inputs | Blue font |
|
||||
| Formulas | Black font |
|
||||
| Links to other sheets | Green font |
|
||||
| Check cells | Red if error, green if balanced |
|
||||
| Negative values | Parentheses, not minus signs |
|
||||
| Currency | No decimals for large figures, 2 decimals for per-share |
|
||||
| Percentages | 1 decimal place |
|
||||
| Headers | Bold, bottom border |
|
||||
| Units row | Include units row below headers ($ millions, %, etc.) |
|
||||
|
||||
## Visual Separation Guidelines
|
||||
|
||||
- Thin vertical border between historical and projected columns
|
||||
- Thick bottom border after section totals (e.g., Total Assets)
|
||||
- Single bottom border for subtotals
|
||||
- Double bottom border for grand totals
|
||||
|
||||
## Total and Subtotal Row Formatting
|
||||
|
||||
All total and subtotal rows must use **bold font formatting** for their numerical values to clearly distinguish aggregated figures from individual line items.
|
||||
|
||||
### Income Statement (P&L) Tab
|
||||
| Row | Formatting |
|
||||
|-----|------------|
|
||||
| Gross Revenue | Bold |
|
||||
| Total Cost of Revenue | Bold |
|
||||
| Gross Profit | Bold |
|
||||
| Total SG&A | Bold |
|
||||
| EBITDA | Bold |
|
||||
| EBIT | Bold |
|
||||
| EBT | Bold |
|
||||
| Net Profit After Tax | Bold |
|
||||
|
||||
### Balance Sheet Tab
|
||||
| Row | Formatting |
|
||||
|-----|------------|
|
||||
| Total Current Assets | Bold |
|
||||
| Total Non-Current Assets | Bold |
|
||||
| Total Other Assets | Bold |
|
||||
| Total Assets | Bold |
|
||||
| Total Current Liabilities | Bold |
|
||||
| Total Non-Current Liabilities | Bold |
|
||||
| Total Equity | Bold |
|
||||
| Total Liabilities and Equity | Bold |
|
||||
|
||||
### Cash Flow Statement Tab
|
||||
| Row | Formatting |
|
||||
|-----|------------|
|
||||
| Cash Generated from Operations Before Working Capital Changes | Bold |
|
||||
| Total Working Capital Changes | Bold |
|
||||
| Net Cash Generated from Operations | Bold |
|
||||
| Net Cash Flow from Investing Activities | Bold |
|
||||
| Net Cash Flow from Financing Activities | Bold |
|
||||
| Closing Cash Balance | Bold |
|
||||
|
||||
**Note:** This list is non-exhaustive. Apply bold formatting to any row that represents a total, subtotal, or summary calculation across the model.
|
||||
|
||||
## Balance Sheet Check Row Formatting
|
||||
|
||||
The Balance Sheet check row (below Total Liabilities and Equity) uses conditional number formatting that displays non-zero values in red. When the balance sheet balances correctly (check = 0), the values display in black or standard formatting.
|
||||
|
||||
| Check Value | Font Color |
|
||||
|-------------|------------|
|
||||
| = 0 (balanced) | Black (standard) |
|
||||
| ≠ 0 (error) | Red |
|
||||
|
||||
**Implementation:** Apply custom number format `[Red][<>0]0.00;[Red][<>0](0.00);0.00` or use Excel conditional formatting with the rule "Cell Value ≠ 0" → Red font.
|
||||
|
||||
## Margin Row Formatting
|
||||
|
||||
| Element | Format |
|
||||
|---------|--------|
|
||||
| Margin % rows | Indent, italics, 1 decimal place |
|
||||
| Positive trend | No special formatting (or subtle green) |
|
||||
| Negative trend | Flag for review (subtle yellow) |
|
||||
| Below peer average | Consider highlighting for discussion |
|
||||
|
||||
## Credit Metric Formatting
|
||||
|
||||
| Element | Format |
|
||||
|---------|--------|
|
||||
| Leverage multiples | 1 decimal with "x" suffix (e.g., 2.5x) |
|
||||
| Percentages | 1 decimal with "%" suffix |
|
||||
| Net Debt negative | Parentheses, indicates net cash position |
|
||||
| Section header | Bold, "CREDIT METRICS" |
|
||||
| Separator line | Thin border above credit metrics section |
|
||||
|
||||
## Credit Metric Threshold Colors
|
||||
|
||||
| Metric | Green | Yellow | Red |
|
||||
|--------|-------|--------|-----|
|
||||
| Total Debt / EBITDA | < 2.5x | 2.5x-4.0x | > 4.0x |
|
||||
| Net Debt / EBITDA | < 2.0x | 2.0x-3.5x | > 3.5x |
|
||||
| Interest Coverage | > 4.0x | 2.5x-4.0x | < 2.5x |
|
||||
| Debt / Total Cap | < 40% | 40%-60% | > 60% |
|
||||
| Current Ratio | > 1.5x | 1.0x-1.5x | < 1.0x |
|
||||
| Quick Ratio | > 1.0x | 0.75x-1.0x | < 0.75x |
|
||||
|
||||
## Conditional Formatting for Checks Tab
|
||||
|
||||
- Cell contains pass indicator → Green fill
|
||||
- Cell contains fail indicator → Red fill
|
||||
- Cell contains warning → Yellow fill
|
||||
- Difference cells = 0 → Light green fill
|
||||
- Difference cells ≠ 0 → Light red fill
|
||||
|
||||
## Margin Reasonability Flags
|
||||
|
||||
- Gross Margin < 0% → ERROR: Review COGS
|
||||
- Gross Margin > 80% → WARNING: Verify revenue/COGS
|
||||
- EBITDA Margin < 0% → FLAG: Operating losses
|
||||
- EBITDA Margin > 50% → WARNING: Unusually high
|
||||
- Net Margin < 0% → FLAG: Net losses (may be acceptable in growth phase)
|
||||
- Net Margin > Gross Margin → ERROR: Formula issue
|
||||
@@ -0,0 +1,292 @@
|
||||
# Formula Reference
|
||||
|
||||
**IMPORTANT:** Use the formulas outlined in this reference document unless otherwise specified by the user.
|
||||
|
||||
---
|
||||
|
||||
## Core Linkages
|
||||
|
||||
```
|
||||
Balance Sheet: Assets = Liabilities + Equity
|
||||
Net Income: IS Net Income → CF Operations (starting point)
|
||||
Cash Flow: ΔCash = CFO + CFI + CFF
|
||||
Cash Tie-Out: Ending Cash (CF) = Cash (BS Asset)
|
||||
Cash Monthly/Annual: Closing Cash (Monthly) = Closing Cash (Annual)
|
||||
Retained Earnings: Prior RE + Net Income - Dividends = Ending RE
|
||||
Equity Raise: ΔCommon Stock/APIC (BS) = Equity Issuance (CFF)
|
||||
Year 0 Equity: Equity Raised (Year 0) = Beginning Equity (Year 1)
|
||||
```
|
||||
|
||||
## Gross Profit Calculation
|
||||
|
||||
**IMPORTANT:** Gross Profit must be calculated from Net Revenue, not Gross Revenue.
|
||||
|
||||
```
|
||||
Net Revenue - Cost of Revenue = Gross Profit
|
||||
```
|
||||
|
||||
| Term | Definition |
|
||||
|------|------------|
|
||||
| Gross Revenue | Total revenue before any deductions |
|
||||
| Net Revenue | Gross Revenue - Returns - Allowances - Discounts |
|
||||
| Cost of Revenue | Direct costs attributable to production of goods/services sold |
|
||||
| Gross Profit | Net Revenue - Cost of Revenue |
|
||||
|
||||
**Note:** Always use Net Revenue (also called "Net Sales" or simply "Revenue" on most financial statements) as the starting point for profitability calculations. Gross Revenue overstates the true top-line performance.
|
||||
|
||||
## Margin Formulas
|
||||
|
||||
```
|
||||
Gross Margin % = Gross Profit / Net Revenue
|
||||
EBITDA = EBIT + D&A (or = Gross Profit - OpEx)
|
||||
EBITDA Margin % = EBITDA / Net Revenue
|
||||
EBIT Margin % = EBIT / Net Revenue
|
||||
Net Income Margin % = Net Income / Net Revenue
|
||||
```
|
||||
|
||||
## Credit Metric Formulas
|
||||
|
||||
```
|
||||
Total Debt = Current Portion of Debt + Long-Term Debt
|
||||
Net Debt = Total Debt - Cash
|
||||
Total Debt / EBITDA = Total Debt / EBITDA (from IS)
|
||||
Net Debt / EBITDA = Net Debt / EBITDA (from IS)
|
||||
Interest Coverage = EBITDA / Interest Expense (from IS)
|
||||
Net Int Exp % Debt = Net Interest Expense / Long-Term Debt
|
||||
Debt / Total Cap = Total Debt / (Total Debt + Total Equity)
|
||||
Debt / Equity = Total Debt / Total Equity
|
||||
Current Ratio = Total Current Assets / Total Current Liabilities
|
||||
Quick Ratio = (Total Current Assets - Inventory) / Total Current Liabilities
|
||||
```
|
||||
|
||||
## Forecast Formulas (% of Net Revenue Method)
|
||||
|
||||
```
|
||||
Cost of Revenue (Forecast) = Net Revenue × Cost of Revenue % Assumption
|
||||
S&M (Forecast) = Net Revenue × S&M % Assumption
|
||||
G&A (Forecast) = Net Revenue × G&A % Assumption
|
||||
R&D (Forecast) = Net Revenue × R&D % Assumption
|
||||
SBC (Forecast) = Net Revenue × SBC % Assumption
|
||||
```
|
||||
|
||||
## Working Capital Formulas
|
||||
|
||||
```
|
||||
Accounts Receivable
|
||||
Prior AR
|
||||
+ Revenue (from IS)
|
||||
- Cash Collections (plug)
|
||||
= Ending AR
|
||||
DSO = (AR / Revenue) × 365
|
||||
|
||||
Inventory
|
||||
Prior Inventory
|
||||
+ Purchases (plug)
|
||||
- COGS (from IS)
|
||||
= Ending Inventory
|
||||
DIO = (Inventory / COGS) × 365
|
||||
|
||||
Accounts Payable
|
||||
Prior AP
|
||||
+ Purchases (from Inventory calc)
|
||||
- Cash Payments (plug)
|
||||
= Ending AP
|
||||
DPO = (AP / COGS) × 365
|
||||
|
||||
Net Working Capital = AR + Inventory - AP
|
||||
ΔWC = Current NWC - Prior NWC
|
||||
```
|
||||
|
||||
## D&A Schedule Formulas
|
||||
|
||||
```
|
||||
Beginning PP&E (Gross)
|
||||
+ CapEx
|
||||
= Ending PP&E (Gross)
|
||||
|
||||
Beginning Accumulated Depreciation
|
||||
+ Depreciation Expense
|
||||
= Ending Accumulated Depreciation
|
||||
|
||||
PP&E (Net) = Gross PP&E - Accumulated Depreciation
|
||||
```
|
||||
|
||||
## Debt Schedule Formulas
|
||||
|
||||
```
|
||||
Beginning Debt Balance
|
||||
+ New Borrowings
|
||||
- Repayments
|
||||
= Ending Debt Balance
|
||||
|
||||
Interest Expense = Avg Debt Balance × Interest Rate
|
||||
(Use beginning balance to avoid circularity, or iterate if circular refs enabled)
|
||||
```
|
||||
|
||||
## Retained Earnings Formula
|
||||
|
||||
```
|
||||
Beginning Retained Earnings
|
||||
+ Net Income (from IS)
|
||||
+ Stock-Based Compensation (SBC) (from IS)
|
||||
- Dividends
|
||||
= Ending Retained Earnings
|
||||
```
|
||||
|
||||
## NOL (Net Operating Loss) Schedule Formulas
|
||||
|
||||
```
|
||||
NOL CARRYFORWARD SCHEDULE
|
||||
|
||||
Beginning NOL Balance (Year 1 / Formation = 0)
|
||||
+ NOL Generated (if EBT < 0, then ABS(EBT), else 0)
|
||||
- NOL Utilized (limited by taxable income and utilization cap)
|
||||
= Ending NOL Balance
|
||||
|
||||
STARTING BALANCE RULE
|
||||
|
||||
For a new business or first modeled period:
|
||||
Beginning NOL Balance = 0
|
||||
NOL can only increase through realized losses (EBT < 0)
|
||||
NOL cannot be created from thin air or assumed
|
||||
|
||||
NOL UTILIZATION CALCULATION
|
||||
|
||||
Pre-Tax Income (EBT)
|
||||
If EBT > 0:
|
||||
NOL Available = Beginning NOL Balance
|
||||
Utilization Limit = EBT × 80% (post-2017 federal limit)
|
||||
NOL Utilized = MIN(NOL Available, Utilization Limit)
|
||||
Taxable Income = EBT - NOL Utilized
|
||||
If EBT ≤ 0:
|
||||
NOL Utilized = 0
|
||||
Taxable Income = 0
|
||||
NOL Generated = ABS(EBT)
|
||||
|
||||
TAX CALCULATION WITH NOL
|
||||
|
||||
Taxes Payable = MAX(0, Taxable Income × Tax Rate)
|
||||
(Taxes cannot be negative; losses create NOL asset instead)
|
||||
|
||||
DEFERRED TAX ASSET (DTA) FOR NOL
|
||||
|
||||
DTA - NOL Carryforward = Ending NOL Balance × Tax Rate
|
||||
ΔDTA = Current DTA - Prior DTA
|
||||
(Increase in DTA = non-cash benefit on CF)
|
||||
(Decrease in DTA = non-cash expense on CF)
|
||||
```
|
||||
|
||||
## Balance Sheet Structure
|
||||
|
||||
```
|
||||
ASSETS
|
||||
Cash (from CF ending cash)
|
||||
Accounts Receivable (from WC)
|
||||
Inventory (from WC)
|
||||
Total Current Assets
|
||||
|
||||
PP&E, Net (from DA)
|
||||
Deferred Tax Asset - NOL (from NOL schedule)
|
||||
Total Non-Current Assets
|
||||
Total Assets
|
||||
|
||||
LIABILITIES
|
||||
Accounts Payable (from WC)
|
||||
Current Portion of Debt (from Debt)
|
||||
Total Current Liabilities
|
||||
|
||||
Long-Term Debt (from Debt)
|
||||
Total Liabilities
|
||||
|
||||
EQUITY
|
||||
Common Stock
|
||||
Retained Earnings (from RE schedule)
|
||||
Total Equity
|
||||
|
||||
CHECK: Assets - Liabilities - Equity = 0
|
||||
```
|
||||
|
||||
## Cash Flow Statement Structure
|
||||
|
||||
```
|
||||
CASH FROM OPERATIONS (CFO)
|
||||
Net Income (LINK: IS)
|
||||
+ D&A (LINK: DA schedule)
|
||||
+ Stock-Based Compensation (SBC) (LINK: IS or Assumptions)
|
||||
- ΔDTA (Deferred Tax Asset) (LINK: NOL schedule; increase in DTA = use of cash)
|
||||
- ΔAR (LINK: WC)
|
||||
- ΔInventory (LINK: WC)
|
||||
+ ΔAP (LINK: WC)
|
||||
= CFO
|
||||
|
||||
CASH FROM INVESTING (CFI)
|
||||
- CapEx (LINK: DA schedule)
|
||||
= CFI
|
||||
|
||||
CASH FROM FINANCING (CFF)
|
||||
+ Debt Issuance (LINK: Debt)
|
||||
- Debt Repayment (LINK: Debt)
|
||||
+ Equity Issuance (LINK: BS Common Stock/APIC)
|
||||
- Dividends (LINK: RE schedule)
|
||||
= CFF
|
||||
|
||||
Net Change in Cash = CFO + CFI + CFF
|
||||
Beginning Cash
|
||||
+ Net Change in Cash
|
||||
= Ending Cash (LINK TO: BS Cash)
|
||||
```
|
||||
|
||||
## Income Statement Structure
|
||||
|
||||
```
|
||||
Net Revenue
|
||||
Growth %
|
||||
(-) Cost of Revenue
|
||||
% of Net Revenue
|
||||
────────────────
|
||||
Gross Profit (= Net Revenue - Cost of Revenue)
|
||||
Gross Margin %
|
||||
|
||||
(-) S&M
|
||||
% of Net Revenue
|
||||
(-) G&A
|
||||
% of Net Revenue
|
||||
(-) R&D
|
||||
% of Net Revenue
|
||||
(-) D&A
|
||||
(-) SBC
|
||||
% of Net Revenue
|
||||
────────────────
|
||||
EBIT
|
||||
EBIT Margin %
|
||||
|
||||
EBITDA
|
||||
EBITDA Margin %
|
||||
|
||||
(-) Interest Expense
|
||||
────────────────
|
||||
EBT (Pre-Tax Income)
|
||||
(-) NOL Utilization (from NOL schedule, reduces taxable income)
|
||||
────────────────
|
||||
Taxable Income
|
||||
(-) Taxes (Taxable Income × Tax Rate)
|
||||
────────────────
|
||||
Net Income
|
||||
Net Income Margin %
|
||||
```
|
||||
|
||||
## Check Formulas
|
||||
|
||||
```
|
||||
BS Balance Check: = Assets - Liabilities - Equity (must = 0)
|
||||
Cash Tie-Out: = BS Cash - CF Ending Cash (must = 0)
|
||||
RE Roll-Forward: = Prior RE + NI + SBC - Div - BS RE (must = 0)
|
||||
DTA Tie-Out: = NOL Schedule DTA - BS DTA (must = 0)
|
||||
Equity Raise Tie-Out: = ΔCommon Stock/APIC (BS) - Equity Issuance (CFF) (must = 0)
|
||||
Year 0 Equity Tie-Out: = Equity Raised (Year 0) - Beginning Equity (Year 1) (must = 0)
|
||||
Cash Monthly vs Annual: = Closing Cash (Monthly) - Closing Cash (Annual) (must = 0)
|
||||
NOL Utilization Cap: = NOL Utilized ≤ EBT × 80% (must be TRUE for post-2017)
|
||||
NOL Non-Negative: = Ending NOL Balance ≥ 0 (must be TRUE)
|
||||
NOL Starting Balance: = Beginning NOL (Year 1) = 0 (must be TRUE for new business)
|
||||
NOL Accumulation: = NOL increases only when EBT < 0 (losses generate NOL)
|
||||
```
|
||||
@@ -0,0 +1,125 @@
|
||||
# SEC Filings Data Extraction Reference
|
||||
|
||||
**When to Use:** Only reference this file when a model template specifically requires pulling data from SEC filings (10-K, 10-Q). For templates that provide data directly or use other data sources, this reference is not needed.
|
||||
|
||||
---
|
||||
|
||||
## Extracting Data from SEC Filings (10-K / 10-Q)
|
||||
|
||||
When populating a model template with public company data, extract financials directly from SEC filings.
|
||||
|
||||
### Step 1: Locate the Filing
|
||||
|
||||
1. Use SEC EDGAR: `https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=[TICKER]&type=10-K`
|
||||
2. For quarterly data, use `type=10-Q`
|
||||
|
||||
### Step 2: Identify Filing Currency
|
||||
|
||||
Before extracting data, identify the reporting currency:
|
||||
- Check the cover page or header for reporting currency
|
||||
- Look at statement headers (e.g., "in thousands of U.S. dollars")
|
||||
- Review Note 1 (Summary of Significant Accounting Policies)
|
||||
|
||||
**Common Currency Indicators**
|
||||
|
||||
| Indicator | Currency |
|
||||
|-----------|----------|
|
||||
| $, USD | US Dollar |
|
||||
| €, EUR | Euro |
|
||||
| £, GBP | British Pound |
|
||||
| ¥, JPY | Japanese Yen |
|
||||
| ¥, CNY, RMB | Chinese Yuan |
|
||||
| CHF | Swiss Franc |
|
||||
| CAD, C$ | Canadian Dollar |
|
||||
|
||||
Set model currency to match filing; document in Assumptions tab.
|
||||
|
||||
### Step 3: Navigate to Financial Statements
|
||||
|
||||
Within the 10-K or 10-Q, locate:
|
||||
- **Item 8** (10-K) or **Item 1** (10-Q): Financial Statements
|
||||
- Key sections to extract:
|
||||
- Consolidated Statements of Operations (Income Statement)
|
||||
- Consolidated Balance Sheets
|
||||
- Consolidated Statements of Cash Flows
|
||||
- Notes to Financial Statements (for schedule details)
|
||||
|
||||
### Step 4: Data Extraction Mapping
|
||||
|
||||
**Income Statement (from Consolidated Statements of Operations)**
|
||||
|
||||
| Filing Line Item | Model Line Item |
|
||||
|------------------|-----------------|
|
||||
| Net revenues / Net sales | Revenue |
|
||||
| Cost of goods sold | COGS |
|
||||
| Selling, general and administrative | SG&A |
|
||||
| Depreciation and amortization | D&A |
|
||||
| Interest expense, net | Interest Expense |
|
||||
| Income tax expense | Taxes |
|
||||
| Net income | Net Income |
|
||||
|
||||
**Balance Sheet (from Consolidated Balance Sheets)**
|
||||
|
||||
| Filing Line Item | Model Line Item |
|
||||
|------------------|-----------------|
|
||||
| Cash and cash equivalents | Cash |
|
||||
| Accounts receivable, net | AR |
|
||||
| Inventories | Inventory |
|
||||
| Property, plant and equipment, net | PP&E (Net) |
|
||||
| Total assets | Total Assets |
|
||||
| Accounts payable | AP |
|
||||
| Short-term debt / Current portion of LT debt | Current Debt |
|
||||
| Long-term debt | LT Debt |
|
||||
| Retained earnings | Retained Earnings |
|
||||
| Total stockholders' equity | Total Equity |
|
||||
|
||||
**Cash Flow Statement (from Consolidated Statements of Cash Flows)**
|
||||
|
||||
| Filing Line Item | Model Line Item |
|
||||
|------------------|-----------------|
|
||||
| Net income | Net Income |
|
||||
| Depreciation and amortization | D&A |
|
||||
| Changes in accounts receivable | ΔAR |
|
||||
| Changes in inventories | ΔInventory |
|
||||
| Changes in accounts payable | ΔAP |
|
||||
| Capital expenditures | CapEx |
|
||||
| Proceeds from issuance of common stock | Equity Issuance |
|
||||
| Proceeds from / Repayments of debt | Debt activity |
|
||||
| Dividends paid | Dividends |
|
||||
|
||||
### Step 5: Extract Supporting Detail from Notes
|
||||
|
||||
For schedules, pull from Notes to Financial Statements:
|
||||
- **Note: Debt** → Maturity schedule, interest rates, covenants
|
||||
- **Note: Property, Plant & Equipment** → Gross PP&E, accumulated depreciation, useful lives
|
||||
- **Note: Revenue** → Segment breakdowns, geographic splits
|
||||
- **Note: Leases** → Operating vs. finance lease obligations
|
||||
|
||||
### Step 6: Historical Data Requirements
|
||||
|
||||
Extract 3 years of historical data minimum:
|
||||
- 10-K provides 3 years of IS/CF, 2 years of BS
|
||||
- For 3rd year BS, pull from prior year's 10-K
|
||||
- Use 10-Qs to fill in quarterly granularity if needed
|
||||
|
||||
### Data Extraction Checklist
|
||||
|
||||
- Identify reporting currency and scale (thousands, millions)
|
||||
- 3 years historical Income Statement
|
||||
- 3 years historical Cash Flow Statement
|
||||
- 3 years historical Balance Sheet
|
||||
- Verify IS Net Income = CF starting Net Income (each year)
|
||||
- Verify BS Cash = CF Ending Cash (each year)
|
||||
- Extract debt maturity schedule from notes
|
||||
- Extract D&A detail or useful life assumptions
|
||||
- Note any non-recurring / one-time items to normalize
|
||||
|
||||
### Handling Common Filing Variations
|
||||
|
||||
| Variation | How to Handle |
|
||||
|-----------|---------------|
|
||||
| D&A embedded in COGS/SG&A | Pull D&A from Cash Flow Statement |
|
||||
| "Other" line items are material | Check notes for breakdown |
|
||||
| Restatements | Use restated figures, note in assumptions |
|
||||
| Fiscal year ≠ calendar year | Label with fiscal year end (e.g., FYE Jan 2025) |
|
||||
| Non-USD reporting currency | Adapt model currency to match filing |
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
name: check-deck
|
||||
description: |
|
||||
Investment banking presentation quality checker. Reviews pitch decks and client-ready
|
||||
presentations for: (1) Number consistency across slides, (2) Data-narrative alignment,
|
||||
(3) Language polish for IB standards, (4) Formatting QC. Use when asked to review,
|
||||
check, or QC any IB presentation, pitch deck, or client materials before delivery.
|
||||
---
|
||||
|
||||
# IB Deck Checker
|
||||
|
||||
Perform comprehensive QC on investment banking presentations across four dimensions.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Extract presentation content before checking:
|
||||
```bash
|
||||
python -m markitdown presentation.pptx > content.md
|
||||
```
|
||||
|
||||
For visual inspection, convert to images using the `pptx` skill workflow.
|
||||
|
||||
## Check Workflow
|
||||
|
||||
### 1. Number Consistency
|
||||
|
||||
Extract numbers with slide references:
|
||||
```bash
|
||||
python scripts/extract_numbers.py content.md --check
|
||||
```
|
||||
|
||||
Verify:
|
||||
- Key metrics match across all slides (revenue, EBITDA, multiples)
|
||||
- Calculations are correct (totals, percentages, growth rates)
|
||||
- Units consistent (same scale used: millions vs billions, % vs bps)
|
||||
- Unit formatting consistent (e.g., $M vs $MM, $B vs $Bn - pick one style throughout)
|
||||
- Time periods aligned (FY vs LTM vs quarterly)
|
||||
|
||||
Flag pattern:
|
||||
```
|
||||
ISSUE: Revenue mismatch
|
||||
- $500M on Slides 3, 8
|
||||
- $485M on Slide 15 (DCF input)
|
||||
ACTION: Reconcile figures
|
||||
```
|
||||
|
||||
### 2. Data-Narrative Alignment
|
||||
|
||||
Map claims to supporting data:
|
||||
- Trend statements → chart directions
|
||||
- Market position claims → revenue/share data
|
||||
- Factual assertions → verify accuracy
|
||||
|
||||
Flag contradictions:
|
||||
```
|
||||
ISSUE: Narrative contradicts data
|
||||
- Slide 4: "declining margins"
|
||||
- Slide 7 chart: margins 18% → 22%
|
||||
ACTION: Update narrative or verify data
|
||||
```
|
||||
|
||||
Check plausibility (e.g., "#1 player in $100B market" with $200M revenue = 0.2% share).
|
||||
|
||||
### 3. Language Polish
|
||||
|
||||
Scan for:
|
||||
- Casual phrasing ("pretty good", "a lot of")
|
||||
- Vague quantifiers without specifics
|
||||
- Contractions, exclamation points
|
||||
- Inconsistent terminology
|
||||
|
||||
See [references/ib-terminology.md](references/ib-terminology.md) for replacement patterns.
|
||||
|
||||
Flag pattern:
|
||||
```
|
||||
ISSUE: Casual language (Slide 12)
|
||||
- "This deal is a no-brainer"
|
||||
→ "The transaction presents a compelling value proposition"
|
||||
```
|
||||
|
||||
### 4. Formatting QC
|
||||
|
||||
Audit each slide for:
|
||||
- **Charts**: Source citations, axis labels, legends
|
||||
- **Typography**: Consistent fonts, size hierarchy
|
||||
- **Numbers**: Consistent formatting (1,000 vs 1K)
|
||||
- **Dates**: Consistent format throughout
|
||||
- **Footnotes**: Proper sourcing and disclaimers
|
||||
|
||||
## Output
|
||||
|
||||
Present findings using the template in [references/report-format.md](references/report-format.md).
|
||||
|
||||
Categorize by severity:
|
||||
- **Critical**: Number mismatches, factual errors
|
||||
- **Important**: Language, narrative alignment
|
||||
- **Minor**: Formatting inconsistencies
|
||||
@@ -0,0 +1,49 @@
|
||||
# IB Terminology Reference
|
||||
|
||||
## Casual to Professional Replacements
|
||||
|
||||
| Casual/Informal | IB Standard |
|
||||
|-----------------|-------------|
|
||||
| "a lot of growth" | "significant growth" or "X% growth" |
|
||||
| "pretty good margins" | "attractive margins" or "margins of X%" |
|
||||
| "they bought the company" | "the company was acquired" |
|
||||
| "big deal" | "transformative transaction" |
|
||||
| "cheap valuation" | "attractive valuation" or "valuation discount" |
|
||||
| "expensive" | "premium valuation" |
|
||||
| "make more money" | "enhance profitability" or "drive margin expansion" |
|
||||
| "getting bigger" | "pursuing growth" or "expanding operations" |
|
||||
| "cut costs" | "implement cost optimization" or "drive operational efficiencies" |
|
||||
| "good fit" | "strategic fit" or "compelling strategic rationale" |
|
||||
| "help with" | "support" or "facilitate" |
|
||||
| "a bunch of" | "multiple" or "numerous" |
|
||||
| "kind of" / "sort of" | [remove or be specific] |
|
||||
| "really" / "very" | [remove or quantify] |
|
||||
| "tons of" | "substantial" or quantify |
|
||||
| "huge" | "significant" or quantify |
|
||||
| "pretty much" | [remove or be precise] |
|
||||
| "basically" | [remove or clarify] |
|
||||
|
||||
## Language Patterns to Avoid
|
||||
|
||||
- **Contractions**: Don't → Do not, won't → will not
|
||||
- **Exclamation points**: Generally inappropriate for IB materials
|
||||
- **First-person**: "We think..." → "Management believes..." or passive voice
|
||||
- **Superlatives without evidence**: "best-in-class" requires supporting data
|
||||
- **Vague quantifiers**: "some", "many", "several" → specific numbers
|
||||
|
||||
## Preferred Phrasing Patterns
|
||||
|
||||
**Growth narratives**:
|
||||
- "Demonstrated track record of X% revenue CAGR"
|
||||
- "Consistent margin expansion over [period]"
|
||||
- "Proven ability to generate organic growth"
|
||||
|
||||
**Market position**:
|
||||
- "#X player in [specific segment]"
|
||||
- "Leading provider of [specific offering]"
|
||||
- "Differentiated positioning through [specific attribute]"
|
||||
|
||||
**Strategic rationale**:
|
||||
- "Compelling strategic fit driven by..."
|
||||
- "Attractive value creation opportunity through..."
|
||||
- "Synergy potential of $Xm from [specific sources]"
|
||||
@@ -0,0 +1,67 @@
|
||||
# Deck Check Report Format
|
||||
|
||||
## Report Template
|
||||
|
||||
```markdown
|
||||
# Deck Check Report: [Presentation Name]
|
||||
|
||||
## Summary
|
||||
- Total issues: X
|
||||
- Critical: X (number mismatches, factual errors)
|
||||
- Important: X (narrative-data alignment, language)
|
||||
- Minor: X (formatting)
|
||||
|
||||
## Critical Issues
|
||||
|
||||
### Number Consistency
|
||||
1. **[Issue name]** (Slides X, Y)
|
||||
- Slide X: [value]
|
||||
- Slide Y: [value]
|
||||
- Action: [recommendation]
|
||||
|
||||
### Data-Narrative Alignment
|
||||
1. **[Issue name]** (Slides X, Y)
|
||||
- Claim: "[quoted text]"
|
||||
- Data shows: [contradiction]
|
||||
- Action: [recommendation]
|
||||
|
||||
## Important Issues
|
||||
|
||||
### Language Polish
|
||||
1. **[Issue type]** (Slide X)
|
||||
- Current: "[quoted text]"
|
||||
- Suggested: "[replacement]"
|
||||
|
||||
## Minor Issues
|
||||
|
||||
### Formatting
|
||||
1. **[Issue type]** (Slide X)
|
||||
- [Description and fix]
|
||||
|
||||
## Final Checklist
|
||||
- [ ] Numbers reconciled
|
||||
- [ ] Narrative matches data
|
||||
- [ ] Language meets IB standards
|
||||
- [ ] Charts sourced
|
||||
- [ ] Formatting consistent
|
||||
```
|
||||
|
||||
## Issue Severity Classification
|
||||
|
||||
**Critical** (must fix before client delivery):
|
||||
- Number mismatches across slides
|
||||
- Calculation errors
|
||||
- Factual inaccuracies (names, titles, dates)
|
||||
- Data contradicting narrative
|
||||
|
||||
**Important** (should fix):
|
||||
- Casual/informal language
|
||||
- Vague claims without specificity
|
||||
- Terminology inconsistency
|
||||
- Missing chart sources
|
||||
|
||||
**Minor** (polish items):
|
||||
- Font/color inconsistencies
|
||||
- Date format variations
|
||||
- Spacing/alignment issues
|
||||
- Orphaned text
|
||||
@@ -0,0 +1,305 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Extract numerical values from presentation content for consistency checking.
|
||||
|
||||
Usage:
|
||||
python extract_numbers.py presentation-content.md
|
||||
python extract_numbers.py presentation-content.md --output numbers.json
|
||||
|
||||
This script parses markdown-formatted presentation content (from markitdown)
|
||||
and extracts all numerical values with their context and slide references.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
import sys
|
||||
from collections import defaultdict
|
||||
from dataclasses import dataclass, asdict
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
|
||||
@dataclass
|
||||
class NumberInstance:
|
||||
"""A numerical value found in the presentation."""
|
||||
value: str # Original string representation
|
||||
normalized: float # Normalized numeric value
|
||||
unit: str # Detected unit (M, B, K, %, bps, x, etc.)
|
||||
slide: int # Slide number (0 if unknown)
|
||||
context: str # Surrounding text for context
|
||||
line_number: int # Line number in source file
|
||||
category: str # Detected category (revenue, margin, multiple, etc.)
|
||||
|
||||
|
||||
def normalize_number(value_str: str, unit: str) -> float:
|
||||
"""Convert a number string with unit to a normalized float value."""
|
||||
# Remove commas and spaces
|
||||
clean = re.sub(r'[,\s]', '', value_str)
|
||||
|
||||
try:
|
||||
base_value = float(clean)
|
||||
except ValueError:
|
||||
return 0.0
|
||||
|
||||
# Apply unit multipliers
|
||||
multipliers = {
|
||||
'T': 1e12,
|
||||
'B': 1e9,
|
||||
'bn': 1e9,
|
||||
'billion': 1e9,
|
||||
'M': 1e6,
|
||||
'mm': 1e6,
|
||||
'mn': 1e6,
|
||||
'million': 1e6,
|
||||
'K': 1e3,
|
||||
'k': 1e3,
|
||||
'thousand': 1e3,
|
||||
}
|
||||
|
||||
for unit_key, multiplier in multipliers.items():
|
||||
if unit_key.lower() in unit.lower():
|
||||
return base_value * multiplier
|
||||
|
||||
return base_value
|
||||
|
||||
|
||||
def detect_category(context: str, unit: str) -> str:
|
||||
"""Detect the category of a number based on context and unit."""
|
||||
context_lower = context.lower()
|
||||
|
||||
# Revenue-related
|
||||
if any(term in context_lower for term in ['revenue', 'sales', 'top line', 'topline']):
|
||||
return 'revenue'
|
||||
|
||||
# EBITDA-related
|
||||
if 'ebitda' in context_lower:
|
||||
if any(term in context_lower for term in ['margin', '%', 'percent']):
|
||||
return 'ebitda_margin'
|
||||
return 'ebitda'
|
||||
|
||||
# Margin-related
|
||||
if any(term in context_lower for term in ['margin', 'profit']):
|
||||
return 'margin'
|
||||
|
||||
# Growth-related
|
||||
if any(term in context_lower for term in ['growth', 'cagr', 'yoy', 'y/y']):
|
||||
return 'growth'
|
||||
|
||||
# Valuation multiples
|
||||
if any(term in context_lower for term in ['multiple', 'ev/', 'p/e', 'ev/ebitda', 'ev/revenue']):
|
||||
return 'multiple'
|
||||
|
||||
# Enterprise value / market cap
|
||||
if any(term in context_lower for term in ['enterprise value', 'ev ', 'market cap']):
|
||||
return 'valuation'
|
||||
|
||||
# Percentage (generic)
|
||||
if unit in ['%', 'bps', 'percent']:
|
||||
return 'percentage'
|
||||
|
||||
# Multiple indicator
|
||||
if unit == 'x':
|
||||
return 'multiple'
|
||||
|
||||
return 'other'
|
||||
|
||||
|
||||
def extract_numbers(content: str) -> list[NumberInstance]:
|
||||
"""Extract all numbers from presentation content."""
|
||||
numbers = []
|
||||
current_slide = 0
|
||||
|
||||
# Pattern for slide markers (from markitdown format)
|
||||
slide_pattern = re.compile(r'^#+\s*Slide\s*(\d+)|^<!-- Slide (\d+)')
|
||||
|
||||
# Pattern for numbers with various formats
|
||||
# Matches: $500M, 500M, $500 million, 25%, 25.5%, 2.5x, 150bps, $1,234.56, etc.
|
||||
number_pattern = re.compile(
|
||||
r'(?P<currency>[$€£¥])?' # Optional currency symbol
|
||||
r'(?P<number>[\d,]+(?:\.\d+)?)' # The number itself
|
||||
r'\s*'
|
||||
r'(?P<unit>%|bps|x|' # Common units
|
||||
r'[Tt]rillion|[Bb]illion|[Mm]illion|[Tt]housand|' # Full words
|
||||
r'[TBMKtbmk]n?|mm|MM)?' # Abbreviations
|
||||
r'(?!\d)' # Negative lookahead to avoid partial matches
|
||||
)
|
||||
|
||||
lines = content.split('\n')
|
||||
|
||||
for line_num, line in enumerate(lines, 1):
|
||||
# Check for slide marker
|
||||
slide_match = slide_pattern.match(line)
|
||||
if slide_match:
|
||||
current_slide = int(slide_match.group(1) or slide_match.group(2))
|
||||
continue
|
||||
|
||||
# Find all numbers in the line
|
||||
for match in number_pattern.finditer(line):
|
||||
value_str = match.group('number')
|
||||
currency = match.group('currency') or ''
|
||||
unit = match.group('unit') or ''
|
||||
|
||||
# Skip very short numbers without context (likely not financial)
|
||||
if len(value_str.replace(',', '').replace('.', '')) < 2 and not unit:
|
||||
continue
|
||||
|
||||
# Skip year-like numbers (1900-2099) unless they have units
|
||||
try:
|
||||
num_val = float(value_str.replace(',', ''))
|
||||
if 1900 <= num_val <= 2099 and not unit and not currency:
|
||||
continue
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
# Build full value string
|
||||
full_value = f"{currency}{value_str}{unit}"
|
||||
|
||||
# Get context (surrounding words)
|
||||
start = max(0, match.start() - 50)
|
||||
end = min(len(line), match.end() + 50)
|
||||
context = line[start:end].strip()
|
||||
|
||||
# Normalize unit
|
||||
if currency:
|
||||
if not unit:
|
||||
unit = 'USD' # Assume USD for $ without unit
|
||||
else:
|
||||
unit = f"USD_{unit}"
|
||||
|
||||
normalized = normalize_number(value_str, unit)
|
||||
category = detect_category(context, unit)
|
||||
|
||||
numbers.append(NumberInstance(
|
||||
value=full_value,
|
||||
normalized=normalized,
|
||||
unit=unit or 'none',
|
||||
slide=current_slide,
|
||||
context=context,
|
||||
line_number=line_num,
|
||||
category=category
|
||||
))
|
||||
|
||||
return numbers
|
||||
|
||||
|
||||
def find_inconsistencies(numbers: list[NumberInstance]) -> list[dict]:
|
||||
"""Find potential inconsistencies in extracted numbers."""
|
||||
inconsistencies = []
|
||||
|
||||
# Group numbers by category
|
||||
by_category = defaultdict(list)
|
||||
for num in numbers:
|
||||
if num.category != 'other':
|
||||
by_category[num.category].append(num)
|
||||
|
||||
# Check each category for mismatches
|
||||
for category, instances in by_category.items():
|
||||
if len(instances) < 2:
|
||||
continue
|
||||
|
||||
# Group by approximate value (within 5% tolerance)
|
||||
value_groups = []
|
||||
for inst in instances:
|
||||
placed = False
|
||||
for group in value_groups:
|
||||
ref_value = group[0].normalized
|
||||
if ref_value > 0:
|
||||
diff_pct = abs(inst.normalized - ref_value) / ref_value
|
||||
if diff_pct < 0.05: # 5% tolerance
|
||||
group.append(inst)
|
||||
placed = True
|
||||
break
|
||||
if not placed:
|
||||
value_groups.append([inst])
|
||||
|
||||
# If we have multiple groups, there might be inconsistencies
|
||||
if len(value_groups) > 1:
|
||||
# Sort groups by size (largest first)
|
||||
value_groups.sort(key=len, reverse=True)
|
||||
|
||||
# The largest group is likely "correct", others are potential issues
|
||||
main_group = value_groups[0]
|
||||
for other_group in value_groups[1:]:
|
||||
inconsistencies.append({
|
||||
'category': category,
|
||||
'expected': {
|
||||
'value': main_group[0].value,
|
||||
'slides': sorted(set(n.slide for n in main_group)),
|
||||
'count': len(main_group)
|
||||
},
|
||||
'found': {
|
||||
'value': other_group[0].value,
|
||||
'slides': sorted(set(n.slide for n in other_group)),
|
||||
'count': len(other_group)
|
||||
},
|
||||
'severity': 'high' if category in ['revenue', 'ebitda', 'valuation'] else 'medium'
|
||||
})
|
||||
|
||||
return inconsistencies
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Extract numbers from presentation content for consistency checking'
|
||||
)
|
||||
parser.add_argument('input_file', help='Markdown file with presentation content')
|
||||
parser.add_argument('--output', '-o', help='Output JSON file (default: stdout)')
|
||||
parser.add_argument('--check', '-c', action='store_true',
|
||||
help='Check for inconsistencies and report')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Read input
|
||||
input_path = Path(args.input_file)
|
||||
if not input_path.exists():
|
||||
print(f"Error: File not found: {args.input_file}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
content = input_path.read_text()
|
||||
|
||||
# Extract numbers
|
||||
numbers = extract_numbers(content)
|
||||
|
||||
# Prepare output
|
||||
output = {
|
||||
'total_numbers': len(numbers),
|
||||
'by_category': defaultdict(list),
|
||||
'numbers': [asdict(n) for n in numbers]
|
||||
}
|
||||
|
||||
for num in numbers:
|
||||
output['by_category'][num.category].append({
|
||||
'value': num.value,
|
||||
'slide': num.slide,
|
||||
'context': num.context[:100]
|
||||
})
|
||||
|
||||
output['by_category'] = dict(output['by_category'])
|
||||
|
||||
# Check for inconsistencies if requested
|
||||
if args.check:
|
||||
inconsistencies = find_inconsistencies(numbers)
|
||||
output['inconsistencies'] = inconsistencies
|
||||
|
||||
if inconsistencies:
|
||||
print("\n=== POTENTIAL INCONSISTENCIES DETECTED ===\n", file=sys.stderr)
|
||||
for inc in inconsistencies:
|
||||
print(f"Category: {inc['category'].upper()}", file=sys.stderr)
|
||||
print(f" Expected: {inc['expected']['value']} (Slides: {inc['expected']['slides']}, Count: {inc['expected']['count']})", file=sys.stderr)
|
||||
print(f" Found: {inc['found']['value']} (Slides: {inc['found']['slides']}, Count: {inc['found']['count']})", file=sys.stderr)
|
||||
print(f" Severity: {inc['severity']}", file=sys.stderr)
|
||||
print(file=sys.stderr)
|
||||
|
||||
# Output results
|
||||
json_output = json.dumps(output, indent=2)
|
||||
|
||||
if args.output:
|
||||
Path(args.output).write_text(json_output)
|
||||
print(f"Output written to {args.output}", file=sys.stderr)
|
||||
else:
|
||||
print(json_output)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,138 @@
|
||||
---
|
||||
name: check-model
|
||||
---
|
||||
|
||||
# Model Checker
|
||||
|
||||
description: Debug and audit financial models for errors — circular references, broken formulas, hardcoded overrides, balance sheet imbalances, cash flow mismatches, and logic gaps. Use when a model isn't tying, producing unexpected results, or before sending to a client or IC. Triggers on "debug model", "model check", "audit model", "model won't balance", "something's off in my model", "check my model", "QA model", or "model review".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Ingest the Model
|
||||
|
||||
- Accept the user's Excel model (.xlsx or .xlsm)
|
||||
- Identify model type: DCF, LBO, merger, 3-statement, comps, returns, or custom
|
||||
- Map the structure: which tabs exist, how they're linked, where inputs vs. outputs live
|
||||
|
||||
### Step 2: Structural Checks
|
||||
|
||||
**Tab & Layout Review:**
|
||||
- Are inputs clearly separated from calculations?
|
||||
- Is there a consistent color-coding convention? (blue = input, black = formula, green = link)
|
||||
- Are there hidden tabs or rows that could contain overrides?
|
||||
- Is the model flow logical? (assumptions → IS → BS → CF → valuation)
|
||||
|
||||
**Formula Consistency:**
|
||||
- Check for hardcoded numbers inside formulas (partial hardcodes)
|
||||
- Check for inconsistent formulas across row/column ranges (should be the same formula dragged across)
|
||||
- Identify any #REF!, #VALUE!, #N/A, #DIV/0! errors
|
||||
- Flag cells that are formatted as formulas but contain hardcoded values
|
||||
|
||||
### Step 3: Integrity Checks
|
||||
|
||||
**Balance Sheet:**
|
||||
- Total Assets = Total Liabilities + Equity (every period)
|
||||
- If imbalanced, quantify the gap and trace where it breaks
|
||||
- Check that retained earnings rolls forward correctly: Prior RE + Net Income - Dividends = Current RE
|
||||
- Verify goodwill and intangibles flow from acquisition assumptions (if M&A model)
|
||||
|
||||
**Cash Flow Statement:**
|
||||
- Ending cash from CF = Cash on BS (every period)
|
||||
- Operating CF + Investing CF + Financing CF = Change in Cash
|
||||
- D&A on CF matches D&A on IS
|
||||
- Capex on CF matches PP&E rollforward on BS
|
||||
- Working capital changes on CF match BS movements (AR, AP, inventory)
|
||||
|
||||
**Income Statement:**
|
||||
- Revenue builds tie to segment/product detail
|
||||
- COGS and gross margin are consistent with assumptions
|
||||
- Tax expense = Pre-tax income × tax rate (check for deferred tax adjustments)
|
||||
- Share count ties to dilution schedule (options, converts, buybacks)
|
||||
|
||||
**Circular References:**
|
||||
- Check for circular references (interest expense → debt balance → cash → interest)
|
||||
- If intentional (common in LBO/3-statement models), verify the iteration toggle works
|
||||
- If unintentional, trace the loop and suggest how to break it
|
||||
|
||||
### Step 4: Logic Checks
|
||||
|
||||
**Reasonableness:**
|
||||
- Do growth rates make sense? (100%+ revenue growth without explanation = red flag)
|
||||
- Are margins within industry norms? Flag outliers
|
||||
- Does terminal value dominate the DCF? (>75% of EV from TV is a yellow flag)
|
||||
- Are projections hockey-sticking unrealistically?
|
||||
- Does EBITDA growth compound to an absurd number by Year 10?
|
||||
|
||||
**Sensitivity & Edge Cases:**
|
||||
- What happens at 0% growth? Negative growth?
|
||||
- Does the model break with negative EBITDA?
|
||||
- Do leverage ratios go negative or exceed realistic bounds?
|
||||
- Are there any divide-by-zero risks?
|
||||
|
||||
**Cross-Tab Consistency:**
|
||||
- Do linked cells actually match their source? (copy-paste errors are common)
|
||||
- Are date headers consistent across all tabs?
|
||||
- Do units match (thousands vs. millions vs. actuals)?
|
||||
|
||||
### Step 5: Common Bugs by Model Type
|
||||
|
||||
**DCF:**
|
||||
- Discount rate applied to wrong period (mid-year vs. end-of-year convention)
|
||||
- Terminal value not discounted back correctly
|
||||
- WACC uses book values instead of market values
|
||||
- FCF includes interest expense (should be unlevered)
|
||||
- Tax shield double-counted
|
||||
|
||||
**LBO:**
|
||||
- Debt paydown doesn't match cash sweep mechanics
|
||||
- PIK interest not accruing to debt balance
|
||||
- Management rollover not reflected in returns
|
||||
- Exit multiple applied to wrong EBITDA (LTM vs. NTM)
|
||||
- Fees and expenses not deducted from Day 1 equity
|
||||
|
||||
**Merger Model:**
|
||||
- Accretion/dilution uses wrong share count (pre- vs. post-deal)
|
||||
- Synergies not phased in correctly
|
||||
- Purchase price allocation doesn't balance
|
||||
- Foregone interest on cash not included
|
||||
- Transaction fees not in sources & uses
|
||||
|
||||
**3-Statement:**
|
||||
- Working capital changes have wrong sign convention
|
||||
- Depreciation doesn't match PP&E schedule
|
||||
- Debt maturity schedule doesn't match principal payments
|
||||
- Dividends paid exceed net income without explanation
|
||||
|
||||
### Step 6: Report
|
||||
|
||||
Generate a model audit report:
|
||||
|
||||
**Summary:**
|
||||
- Model type and overall assessment (Clean / Minor Issues / Major Issues)
|
||||
- Number of issues found by severity
|
||||
|
||||
**Issue Log:**
|
||||
|
||||
| # | Tab | Cell/Range | Severity | Category | Description | Suggested Fix |
|
||||
|---|-----|-----------|----------|----------|-------------|--------------|
|
||||
| 1 | | | Critical/Warning/Info | Formula/Logic/Balance/Hardcode | | |
|
||||
|
||||
**Severity Definitions:**
|
||||
- **Critical**: Model produces wrong output (BS doesn't balance, formulas broken)
|
||||
- **Warning**: Model works but has risks (hardcodes, inconsistent formulas, edge case failures)
|
||||
- **Info**: Style and best practice suggestions (color coding, layout, naming)
|
||||
|
||||
### Step 7: Output
|
||||
|
||||
- Issue log table (in chat or Excel)
|
||||
- Annotated model with comments on flagged cells (if user provides the file)
|
||||
- Summary assessment with fix priority
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Always check the BS balance first — if it doesn't balance, nothing else matters until it does
|
||||
- Hardcoded overrides are the #1 source of model errors — search aggressively for them
|
||||
- Sign convention errors (positive vs. negative for cash outflows) are extremely common
|
||||
- Models that "work" can still be wrong — sanity-check outputs against industry benchmarks
|
||||
- If the model uses VBA macros, note any macro-driven calculations that can't be audited from formulas alone
|
||||
- Don't change the model without asking — report issues and let the user decide how to fix
|
||||
@@ -0,0 +1,359 @@
|
||||
---
|
||||
name: anthropic-fsi-competitive-analysis
|
||||
description: Framework for competitive landscape analysis across any industry. Use when creating competitor analysis, market positioning assessments, investment memos, strategic reviews, or any analysis requiring systematic evaluation of competitive dynamics. Triggers include requests for competitive landscape decks, peer comparisons, market structure analysis, strategic positioning assessments, and investment recommendations.
|
||||
---
|
||||
|
||||
# Competitive Landscape Mapping
|
||||
|
||||
---
|
||||
|
||||
## CRITICAL STANDARDS - APPLY TO EVERY ANALYSIS
|
||||
|
||||
### Source File Primacy
|
||||
|
||||
When source files (Excel/CSV) are provided:
|
||||
* **Extract values DIRECTLY** — Do not perform your own calculations; use the numbers as they appear
|
||||
* **Maintain consistency** — When the same metric appears in multiple places, ensure identical values throughout
|
||||
* **Verify calculations** — If the prompt asks you to calculate something, verify your result matches related data in the source
|
||||
* **Round only as shown** — Use the same decimal precision as the source file
|
||||
|
||||
### Prompt Fidelity
|
||||
|
||||
When the prompt specifies exact requirements, follow them verbatim:
|
||||
|
||||
**Slide Titles & Section Names:**
|
||||
* If prompt says `"Overview and Competitive Scope" slide` — use EXACTLY that title, not a paraphrase
|
||||
* If prompt says `within the "Segment Mix" section` — use EXACTLY "Segment Mix" as the section header
|
||||
* Never substitute with creative alternatives (e.g., don't use "FY2024 Segment Contribution Analysis" when "Overview and Competitive Scope" was specified)
|
||||
|
||||
**Chart vs Table:**
|
||||
* If prompt says `embedded chart` — create an actual PowerPoint chart object, NOT a table
|
||||
* If prompt says `data labels must display` — these go on chart elements (bars, slices, lines), not table cells
|
||||
* Tables and charts are NOT interchangeable — use exactly what's specified
|
||||
|
||||
**Complete Data Series:**
|
||||
* If prompt lists 7 competitors, include ALL 7 — not 5 or 6
|
||||
* If prompt shows data for years 2015-2025, include ALL years — not a subset
|
||||
* If prompt specifies 6 series in a chart (Uber, Lyft, DiDi, Bolt, Grab, Gojek), include ALL 6 — not 4
|
||||
|
||||
**Exact Values & Phrasing:**
|
||||
* If prompt says `Revenue: $43.98B (+18% YoY)` — display exactly that format
|
||||
* If prompt says `surpasses DoorDash 4:1, Lyft 8:1` — use those exact ratios, not "7.6x Lyft"
|
||||
* If prompt gives specific percentages (e.g., "Uber 30%, DiDi 35%"), use exactly those numbers
|
||||
|
||||
**When in doubt:** Re-read the prompt. If it specifies something explicitly, that's not a suggestion — it's a requirement.
|
||||
|
||||
### Reference Files
|
||||
|
||||
This skill includes reference files in the `references/` folder. Use them as follows:
|
||||
* **`references/schemas.md`** — Table templates for M&A transactions, scenario analysis, and slide structure. Reference when building financial tables or investment scenarios.
|
||||
* **`references/frameworks.md`** — 2x2 matrix axis pairs by industry. Reference when choosing positioning visualization dimensions.
|
||||
|
||||
### Source Quality Hierarchy
|
||||
|
||||
When sources conflict, prioritize in this order:
|
||||
1. **10-Ks / Annual Reports** — Audited, highest reliability
|
||||
2. **Earnings Calls / Investor Presentations** — Management commentary, forward guidance
|
||||
3. **Sell-Side Research** — Analyst estimates, useful for private company sizing
|
||||
4. **Industry Reports** (McKinsey, Gartner, etc.) — Market sizing, trends
|
||||
5. **News Articles** — Use only for recent developments, verify against primary sources
|
||||
|
||||
### Data Comparability
|
||||
* **Time periods must match** — All competitor metrics from same fiscal year. Flag exceptions: "(FY24)" vs "(H1 2024)"
|
||||
* **Metric definitions must match** — Same calculation methodology across competitors
|
||||
* **Currency normalization** — Convert all figures to USD for international comparisons; note exchange rate and date used
|
||||
* **Use "-" for missing data** — Never leave cells blank; for private companies, use "N/A" or estimates with "[E]" flag
|
||||
* **Cite every number** — Format: "[Company] [Document] ([Date])"
|
||||
* **Source file fidelity** — When Excel/CSV files are provided, use values exactly as given; do not recalculate or round differently than shown
|
||||
|
||||
### Design & Formatting
|
||||
* **Slide titles = insights** — "Scale leaders pulling away from niche players" not "Competitive Analysis"
|
||||
* **Slide titles must fit** — One or two lines fine, but no overflow; reduce font size if needed (min 24pt)
|
||||
* **Signposts = quantified** — "margin below 40%" not "margins decline"
|
||||
* **Ratings include actuals** — "●●● $160B" not just "●●●"
|
||||
* **Slide numbers required** — Every slide must have a page number
|
||||
|
||||
### Presentation-Specific Requirements
|
||||
* **Actual embedded charts required** — Pie charts, bar charts, and line graphs must be real PowerPoint chart objects (created via pptx skill), NOT text/ASCII representations
|
||||
* **Match prompt structure** — If prompt specifies slide structure, follow it
|
||||
* **Competitor tables** — For comprehensive analysis: metrics table + qualitative table per competitor. For rapid assessments: single combined table is acceptable.
|
||||
* **Segment financials** — Include both Revenue AND EBITDA when available. For private competitors or limited disclosure, revenue-only tables are acceptable; note "[EBITDA not disclosed]"
|
||||
|
||||
### Visual Reference
|
||||
|
||||
**Review `examples/Toast_Embedded_Payments_Competitive_Landscape_v3.pptx` and match its professional quality:**
|
||||
|
||||
**Spacing & Overflow Prevention:**
|
||||
- **Title-to-content gap** — Minimum 0.4" between slide title bottom and first content element
|
||||
- **Section header gaps** — Minimum 0.25" between section headers and content below
|
||||
- **Element buffers** — Minimum 0.2" between any two elements (tables, text boxes, charts)
|
||||
- **Margin safety** — Keep all content at least 0.5" from slide edges
|
||||
- **Text overflow** — If text doesn't fit, reduce font size or split across slides; never let text clip or overlap
|
||||
|
||||
**Slide Titles:**
|
||||
- **Must fit within slide width** — One or two lines is fine, but text must not overflow or clip
|
||||
- **If title is too long** — Shorten wording or reduce font size (minimum 24pt)
|
||||
- **Front-load the insight** — Put the key point first, details second
|
||||
|
||||
**Chart Formatting:**
|
||||
- **Legend inside layout** — Always set `include_in_layout=True` so legends don't overlap chart area
|
||||
- **Legend position** — Use RIGHT for pie charts (≤6 items), BOTTOM for line/bar charts (≤4 series)
|
||||
- **Too many series** — If >6 series, consider splitting into multiple charts or using a table instead
|
||||
- **Data labels** — For pie charts, show percentages on slices rather than relying solely on legend
|
||||
|
||||
**Typography (set explicitly, never use defaults):**
|
||||
- Slide title: 28-32pt bold
|
||||
- Section headers: 16-20pt bold
|
||||
- Body text: 11-14pt regular
|
||||
- Table text: 10-12pt regular
|
||||
- Sources/footnotes: 8-10pt, gray
|
||||
- **Consistency rule**: Same element type = same font size throughout deck
|
||||
|
||||
**Layout:**
|
||||
- Clean grid alignment — tables and text blocks align to consistent margins
|
||||
- Generous whitespace — don't crowd slides; let content breathe
|
||||
- Visual hierarchy — most important insight is largest/most prominent
|
||||
- One key message per slide — supporting detail below
|
||||
|
||||
**Color:**
|
||||
- Limited palette — 2-3 colors max (one accent color for emphasis)
|
||||
- Muted tones — avoid bright/saturated colors; use navy, gray, muted blue
|
||||
- Consistent application — same color meanings throughout (e.g., accent for key metrics)
|
||||
|
||||
**Tables:**
|
||||
- Light gray header row with bold text
|
||||
- Alternating row shading (subtle) or clean white with thin borders
|
||||
- Right-align numbers, left-align text
|
||||
- Adequate cell padding — text shouldn't touch borders
|
||||
|
||||
**Rating visuals:**
|
||||
- ●●● / ●●○ / ●○○ system with actual metric alongside
|
||||
- Consistent placement in comparative tables
|
||||
|
||||
Adapt structure and metrics to fit your industry — but maintain this level of polish.
|
||||
|
||||
### What's STRICT vs FLEXIBLE
|
||||
|
||||
| STRICT (Every Time) | FLEXIBLE (Case-by-Case) |
|
||||
|---------------------|------------------------|
|
||||
| Exact titles/sections when prompt specifies | Creative titles when prompt doesn't specify |
|
||||
| Chart when prompt says chart; table when prompt says table | Visualization type when prompt doesn't specify |
|
||||
| All data points/competitors listed in prompt | Number of competitors when prompt doesn't specify |
|
||||
| Exact values/ratios when prompt specifies them | Rounding when prompt doesn't specify precision |
|
||||
| Titles fit without overflow | Number of competitor categories |
|
||||
| Minimum spacing between elements | Which dimensions to compare |
|
||||
| Chart legends inside layout | Number of competitors profiled |
|
||||
| No overlapping text/elements | Visualization type (2x2, radar, tier) |
|
||||
|
||||
---
|
||||
|
||||
## WORKFLOW PHASES
|
||||
|
||||
### Phase 1: Clarify Requirements
|
||||
Before starting, confirm:
|
||||
* **Scope**: Single company deep-dive or multi-company comparison?
|
||||
* **Output**: Presentation or written memo?
|
||||
* **Focus areas**: Specific competitors, dimensions, or strategic questions?
|
||||
* **Investment context**: Need scenarios/signposts?
|
||||
* **Source files**: What data files are provided and what values should be extracted?
|
||||
|
||||
### Phase 2: Research → Outline → Review → Create
|
||||
**Do NOT create final output until outline is reviewed.**
|
||||
|
||||
The 10-step Analysis Workflow below (Steps 0-9) is executed during Phase 2. Complete research and outlining before creating final slides or documents.
|
||||
|
||||
---
|
||||
|
||||
## ANALYSIS WORKFLOW
|
||||
|
||||
### Step 0: Identify Industry-Defining Metrics
|
||||
Before diving into analysis, identify 3-5 metrics that matter most for this industry:
|
||||
|
||||
| Industry | Key Metrics |
|
||||
|----------|-------------|
|
||||
| SaaS | ARR, NRR, CAC payback, LTV/CAC, Rule of 40 |
|
||||
| Payments | GPV, take rate, attach rate, transaction margin |
|
||||
| Marketplaces | GMV, take rate, buyer/seller ratio, repeat rate |
|
||||
| Retail | Same-store sales, inventory turns, sales per sq ft |
|
||||
| Logistics | Volume, cost per unit, on-time delivery %, capacity utilization |
|
||||
|
||||
For industries not listed, identify the 3-5 metrics that investors and operators use to benchmark performance.
|
||||
|
||||
Use these metrics consistently across all competitor comparisons.
|
||||
|
||||
### Step 1: Market Context
|
||||
- Market size (current and projected) with source
|
||||
- Growth drivers and headwinds
|
||||
- Key trends reshaping the industry
|
||||
|
||||
**CORRECT:** "The embedded payments market is $80-100B in 2024, growing at 20-25% CAGR (McKinsey 2024)"
|
||||
**WRONG:** "The market is large and growing rapidly"
|
||||
|
||||
### Step 2: Industry Economics
|
||||
|
||||
Map value flows. Approach varies by industry type:
|
||||
* **Vertically-structured** — Value chain layers with typical margin at each
|
||||
* **Platform/network** — Ecosystem participants and value flows between them
|
||||
* **Fragmented** — Consolidation dynamics and margin differences by scale
|
||||
|
||||
### Step 3: Target Company Profile
|
||||
|
||||
```
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Revenue | $4.96B |
|
||||
| Growth | +26% YoY |
|
||||
| Gross Margin | 45% |
|
||||
| Profitability | $373M Adj. EBITDA |
|
||||
| Customers | 134K |
|
||||
| Retention | 92% |
|
||||
| Market Share | ~15% |
|
||||
```
|
||||
|
||||
**For multi-segment companies, add segment breakdown:**
|
||||
```
|
||||
| Segment | Revenue | Rev YoY | Rev % | EBITDA | EBITDA YoY | Margin |
|
||||
|---------|---------|---------|-------|--------|------------|--------|
|
||||
| Seg A | $25.1B | +26% | 57% | $6.5B | +31% | 26% |
|
||||
| Seg B | $13.8B | +31% | 31% | $2.5B | +64% | 18% |
|
||||
| Seg C | $5.1B | -2% | 12% | -$74M | -16% | -1% |
|
||||
| Total | $44.0B | +18% | 100% | $6.5B* | - | 15% |
|
||||
```
|
||||
*Note corporate costs if applicable
|
||||
|
||||
### Step 4: Competitor Mapping
|
||||
|
||||
Group competitors using the framework that fits:
|
||||
* **By business model** — Platform vs. vertical vs. horizontal
|
||||
* **By segment** — Enterprise vs. SMB vs. consumer
|
||||
* **By posture** — Direct vs. adjacent vs. emerging
|
||||
* **By origin** — Incumbents vs. disruptors vs. new entrants
|
||||
|
||||
### Step 5: Positioning Visualization
|
||||
|
||||
| Visualization | Best For |
|
||||
|--------------|----------|
|
||||
| 2x2 Matrix | Two dominant competitive factors |
|
||||
| Radar/Spider | Multi-factor comparison |
|
||||
| Tier Diagram | Natural clustering/strategic groups |
|
||||
| Value Chain Map | Vertical industries |
|
||||
| Ecosystem Map | Platform markets |
|
||||
|
||||
### Step 6: Competitor Deep Dives
|
||||
|
||||
**Table 1 — Metrics:**
|
||||
```
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Revenue | $X.XB |
|
||||
| Growth | +XX% YoY |
|
||||
| Gross Margin | XX% |
|
||||
| Market Cap | $X.XB |
|
||||
| Profitability | $XXXM EBITDA |
|
||||
| Customers | XXK |
|
||||
| Retention | XX% |
|
||||
| Market Share | ~XX% |
|
||||
```
|
||||
|
||||
**Table 2 — Qualitative:**
|
||||
```
|
||||
| Category | Assessment |
|
||||
|----------|------------|
|
||||
| Business | What they do (1 sentence) |
|
||||
| Strengths | 2-3 bullets |
|
||||
| Weaknesses | 2-3 bullets |
|
||||
| Strategy | Current priorities |
|
||||
```
|
||||
|
||||
### Step 7: Comparative Analysis
|
||||
|
||||
```
|
||||
| Dimension | Company A | Company B | Company C |
|
||||
|-----------|-----------|-----------|-----------|
|
||||
| Scale | ●●● $160B | ●●○ $45B | ●○○ $8B |
|
||||
| Growth | ●●○ +26% | ●●● +35% | ●●○ +22% |
|
||||
| Margins | ●●○ 7.5% | ●○○ 3.2% | ●●● 15% |
|
||||
```
|
||||
|
||||
### Step 8: Strategic Context
|
||||
- M&A transactions (multiples, strategic rationale)
|
||||
- Partnership and integration trends
|
||||
- Capital raising patterns
|
||||
- Regulatory developments
|
||||
|
||||
### Step 9: Synthesis
|
||||
|
||||
**Competitive Moat Assessment:**
|
||||
Evaluate each competitor's durable advantages using these categories:
|
||||
|
||||
| Moat Type | What to Assess |
|
||||
|-----------|----------------|
|
||||
| Network Effects | Strength of user/supplier flywheel; cross-side vs. same-side effects |
|
||||
| Switching Costs | Technical integration depth, contractual lock-in, behavioral habits |
|
||||
| Scale Economies | Unit cost advantages at volume; minimum efficient scale |
|
||||
| Intangible Assets | Brand value, proprietary data, regulatory licenses, patents |
|
||||
|
||||
Rate each as Strong / Moderate / Weak with supporting evidence.
|
||||
|
||||
**Required Synthesis Elements:**
|
||||
- Durable advantages (hard to replicate) — map to moat categories above
|
||||
- Structural vulnerabilities (hard to fix)
|
||||
- Current state vs. trajectory
|
||||
|
||||
**For investment contexts:**
|
||||
```
|
||||
| Scenario | Probability | Key Driver |
|
||||
|----------|-------------|------------|
|
||||
| Bull | 30% | Market share gains, margin expansion |
|
||||
| Base | 50% | Current trajectory continues |
|
||||
| Bear | 20% | Competitive pressure, margin compression |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## QUALITY CHECKLIST
|
||||
|
||||
Before finalizing, verify:
|
||||
|
||||
**Prompt Fidelity:**
|
||||
- ✅ Slide titles match prompt exactly (not paraphrased)
|
||||
- ✅ Section names match prompt exactly
|
||||
- ✅ Charts used where prompt says "chart"; tables where prompt says "table"
|
||||
- ✅ All competitors/data points included (if prompt lists 7, include 7)
|
||||
- ✅ All years/periods included (if prompt shows 2015-2025, include all)
|
||||
- ✅ Exact values and formats used as specified in prompt
|
||||
- ✅ Commentary uses exact phrasing when prompt specifies it
|
||||
|
||||
**Source File & Data Consistency:**
|
||||
- ✅ All values from source files extracted directly (not recalculated)
|
||||
- ✅ Same metric shows identical value across all slides
|
||||
- ✅ Calculated percentages match source data or related figures
|
||||
- ✅ Numbers use same decimal precision as source
|
||||
|
||||
**Layout & Spacing:**
|
||||
- ✅ Minimum 0.4" gap between slide title and first content element
|
||||
- ✅ No text or elements overlapping
|
||||
- ✅ All content within 0.5" margin from slide edges
|
||||
- ✅ Text fits within containers (no clipping or overflow)
|
||||
- ✅ Slide titles fit within slide width (1-2 lines, no overflow)
|
||||
|
||||
**Charts:**
|
||||
- ✅ Legends set to include_in_layout=True (no overlap with chart)
|
||||
- ✅ Legend position appropriate (RIGHT for pie, BOTTOM for line/bar)
|
||||
- ✅ No more than 6 series per chart; if more, split or use table
|
||||
|
||||
**Typography:**
|
||||
- ✅ Font sizes explicitly set (not default)
|
||||
- ✅ Same element type uses same font size across all slides
|
||||
- ✅ Titles 28-32pt, headers 16-20pt, body 11-14pt, sources 8-10pt
|
||||
|
||||
**Data & Sources:**
|
||||
- ✅ Every number has a source citation
|
||||
- ✅ All competitor metrics from same fiscal period (flag exceptions)
|
||||
- ✅ Same metric definitions across all competitors
|
||||
|
||||
**Presentation Format:**
|
||||
- ✅ Slide titles state insights, not topics
|
||||
- ✅ All slides have page numbers
|
||||
- ✅ Charts are actual embedded PowerPoint objects (not ASCII/text)
|
||||
- ✅ Segment tables include EBITDA where available; revenue-only acceptable for private companies
|
||||
@@ -0,0 +1,13 @@
|
||||
# Frameworks Reference
|
||||
|
||||
## 2x2 Matrix: Common Axis Pairs by Industry
|
||||
|
||||
*Technology/SaaS:* Product breadth × Customer segment, Integration depth × Geographic reach
|
||||
|
||||
*Consumer/Retail:* Price point × Product range, Online × Offline presence
|
||||
|
||||
*Financial Services:* Product complexity × Customer sophistication, Scale × Specialization
|
||||
|
||||
*Healthcare:* Care setting × Payer mix, Technology enablement × Service breadth
|
||||
|
||||
*Industrial:* Customization × Scale, Geographic scope × Vertical focus
|
||||
@@ -0,0 +1,33 @@
|
||||
# Schemas Reference
|
||||
|
||||
Additional table formats not shown in main SKILL.md.
|
||||
|
||||
## M&A Transaction Table
|
||||
|
||||
| Acquirer | Target | Date | Deal Value | Multiple | Rationale |
|
||||
|----------|--------|------|------------|----------|-----------|
|
||||
| Company A | Company B | MMM YYYY | $X.XB | X.Xx EV/Rev | [Strategic logic] |
|
||||
|
||||
State multiple methodology: "X.Xx EV/Revenue" or "X.Xx EV/EBITDA"
|
||||
|
||||
## Scenario Analysis Table
|
||||
|
||||
| Scenario | Probability | Valuation | Key Assumptions |
|
||||
|----------|-------------|-----------|-----------------|
|
||||
| Bull | XX% | $XXB | [Specific, quantified] |
|
||||
| Base | XX% | $XXB | [Specific, quantified] |
|
||||
| Bear | XX% | $XXB | [Specific, quantified] |
|
||||
|
||||
## Slide Structure
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ [Insight headline, not topic] │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ [Main Content] │
|
||||
│ │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ Source: [Citation] ([Date]) │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
@@ -0,0 +1,628 @@
|
||||
---
|
||||
name: fsi-comps-analysis
|
||||
description: |
|
||||
Build institutional-grade comparable company analyses with operating metrics, valuation multiples, and statistical benchmarking in Excel/spreadsheet format.
|
||||
|
||||
**Perfect for:**
|
||||
- Public company valuation (M&A, investment analysis)
|
||||
- Benchmarking performance vs. industry peers
|
||||
- Pricing IPOs or funding rounds
|
||||
- Identifying valuation outliers (over/under-valued)
|
||||
- Supporting investment committee presentations
|
||||
- Creating sector overview reports
|
||||
|
||||
**Not ideal for:**
|
||||
- Private companies without comparable public peers
|
||||
- Highly diversified conglomerates
|
||||
- Distressed/bankrupt companies
|
||||
- Pre-revenue startups
|
||||
- Companies with unique business models
|
||||
---
|
||||
|
||||
# Comparable Company Analysis
|
||||
|
||||
## ⚠️ CRITICAL: Data Source Priority (READ FIRST)
|
||||
|
||||
**ALWAYS follow this data source hierarchy:**
|
||||
|
||||
1. **FIRST: Check for MCP data sources** - If S&P Kensho MCP, FactSet MCP, or Daloopa MCP are available, use them exclusively for financial and trading information
|
||||
2. **DO NOT use web search** if the above MCP data sources are available
|
||||
3. **ONLY if MCPs are unavailable:** Then use Bloomberg Terminal, SEC EDGAR filings, or other institutional sources
|
||||
4. **NEVER use web search as a primary data source** - it lacks the accuracy, audit trails, and reliability required for institutional-grade analysis
|
||||
|
||||
**Why this matters:** MCP sources provide verified, institutional-grade data with proper citations. Web search results can be outdated, inaccurate, or unreliable for financial analysis.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
This skill teaches Claude to build institutional-grade comparable company analyses that combine operating metrics, valuation multiples, and statistical benchmarking. The output is a structured Excel/spreadsheet that enables informed investment decisions through peer comparison.
|
||||
|
||||
**Reference Material & Contextualization:**
|
||||
|
||||
An example comparable company analysis is provided in `examples/comps_example.xlsx`. When using this or other example files in this skill directory, use them intelligently:
|
||||
|
||||
**DO use examples for:**
|
||||
- Understanding structural hierarchy (how sections flow)
|
||||
- Grasping the level of rigor expected (statistical depth, documentation standards)
|
||||
- Learning principles (clear headers, transparent formulas, audit trails)
|
||||
|
||||
**DO NOT use examples for:**
|
||||
- Exact reproduction of format or metrics
|
||||
- Copying layout without considering context
|
||||
- Applying the same visual style regardless of audience
|
||||
|
||||
**ALWAYS ask yourself first:**
|
||||
1. **"Do you have a preferred format or should I adapt the template style?"**
|
||||
2. **"Who is the audience?"** (Investment committee, board presentation, quick reference, detailed memo)
|
||||
3. **"What's the key question?"** (Valuation, growth analysis, competitive positioning, efficiency)
|
||||
4. **"What's the context?"** (M&A evaluation, investment decision, sector benchmarking, performance review)
|
||||
|
||||
**Adapt based on specifics:**
|
||||
- **Industry context**: Big tech mega-caps need different metrics than emerging SaaS startups
|
||||
- **Sector-specific needs**: Add relevant metrics early (e.g., cloud ARR, enterprise customers, developer ecosystem for tech)
|
||||
- **Company familiarity**: Well-known companies may need less background, more focus on delta analysis
|
||||
- **Decision type**: M&A requires different emphasis than ongoing portfolio monitoring
|
||||
|
||||
**Core principle:** Use template principles (clear structure, statistical rigor, transparent formulas) but vary execution based on context. The goal is institutional-quality analysis, not institutional-looking templates.
|
||||
|
||||
User-provided examples and explicit preferences always take precedence over defaults.
|
||||
|
||||
## Core Philosophy
|
||||
**"Build the right structure first, then let the data tell the story."**
|
||||
|
||||
Start with headers that force strategic thinking about what matters, input clean data, build transparent formulas, and let statistics emerge automatically. A good comp should be immediately readable by someone who didn't build it.
|
||||
|
||||
---
|
||||
|
||||
## Section 1: Document Structure & Setup
|
||||
|
||||
### Header Block (Rows 1-3)
|
||||
```
|
||||
Row 1: [ANALYSIS TITLE] - COMPARABLE COMPANY ANALYSIS
|
||||
Row 2: [List of Companies with Tickers] • [Company 1 (TICK1)] • [Company 2 (TICK2)] • [Company 3 (TICK3)]
|
||||
Row 3: As of [Period] | All figures in [USD Millions/Billions] except per-share amounts and ratios
|
||||
```
|
||||
|
||||
**Why this matters:** Establishes context immediately. Anyone opening this file knows what they're looking at, when it was created, and how to interpret the numbers.
|
||||
|
||||
### Visual Convention Standards (OPTIONAL - User preferences and uploaded templates always override)
|
||||
|
||||
**IMPORTANT: These are suggested defaults only. Always prioritize:**
|
||||
1. User's explicit formatting preferences
|
||||
2. Formatting from any uploaded template files
|
||||
3. Company/team style guides
|
||||
4. These defaults (only if no other guidance provided)
|
||||
|
||||
**Suggested Font & Typography:**
|
||||
- **Font family**: Times New Roman (professional, readable, industry standard)
|
||||
- **Font size**: 11pt for data cells, 12pt for headers
|
||||
- **Bold text**: Section headers, company names, statistic labels
|
||||
|
||||
**Suggested Color & Shading:**
|
||||
- **Section headers** (e.g., "OPERATING STATISTICS & FINANCIAL METRICS"):
|
||||
- Dark blue background (#17365D or similar navy)
|
||||
- White bold text
|
||||
- Full row shading across all columns
|
||||
- **Column headers** (e.g., "Company", "Revenue", "Margin"):
|
||||
- Light blue/gray background (#D9E2F3 or similar pale blue)
|
||||
- Black bold text
|
||||
- Centered alignment
|
||||
- **Data rows**:
|
||||
- White background for company data
|
||||
- Black text for inputs and formulas
|
||||
- **Statistics rows** (Maximum, 75th Percentile, etc.):
|
||||
- Light gray background (#F2F2F2)
|
||||
- Black text, left-aligned labels
|
||||
|
||||
**Suggested Formatting Conventions:**
|
||||
- **Decimal precision**:
|
||||
- Percentages: 1 decimal (12.3%)
|
||||
- Multiples: 1 decimal (13.5x)
|
||||
- Dollar amounts: No decimals, thousands separator (69,632)
|
||||
- Margins shown as percentages: 1 decimal (68.7%)
|
||||
- **Borders**: No borders (clean, minimal appearance)
|
||||
- **Alignment**: All metrics center-aligned for clean, uniform appearance
|
||||
- **Cell dimensions**: All column widths should be uniform/even, all row heights should be consistent (creates clean, professional grid)
|
||||
|
||||
**Note:** If the user provides a template file or specifies different formatting, use that instead.
|
||||
|
||||
---
|
||||
|
||||
## Section 2: Operating Statistics & Financial Metrics
|
||||
|
||||
### Core Columns (Start with these)
|
||||
1. **Company** - Names with consistent formatting
|
||||
2. **Revenue** - Size metric (can be LTM, quarterly, or annual depending on context)
|
||||
3. **Revenue Growth** - Year-over-year percentage change
|
||||
4. **Gross Profit** - Revenue minus cost of goods sold
|
||||
5. **Gross Margin** - GP/Revenue (fundamental profitability)
|
||||
6. **EBITDA** - Earnings before interest, tax, depreciation, amortization
|
||||
7. **EBITDA Margin** - EBITDA/Revenue (operating efficiency)
|
||||
|
||||
### Optional Additions (Choose based on industry/purpose)
|
||||
- **Quarterly vs LTM** - Include both if seasonality matters
|
||||
- **Free Cash Flow** - For capital-intensive or SaaS businesses
|
||||
- **FCF Margin** - FCF/Revenue (cash generation efficiency)
|
||||
- **Net Income** - For mature, profitable companies
|
||||
- **Operating Income** - For businesses with varying D&A
|
||||
- **CapEx metrics** - For asset-heavy industries
|
||||
- **Rule of 40** - Specifically for SaaS (Growth % + Margin %)
|
||||
- **FCF Conversion** - For quality of earnings analysis (advanced)
|
||||
|
||||
### Formula Examples (Using Row 7 as example)
|
||||
```excel
|
||||
// Core ratios - these are always calculated
|
||||
Gross Margin (F7): =E7/C7
|
||||
EBITDA Margin (H7): =G7/C7
|
||||
|
||||
// Optional ratios - include if relevant
|
||||
FCF Margin: =[FCF]/[Revenue]
|
||||
Net Margin: =[Net Income]/[Revenue]
|
||||
Rule of 40: =[Growth %]+[FCF Margin %]
|
||||
```
|
||||
|
||||
**Golden Rule:** Every ratio should be [Something] / [Revenue] or [Something] / [Something from this sheet]. Keep it simple.
|
||||
|
||||
### Statistics Block (After company data)
|
||||
|
||||
**CRITICAL: Add statistics formulas for all comparable metrics (ratios, margins, growth rates, multiples).**
|
||||
|
||||
```
|
||||
[Leave one blank row for visual separation]
|
||||
- Maximum: =MAX(B7:B9)
|
||||
- 75th Percentile: =QUARTILE(B7:B9,3)
|
||||
- Median: =MEDIAN(B7:B9)
|
||||
- 25th Percentile: =QUARTILE(B7:B9,1)
|
||||
- Minimum: =MIN(B7:B9)
|
||||
```
|
||||
|
||||
**Columns that NEED statistics (comparable metrics):**
|
||||
- Revenue Growth %, Gross Margin %, EBITDA Margin %, EPS
|
||||
- EV/Revenue, EV/EBITDA, P/E, Dividend Yield %, Beta
|
||||
|
||||
**Columns that DON'T need statistics (size metrics):**
|
||||
- Revenue, EBITDA, Net Income (absolute size varies by company scale)
|
||||
- Market Cap, Enterprise Value (not comparable across different-sized companies)
|
||||
|
||||
**Note:** Add one blank row between company data and statistics rows for visual separation. Do NOT add a "SECTOR STATISTICS" or "VALUATION STATISTICS" header row.
|
||||
|
||||
**Why quartiles matter:** They show distribution, not just average. A 75th percentile multiple tells you what "premium" companies trade at.
|
||||
|
||||
---
|
||||
|
||||
## Section 3: Valuation Multiples & Investment Metrics
|
||||
|
||||
### Core Valuation Columns (Start with these)
|
||||
1. **Company** - Same order as operating section
|
||||
2. **Market Cap** - Current market valuation
|
||||
3. **Enterprise Value** - Market Cap ± Net Debt/Cash
|
||||
4. **EV/Revenue** - How much market pays per dollar of sales
|
||||
5. **EV/EBITDA** - How much market pays per dollar of earnings
|
||||
6. **P/E Ratio** - Price relative to net earnings
|
||||
|
||||
### Optional Valuation Metrics (Choose based on context)
|
||||
- **FCF Yield** - FCF/Market Cap (for cash-focused analysis)
|
||||
- **PEG Ratio** - P/E/Growth Rate (for growth companies)
|
||||
- **Price/Book** - Market value vs. book value (for asset-heavy businesses)
|
||||
- **ROE/ROA** - Return metrics (for profitability comparison)
|
||||
- **Revenue/EBITDA CAGR** - Historical growth rates (for trend analysis)
|
||||
- **Asset Turnover** - Revenue/Assets (for operational efficiency)
|
||||
- **Debt/Equity** - Leverage (for capital structure analysis)
|
||||
|
||||
**Key Principle:** Include 3-5 core multiples that matter for your industry. Don't include every possible metric just because you can.
|
||||
|
||||
### Formula Examples
|
||||
```excel
|
||||
// Core multiples - always include these
|
||||
EV/Revenue: =[Enterprise Value]/[LTM Revenue]
|
||||
EV/EBITDA: =[Enterprise Value]/[LTM EBITDA]
|
||||
P/E Ratio: =[Market Cap]/[Net Income]
|
||||
|
||||
// Optional multiples - include if data available
|
||||
FCF Yield: =[LTM FCF]/[Market Cap]
|
||||
PEG Ratio: =[P/E]/[Growth Rate %]
|
||||
```
|
||||
|
||||
### Cross-Reference Rule
|
||||
**CRITICAL:** Valuation multiples MUST reference the operating metrics section. Never input the same raw data twice. If revenue is in C7, then EV/Revenue formula should reference C7.
|
||||
|
||||
### Statistics Block
|
||||
Same structure as operating section: Max, 75th, Median, 25th, Min for every metric. Add one blank row for visual separation between company data and statistics. Do NOT add a "VALUATION STATISTICS" header row.
|
||||
|
||||
---
|
||||
|
||||
## Section 4: Notes & Methodology Documentation
|
||||
|
||||
### Required Components
|
||||
|
||||
**Data Sources & Quality:**
|
||||
- Where did the data come from? (S&P Kensho MCP, FactSet MCP, Daloopa MCP, Bloomberg, SEC filings)
|
||||
- What period does it cover? (Q4 2024, audited figures)
|
||||
- How was it verified? (Cross-checked against 10-K/10-Q)
|
||||
- Note: Prioritize MCP data sources (S&P Kensho, FactSet, Daloopa) if available for better accuracy and traceability
|
||||
|
||||
**Key Definitions:**
|
||||
- EBITDA calculation method (Gross Profit + D&A, or Operating Income + D&A)
|
||||
- Free Cash Flow formula (Operating CF - CapEx)
|
||||
- Special metrics explained (Rule of 40, FCF Conversion)
|
||||
- Time period definitions (LTM, CAGR calculation periods)
|
||||
|
||||
**Valuation Methodology:**
|
||||
- How was Enterprise Value calculated? (Market Cap + Net Debt)
|
||||
- What growth rates were used? (Historical CAGR, forward estimates)
|
||||
- Any adjustments made? (One-time items excluded, normalized margins)
|
||||
|
||||
**Analysis Framework:**
|
||||
- What's the investment thesis? (Cloud/SaaS efficiency)
|
||||
- What metrics matter most? (Cash generation, capital efficiency)
|
||||
- How should readers interpret the statistics? (Quartiles provide context)
|
||||
|
||||
---
|
||||
|
||||
## Section 5: Choosing the Right Metrics (Decision Framework)
|
||||
|
||||
### Start with "What question am I answering?"
|
||||
|
||||
**"Which company is undervalued?"**
|
||||
→ Focus on: EV/Revenue, EV/EBITDA, P/E, Market Cap
|
||||
→ Skip: Operational details, growth metrics
|
||||
|
||||
**"Which company is most efficient?"**
|
||||
→ Focus on: Gross Margin, EBITDA Margin, FCF Margin, Asset Turnover
|
||||
→ Skip: Size metrics, absolute dollar amounts
|
||||
|
||||
**"Which company is growing fastest?"**
|
||||
→ Focus on: Revenue Growth %, EBITDA CAGR, User/Customer Growth
|
||||
→ Skip: Margin metrics, leverage ratios
|
||||
|
||||
**"Which is the best cash generator?"**
|
||||
→ Focus on: FCF, FCF Margin, FCF Conversion, CapEx intensity
|
||||
→ Skip: EBITDA, P/E ratios
|
||||
|
||||
### Industry-Specific Metric Selection
|
||||
|
||||
**Software/SaaS:**
|
||||
Must have: Revenue Growth, Gross Margin, Rule of 40
|
||||
Optional: ARR, Net Dollar Retention, CAC Payback
|
||||
Skip: Asset Turnover, Inventory metrics
|
||||
|
||||
**Manufacturing/Industrials:**
|
||||
Must have: EBITDA Margin, Asset Turnover, CapEx/Revenue
|
||||
Optional: ROA, Inventory Turns, Backlog
|
||||
Skip: Rule of 40, SaaS metrics
|
||||
|
||||
**Financial Services:**
|
||||
Must have: ROE, ROA, Efficiency Ratio, P/E
|
||||
Optional: Net Interest Margin, Loan Loss Reserves
|
||||
Skip: Gross Margin, EBITDA (not meaningful for banks)
|
||||
|
||||
**Retail/E-commerce:**
|
||||
Must have: Revenue Growth, Gross Margin, Inventory Turnover
|
||||
Optional: Same-Store Sales, Customer Acquisition Cost
|
||||
Skip: Heavy R&D or CapEx metrics
|
||||
|
||||
### The "5-10 Rule"
|
||||
|
||||
**5 operating metrics** - Revenue, Growth, 2-3 margins/efficiency metrics
|
||||
**5 valuation metrics** - Market Cap, EV, 3 multiples
|
||||
**= 10 total columns** - Enough to tell the story, not so many you lose the thread
|
||||
|
||||
If you have more than 15 metrics, you're probably including noise. Edit ruthlessly.
|
||||
|
||||
---
|
||||
|
||||
## Section 6: Best Practices & Quality Checks
|
||||
|
||||
### Before You Start
|
||||
1. **Define the peer group** - Companies must be truly comparable (similar business model, scale, geography)
|
||||
2. **Choose the right period** - LTM smooths seasonality; quarterly shows trends
|
||||
3. **Standardize units upfront** - Millions vs. billions decision affects everything
|
||||
4. **Map data sources** - Know where each number comes from
|
||||
|
||||
### As You Build
|
||||
1. **Input all raw data first** - Complete the blue text before writing formulas
|
||||
2. **Add cell comments to ALL hard-coded inputs** - Right-click cell → Insert Comment → Document source OR assumption
|
||||
|
||||
**For sourced data, cite exactly where it came from:**
|
||||
- Example: "Bloomberg Terminal - MSFT Equity DES, accessed 2024-10-02"
|
||||
- Example: "Q4 2024 10-K filing, page 42, line item 'Total Revenue'"
|
||||
- Example: "FactSet consensus estimate as of 2024-10-02"
|
||||
- **Include hyperlinks when possible**: Right-click cell → Link → paste URL to SEC filing, data source, or report
|
||||
|
||||
**For assumptions, explain the reasoning:**
|
||||
- Example: "Assumed 15% EBITDA margin based on peer median, company does not disclose"
|
||||
- Example: "Estimated Enterprise Value as Market Cap + $50M net debt (from Q3 balance sheet, Q4 not yet available)"
|
||||
- Example: "Forward P/E based on street consensus EPS of $3.45 (average of 12 analyst estimates)"
|
||||
|
||||
**Why this matters**: Enables audit trails, data verification, assumption transparency, and future updates
|
||||
3. **Build formulas row by row** - Test each calculation before moving on
|
||||
4. **Use absolute references for headers** - $C$6 locks the header row
|
||||
5. **Format consistently** - Percentages as percentages, not decimals
|
||||
6. **Add conditional formatting** - Highlight outliers automatically
|
||||
|
||||
### Sanity Checks
|
||||
- **Margin test**: Gross margin > EBITDA margin > Net margin (always true by definition)
|
||||
- **Multiple reasonableness**:
|
||||
- EV/Revenue: typically 0.5-20x (varies widely by industry)
|
||||
- EV/EBITDA: typically 8-25x (fairly consistent across industries)
|
||||
- P/E: typically 10-50x (depends on growth rate)
|
||||
- **Growth-multiple correlation**: Higher growth usually means higher multiples
|
||||
- **Size-efficiency trade-off**: Larger companies often have better margins (scale benefits)
|
||||
|
||||
### Common Mistakes to Avoid
|
||||
❌ Mixing market cap and enterprise value in formulas
|
||||
❌ Using different time periods for numerator and denominator (LTM vs quarterly)
|
||||
❌ Hardcoding numbers into formulas instead of cell references
|
||||
❌ **Hard-coded inputs without cell comments citing the source OR explaining the assumption**
|
||||
❌ Missing hyperlinks to SEC filings or data sources when available
|
||||
❌ Including too many metrics without clear purpose
|
||||
❌ Including non-comparable companies (different business models)
|
||||
❌ Using outdated data without disclosure
|
||||
❌ Calculating averages of percentages incorrectly (should be median)
|
||||
|
||||
---
|
||||
|
||||
## Section 6: Advanced Features
|
||||
|
||||
### Dynamic Headers
|
||||
For columns showing calculations, use clear unit labels:
|
||||
```
|
||||
Revenue Growth (YoY) % | EBITDA Margin | FCF Margin | Rule of 40
|
||||
```
|
||||
|
||||
### Quartile Analysis Benefits
|
||||
Instead of just mean/median, quartiles show:
|
||||
- **75th percentile** = "Premium" companies trade here
|
||||
- **Median** = Typical market valuation
|
||||
- **25th percentile** = "Discount" territory
|
||||
|
||||
This helps answer: "Is our target company trading rich or cheap vs. peers?"
|
||||
|
||||
### Industry-Specific Modifications
|
||||
|
||||
**Software/SaaS:**
|
||||
- Add: ARR, Net Dollar Retention, CAC Payback Period
|
||||
- Emphasize: Rule of 40, FCF margins, gross margins >70%
|
||||
|
||||
**Healthcare:**
|
||||
- Add: R&D/Revenue, Pipeline value, Regulatory status
|
||||
- Emphasize: EBITDA margins, growth rates, reimbursement risk
|
||||
|
||||
**Industrials:**
|
||||
- Add: Backlog, Order book trends, Geographic mix
|
||||
- Emphasize: ROIC, asset turnover, cyclical adjustments
|
||||
|
||||
**Consumer:**
|
||||
- Add: Same-store sales, Customer acquisition cost, Brand value
|
||||
- Emphasize: Revenue growth, gross margins, inventory turns
|
||||
|
||||
---
|
||||
|
||||
## Section 7: Workflow & Practical Tips
|
||||
|
||||
### Step-by-Step Process
|
||||
1. **Set up structure** (30 minutes)
|
||||
- Create all headers
|
||||
- Format cells (blue for inputs, black for formulas)
|
||||
- Lock in units and date references
|
||||
|
||||
2. **Gather data** (60-90 minutes)
|
||||
- Pull from primary sources (S&P Kensho MCP, FactSet MCP, Daloopa MCP if available; otherwise Bloomberg, SEC)
|
||||
- Input all raw numbers in blue
|
||||
- Document sources in notes section
|
||||
|
||||
3. **Build formulas** (30 minutes)
|
||||
- Start with simple ratios (margins)
|
||||
- Progress to multiples (EV/Revenue)
|
||||
- Add cross-checks (do margins make sense?)
|
||||
|
||||
4. **Add statistics** (15 minutes)
|
||||
- Copy formula structure for all columns
|
||||
- Verify ranges are correct (B7:B9, not B7:B10)
|
||||
- Check quartile logic
|
||||
|
||||
5. **Quality control** (30 minutes)
|
||||
- Run sanity checks
|
||||
- Verify formula references
|
||||
- Check for #DIV/0! or #REF! errors
|
||||
- Compare against known benchmarks
|
||||
|
||||
6. **Documentation** (15 minutes)
|
||||
- Complete notes section
|
||||
- Add data sources
|
||||
- Define methodologies
|
||||
- Date-stamp the analysis
|
||||
|
||||
### Pro Tips
|
||||
- **Save templates**: Build once, reuse forever
|
||||
- **Color-code outliers**: Conditional formatting for values >2 standard deviations
|
||||
- **Link to source files**: Hyperlink to Bloomberg screenshots or SEC filings
|
||||
- **Version control**: Save as "Comps_v1_2024-12-15" with clear dating
|
||||
- **Collaborative reviews**: Have someone else check your formulas
|
||||
|
||||
### Excel Formatting Checklist (Optional - adapt to user preferences)
|
||||
- [ ] Font set to user's preferred style (default: Times New Roman, 11pt data, 12pt headers)
|
||||
- [ ] Section headers formatted per user's template (default: dark blue #17365D with white bold text)
|
||||
- [ ] Column headers formatted per user's template (default: light blue/gray #D9E2F3 with black bold text)
|
||||
- [ ] Statistics rows formatted per user's template (default: light gray #F2F2F2)
|
||||
- [ ] No borders applied (clean, minimal appearance)
|
||||
- [ ] **Column widths set to uniform/even width** (creates clean, professional appearance)
|
||||
- [ ] **Row heights set to consistent height** (typically 20-25pt for data rows)
|
||||
- [ ] Numbers formatted with proper decimal precision and thousands separators
|
||||
- [ ] **All metrics center-aligned** for clean, uniform appearance
|
||||
- [ ] **One blank row for separation between company data and statistics rows**
|
||||
- [ ] **No separate "SECTOR STATISTICS" or "VALUATION STATISTICS" header rows**
|
||||
- [ ] **Every hard-coded input cell has a comment with either: (1) exact data source, OR (2) assumption explanation**
|
||||
- [ ] **Hyperlinks added to cells where applicable** (SEC filings, data provider pages, reports)
|
||||
|
||||
---
|
||||
|
||||
## Section 8: Example Template Layout
|
||||
|
||||
**Simple Version (Start here):**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ TECHNOLOGY - COMPARABLE COMPANY ANALYSIS │
|
||||
│ Microsoft • Alphabet • Amazon │
|
||||
│ As of Q4 2024 | All figures in USD Millions │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ OPERATING METRICS │
|
||||
├──────────┬─────────┬─────────┬──────────┬──────────────────┤
|
||||
│ Company │ Revenue │ Growth │ Gross │ EBITDA │ EBITDA │
|
||||
│ │ (LTM) │ (YoY) │ Margin │ (LTM) │ Margin │
|
||||
├──────────┼─────────┼─────────┼──────────┼─────────┼────────┤
|
||||
│ MSFT │ 261,400 │ 12.3% │ 68.7% │ 205,100 │ 78.4% │
|
||||
│ GOOGL │ 349,800 │ 11.8% │ 57.9% │ 239,300 │ 68.4% │
|
||||
│ AMZN │ 638,100 │ 10.5% │ 47.3% │ 152,600 │ 23.9% │
|
||||
│ │ │ │ │ │ │ [blank row]
|
||||
│ Median │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │=MEDIAN │
|
||||
│ 75th % │ =QUART │ =QUART │ =QUART │ =QUART │=QUART │
|
||||
│ 25th % │ =QUART │ =QUART │ =QUART │ =QUART │=QUART │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ VALUATION MULTIPLES │
|
||||
├──────────┬──────────┬──────────┬──────────┬────────────────┤
|
||||
│ Company │ Mkt Cap │ EV │ EV/Rev │ EV/EBITDA │ P/E│
|
||||
├──────────┼──────────┼──────────┼──────────┼───────────┼────┤
|
||||
│ MSFT │3,550,000 │3,530,000 │ 13.5x │ 17.2x │36.0│
|
||||
│ GOOGL │2,030,000 │1,960,000 │ 5.6x │ 8.2x │24.5│
|
||||
│ AMZN │2,226,000 │2,320,000 │ 3.6x │ 15.2x │58.3│
|
||||
│ │ │ │ │ │ │ [blank row]
|
||||
│ Median │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │=MED│
|
||||
│ 75th % │ =QUART │ =QUART │ =QUART │ =QUART │=QRT│
|
||||
│ 25th % │ =QUART │ =QUART │ =QUART │ =QUART │=QRT│
|
||||
└──────────┴──────────┴──────────┴──────────┴───────────┴────┘
|
||||
```
|
||||
|
||||
**Add complexity only when needed:**
|
||||
- Include quarterly AND LTM if seasonality matters
|
||||
- Add FCF metrics if cash generation is key story
|
||||
- Include industry-specific metrics (Rule of 40 for SaaS, etc.)
|
||||
- Add more statistics rows if you have >5 companies
|
||||
|
||||
---
|
||||
|
||||
## Section 9: Industry-Specific Additions (Optional)
|
||||
|
||||
Only add these if they're critical to your analysis. Most comps work fine with just core metrics.
|
||||
|
||||
**Software/SaaS:**
|
||||
Add if relevant: ARR, Net Dollar Retention, Rule of 40
|
||||
|
||||
**Financial Services:**
|
||||
Add if relevant: ROE, Net Interest Margin, Efficiency Ratio
|
||||
|
||||
**E-commerce:**
|
||||
Add if relevant: GMV, Take Rate, Active Buyers
|
||||
|
||||
**Healthcare:**
|
||||
Add if relevant: R&D/Revenue, Pipeline Value, Patent Timeline
|
||||
|
||||
**Manufacturing:**
|
||||
Add if relevant: Asset Turnover, Inventory Turns, Backlog
|
||||
|
||||
---
|
||||
|
||||
## Section 10: Red Flags & Warning Signs
|
||||
|
||||
### Data Quality Issues
|
||||
🚩 Inconsistent time periods (mixing quarterly and annual)
|
||||
🚩 Missing data without explanation
|
||||
🚩 Significant differences between data sources (>10% variance)
|
||||
|
||||
### Valuation Red Flags
|
||||
🚩 Negative EBITDA companies being valued on EBITDA multiples (use revenue multiples instead)
|
||||
🚩 P/E ratios >100x without hypergrowth story
|
||||
🚩 Margins that don't make sense for the industry
|
||||
|
||||
### Comparability Issues
|
||||
🚩 Different fiscal year ends (causes timing problems)
|
||||
🚩ixing pure-play and conglomerates
|
||||
🚩 Materially different business models labeled as "comps"
|
||||
|
||||
**When in doubt, exclude the company.** Better to have 3 perfect comps than 6 questionable ones.
|
||||
|
||||
---
|
||||
|
||||
## Section 11: Formulas Reference Guide
|
||||
|
||||
### Essential Excel Formulas
|
||||
```excel
|
||||
// Statistical Functions
|
||||
=AVERAGE(range) // Simple mean
|
||||
=MEDIAN(range) // Middle value
|
||||
=QUARTILE(range, 1) // 25th percentile
|
||||
=QUARTILE(range, 3) // 75th percentile
|
||||
=MAX(range) // Maximum value
|
||||
=MIN(range) // Minimum value
|
||||
=STDEV.P(range) // Standard deviation
|
||||
|
||||
// Financial Calculations
|
||||
=B7/C7 // Simple ratio (Margin)
|
||||
=SUM(B7:B9)/3 // Average of multiple companies
|
||||
=IF(B7>0, C7/B7, "N/A") // Conditional calculation
|
||||
=IFERROR(C7/D7, 0) // Handle divide by zero
|
||||
|
||||
// Cross-Sheet References
|
||||
='Sheet1'!B7 // Reference another sheet
|
||||
=VLOOKUP(A7, Table1, 2) // Lookup from data table
|
||||
=INDEX(MATCH()) // Advanced lookup
|
||||
|
||||
// Formatting
|
||||
=TEXT(B7, "0.0%") // Format as percentage
|
||||
=TEXT(C7, "#,##0") // Thousands separator
|
||||
```
|
||||
|
||||
### Common Ratio Formulas
|
||||
```excel
|
||||
Gross Margin = Gross Profit / Revenue
|
||||
EBITDA Margin = EBITDA / Revenue
|
||||
FCF Margin = Free Cash Flow / Revenue
|
||||
FCF Conversion = FCF / Operating Cash Flow
|
||||
ROE = Net Income / Shareholders' Equity
|
||||
ROA = Net Income / Total Assets
|
||||
Asset Turnover = Revenue / Total Assets
|
||||
Debt/Equity = Total Debt / Shareholders' Equity
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Key Principles Summary
|
||||
|
||||
1. **Structure drives insight** - Right headers force right thinking
|
||||
2. **Less is more** - 5-10 metrics that matter beat 20 that don't
|
||||
3. **Choose metrics for your question** - Valuation analysis ≠ efficiency analysis
|
||||
4. **Statistics show patterns** - Median/quartiles reveal more than average
|
||||
5. **Transparency beats complexity** - Simple formulas everyone understands
|
||||
6. **Comparability is king** - Better to exclude than force a bad comp
|
||||
7. **Document your choices** - Explain which metrics and why in notes section
|
||||
|
||||
---
|
||||
|
||||
## Output Checklist
|
||||
|
||||
Before delivering a comp analysis, verify:
|
||||
- [ ] All companies are truly comparable
|
||||
- [ ] Data is from consistent time periods
|
||||
- [ ] Units are clearly labeled (millions/billions)
|
||||
- [ ] Formulas reference cells, not hardcoded values
|
||||
- [ ] **All hard-coded input cells have comments with either: (1) exact data source with citation, OR (2) clear assumption with explanation**
|
||||
- [ ] **Hyperlinks added where relevant** (SEC EDGAR filings, Bloomberg pages, research reports)
|
||||
- [ ] Statistics include at least 5 metrics (Max, 75th, Med, 25th, Min)
|
||||
- [ ] Notes section documents sources and methodology
|
||||
- [ ] Visual formatting follows conventions (blue = input, black = formula)
|
||||
- [ ] Sanity checks pass (margins logical, multiples reasonable)
|
||||
- [ ] Date stamp is current ("As of [Date]")
|
||||
- [ ] Formula auditing shows no errors (#DIV/0!, #REF!, #N/A)
|
||||
|
||||
---
|
||||
|
||||
## Continuous Improvement
|
||||
|
||||
After completing a comp analysis, ask:
|
||||
1. Did the statistics reveal unexpected insights?
|
||||
2. Were there any data gaps that limited analysis?
|
||||
3. Did stakeholders ask for metrics you didn't include?
|
||||
4. How long did it take vs. how long should it take?
|
||||
5. What would make this more useful next time?
|
||||
|
||||
The best comp analyses evolve with each iteration. Save templates, learn from feedback, and refine the structure based on what decision-makers actually use.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,40 @@
|
||||
# DCF Model Troubleshooting Guide
|
||||
|
||||
**When to read this file:** If recalc.py shows errors OR valuation results seem unreasonable OR case selector not working properly.
|
||||
|
||||
## Model Returns Error Values
|
||||
|
||||
### #REF! Errors
|
||||
- Usually caused by formulas referencing wrong rows after headers were inserted
|
||||
- Solution: Rebuild with correct row references, or start over following layout planning
|
||||
- Prevention: Define all row positions BEFORE writing formulas
|
||||
|
||||
### #DIV/0! Errors
|
||||
- Division by zero or empty cells
|
||||
- Solution: Add IF statements to handle zeros: `=IF([Divisor]=0,0,[Numerator]/[Divisor])`
|
||||
|
||||
### #VALUE! Errors
|
||||
- Wrong data type in calculation (text instead of number)
|
||||
- Solution: Verify all inputs are formatted as numbers
|
||||
|
||||
## Valuation Seems Unreasonable
|
||||
|
||||
### Implied price far too high
|
||||
- Check terminal value isn't >80% of EV
|
||||
- Verify terminal growth < WACC
|
||||
- Review if growth assumptions are realistic
|
||||
- Consider if margins are too optimistic
|
||||
|
||||
### Implied price far too low
|
||||
- Verify net debt vs net cash is correct
|
||||
- Check if WACC is too high
|
||||
- Review if projections are too conservative
|
||||
- Consider if terminal growth is too low
|
||||
|
||||
## Case Selector Not Working
|
||||
|
||||
### Consolidation column not updating when switching scenarios
|
||||
- Verify case selector cell contains 1, 2, or 3
|
||||
- Check INDEX/OFFSET formulas reference correct row range and selector cell
|
||||
- Ensure absolute references ($B$6) are used for selector
|
||||
- Test by manually changing the selector cell and verifying projection values update
|
||||
@@ -0,0 +1,8 @@
|
||||
# DCF Model Builder - Python Dependencies
|
||||
|
||||
# Excel file handling
|
||||
openpyxl>=3.0.0
|
||||
|
||||
# Market data fetching
|
||||
yfinance>=0.2.0
|
||||
requests>=2.28.0
|
||||
+292
@@ -0,0 +1,292 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
DCF Model Validation Script
|
||||
Validates Excel DCF models for formula errors and common DCF mistakes
|
||||
"""
|
||||
|
||||
import sys
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class DCFModelValidator:
|
||||
"""Validates DCF models for errors and quality issues"""
|
||||
|
||||
def __init__(self, excel_path: str):
|
||||
try:
|
||||
import openpyxl
|
||||
except ImportError:
|
||||
raise ImportError("openpyxl not installed. Run: pip install openpyxl")
|
||||
|
||||
self.excel_path = excel_path
|
||||
self.openpyxl = openpyxl
|
||||
|
||||
if not Path(excel_path).exists():
|
||||
raise FileNotFoundError(f"File not found: {excel_path}")
|
||||
|
||||
self.workbook_formulas = openpyxl.load_workbook(excel_path, data_only=False)
|
||||
self.workbook_values = openpyxl.load_workbook(excel_path, data_only=True)
|
||||
self.errors = []
|
||||
self.warnings = []
|
||||
self.info = []
|
||||
|
||||
def validate_all(self) -> dict:
|
||||
"""
|
||||
Run all validation checks
|
||||
|
||||
Returns:
|
||||
Dict with validation results
|
||||
"""
|
||||
from datetime import datetime
|
||||
|
||||
self.check_sheet_structure()
|
||||
self.check_formula_errors()
|
||||
self.check_dcf_logic()
|
||||
|
||||
results = {
|
||||
'file': self.excel_path,
|
||||
'validation_date': datetime.now().isoformat(),
|
||||
'status': 'PASS' if len(self.errors) == 0 else 'FAIL',
|
||||
'error_count': len(self.errors),
|
||||
'warning_count': len(self.warnings),
|
||||
'errors': self.errors,
|
||||
'warnings': self.warnings,
|
||||
'info': self.info
|
||||
}
|
||||
|
||||
return results
|
||||
|
||||
def check_sheet_structure(self):
|
||||
"""Verify required sheets exist"""
|
||||
required_sheets = ['DCF', 'WACC', 'Sensitivity']
|
||||
sheet_names = self.workbook_values.sheetnames
|
||||
|
||||
for sheet in required_sheets:
|
||||
if sheet not in sheet_names:
|
||||
self.warnings.append(f"Recommended sheet missing: {sheet}")
|
||||
else:
|
||||
self.info.append(f"Found sheet: {sheet}")
|
||||
|
||||
def check_formula_errors(self):
|
||||
"""Check for Excel formula errors in all sheets"""
|
||||
excel_errors = ['#VALUE!', '#DIV/0!', '#REF!', '#NAME?', '#NULL!', '#NUM!', '#N/A']
|
||||
error_details = {err: [] for err in excel_errors}
|
||||
total_errors = 0
|
||||
total_formulas = 0
|
||||
|
||||
for sheet_name in self.workbook_values.sheetnames:
|
||||
ws_values = self.workbook_values[sheet_name]
|
||||
ws_formulas = self.workbook_formulas[sheet_name]
|
||||
|
||||
for row in ws_values.iter_rows():
|
||||
for cell in row:
|
||||
formula_cell = ws_formulas[cell.coordinate]
|
||||
|
||||
# Count formulas
|
||||
if formula_cell.value and isinstance(formula_cell.value, str) and formula_cell.value.startswith('='):
|
||||
total_formulas += 1
|
||||
|
||||
# Check for errors
|
||||
if cell.value is not None and isinstance(cell.value, str):
|
||||
for err in excel_errors:
|
||||
if err in cell.value:
|
||||
location = f"{sheet_name}!{cell.coordinate}"
|
||||
error_details[err].append(location)
|
||||
total_errors += 1
|
||||
self.errors.append(f"{err} at {location}")
|
||||
break
|
||||
|
||||
# Add summary info
|
||||
self.info.append(f"Total formulas: {total_formulas}")
|
||||
if total_errors == 0:
|
||||
self.info.append("✓ No formula errors found")
|
||||
else:
|
||||
self.errors.append(f"Total formula errors: {total_errors}")
|
||||
|
||||
return error_details, total_errors
|
||||
|
||||
def check_dcf_logic(self):
|
||||
"""Validate DCF-specific logic and calculations"""
|
||||
self._check_terminal_growth_vs_wacc()
|
||||
self._check_wacc_range()
|
||||
self._check_terminal_value_proportion()
|
||||
|
||||
def _check_terminal_growth_vs_wacc(self):
|
||||
"""Critical check: Terminal growth must be less than WACC"""
|
||||
try:
|
||||
dcf_sheet = self.workbook_values['DCF']
|
||||
|
||||
terminal_growth = None
|
||||
wacc = None
|
||||
|
||||
# Search for terminal growth and WACC values
|
||||
for row in dcf_sheet.iter_rows(max_row=100, max_col=20):
|
||||
for cell in row:
|
||||
if cell.value and isinstance(cell.value, str):
|
||||
cell_str = cell.value.lower()
|
||||
if 'terminal' in cell_str and 'growth' in cell_str:
|
||||
# Look for value in adjacent cells
|
||||
for offset in range(1, 5):
|
||||
adjacent = dcf_sheet.cell(cell.row, cell.column + offset).value
|
||||
if isinstance(adjacent, (int, float)) and 0 < adjacent < 1:
|
||||
terminal_growth = adjacent
|
||||
break
|
||||
if 'wacc' in cell_str and wacc is None:
|
||||
for offset in range(1, 5):
|
||||
adjacent = dcf_sheet.cell(cell.row, cell.column + offset).value
|
||||
if isinstance(adjacent, (int, float)) and 0 < adjacent < 1:
|
||||
wacc = adjacent
|
||||
break
|
||||
|
||||
if terminal_growth is not None and wacc is not None:
|
||||
if terminal_growth >= wacc:
|
||||
self.errors.append(
|
||||
f"CRITICAL: Terminal growth ({terminal_growth:.2%}) >= WACC ({wacc:.2%}). "
|
||||
"This creates infinite value and is mathematically invalid."
|
||||
)
|
||||
else:
|
||||
self.info.append(
|
||||
f"✓ Terminal growth ({terminal_growth:.2%}) < WACC ({wacc:.2%})"
|
||||
)
|
||||
else:
|
||||
self.warnings.append("Could not locate terminal growth and WACC values")
|
||||
|
||||
except KeyError:
|
||||
self.warnings.append("DCF sheet not found")
|
||||
except Exception as e:
|
||||
self.warnings.append(f"Could not validate terminal growth vs WACC: {str(e)}")
|
||||
|
||||
def _check_wacc_range(self):
|
||||
"""Check if WACC is in reasonable range"""
|
||||
try:
|
||||
wacc_sheet = self.workbook_values.get('WACC') or self.workbook_values['DCF']
|
||||
wacc = None
|
||||
|
||||
for row in wacc_sheet.iter_rows(max_row=100, max_col=20):
|
||||
for cell in row:
|
||||
if cell.value and isinstance(cell.value, str):
|
||||
if 'wacc' in cell.value.lower():
|
||||
for offset in range(1, 5):
|
||||
adjacent = wacc_sheet.cell(cell.row, cell.column + offset).value
|
||||
if isinstance(adjacent, (int, float)) and 0 < adjacent < 1:
|
||||
wacc = adjacent
|
||||
break
|
||||
|
||||
if wacc is not None:
|
||||
if wacc < 0.05 or wacc > 0.20:
|
||||
self.warnings.append(
|
||||
f"WACC ({wacc:.2%}) is outside typical range (5%-20%). Verify calculation."
|
||||
)
|
||||
else:
|
||||
self.info.append(f"✓ WACC ({wacc:.2%}) in reasonable range")
|
||||
else:
|
||||
self.warnings.append("Could not locate WACC value")
|
||||
|
||||
except Exception as e:
|
||||
self.warnings.append(f"Could not validate WACC range: {str(e)}")
|
||||
|
||||
def _check_terminal_value_proportion(self):
|
||||
"""Check if terminal value is reasonable proportion of enterprise value"""
|
||||
try:
|
||||
dcf_sheet = self.workbook_values['DCF']
|
||||
|
||||
terminal_value = None
|
||||
enterprise_value = None
|
||||
|
||||
for row in dcf_sheet.iter_rows(max_row=200, max_col=20):
|
||||
for cell in row:
|
||||
if cell.value and isinstance(cell.value, str):
|
||||
cell_str = cell.value.lower()
|
||||
if 'terminal' in cell_str and 'value' in cell_str and 'pv' in cell_str:
|
||||
for offset in range(1, 5):
|
||||
adjacent = dcf_sheet.cell(cell.row, cell.column + offset).value
|
||||
if isinstance(adjacent, (int, float)) and adjacent > 0:
|
||||
terminal_value = adjacent
|
||||
break
|
||||
if 'enterprise' in cell_str and 'value' in cell_str:
|
||||
for offset in range(1, 5):
|
||||
adjacent = dcf_sheet.cell(cell.row, cell.column + offset).value
|
||||
if isinstance(adjacent, (int, float)) and adjacent > 0:
|
||||
enterprise_value = adjacent
|
||||
break
|
||||
|
||||
if terminal_value is not None and enterprise_value is not None and enterprise_value > 0:
|
||||
proportion = terminal_value / enterprise_value
|
||||
if proportion > 0.80:
|
||||
self.warnings.append(
|
||||
f"Terminal value is {proportion:.1%} of EV (typically should be 50-70%). "
|
||||
"Model may be over-reliant on terminal assumptions."
|
||||
)
|
||||
elif proportion < 0.40:
|
||||
self.warnings.append(
|
||||
f"Terminal value is {proportion:.1%} of EV (typically should be 50-70%). "
|
||||
"Check if terminal assumptions are too conservative."
|
||||
)
|
||||
else:
|
||||
self.info.append(f"✓ Terminal value is {proportion:.1%} of EV")
|
||||
else:
|
||||
self.warnings.append("Could not locate terminal value and enterprise value")
|
||||
|
||||
except Exception as e:
|
||||
self.warnings.append(f"Could not validate terminal value proportion: {str(e)}")
|
||||
|
||||
|
||||
|
||||
def validate_dcf_model(excel_path: str) -> dict:
|
||||
"""
|
||||
Validate a DCF model Excel file
|
||||
|
||||
Args:
|
||||
excel_path: Path to Excel DCF model
|
||||
|
||||
Returns:
|
||||
Dict with validation results
|
||||
"""
|
||||
validator = DCFModelValidator(excel_path)
|
||||
return validator.validate_all()
|
||||
|
||||
|
||||
def main():
|
||||
"""Command-line interface"""
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python validate_dcf.py <excel_file> [output.json]")
|
||||
print("\nValidates DCF model for:")
|
||||
print(" - Formula errors (#REF!, #DIV/0!, etc.)")
|
||||
print(" - Terminal growth < WACC (critical)")
|
||||
print(" - WACC in reasonable range (5-20%)")
|
||||
print(" - Terminal value proportion of EV (40-80%)")
|
||||
print("\nReturns JSON with errors, warnings, and info")
|
||||
print("\nExample: python validate_dcf.py model.xlsx")
|
||||
print("Example: python validate_dcf.py model.xlsx results.json")
|
||||
sys.exit(1)
|
||||
|
||||
excel_file = sys.argv[1]
|
||||
output_file = sys.argv[2] if len(sys.argv) > 2 else None
|
||||
|
||||
try:
|
||||
results = validate_dcf_model(excel_file)
|
||||
|
||||
# Print results
|
||||
print(json.dumps(results, indent=2))
|
||||
|
||||
# Save to file if requested
|
||||
if output_file:
|
||||
with open(output_file, 'w') as f:
|
||||
json.dump(results, f, indent=2)
|
||||
|
||||
# Exit with error code if validation failed
|
||||
sys.exit(0 if results['status'] == 'PASS' else 1)
|
||||
|
||||
except Exception as e:
|
||||
error_result = {
|
||||
'file': excel_file,
|
||||
'status': 'ERROR',
|
||||
'error': str(e)
|
||||
}
|
||||
print(json.dumps(error_result, indent=2))
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,236 @@
|
||||
---
|
||||
name: lbo-model
|
||||
description: This skill should be used when completing LBO (Leveraged Buyout) model templates in Excel for private equity transactions, deal materials, or investment committee presentations. The skill fills in formulas, validates calculations, and ensures professional formatting standards that adapt to any template structure.
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## TEMPLATE REQUIREMENT
|
||||
|
||||
**This skill uses templates for LBO models. Always check for an attached template file first.**
|
||||
|
||||
Before starting any LBO model:
|
||||
1. **If a template file is attached/provided**: Use that template's structure exactly - copy it and populate with the user's data
|
||||
2. **If no template is attached**: Ask the user: *"Do you have a specific LBO template you'd like me to use? If not, I can use the standard template which includes Sources & Uses, Operating Model, Debt Schedule, and Returns Analysis."*
|
||||
3. **If using the standard template**: Copy `examples/LBO_Model.xlsx` as your starting point and populate it with the user's assumptions
|
||||
|
||||
**IMPORTANT**: When a file like `LBO_Model.xlsx` is attached, you MUST use it as your template - do not build from scratch. Even if the template seems complex or has more features than needed, copy it and adapt it to the user's requirements. Never decide to "build from scratch" when a template is provided.
|
||||
|
||||
---
|
||||
|
||||
## CRITICAL INSTRUCTIONS FOR CLAUDE - READ FIRST
|
||||
|
||||
### Core Principles
|
||||
* **Every calculation must be an Excel formula** - NEVER compute values in Python and hardcode results into cells. The model must be dynamic and update when inputs change.
|
||||
* **Use the template structure** - Follow the organization in `examples/LBO_Model.xlsx` or the user's provided template. Do not invent your own layout.
|
||||
* **Use proper cell references** - All formulas should reference the appropriate cells. Never type numbers that should come from other cells.
|
||||
* **Maintain sign convention consistency** - Follow whatever sign convention the template uses (some use negative for outflows, some use positive). Be consistent throughout.
|
||||
* **Work section by section** - Complete one section fully before moving to the next, as later sections often depend on earlier ones.
|
||||
|
||||
### Formula Color Conventions
|
||||
* **Blue (0000FF)**: Hardcoded inputs - typed numbers that don't reference other cells
|
||||
* **Black (000000)**: Formulas with calculations - any formula using operators or functions (`=B4*B5`, `=SUM()`, `=-MAX(0,B4)`)
|
||||
* **Purple (800080)**: Links to cells on the **same tab** - direct references with no calculation (`=B9`, `=B45`)
|
||||
* **Green (008000)**: Links to cells on **different tabs** - cross-sheet references (`=Assumptions!B5`, `='Operating Model'!C10`)
|
||||
|
||||
### Number Formatting Standards
|
||||
* **Currency**: `$#,##0;($#,##0);"-"` or `$#,##0.0` depending on template
|
||||
* **Percentages**: `0.0%` (one decimal)
|
||||
* **Multiples**: `0.0"x"` (one decimal)
|
||||
* **MOIC/Detailed Ratios**: `0.00"x"` (two decimals for precision)
|
||||
* **All numeric cells**: Right-aligned
|
||||
|
||||
---
|
||||
|
||||
### Clarify Requirements First
|
||||
|
||||
Before filling any formulas:
|
||||
|
||||
* **Examine the template structure** - Identify all sections, understand the timeline (which columns are which periods), note any existing formulas
|
||||
* **Ask the user if anything is unclear** - If the template structure, calculation methods, or requirements are ambiguous, ask before proceeding
|
||||
* **Confirm key assumptions** - Any key inputs, calculation preferences, or specific requirements
|
||||
* **ONLY AFTER understanding the template**, proceed to fill in formulas
|
||||
|
||||
---
|
||||
|
||||
## TEMPLATE ANALYSIS PHASE - DO THIS FIRST
|
||||
|
||||
Before filling any formulas, examine the template thoroughly:
|
||||
|
||||
1. **Map the structure** - Identify where each section lives and how they relate to each other. Note which sections feed into others.
|
||||
|
||||
2. **Understand the timeline** - Which columns represent which periods? Is there a "Closing" or "Pro Forma" column? Where does the projection period start?
|
||||
|
||||
3. **Identify input vs formula cells** - Templates often use color coding, borders, or shading to indicate which cells need inputs vs formulas. Respect these conventions.
|
||||
|
||||
4. **Read existing labels carefully** - The row labels tell you exactly what calculation is expected. Don't assume - read what the template is asking for.
|
||||
|
||||
5. **Check for existing formulas** - Some templates come partially filled. Don't overwrite working formulas unless specifically asked.
|
||||
|
||||
6. **Note template-specific conventions** - Sign conventions, subtotal structures, how sections are organized, whether there are separate tabs for different components, etc.
|
||||
|
||||
---
|
||||
|
||||
## FILLING FORMULAS - GENERAL APPROACH
|
||||
|
||||
For each cell that needs a formula, follow this hierarchy:
|
||||
|
||||
### Step 1: Check the Template
|
||||
* Does the cell already have a formula? If yes, verify it's correct and move on.
|
||||
* Is there a comment or note indicating the expected calculation?
|
||||
* Does the row/column label make the calculation obvious?
|
||||
* Do neighboring cells show a pattern you should follow?
|
||||
|
||||
### Step 2: Check the User's Instructions
|
||||
* Did the user specify a particular calculation method?
|
||||
* Are there stated assumptions that affect this formula?
|
||||
* Any special requirements mentioned?
|
||||
|
||||
### Step 3: Apply Standard Practice
|
||||
* If neither template nor user specifies, use standard LBO modeling conventions
|
||||
* Document any assumptions you make
|
||||
* If genuinely uncertain, ask the user
|
||||
|
||||
---
|
||||
|
||||
## COMMON PROBLEM AREAS
|
||||
|
||||
The following calculation patterns frequently cause issues across LBO models. Pay special attention when you encounter these:
|
||||
|
||||
### Balancing Sections
|
||||
* When two sections must equal (e.g., Sources = Uses), one item is typically the "plug" (balancing figure)
|
||||
* Identify which item is the plug and calculate it as the difference
|
||||
|
||||
### Tax Calculations
|
||||
* Tax formulas should only reference the relevant income line and tax rate
|
||||
* Should NOT reference unrelated sections (e.g., debt schedules)
|
||||
* Consider whether losses create tax shields or are simply ignored
|
||||
|
||||
### Interest and Circular References
|
||||
* Interest calculations can create circularity if they reference balances affected by cash flows
|
||||
* Use **Beginning Balance** (not average or ending) to break circular references
|
||||
* Pattern: Interest → Cash Flow → Paydown → Ending Balance (if interest uses ending balance, this circles back)
|
||||
|
||||
### Debt Paydown / Cash Sweeps
|
||||
* When multiple debt tranches exist, there's usually a priority order
|
||||
* Cash sweep should respect the priority waterfall
|
||||
* Balances cannot go negative - use MAX or MIN functions appropriately
|
||||
|
||||
### Returns Calculations (IRR/MOIC)
|
||||
* Cash flows must have correct signs: Investment = negative, Proceeds = positive
|
||||
* If using XIRR, need corresponding dates
|
||||
* If using IRR, cash flows should be in consecutive periods
|
||||
* MOIC = Total Proceeds / Total Investment
|
||||
|
||||
### Sensitivity Tables
|
||||
* Excel's DATA TABLE function may not work with openpyxl
|
||||
* May need explicit formulas that reference row/column headers
|
||||
* Each cell should show a DIFFERENT value - if all same, formulas aren't varying correctly
|
||||
* Use mixed references (e.g., $A5 for row input, B$4 for column input)
|
||||
|
||||
---
|
||||
|
||||
## VERIFICATION CHECKLIST - RUN AFTER COMPLETION
|
||||
|
||||
### Run Formula Validation
|
||||
```bash
|
||||
python /mnt/skills/public/xlsx/recalc.py model.xlsx
|
||||
```
|
||||
Must return success with zero errors.
|
||||
|
||||
### Section Balancing
|
||||
- [ ] Any sections that must balance (Sources/Uses, Assets/Liabilities) balance exactly
|
||||
- [ ] Plug items are calculated correctly as the balancing figure
|
||||
- [ ] Amounts that should match across sections are consistent
|
||||
|
||||
### Income/Operating Projections
|
||||
- [ ] Revenue/top-line builds correctly from drivers or growth rates
|
||||
- [ ] All cost and expense items calculated appropriately
|
||||
- [ ] Subtotals and totals sum correctly
|
||||
- [ ] Margins and ratios are reasonable
|
||||
- [ ] Links to assumptions are correct
|
||||
|
||||
### Balance Sheet (if applicable)
|
||||
- [ ] Assets = Liabilities + Equity (must balance)
|
||||
- [ ] All items link to appropriate schedules or roll-forwards
|
||||
- [ ] Beginning balances = prior period ending balances
|
||||
- [ ] Check row included and shows zero
|
||||
|
||||
### Cash Flow (if applicable)
|
||||
- [ ] Starts with correct income figure
|
||||
- [ ] Non-cash items added/subtracted appropriately
|
||||
- [ ] Working capital changes have correct signs
|
||||
- [ ] Ending Cash = Beginning Cash + Net Cash Flow
|
||||
- [ ] Cash balances are consistent across statements
|
||||
|
||||
### Supporting Schedules
|
||||
- [ ] Roll-forward schedules balance (Beginning + Changes = Ending)
|
||||
- [ ] Schedules link correctly to main statements
|
||||
- [ ] Calculated items use appropriate drivers
|
||||
- [ ] All periods are calculated consistently
|
||||
|
||||
### Debt/Financing Schedules (if applicable)
|
||||
- [ ] Beginning balances tie to sources or prior period
|
||||
- [ ] Interest calculated on appropriate balance (typically beginning)
|
||||
- [ ] Paydowns respect cash availability and priority
|
||||
- [ ] Ending balances cannot be negative
|
||||
- [ ] Totals sum tranches correctly
|
||||
|
||||
### Returns/Output Analysis
|
||||
- [ ] Exit/terminal values calculated correctly
|
||||
- [ ] All relevant adjustments included
|
||||
- [ ] Cash flow signs are correct (negative for investment, positive for proceeds)
|
||||
- [ ] IRR/MOIC formulas reference complete ranges
|
||||
- [ ] Results are reasonable for the scenario
|
||||
|
||||
### Sensitivity Tables (if applicable)
|
||||
- [ ] Row and column headers contain appropriate input values
|
||||
- [ ] Each data cell contains a formula (not hardcoded)
|
||||
- [ ] Each data cell shows a DIFFERENT value
|
||||
- [ ] Values move in expected directions
|
||||
- [ ] Base case appears where headers match base assumptions
|
||||
|
||||
### Formatting
|
||||
- [ ] Hardcoded inputs are blue (0000FF)
|
||||
- [ ] Calculated formulas are black (000000)
|
||||
- [ ] Same-tab links are purple (800080)
|
||||
- [ ] Cross-tab links are green (008000)
|
||||
- [ ] All numbers are right-aligned
|
||||
- [ ] Appropriate number formats applied throughout
|
||||
- [ ] No cells show error values (#REF!, #DIV/0!, #VALUE!, #NAME?)
|
||||
|
||||
### Logical Sanity Checks
|
||||
- [ ] Numbers are reasonable order of magnitude
|
||||
- [ ] Trends make sense (growth, decline, stabilization as expected)
|
||||
- [ ] No obviously wrong values (negative where should be positive, impossible percentages, etc.)
|
||||
- [ ] Key outputs are within reasonable ranges for the type of analysis
|
||||
|
||||
---
|
||||
|
||||
## COMMON ERRORS TO AVOID
|
||||
|
||||
| Error | What Goes Wrong | How to Fix |
|
||||
|-------|-----------------|------------|
|
||||
| Hardcoding calculated values | Model doesn't update when inputs change | Always use formulas that reference source cells |
|
||||
| Wrong cell references after copying | Formulas point to wrong cells | Verify all links, use appropriate $ anchoring |
|
||||
| Circular reference errors | Model can't calculate | Use beginning balances for interest-type calcs, break the circle |
|
||||
| Sections don't balance | Totals that should match don't | Ensure one item is the plug (calculated as difference) |
|
||||
| Negative balances where impossible | Paying/using more than available | Use MAX(0, ...) or MIN functions appropriately |
|
||||
| IRR/return errors | Wrong signs or incomplete ranges | Check cash flow signs and ensure formula covers all periods |
|
||||
| Sensitivity table shows same value | Formula not varying with inputs | Check cell references - need mixed references ($A5, B$4) |
|
||||
| Roll-forwards don't tie | Beginning ≠ prior ending | Verify links between periods |
|
||||
| Inconsistent sign conventions | Additions become subtractions or vice versa | Follow template's convention consistently throughout |
|
||||
|
||||
---
|
||||
|
||||
## WORKING WITH THE USER
|
||||
|
||||
* **If the template structure is unclear**, ask before proceeding
|
||||
* **If the user's requirements conflict with the template**, confirm their preference
|
||||
* **After completing each major section**, offer to show the work or run verification
|
||||
* **If errors are found during verification**, fix them before moving to the next section
|
||||
* **Show your work** - explain key formulas or assumptions when helpful
|
||||
|
||||
---
|
||||
|
||||
**This skill produces investment banking-quality LBO models by filling templates with correct formulas, proper formatting, and validated calculations. The skill adapts to any template structure while ensuring financial accuracy and professional presentation standards.**
|
||||
@@ -0,0 +1,254 @@
|
||||
---
|
||||
name: ppt-template-creator
|
||||
description: Creates self-contained PPT template SKILLS (not presentations) from user-provided PowerPoint templates. Use ONLY when a user wants to create a reusable skill from their template. For creating actual presentations, use the pptx skill instead.
|
||||
---
|
||||
|
||||
# PPT Template Creator
|
||||
|
||||
**This skill creates SKILLS, not presentations.** Use this when a user wants to turn their PowerPoint template into a reusable skill that can generate presentations later. If the user just wants to create a presentation, use the `pptx` skill instead.
|
||||
|
||||
The generated skill includes:
|
||||
- `assets/template.pptx` - the template file
|
||||
- `SKILL.md` - complete instructions (no reference to this meta skill needed)
|
||||
|
||||
**For general skill-building best practices**, refer to the `skill-creator` skill. This skill focuses on PPT-specific patterns.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **User provides template** (.pptx or .potx)
|
||||
2. **Analyze template** - extract layouts, placeholders, dimensions
|
||||
3. **Initialize skill** - use the `skill-creator` skill to set up the skill structure
|
||||
4. **Add template** - copy .pptx to `assets/template.pptx`
|
||||
5. **Write SKILL.md** - follow template below with PPT-specific details
|
||||
6. **Create example** - generate sample presentation to validate
|
||||
7. **Package** - use the `skill-creator` skill to package into a .skill file
|
||||
|
||||
## Step 2: Analyze Template
|
||||
|
||||
**CRITICAL: Extract precise placeholder positions** - this determines content area boundaries.
|
||||
|
||||
```python
|
||||
from pptx import Presentation
|
||||
|
||||
prs = Presentation(template_path)
|
||||
print(f"Dimensions: {prs.slide_width/914400:.2f}\" x {prs.slide_height/914400:.2f}\"")
|
||||
print(f"Layouts: {len(prs.slide_layouts)}")
|
||||
|
||||
for idx, layout in enumerate(prs.slide_layouts):
|
||||
print(f"\n[{idx}] {layout.name}:")
|
||||
for ph in layout.placeholders:
|
||||
try:
|
||||
ph_idx = ph.placeholder_format.idx
|
||||
ph_type = ph.placeholder_format.type
|
||||
# IMPORTANT: Extract exact positions in inches
|
||||
left = ph.left / 914400
|
||||
top = ph.top / 914400
|
||||
width = ph.width / 914400
|
||||
height = ph.height / 914400
|
||||
print(f" idx={ph_idx}, type={ph_type}")
|
||||
print(f" x={left:.2f}\", y={top:.2f}\", w={width:.2f}\", h={height:.2f}\"")
|
||||
except:
|
||||
pass
|
||||
```
|
||||
|
||||
**Key measurements to document:**
|
||||
- **Title position**: Where does the title placeholder sit?
|
||||
- **Subtitle/description**: Where is the subtitle line?
|
||||
- **Footer placeholders**: Where do footers/sources appear?
|
||||
- **Content area**: The space BETWEEN subtitle and footer is your content area
|
||||
|
||||
### Finding the True Content Start Position
|
||||
|
||||
**CRITICAL:** The content area does NOT always start immediately after the subtitle placeholder. Many templates have a visual border, line, or reserved space between the subtitle and content area.
|
||||
|
||||
**Best approach:** Look at Layout 2 or similar "content" layouts that have an OBJECT placeholder - this placeholder's `y` position indicates where content should actually start.
|
||||
|
||||
```python
|
||||
# Find the OBJECT placeholder to determine true content start
|
||||
for idx, layout in enumerate(prs.slide_layouts):
|
||||
for ph in layout.placeholders:
|
||||
try:
|
||||
if ph.placeholder_format.type == 7: # OBJECT type
|
||||
top = ph.top / 914400
|
||||
print(f"Layout [{idx}] {layout.name}: OBJECT starts at y={top:.2f}\"")
|
||||
# This y value is where your content should start!
|
||||
except:
|
||||
pass
|
||||
```
|
||||
|
||||
**Example:** A template might have:
|
||||
- Subtitle ending at y=1.38"
|
||||
- But OBJECT placeholder starting at y=1.90"
|
||||
- The gap (0.52") is reserved for a border/line - **do not place content there**
|
||||
|
||||
Use the OBJECT placeholder's `y` position as your content start, not the subtitle's end position.
|
||||
|
||||
## Step 5: Write SKILL.md
|
||||
|
||||
The generated skill should have this structure:
|
||||
```
|
||||
[company]-ppt-template/
|
||||
├── SKILL.md
|
||||
└── assets/
|
||||
└── template.pptx
|
||||
```
|
||||
|
||||
### Generated SKILL.md Template
|
||||
|
||||
The generated SKILL.md must be **self-contained** with all instructions embedded. Use this template, filling in the bracketed values from your analysis:
|
||||
|
||||
````markdown
|
||||
---
|
||||
name: [company]-ppt-template
|
||||
description: [Company] PowerPoint template for creating presentations. Use when creating [Company]-branded pitch decks, board materials, or client presentations.
|
||||
---
|
||||
|
||||
# [Company] PPT Template
|
||||
|
||||
Template: `assets/template.pptx` ([WIDTH]" x [HEIGHT]", [N] layouts)
|
||||
|
||||
## Creating Presentations
|
||||
|
||||
```python
|
||||
from pptx import Presentation
|
||||
|
||||
prs = Presentation("path/to/skill/assets/template.pptx")
|
||||
|
||||
# DELETE all existing slides first
|
||||
while len(prs.slides) > 0:
|
||||
rId = prs.slides._sldIdLst[0].rId
|
||||
prs.part.drop_rel(rId)
|
||||
del prs.slides._sldIdLst[0]
|
||||
|
||||
# Add slides from layouts
|
||||
slide = prs.slides.add_slide(prs.slide_layouts[LAYOUT_IDX])
|
||||
```
|
||||
|
||||
## Key Layouts
|
||||
|
||||
| Index | Name | Use For |
|
||||
|-------|------|---------|
|
||||
| [0] | [Layout Name] | [Cover/title slide] |
|
||||
| [N] | [Layout Name] | [Content with bullets] |
|
||||
| [N] | [Layout Name] | [Two-column layout] |
|
||||
|
||||
## Placeholder Mapping
|
||||
|
||||
**CRITICAL: Include exact positions (x, y coordinates) for each placeholder.**
|
||||
|
||||
### Layout [N]: [Name]
|
||||
| idx | Type | Position | Use |
|
||||
|-----|------|----------|-----|
|
||||
| [idx] | TITLE (1) | y=[Y]" | Slide title |
|
||||
| [idx] | BODY (2) | y=[Y]" | Subtitle/description |
|
||||
| [idx] | BODY (2) | y=[Y]" | Footer |
|
||||
| [idx] | BODY (2) | y=[Y]" | Source/notes |
|
||||
|
||||
### Content Area Boundaries
|
||||
|
||||
**Document the safe content area for custom shapes/tables/charts:**
|
||||
|
||||
```
|
||||
Content Area (for Layout [N]):
|
||||
- Left margin: [X]" (content starts here)
|
||||
- Top: [Y]" (below subtitle placeholder)
|
||||
- Width: [W]"
|
||||
- Height: [H]" (ends before footer)
|
||||
|
||||
For 4-quadrant layouts:
|
||||
- Left column: x=[X]", width=[W]"
|
||||
- Right column: x=[X]", width=[W]"
|
||||
- Top row: y=[Y]", height=[H]"
|
||||
- Bottom row: y=[Y]", height=[H]"
|
||||
```
|
||||
|
||||
**Why this matters:** Custom content (textboxes, tables, charts) must stay within these boundaries to avoid overlapping with template placeholders like titles, footers, and source lines.
|
||||
|
||||
## Filling Content
|
||||
|
||||
**Do NOT add manual bullet characters** - slide master handles formatting.
|
||||
|
||||
```python
|
||||
# Fill title
|
||||
for shape in slide.shapes:
|
||||
if hasattr(shape, 'placeholder_format'):
|
||||
if shape.placeholder_format.type == 1: # TITLE
|
||||
shape.text = "Slide Title"
|
||||
|
||||
# Fill content with hierarchy (level 0 = header, level 1 = bullet)
|
||||
for shape in slide.shapes:
|
||||
if hasattr(shape, 'placeholder_format'):
|
||||
idx = shape.placeholder_format.idx
|
||||
if idx == [CONTENT_IDX]:
|
||||
tf = shape.text_frame
|
||||
for para in tf.paragraphs:
|
||||
para.clear()
|
||||
|
||||
content = [
|
||||
("Section Header", 0),
|
||||
("First bullet point", 1),
|
||||
("Second bullet point", 1),
|
||||
]
|
||||
|
||||
tf.paragraphs[0].text = content[0][0]
|
||||
tf.paragraphs[0].level = content[0][1]
|
||||
for text, level in content[1:]:
|
||||
p = tf.add_paragraph()
|
||||
p.text = text
|
||||
p.level = level
|
||||
```
|
||||
|
||||
## Example: Cover Slide
|
||||
|
||||
```python
|
||||
slide = prs.slides.add_slide(prs.slide_layouts[[COVER_IDX]])
|
||||
for shape in slide.shapes:
|
||||
if hasattr(shape, 'placeholder_format'):
|
||||
idx = shape.placeholder_format.idx
|
||||
if idx == [TITLE_IDX]:
|
||||
shape.text = "Company Name"
|
||||
elif idx == [SUBTITLE_IDX]:
|
||||
shape.text = "Presentation Title | Date"
|
||||
```
|
||||
|
||||
## Example: Content Slide
|
||||
|
||||
```python
|
||||
slide = prs.slides.add_slide(prs.slide_layouts[[CONTENT_IDX]])
|
||||
for shape in slide.shapes:
|
||||
if hasattr(shape, 'placeholder_format'):
|
||||
ph_type = shape.placeholder_format.type
|
||||
idx = shape.placeholder_format.idx
|
||||
if ph_type == 1:
|
||||
shape.text = "Executive Summary"
|
||||
elif idx == [BODY_IDX]:
|
||||
tf = shape.text_frame
|
||||
for para in tf.paragraphs:
|
||||
para.clear()
|
||||
content = [
|
||||
("Key Findings", 0),
|
||||
("Revenue grew 40% YoY to $50M", 1),
|
||||
("Expanded to 3 new markets", 1),
|
||||
("Recommendation", 0),
|
||||
("Proceed with strategic initiative", 1),
|
||||
]
|
||||
tf.paragraphs[0].text = content[0][0]
|
||||
tf.paragraphs[0].level = content[0][1]
|
||||
for text, level in content[1:]:
|
||||
p = tf.add_paragraph()
|
||||
p.text = text
|
||||
p.level = level
|
||||
```
|
||||
````
|
||||
|
||||
## Step 6: Create Example Output
|
||||
|
||||
Generate a sample presentation to validate the skill works. Save it alongside the skill for reference.
|
||||
|
||||
## PPT-Specific Rules for Generated Skills
|
||||
|
||||
1. **Template in assets/** - always bundle the .pptx file
|
||||
2. **Self-contained SKILL.md** - all instructions embedded, no external references
|
||||
3. **No manual bullets** - use `paragraph.level` for hierarchy
|
||||
4. **Delete slides first** - always clear existing slides before adding new ones
|
||||
5. **Document placeholders by idx** - placeholder idx values are template-specific
|
||||
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,356 @@
|
||||
---
|
||||
name: skill-creator
|
||||
description: Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
|
||||
license: Complete terms in LICENSE.txt
|
||||
---
|
||||
|
||||
# Skill Creator
|
||||
|
||||
This skill provides guidance for creating effective skills.
|
||||
|
||||
## About Skills
|
||||
|
||||
Skills are modular, self-contained packages that extend Claude's capabilities by providing
|
||||
specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific
|
||||
domains or tasks—they transform Claude from a general-purpose agent into a specialized agent
|
||||
equipped with procedural knowledge that no model can fully possess.
|
||||
|
||||
### What Skills Provide
|
||||
|
||||
1. Specialized workflows - Multi-step procedures for specific domains
|
||||
2. Tool integrations - Instructions for working with specific file formats or APIs
|
||||
3. Domain expertise - Company-specific knowledge, schemas, business logic
|
||||
4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks
|
||||
|
||||
## Core Principles
|
||||
|
||||
### Concise is Key
|
||||
|
||||
The context window is a public good. Skills share the context window with everything else Claude needs: system prompt, conversation history, other Skills' metadata, and the actual user request.
|
||||
|
||||
**Default assumption: Claude is already very smart.** Only add context Claude doesn't already have. Challenge each piece of information: "Does Claude really need this explanation?" and "Does this paragraph justify its token cost?"
|
||||
|
||||
Prefer concise examples over verbose explanations.
|
||||
|
||||
### Set Appropriate Degrees of Freedom
|
||||
|
||||
Match the level of specificity to the task's fragility and variability:
|
||||
|
||||
**High freedom (text-based instructions)**: Use when multiple approaches are valid, decisions depend on context, or heuristics guide the approach.
|
||||
|
||||
**Medium freedom (pseudocode or scripts with parameters)**: Use when a preferred pattern exists, some variation is acceptable, or configuration affects behavior.
|
||||
|
||||
**Low freedom (specific scripts, few parameters)**: Use when operations are fragile and error-prone, consistency is critical, or a specific sequence must be followed.
|
||||
|
||||
Think of Claude as exploring a path: a narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom).
|
||||
|
||||
### Anatomy of a Skill
|
||||
|
||||
Every skill consists of a required SKILL.md file and optional bundled resources:
|
||||
|
||||
```
|
||||
skill-name/
|
||||
├── SKILL.md (required)
|
||||
│ ├── YAML frontmatter metadata (required)
|
||||
│ │ ├── name: (required)
|
||||
│ │ └── description: (required)
|
||||
│ └── Markdown instructions (required)
|
||||
└── Bundled Resources (optional)
|
||||
├── scripts/ - Executable code (Python/Bash/etc.)
|
||||
├── references/ - Documentation intended to be loaded into context as needed
|
||||
└── assets/ - Files used in output (templates, icons, fonts, etc.)
|
||||
```
|
||||
|
||||
#### SKILL.md (required)
|
||||
|
||||
Every SKILL.md consists of:
|
||||
|
||||
- **Frontmatter** (YAML): Contains `name` and `description` fields. These are the only fields that Claude reads to determine when the skill gets used, thus it is very important to be clear and comprehensive in describing what the skill is, and when it should be used.
|
||||
- **Body** (Markdown): Instructions and guidance for using the skill. Only loaded AFTER the skill triggers (if at all).
|
||||
|
||||
#### Bundled Resources (optional)
|
||||
|
||||
##### Scripts (`scripts/`)
|
||||
|
||||
Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten.
|
||||
|
||||
- **When to include**: When the same code is being rewritten repeatedly or deterministic reliability is needed
|
||||
- **Example**: `scripts/rotate_pdf.py` for PDF rotation tasks
|
||||
- **Benefits**: Token efficient, deterministic, may be executed without loading into context
|
||||
- **Note**: Scripts may still need to be read by Claude for patching or environment-specific adjustments
|
||||
|
||||
##### References (`references/`)
|
||||
|
||||
Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking.
|
||||
|
||||
- **When to include**: For documentation that Claude should reference while working
|
||||
- **Examples**: `references/finance.md` for financial schemas, `references/mnda.md` for company NDA template, `references/policies.md` for company policies, `references/api_docs.md` for API specifications
|
||||
- **Use cases**: Database schemas, API documentation, domain knowledge, company policies, detailed workflow guides
|
||||
- **Benefits**: Keeps SKILL.md lean, loaded only when Claude determines it's needed
|
||||
- **Best practice**: If files are large (>10k words), include grep search patterns in SKILL.md
|
||||
- **Avoid duplication**: Information should live in either SKILL.md or references files, not both. Prefer references files for detailed information unless it's truly core to the skill—this keeps SKILL.md lean while making information discoverable without hogging the context window. Keep only essential procedural instructions and workflow guidance in SKILL.md; move detailed reference material, schemas, and examples to references files.
|
||||
|
||||
##### Assets (`assets/`)
|
||||
|
||||
Files not intended to be loaded into context, but rather used within the output Claude produces.
|
||||
|
||||
- **When to include**: When the skill needs files that will be used in the final output
|
||||
- **Examples**: `assets/logo.png` for brand assets, `assets/slides.pptx` for PowerPoint templates, `assets/frontend-template/` for HTML/React boilerplate, `assets/font.ttf` for typography
|
||||
- **Use cases**: Templates, images, icons, boilerplate code, fonts, sample documents that get copied or modified
|
||||
- **Benefits**: Separates output resources from documentation, enables Claude to use files without loading them into context
|
||||
|
||||
#### What to Not Include in a Skill
|
||||
|
||||
A skill should only contain essential files that directly support its functionality. Do NOT create extraneous documentation or auxiliary files, including:
|
||||
|
||||
- README.md
|
||||
- INSTALLATION_GUIDE.md
|
||||
- QUICK_REFERENCE.md
|
||||
- CHANGELOG.md
|
||||
- etc.
|
||||
|
||||
The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxilary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion.
|
||||
|
||||
### Progressive Disclosure Design Principle
|
||||
|
||||
Skills use a three-level loading system to manage context efficiently:
|
||||
|
||||
1. **Metadata (name + description)** - Always in context (~100 words)
|
||||
2. **SKILL.md body** - When skill triggers (<5k words)
|
||||
3. **Bundled resources** - As needed by Claude (Unlimited because scripts can be executed without reading into context window)
|
||||
|
||||
#### Progressive Disclosure Patterns
|
||||
|
||||
Keep SKILL.md body to the essentials and under 500 lines to minimize context bloat. Split content into separate files when approaching this limit. When splitting out content into other files, it is very important to reference them from SKILL.md and describe clearly when to read them, to ensure the reader of the skill knows they exist and when to use them.
|
||||
|
||||
**Key principle:** When a skill supports multiple variations, frameworks, or options, keep only the core workflow and selection guidance in SKILL.md. Move variant-specific details (patterns, examples, configuration) into separate reference files.
|
||||
|
||||
**Pattern 1: High-level guide with references**
|
||||
|
||||
```markdown
|
||||
# PDF Processing
|
||||
|
||||
## Quick start
|
||||
|
||||
Extract text with pdfplumber:
|
||||
[code example]
|
||||
|
||||
## Advanced features
|
||||
|
||||
- **Form filling**: See [FORMS.md](FORMS.md) for complete guide
|
||||
- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods
|
||||
- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns
|
||||
```
|
||||
|
||||
Claude loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed.
|
||||
|
||||
**Pattern 2: Domain-specific organization**
|
||||
|
||||
For Skills with multiple domains, organize content by domain to avoid loading irrelevant context:
|
||||
|
||||
```
|
||||
bigquery-skill/
|
||||
├── SKILL.md (overview and navigation)
|
||||
└── reference/
|
||||
├── finance.md (revenue, billing metrics)
|
||||
├── sales.md (opportunities, pipeline)
|
||||
├── product.md (API usage, features)
|
||||
└── marketing.md (campaigns, attribution)
|
||||
```
|
||||
|
||||
When a user asks about sales metrics, Claude only reads sales.md.
|
||||
|
||||
Similarly, for skills supporting multiple frameworks or variants, organize by variant:
|
||||
|
||||
```
|
||||
cloud-deploy/
|
||||
├── SKILL.md (workflow + provider selection)
|
||||
└── references/
|
||||
├── aws.md (AWS deployment patterns)
|
||||
├── gcp.md (GCP deployment patterns)
|
||||
└── azure.md (Azure deployment patterns)
|
||||
```
|
||||
|
||||
When the user chooses AWS, Claude only reads aws.md.
|
||||
|
||||
**Pattern 3: Conditional details**
|
||||
|
||||
Show basic content, link to advanced content:
|
||||
|
||||
```markdown
|
||||
# DOCX Processing
|
||||
|
||||
## Creating documents
|
||||
|
||||
Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md).
|
||||
|
||||
## Editing documents
|
||||
|
||||
For simple edits, modify the XML directly.
|
||||
|
||||
**For tracked changes**: See [REDLINING.md](REDLINING.md)
|
||||
**For OOXML details**: See [OOXML.md](OOXML.md)
|
||||
```
|
||||
|
||||
Claude reads REDLINING.md or OOXML.md only when the user needs those features.
|
||||
|
||||
**Important guidelines:**
|
||||
|
||||
- **Avoid deeply nested references** - Keep references one level deep from SKILL.md. All reference files should link directly from SKILL.md.
|
||||
- **Structure longer reference files** - For files longer than 100 lines, include a table of contents at the top so Claude can see the full scope when previewing.
|
||||
|
||||
## Skill Creation Process
|
||||
|
||||
Skill creation involves these steps:
|
||||
|
||||
1. Understand the skill with concrete examples
|
||||
2. Plan reusable skill contents (scripts, references, assets)
|
||||
3. Initialize the skill (run init_skill.py)
|
||||
4. Edit the skill (implement resources and write SKILL.md)
|
||||
5. Package the skill (run package_skill.py)
|
||||
6. Iterate based on real usage
|
||||
|
||||
Follow these steps in order, skipping only if there is a clear reason why they are not applicable.
|
||||
|
||||
### Step 1: Understanding the Skill with Concrete Examples
|
||||
|
||||
Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill.
|
||||
|
||||
To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback.
|
||||
|
||||
For example, when building an image-editor skill, relevant questions include:
|
||||
|
||||
- "What functionality should the image-editor skill support? Editing, rotating, anything else?"
|
||||
- "Can you give some examples of how this skill would be used?"
|
||||
- "I can imagine users asking for things like 'Remove the red-eye from this image' or 'Rotate this image'. Are there other ways you imagine this skill being used?"
|
||||
- "What would a user say that should trigger this skill?"
|
||||
|
||||
To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness.
|
||||
|
||||
Conclude this step when there is a clear sense of the functionality the skill should support.
|
||||
|
||||
### Step 2: Planning the Reusable Skill Contents
|
||||
|
||||
To turn concrete examples into an effective skill, analyze each example by:
|
||||
|
||||
1. Considering how to execute on the example from scratch
|
||||
2. Identifying what scripts, references, and assets would be helpful when executing these workflows repeatedly
|
||||
|
||||
Example: When building a `pdf-editor` skill to handle queries like "Help me rotate this PDF," the analysis shows:
|
||||
|
||||
1. Rotating a PDF requires re-writing the same code each time
|
||||
2. A `scripts/rotate_pdf.py` script would be helpful to store in the skill
|
||||
|
||||
Example: When designing a `frontend-webapp-builder` skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows:
|
||||
|
||||
1. Writing a frontend webapp requires the same boilerplate HTML/React each time
|
||||
2. An `assets/hello-world/` template containing the boilerplate HTML/React project files would be helpful to store in the skill
|
||||
|
||||
Example: When building a `big-query` skill to handle queries like "How many users have logged in today?" the analysis shows:
|
||||
|
||||
1. Querying BigQuery requires re-discovering the table schemas and relationships each time
|
||||
2. A `references/schema.md` file documenting the table schemas would be helpful to store in the skill
|
||||
|
||||
To establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets.
|
||||
|
||||
### Step 3: Initializing the Skill
|
||||
|
||||
At this point, it is time to actually create the skill.
|
||||
|
||||
Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step.
|
||||
|
||||
When creating a new skill from scratch, always run the `init_skill.py` script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable.
|
||||
|
||||
Usage:
|
||||
|
||||
```bash
|
||||
scripts/init_skill.py <skill-name> --path <output-directory>
|
||||
```
|
||||
|
||||
The script:
|
||||
|
||||
- Creates the skill directory at the specified path
|
||||
- Generates a SKILL.md template with proper frontmatter and TODO placeholders
|
||||
- Creates example resource directories: `scripts/`, `references/`, and `assets/`
|
||||
- Adds example files in each directory that can be customized or deleted
|
||||
|
||||
After initialization, customize or remove the generated SKILL.md and example files as needed.
|
||||
|
||||
### Step 4: Edit the Skill
|
||||
|
||||
When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Claude to use. Include information that would be beneficial and non-obvious to Claude. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Claude instance execute these tasks more effectively.
|
||||
|
||||
#### Learn Proven Design Patterns
|
||||
|
||||
Consult these helpful guides based on your skill's needs:
|
||||
|
||||
- **Multi-step processes**: See references/workflows.md for sequential workflows and conditional logic
|
||||
- **Specific output formats or quality standards**: See references/output-patterns.md for template and example patterns
|
||||
|
||||
These files contain established best practices for effective skill design.
|
||||
|
||||
#### Start with Reusable Skill Contents
|
||||
|
||||
To begin implementation, start with the reusable resources identified above: `scripts/`, `references/`, and `assets/` files. Note that this step may require user input. For example, when implementing a `brand-guidelines` skill, the user may need to provide brand assets or templates to store in `assets/`, or documentation to store in `references/`.
|
||||
|
||||
Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion.
|
||||
|
||||
Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in `scripts/`, `references/`, and `assets/` to demonstrate structure, but most skills won't need all of them.
|
||||
|
||||
#### Update SKILL.md
|
||||
|
||||
**Writing Guidelines:** Always use imperative/infinitive form.
|
||||
|
||||
##### Frontmatter
|
||||
|
||||
Write the YAML frontmatter with `name` and `description`:
|
||||
|
||||
- `name`: The skill name
|
||||
- `description`: This is the primary triggering mechanism for your skill, and helps Claude understand when to use the skill.
|
||||
- Include both what the Skill does and specific triggers/contexts for when to use it.
|
||||
- Include all "when to use" information here - Not in the body. The body is only loaded after triggering, so "When to Use This Skill" sections in the body are not helpful to Claude.
|
||||
- Example description for a `docx` skill: "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. Use when Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks"
|
||||
|
||||
Do not include any other fields in YAML frontmatter.
|
||||
|
||||
##### Body
|
||||
|
||||
Write instructions for using the skill and its bundled resources.
|
||||
|
||||
### Step 5: Packaging a Skill
|
||||
|
||||
Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements:
|
||||
|
||||
```bash
|
||||
scripts/package_skill.py <path/to/skill-folder>
|
||||
```
|
||||
|
||||
Optional output directory specification:
|
||||
|
||||
```bash
|
||||
scripts/package_skill.py <path/to/skill-folder> ./dist
|
||||
```
|
||||
|
||||
The packaging script will:
|
||||
|
||||
1. **Validate** the skill automatically, checking:
|
||||
|
||||
- YAML frontmatter format and required fields
|
||||
- Skill naming conventions and directory structure
|
||||
- Description completeness and quality
|
||||
- File organization and resource references
|
||||
|
||||
2. **Package** the skill if validation passes, creating a .skill file named after the skill (e.g., `my-skill.skill`) that includes all files and maintains the proper directory structure for distribution. The .skill file is a zip file with a .skill extension.
|
||||
|
||||
If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again.
|
||||
|
||||
### Step 6: Iterate
|
||||
|
||||
After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed.
|
||||
|
||||
**Iteration workflow:**
|
||||
|
||||
1. Use the skill on real tasks
|
||||
2. Notice struggles or inefficiencies
|
||||
3. Identify how SKILL.md or bundled resources should be updated
|
||||
4. Implement changes and test again
|
||||
@@ -0,0 +1,82 @@
|
||||
# Output Patterns
|
||||
|
||||
Use these patterns when skills need to produce consistent, high-quality output.
|
||||
|
||||
## Template Pattern
|
||||
|
||||
Provide templates for output format. Match the level of strictness to your needs.
|
||||
|
||||
**For strict requirements (like API responses or data formats):**
|
||||
|
||||
```markdown
|
||||
## Report structure
|
||||
|
||||
ALWAYS use this exact template structure:
|
||||
|
||||
# [Analysis Title]
|
||||
|
||||
## Executive summary
|
||||
[One-paragraph overview of key findings]
|
||||
|
||||
## Key findings
|
||||
- Finding 1 with supporting data
|
||||
- Finding 2 with supporting data
|
||||
- Finding 3 with supporting data
|
||||
|
||||
## Recommendations
|
||||
1. Specific actionable recommendation
|
||||
2. Specific actionable recommendation
|
||||
```
|
||||
|
||||
**For flexible guidance (when adaptation is useful):**
|
||||
|
||||
```markdown
|
||||
## Report structure
|
||||
|
||||
Here is a sensible default format, but use your best judgment:
|
||||
|
||||
# [Analysis Title]
|
||||
|
||||
## Executive summary
|
||||
[Overview]
|
||||
|
||||
## Key findings
|
||||
[Adapt sections based on what you discover]
|
||||
|
||||
## Recommendations
|
||||
[Tailor to the specific context]
|
||||
|
||||
Adjust sections as needed for the specific analysis type.
|
||||
```
|
||||
|
||||
## Examples Pattern
|
||||
|
||||
For skills where output quality depends on seeing examples, provide input/output pairs:
|
||||
|
||||
```markdown
|
||||
## Commit message format
|
||||
|
||||
Generate commit messages following these examples:
|
||||
|
||||
**Example 1:**
|
||||
Input: Added user authentication with JWT tokens
|
||||
Output:
|
||||
```
|
||||
feat(auth): implement JWT-based authentication
|
||||
|
||||
Add login endpoint and token validation middleware
|
||||
```
|
||||
|
||||
**Example 2:**
|
||||
Input: Fixed bug where dates displayed incorrectly in reports
|
||||
Output:
|
||||
```
|
||||
fix(reports): correct date formatting in timezone conversion
|
||||
|
||||
Use UTC timestamps consistently across report generation
|
||||
```
|
||||
|
||||
Follow this style: type(scope): brief description, then detailed explanation.
|
||||
```
|
||||
|
||||
Examples help Claude understand the desired style and level of detail more clearly than descriptions alone.
|
||||
@@ -0,0 +1,28 @@
|
||||
# Workflow Patterns
|
||||
|
||||
## Sequential Workflows
|
||||
|
||||
For complex tasks, break operations into clear, sequential steps. It is often helpful to give Claude an overview of the process towards the beginning of SKILL.md:
|
||||
|
||||
```markdown
|
||||
Filling a PDF form involves these steps:
|
||||
|
||||
1. Analyze the form (run analyze_form.py)
|
||||
2. Create field mapping (edit fields.json)
|
||||
3. Validate mapping (run validate_fields.py)
|
||||
4. Fill the form (run fill_form.py)
|
||||
5. Verify output (run verify_output.py)
|
||||
```
|
||||
|
||||
## Conditional Workflows
|
||||
|
||||
For tasks with branching logic, guide Claude through decision points:
|
||||
|
||||
```markdown
|
||||
1. Determine the modification type:
|
||||
**Creating new content?** → Follow "Creation workflow" below
|
||||
**Editing existing content?** → Follow "Editing workflow" below
|
||||
|
||||
2. Creation workflow: [steps]
|
||||
3. Editing workflow: [steps]
|
||||
```
|
||||
@@ -0,0 +1,303 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Skill Initializer - Creates a new skill from template
|
||||
|
||||
Usage:
|
||||
init_skill.py <skill-name> --path <path>
|
||||
|
||||
Examples:
|
||||
init_skill.py my-new-skill --path skills/public
|
||||
init_skill.py my-api-helper --path skills/private
|
||||
init_skill.py custom-skill --path /custom/location
|
||||
"""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
SKILL_TEMPLATE = """---
|
||||
name: {skill_name}
|
||||
description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.]
|
||||
---
|
||||
|
||||
# {skill_title}
|
||||
|
||||
## Overview
|
||||
|
||||
[TODO: 1-2 sentences explaining what this skill enables]
|
||||
|
||||
## Structuring This Skill
|
||||
|
||||
[TODO: Choose the structure that best fits this skill's purpose. Common patterns:
|
||||
|
||||
**1. Workflow-Based** (best for sequential processes)
|
||||
- Works well when there are clear step-by-step procedures
|
||||
- Example: DOCX skill with "Workflow Decision Tree" → "Reading" → "Creating" → "Editing"
|
||||
- Structure: ## Overview → ## Workflow Decision Tree → ## Step 1 → ## Step 2...
|
||||
|
||||
**2. Task-Based** (best for tool collections)
|
||||
- Works well when the skill offers different operations/capabilities
|
||||
- Example: PDF skill with "Quick Start" → "Merge PDFs" → "Split PDFs" → "Extract Text"
|
||||
- Structure: ## Overview → ## Quick Start → ## Task Category 1 → ## Task Category 2...
|
||||
|
||||
**3. Reference/Guidelines** (best for standards or specifications)
|
||||
- Works well for brand guidelines, coding standards, or requirements
|
||||
- Example: Brand styling with "Brand Guidelines" → "Colors" → "Typography" → "Features"
|
||||
- Structure: ## Overview → ## Guidelines → ## Specifications → ## Usage...
|
||||
|
||||
**4. Capabilities-Based** (best for integrated systems)
|
||||
- Works well when the skill provides multiple interrelated features
|
||||
- Example: Product Management with "Core Capabilities" → numbered capability list
|
||||
- Structure: ## Overview → ## Core Capabilities → ### 1. Feature → ### 2. Feature...
|
||||
|
||||
Patterns can be mixed and matched as needed. Most skills combine patterns (e.g., start with task-based, add workflow for complex operations).
|
||||
|
||||
Delete this entire "Structuring This Skill" section when done - it's just guidance.]
|
||||
|
||||
## [TODO: Replace with the first main section based on chosen structure]
|
||||
|
||||
[TODO: Add content here. See examples in existing skills:
|
||||
- Code samples for technical skills
|
||||
- Decision trees for complex workflows
|
||||
- Concrete examples with realistic user requests
|
||||
- References to scripts/templates/references as needed]
|
||||
|
||||
## Resources
|
||||
|
||||
This skill includes example resource directories that demonstrate how to organize different types of bundled resources:
|
||||
|
||||
### scripts/
|
||||
Executable code (Python/Bash/etc.) that can be run directly to perform specific operations.
|
||||
|
||||
**Examples from other skills:**
|
||||
- PDF skill: `fill_fillable_fields.py`, `extract_form_field_info.py` - utilities for PDF manipulation
|
||||
- DOCX skill: `document.py`, `utilities.py` - Python modules for document processing
|
||||
|
||||
**Appropriate for:** Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations.
|
||||
|
||||
**Note:** Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments.
|
||||
|
||||
### references/
|
||||
Documentation and reference material intended to be loaded into context to inform Claude's process and thinking.
|
||||
|
||||
**Examples from other skills:**
|
||||
- Product management: `communication.md`, `context_building.md` - detailed workflow guides
|
||||
- BigQuery: API reference documentation and query examples
|
||||
- Finance: Schema documentation, company policies
|
||||
|
||||
**Appropriate for:** In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working.
|
||||
|
||||
### assets/
|
||||
Files not intended to be loaded into context, but rather used within the output Claude produces.
|
||||
|
||||
**Examples from other skills:**
|
||||
- Brand styling: PowerPoint template files (.pptx), logo files
|
||||
- Frontend builder: HTML/React boilerplate project directories
|
||||
- Typography: Font files (.ttf, .woff2)
|
||||
|
||||
**Appropriate for:** Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output.
|
||||
|
||||
---
|
||||
|
||||
**Any unneeded directories can be deleted.** Not every skill requires all three types of resources.
|
||||
"""
|
||||
|
||||
EXAMPLE_SCRIPT = '''#!/usr/bin/env python3
|
||||
"""
|
||||
Example helper script for {skill_name}
|
||||
|
||||
This is a placeholder script that can be executed directly.
|
||||
Replace with actual implementation or delete if not needed.
|
||||
|
||||
Example real scripts from other skills:
|
||||
- pdf/scripts/fill_fillable_fields.py - Fills PDF form fields
|
||||
- pdf/scripts/convert_pdf_to_images.py - Converts PDF pages to images
|
||||
"""
|
||||
|
||||
def main():
|
||||
print("This is an example script for {skill_name}")
|
||||
# TODO: Add actual script logic here
|
||||
# This could be data processing, file conversion, API calls, etc.
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
'''
|
||||
|
||||
EXAMPLE_REFERENCE = """# Reference Documentation for {skill_title}
|
||||
|
||||
This is a placeholder for detailed reference documentation.
|
||||
Replace with actual reference content or delete if not needed.
|
||||
|
||||
Example real reference docs from other skills:
|
||||
- product-management/references/communication.md - Comprehensive guide for status updates
|
||||
- product-management/references/context_building.md - Deep-dive on gathering context
|
||||
- bigquery/references/ - API references and query examples
|
||||
|
||||
## When Reference Docs Are Useful
|
||||
|
||||
Reference docs are ideal for:
|
||||
- Comprehensive API documentation
|
||||
- Detailed workflow guides
|
||||
- Complex multi-step processes
|
||||
- Information too lengthy for main SKILL.md
|
||||
- Content that's only needed for specific use cases
|
||||
|
||||
## Structure Suggestions
|
||||
|
||||
### API Reference Example
|
||||
- Overview
|
||||
- Authentication
|
||||
- Endpoints with examples
|
||||
- Error codes
|
||||
- Rate limits
|
||||
|
||||
### Workflow Guide Example
|
||||
- Prerequisites
|
||||
- Step-by-step instructions
|
||||
- Common patterns
|
||||
- Troubleshooting
|
||||
- Best practices
|
||||
"""
|
||||
|
||||
EXAMPLE_ASSET = """# Example Asset File
|
||||
|
||||
This placeholder represents where asset files would be stored.
|
||||
Replace with actual asset files (templates, images, fonts, etc.) or delete if not needed.
|
||||
|
||||
Asset files are NOT intended to be loaded into context, but rather used within
|
||||
the output Claude produces.
|
||||
|
||||
Example asset files from other skills:
|
||||
- Brand guidelines: logo.png, slides_template.pptx
|
||||
- Frontend builder: hello-world/ directory with HTML/React boilerplate
|
||||
- Typography: custom-font.ttf, font-family.woff2
|
||||
- Data: sample_data.csv, test_dataset.json
|
||||
|
||||
## Common Asset Types
|
||||
|
||||
- Templates: .pptx, .docx, boilerplate directories
|
||||
- Images: .png, .jpg, .svg, .gif
|
||||
- Fonts: .ttf, .otf, .woff, .woff2
|
||||
- Boilerplate code: Project directories, starter files
|
||||
- Icons: .ico, .svg
|
||||
- Data files: .csv, .json, .xml, .yaml
|
||||
|
||||
Note: This is a text placeholder. Actual assets can be any file type.
|
||||
"""
|
||||
|
||||
|
||||
def title_case_skill_name(skill_name):
|
||||
"""Convert hyphenated skill name to Title Case for display."""
|
||||
return ' '.join(word.capitalize() for word in skill_name.split('-'))
|
||||
|
||||
|
||||
def init_skill(skill_name, path):
|
||||
"""
|
||||
Initialize a new skill directory with template SKILL.md.
|
||||
|
||||
Args:
|
||||
skill_name: Name of the skill
|
||||
path: Path where the skill directory should be created
|
||||
|
||||
Returns:
|
||||
Path to created skill directory, or None if error
|
||||
"""
|
||||
# Determine skill directory path
|
||||
skill_dir = Path(path).resolve() / skill_name
|
||||
|
||||
# Check if directory already exists
|
||||
if skill_dir.exists():
|
||||
print(f"❌ Error: Skill directory already exists: {skill_dir}")
|
||||
return None
|
||||
|
||||
# Create skill directory
|
||||
try:
|
||||
skill_dir.mkdir(parents=True, exist_ok=False)
|
||||
print(f"✅ Created skill directory: {skill_dir}")
|
||||
except Exception as e:
|
||||
print(f"❌ Error creating directory: {e}")
|
||||
return None
|
||||
|
||||
# Create SKILL.md from template
|
||||
skill_title = title_case_skill_name(skill_name)
|
||||
skill_content = SKILL_TEMPLATE.format(
|
||||
skill_name=skill_name,
|
||||
skill_title=skill_title
|
||||
)
|
||||
|
||||
skill_md_path = skill_dir / 'SKILL.md'
|
||||
try:
|
||||
skill_md_path.write_text(skill_content)
|
||||
print("✅ Created SKILL.md")
|
||||
except Exception as e:
|
||||
print(f"❌ Error creating SKILL.md: {e}")
|
||||
return None
|
||||
|
||||
# Create resource directories with example files
|
||||
try:
|
||||
# Create scripts/ directory with example script
|
||||
scripts_dir = skill_dir / 'scripts'
|
||||
scripts_dir.mkdir(exist_ok=True)
|
||||
example_script = scripts_dir / 'example.py'
|
||||
example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name))
|
||||
example_script.chmod(0o755)
|
||||
print("✅ Created scripts/example.py")
|
||||
|
||||
# Create references/ directory with example reference doc
|
||||
references_dir = skill_dir / 'references'
|
||||
references_dir.mkdir(exist_ok=True)
|
||||
example_reference = references_dir / 'api_reference.md'
|
||||
example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title))
|
||||
print("✅ Created references/api_reference.md")
|
||||
|
||||
# Create assets/ directory with example asset placeholder
|
||||
assets_dir = skill_dir / 'assets'
|
||||
assets_dir.mkdir(exist_ok=True)
|
||||
example_asset = assets_dir / 'example_asset.txt'
|
||||
example_asset.write_text(EXAMPLE_ASSET)
|
||||
print("✅ Created assets/example_asset.txt")
|
||||
except Exception as e:
|
||||
print(f"❌ Error creating resource directories: {e}")
|
||||
return None
|
||||
|
||||
# Print next steps
|
||||
print(f"\n✅ Skill '{skill_name}' initialized successfully at {skill_dir}")
|
||||
print("\nNext steps:")
|
||||
print("1. Edit SKILL.md to complete the TODO items and update the description")
|
||||
print("2. Customize or delete the example files in scripts/, references/, and assets/")
|
||||
print("3. Run the validator when ready to check the skill structure")
|
||||
|
||||
return skill_dir
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 4 or sys.argv[2] != '--path':
|
||||
print("Usage: init_skill.py <skill-name> --path <path>")
|
||||
print("\nSkill name requirements:")
|
||||
print(" - Hyphen-case identifier (e.g., 'data-analyzer')")
|
||||
print(" - Lowercase letters, digits, and hyphens only")
|
||||
print(" - Max 40 characters")
|
||||
print(" - Must match directory name exactly")
|
||||
print("\nExamples:")
|
||||
print(" init_skill.py my-new-skill --path skills/public")
|
||||
print(" init_skill.py my-api-helper --path skills/private")
|
||||
print(" init_skill.py custom-skill --path /custom/location")
|
||||
sys.exit(1)
|
||||
|
||||
skill_name = sys.argv[1]
|
||||
path = sys.argv[3]
|
||||
|
||||
print(f"🚀 Initializing skill: {skill_name}")
|
||||
print(f" Location: {path}")
|
||||
print()
|
||||
|
||||
result = init_skill(skill_name, path)
|
||||
|
||||
if result:
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,110 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Skill Packager - Creates a distributable .skill file of a skill folder
|
||||
|
||||
Usage:
|
||||
python utils/package_skill.py <path/to/skill-folder> [output-directory]
|
||||
|
||||
Example:
|
||||
python utils/package_skill.py skills/public/my-skill
|
||||
python utils/package_skill.py skills/public/my-skill ./dist
|
||||
"""
|
||||
|
||||
import sys
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
from quick_validate import validate_skill
|
||||
|
||||
|
||||
def package_skill(skill_path, output_dir=None):
|
||||
"""
|
||||
Package a skill folder into a .skill file.
|
||||
|
||||
Args:
|
||||
skill_path: Path to the skill folder
|
||||
output_dir: Optional output directory for the .skill file (defaults to current directory)
|
||||
|
||||
Returns:
|
||||
Path to the created .skill file, or None if error
|
||||
"""
|
||||
skill_path = Path(skill_path).resolve()
|
||||
|
||||
# Validate skill folder exists
|
||||
if not skill_path.exists():
|
||||
print(f"❌ Error: Skill folder not found: {skill_path}")
|
||||
return None
|
||||
|
||||
if not skill_path.is_dir():
|
||||
print(f"❌ Error: Path is not a directory: {skill_path}")
|
||||
return None
|
||||
|
||||
# Validate SKILL.md exists
|
||||
skill_md = skill_path / "SKILL.md"
|
||||
if not skill_md.exists():
|
||||
print(f"❌ Error: SKILL.md not found in {skill_path}")
|
||||
return None
|
||||
|
||||
# Run validation before packaging
|
||||
print("🔍 Validating skill...")
|
||||
valid, message = validate_skill(skill_path)
|
||||
if not valid:
|
||||
print(f"❌ Validation failed: {message}")
|
||||
print(" Please fix the validation errors before packaging.")
|
||||
return None
|
||||
print(f"✅ {message}\n")
|
||||
|
||||
# Determine output location
|
||||
skill_name = skill_path.name
|
||||
if output_dir:
|
||||
output_path = Path(output_dir).resolve()
|
||||
output_path.mkdir(parents=True, exist_ok=True)
|
||||
else:
|
||||
output_path = Path.cwd()
|
||||
|
||||
skill_filename = output_path / f"{skill_name}.skill"
|
||||
|
||||
# Create the .skill file (zip format)
|
||||
try:
|
||||
with zipfile.ZipFile(skill_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:
|
||||
# Walk through the skill directory
|
||||
for file_path in skill_path.rglob('*'):
|
||||
if file_path.is_file():
|
||||
# Calculate the relative path within the zip
|
||||
arcname = file_path.relative_to(skill_path.parent)
|
||||
zipf.write(file_path, arcname)
|
||||
print(f" Added: {arcname}")
|
||||
|
||||
print(f"\n✅ Successfully packaged skill to: {skill_filename}")
|
||||
return skill_filename
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error creating .skill file: {e}")
|
||||
return None
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python utils/package_skill.py <path/to/skill-folder> [output-directory]")
|
||||
print("\nExample:")
|
||||
print(" python utils/package_skill.py skills/public/my-skill")
|
||||
print(" python utils/package_skill.py skills/public/my-skill ./dist")
|
||||
sys.exit(1)
|
||||
|
||||
skill_path = sys.argv[1]
|
||||
output_dir = sys.argv[2] if len(sys.argv) > 2 else None
|
||||
|
||||
print(f"📦 Packaging skill: {skill_path}")
|
||||
if output_dir:
|
||||
print(f" Output directory: {output_dir}")
|
||||
print()
|
||||
|
||||
result = package_skill(skill_path, output_dir)
|
||||
|
||||
if result:
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Quick validation script for skills - minimal version
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
|
||||
def validate_skill(skill_path):
|
||||
"""Basic validation of a skill"""
|
||||
skill_path = Path(skill_path)
|
||||
|
||||
# Check SKILL.md exists
|
||||
skill_md = skill_path / 'SKILL.md'
|
||||
if not skill_md.exists():
|
||||
return False, "SKILL.md not found"
|
||||
|
||||
# Read and validate frontmatter
|
||||
content = skill_md.read_text()
|
||||
if not content.startswith('---'):
|
||||
return False, "No YAML frontmatter found"
|
||||
|
||||
# Extract frontmatter
|
||||
match = re.match(r'^---\n(.*?)\n---', content, re.DOTALL)
|
||||
if not match:
|
||||
return False, "Invalid frontmatter format"
|
||||
|
||||
frontmatter_text = match.group(1)
|
||||
|
||||
# Parse YAML frontmatter
|
||||
try:
|
||||
frontmatter = yaml.safe_load(frontmatter_text)
|
||||
if not isinstance(frontmatter, dict):
|
||||
return False, "Frontmatter must be a YAML dictionary"
|
||||
except yaml.YAMLError as e:
|
||||
return False, f"Invalid YAML in frontmatter: {e}"
|
||||
|
||||
# Define allowed properties
|
||||
ALLOWED_PROPERTIES = {'name', 'description', 'license', 'allowed-tools', 'metadata'}
|
||||
|
||||
# Check for unexpected properties (excluding nested keys under metadata)
|
||||
unexpected_keys = set(frontmatter.keys()) - ALLOWED_PROPERTIES
|
||||
if unexpected_keys:
|
||||
return False, (
|
||||
f"Unexpected key(s) in SKILL.md frontmatter: {', '.join(sorted(unexpected_keys))}. "
|
||||
f"Allowed properties are: {', '.join(sorted(ALLOWED_PROPERTIES))}"
|
||||
)
|
||||
|
||||
# Check required fields
|
||||
if 'name' not in frontmatter:
|
||||
return False, "Missing 'name' in frontmatter"
|
||||
if 'description' not in frontmatter:
|
||||
return False, "Missing 'description' in frontmatter"
|
||||
|
||||
# Extract name for validation
|
||||
name = frontmatter.get('name', '')
|
||||
if not isinstance(name, str):
|
||||
return False, f"Name must be a string, got {type(name).__name__}"
|
||||
name = name.strip()
|
||||
if name:
|
||||
# Check naming convention (hyphen-case: lowercase with hyphens)
|
||||
if not re.match(r'^[a-z0-9-]+$', name):
|
||||
return False, f"Name '{name}' should be hyphen-case (lowercase letters, digits, and hyphens only)"
|
||||
if name.startswith('-') or name.endswith('-') or '--' in name:
|
||||
return False, f"Name '{name}' cannot start/end with hyphen or contain consecutive hyphens"
|
||||
# Check name length (max 64 characters per spec)
|
||||
if len(name) > 64:
|
||||
return False, f"Name is too long ({len(name)} characters). Maximum is 64 characters."
|
||||
|
||||
# Extract and validate description
|
||||
description = frontmatter.get('description', '')
|
||||
if not isinstance(description, str):
|
||||
return False, f"Description must be a string, got {type(description).__name__}"
|
||||
description = description.strip()
|
||||
if description:
|
||||
# Check for angle brackets
|
||||
if '<' in description or '>' in description:
|
||||
return False, "Description cannot contain angle brackets (< or >)"
|
||||
# Check description length (max 1024 characters per spec)
|
||||
if len(description) > 1024:
|
||||
return False, f"Description is too long ({len(description)} characters). Maximum is 1024 characters."
|
||||
|
||||
return True, "Skill is valid!"
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print("Usage: python quick_validate.py <skill_directory>")
|
||||
sys.exit(1)
|
||||
|
||||
valid, message = validate_skill(sys.argv[1])
|
||||
print(message)
|
||||
sys.exit(0 if valid else 1)
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "investment-banking",
|
||||
"version": "0.2.0",
|
||||
"description": "Investment banking productivity tools: client and market insights, deck creation, financial analysis, and transaction management",
|
||||
"author": {
|
||||
"name": "Nicholas Lin"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
# Investment Banking Plugin Settings
|
||||
# Copy this file to .claude/investment-banking.local.md and customize
|
||||
|
||||
# Your info
|
||||
name: "Your Name"
|
||||
title: "Vice President"
|
||||
group: "Technology M&A"
|
||||
firm: "Your Firm"
|
||||
email_signature: |
|
||||
Best regards,
|
||||
[Your Name]
|
||||
[Title] | [Group]
|
||||
[Firm]
|
||||
[Phone]
|
||||
|
||||
# Coverage focus
|
||||
sectors:
|
||||
- "Enterprise Software"
|
||||
- "Fintech"
|
||||
- "Cybersecurity"
|
||||
verticals:
|
||||
- "B2B SaaS"
|
||||
- "Infrastructure"
|
||||
- "AI/ML"
|
||||
|
||||
# Deal parameters
|
||||
typical_deal_size_range: "$50M - $500M"
|
||||
transaction_types:
|
||||
- "M&A Sell-side"
|
||||
- "M&A Buy-side"
|
||||
- "Capital Raise"
|
||||
- "Strategic Advisory"
|
||||
|
||||
# Active deals (for session reminders)
|
||||
active_mandates:
|
||||
- name: "Project Alpine"
|
||||
type: "Sell-side M&A"
|
||||
stage: "Marketing"
|
||||
next_milestone: "Management presentations"
|
||||
date: "2024-01-20"
|
||||
- name: "Project Summit"
|
||||
type: "Buy-side"
|
||||
stage: "Due Diligence"
|
||||
next_milestone: "Submit revised LOI"
|
||||
date: "2024-01-18"
|
||||
|
||||
# Target tracking
|
||||
priority_targets:
|
||||
- company: "Target Corp"
|
||||
rationale: "Strategic fit for Client X"
|
||||
status: "Initial outreach"
|
||||
- company: "Growth Co"
|
||||
rationale: "Platform acquisition candidate"
|
||||
status: "Relationship building"
|
||||
|
||||
# Valuation defaults
|
||||
default_valuation_methodologies:
|
||||
- "Comparable Companies"
|
||||
- "Precedent Transactions"
|
||||
- "DCF"
|
||||
comps_multiples:
|
||||
- "EV/Revenue"
|
||||
- "EV/EBITDA"
|
||||
- "EV/ARR"
|
||||
---
|
||||
|
||||
# Notes
|
||||
|
||||
Add deal-specific notes, market intel, or relationship context here.
|
||||
|
||||
## Market Themes
|
||||
- [Theme 1]: [Implications for deals]
|
||||
- [Theme 2]: [Implications for deals]
|
||||
|
||||
## Key Relationships
|
||||
- [Contact Name] @ [Company]: [Context]
|
||||
- [Contact Name] @ [Company]: [Context]
|
||||
|
||||
## Recent Precedent Transactions
|
||||
| Target | Acquirer | Value | Multiple | Date |
|
||||
|--------|----------|-------|----------|------|
|
||||
| [Company] | [Buyer] | [$XXM] | [X.Xx] | [Date] |
|
||||
@@ -0,0 +1,2 @@
|
||||
# User-specific settings
|
||||
.claude/*.local.md
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"mcpServers": {}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
# Investment Banking Plugin
|
||||
|
||||
Investment banking productivity tools for equity research, valuation, presentations, and deal materials.
|
||||
|
||||
## Features
|
||||
|
||||
- **Equity Research** - Earnings updates, initiating coverage reports
|
||||
- **Valuation** - DCF models, comparable company analysis
|
||||
- **Presentations** - Strip profiles, pitch decks with branded templates
|
||||
- **Financial Analysis** - Comps with statistics, margin analysis
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
claude --plugin-dir /path/to/investment-banking
|
||||
```
|
||||
|
||||
Or copy to your project's `.claude-plugin/` directory.
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `/ib:comps [company]` | Build comparable company analysis with trading multiples |
|
||||
| `/ib:dcf [company]` | DCF valuation model with comps-informed terminal multiples |
|
||||
| `/ib:earnings [company] [quarter]` | Quarterly earnings update report (8-12 pages) |
|
||||
| `/ib:one-pager [company]` | One-page strip profile using PPT template |
|
||||
| `/ib:ppt-template [path]` | Create a PPT template skill from a PowerPoint file |
|
||||
|
||||
## Skills
|
||||
|
||||
### Equity Research
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| **earnings-analysis** | Quarterly earnings update reports with beat/miss analysis, charts, and updated estimates |
|
||||
| **initiating-coverage** | Full equity research initiation reports (30-50 pages, 5-task workflow) |
|
||||
|
||||
### Valuation
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| **comps-analysis** | Comparable company analysis with operating metrics and valuation multiples |
|
||||
| **dcf-model** | DCF models with WACC, sensitivity analysis, and scenario cases |
|
||||
|
||||
### Presentations
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| **strip-profile** | Information-dense company profiles for pitch books |
|
||||
| **omnicell-ppt-template** | Board presentation template (11x8.5 letter size) |
|
||||
| **ppt-template-creator** | Create template skills from any PowerPoint file |
|
||||
|
||||
### Utilities
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| **skill-creator** | General skill-building best practices and utilities |
|
||||
|
||||
## Example Workflows
|
||||
|
||||
### Earnings Analysis
|
||||
```
|
||||
/ib:earnings Target Q3 2024
|
||||
|
||||
# Generates:
|
||||
# - 8-12 page DOCX report with beat/miss analysis
|
||||
# - 8 charts (revenue trend, EPS, margins, segments, etc.)
|
||||
# - Updated estimates and price target
|
||||
```
|
||||
|
||||
### Comparable Company Analysis
|
||||
```
|
||||
/ib:comps Target
|
||||
|
||||
# Generates:
|
||||
# - Excel file with operating metrics and valuation multiples
|
||||
# - Statistics (Max, 75th, Median, 25th, Min) for all ratios
|
||||
# - Peer group: Walmart, Costco, Dollar General, BJ's
|
||||
```
|
||||
|
||||
### DCF Valuation
|
||||
```
|
||||
/ib:dcf Target
|
||||
|
||||
# Workflow:
|
||||
# 1. Runs comps analysis first for terminal multiple benchmarks
|
||||
# 2. Builds DCF with Bear/Base/Bull scenarios
|
||||
# 3. Cross-checks implied multiples vs peers
|
||||
```
|
||||
|
||||
### One-Page Strip Profile
|
||||
```
|
||||
/ib:one-pager Target
|
||||
|
||||
# Generates:
|
||||
# - Single-slide company profile using PPT template
|
||||
# - 4 quadrants: Overview, Business, Financials, Ownership
|
||||
# - Respects template margins and branding
|
||||
```
|
||||
|
||||
## Formatting Defaults
|
||||
|
||||
- **Font**: Times New Roman (for earnings and initiating coverage reports)
|
||||
- **PPT Templates**: Content starts at OBJECT placeholder y-position (not subtitle)
|
||||
- **Comps Statistics**: Applied to ratios/margins/multiples, not absolute size metrics
|
||||
|
||||
## Key Skills Details
|
||||
|
||||
### comps-analysis
|
||||
- Statistics for comparable metrics (growth %, margins, multiples)
|
||||
- No statistics for size metrics (revenue, market cap, EV)
|
||||
- Blue text for inputs, black for formulas
|
||||
|
||||
### strip-profile
|
||||
- Maximum information density per quadrant
|
||||
- 6-8 bullets per section with specific numbers
|
||||
- Single textbox per section (not separate header)
|
||||
|
||||
### ppt-template-creator
|
||||
- Analyzes OBJECT placeholder to find true content start
|
||||
- Documents exact x/y coordinates for content boundaries
|
||||
- Handles templates with sidebars/borders
|
||||
|
||||
## Related Plugins
|
||||
|
||||
- **employee** - Office document skills (docx, pdf, pptx, xlsx)
|
||||
- **sales** - CRM integration and prospect research
|
||||
- **data-analyst** - BigQuery and data visualization
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Build a buyer universe for a sell-side process
|
||||
argument-hint: "[company or sector]"
|
||||
---
|
||||
|
||||
Load the `buyer-list` skill and build a universe of potential strategic and financial acquirers.
|
||||
|
||||
If a company or sector is provided, use it. Otherwise ask the user for the target company details.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Draft a Confidential Information Memorandum
|
||||
argument-hint: "[company name]"
|
||||
---
|
||||
|
||||
Load the `cim-builder` skill and structure a CIM for the specified company.
|
||||
|
||||
If a company name is provided, use it. Otherwise ask the user for the target company and available source materials.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
description: Track and review live deal pipeline
|
||||
argument-hint: ""
|
||||
---
|
||||
|
||||
Load the `deal-tracker` skill to review deal status, update milestones, and manage action items across live deals.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Build an accretion/dilution merger model
|
||||
argument-hint: "[acquirer] acquiring [target]"
|
||||
---
|
||||
|
||||
Load the `merger-model` skill and build a merger consequences analysis.
|
||||
|
||||
If acquirer and target are provided, use them. Otherwise ask the user for deal details.
|
||||
@@ -0,0 +1,112 @@
|
||||
---
|
||||
description: Create a one-page company strip profile using branded PPT template
|
||||
argument-hint: "[company name or ticker]"
|
||||
---
|
||||
|
||||
# One-Pager Strip Profile Command
|
||||
|
||||
Create a professional one-page company strip profile for pitch books and deal materials.
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Company Information
|
||||
|
||||
If a company name or ticker is provided, use it. Otherwise ask:
|
||||
- "What company would you like to profile?"
|
||||
|
||||
### Step 2: Check for Available PPT Template Skills
|
||||
|
||||
**First, check for existing ppt-template skills** in the skills directory:
|
||||
|
||||
```bash
|
||||
ls skills/ | grep -E "ppt-template|brand-guidelines"
|
||||
```
|
||||
|
||||
If template skills exist (e.g., `techcorp-ppt-template`, `gs-brand-guidelines`):
|
||||
1. List available templates to the user
|
||||
2. Ask which template to use, or if they want a clean professional format
|
||||
3. Load the selected template skill with `skill: "[template-name]"`
|
||||
|
||||
If no template skills exist, ask:
|
||||
- "Do you have a branded PowerPoint template file to use? If so, provide the path. Otherwise I'll use a clean professional format."
|
||||
|
||||
If a template file is provided:
|
||||
1. Analyze the template structure to understand layouts
|
||||
2. Use appropriate layout for one-pager content
|
||||
|
||||
### Step 3: Load Strip Profile Skill
|
||||
|
||||
Use `skill: "strip-profile"` to execute the profile creation:
|
||||
|
||||
1. **Clarify requirements**:
|
||||
- Confirm single-slide format (one-pager)
|
||||
- Ask about any specific focus areas
|
||||
|
||||
2. **Research company data**:
|
||||
- Company overview (HQ, founded, employees, leadership)
|
||||
- Business description and positioning
|
||||
- Key financials (Revenue, EBITDA, margins, growth)
|
||||
- Valuation metrics (Market Cap, EV, multiples)
|
||||
- Recent developments and news
|
||||
- Top shareholders (for public companies)
|
||||
|
||||
3. **Create the strip profile**:
|
||||
- Use 4:3 aspect ratio (10" x 7.5")
|
||||
- 4-quadrant layout:
|
||||
- Top-left: Company Overview (bullets)
|
||||
- Top-right: Business & Positioning (bullets)
|
||||
- Bottom-left: Key Financials (table)
|
||||
- Bottom-right: Stock chart + Shareholders OR Recent News
|
||||
- Apply company brand colors
|
||||
- Include accent bars on section headers
|
||||
|
||||
### Step 4: Visual Review
|
||||
|
||||
After creating the slide:
|
||||
1. Convert to image for review
|
||||
2. Check for text overlap/cutoff issues
|
||||
3. Verify all data is populated (no placeholders)
|
||||
4. Show preview to user for approval
|
||||
|
||||
### Step 5: Deliver Output
|
||||
|
||||
Provide:
|
||||
1. **PowerPoint file** (.pptx) - the one-pager
|
||||
2. **Image preview** - for quick review
|
||||
3. **Summary** of key data points included
|
||||
|
||||
## One-Pager Layout Reference
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ Company Name (TICKER) [Logo] │
|
||||
├────────────────────────────┬────────────────────────────────────┤
|
||||
│ COMPANY OVERVIEW │ BUSINESS & POSITIONING │
|
||||
│ • HQ, Founded, Employees │ • Core business description │
|
||||
│ • CEO, CFO │ • Key products/services │
|
||||
│ • Market cap, industry │ • Competitive positioning │
|
||||
│ • Key stats │ • Growth drivers │
|
||||
├────────────────────────────┼────────────────────────────────────┤
|
||||
│ KEY FINANCIALS │ STOCK PERFORMANCE / OWNERSHIP │
|
||||
│ ┌──────────────────────┐ │ [1Y Stock Chart] │
|
||||
│ │ Metric │ FY24 │ FY25E│ │ │
|
||||
│ │ Rev │ $XXB │ $XXB │ │ Top Shareholders: │
|
||||
│ │ EBITDA │ $XXB │ $XXB │ │ • Vanguard: X.X% │
|
||||
│ │ Margin │ XX% │ XX% │ │ • BlackRock: X.X% │
|
||||
│ │ EV/EBITDA │ XXx │ XXx │ │ • State Street: X.X% │
|
||||
│ └──────────────────────┘ │ │
|
||||
└────────────────────────────┴────────────────────────────────────┘
|
||||
Source: Company filings, FactSet
|
||||
```
|
||||
|
||||
## Quality Checklist
|
||||
|
||||
Before delivery:
|
||||
- [ ] All 4 quadrants populated with real data
|
||||
- [ ] No placeholder text remaining
|
||||
- [ ] Company brand colors applied
|
||||
- [ ] Accent bars on all section headers
|
||||
- [ ] Financial table properly formatted
|
||||
- [ ] Sources cited at bottom
|
||||
- [ ] No text overflow or cutoff
|
||||
- [ ] Investment banking quality (GS/MS/JPM standard)
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Draft a process letter or bid instructions
|
||||
argument-hint: "[IOI or final bid]"
|
||||
---
|
||||
|
||||
Load the `process-letter` skill and draft process correspondence.
|
||||
|
||||
If a letter type is specified (IOI, final bid, management meeting invite), use it. Otherwise ask the user what stage the process is in.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
description: Draft an anonymous one-page teaser
|
||||
argument-hint: "[company name]"
|
||||
---
|
||||
|
||||
Load the `teaser` skill and create a blind teaser for the specified company.
|
||||
|
||||
If a company name is provided, use it. Otherwise ask the user for the company details to anonymize.
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"hooks": {}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
# Buyer List
|
||||
|
||||
description: Build and organize a universe of potential acquirers for sell-side M&A processes. Identifies strategic and financial buyers, assesses fit, and prioritizes outreach. Use when preparing for a sell-side mandate, building a buyer universe, or evaluating potential partners. Triggers on "buyer list", "buyer universe", "potential acquirers", "who would buy this", "strategic buyers", or "financial sponsors".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Understand the Target
|
||||
|
||||
- Company description, sector, and business model
|
||||
- Revenue, EBITDA, and growth profile
|
||||
- Key assets and capabilities (IP, customer relationships, geographic footprint, team)
|
||||
- Expected valuation range
|
||||
- Seller preferences (strategic vs. financial, management continuity, timeline)
|
||||
|
||||
### Step 2: Strategic Buyers
|
||||
|
||||
Identify strategic acquirers across categories:
|
||||
|
||||
**Direct Competitors**
|
||||
- Companies in the same space that would gain market share
|
||||
- Rationale: Revenue synergies, eliminate competitor, scale
|
||||
|
||||
**Adjacent Players**
|
||||
- Companies in adjacent markets that could expand into the target's space
|
||||
- Rationale: Product extension, cross-sell, new market entry
|
||||
|
||||
**Vertical Integrators**
|
||||
- Customers or suppliers that could integrate vertically
|
||||
- Rationale: Supply chain control, margin capture, strategic lock-in
|
||||
|
||||
**Platform Builders**
|
||||
- Large companies building a platform in the space through M&A
|
||||
- Rationale: Tuck-in acquisition, fill capability gap
|
||||
|
||||
For each strategic buyer, assess:
|
||||
|
||||
| Buyer | Sector | Revenue | Strategic Fit | Financial Capacity | M&A Track Record | Likelihood | Priority |
|
||||
|-------|--------|---------|--------------|-------------------|------------------|------------|----------|
|
||||
| | | | High/Med/Low | | Active/Moderate/None | | A/B/C |
|
||||
|
||||
### Step 3: Financial Sponsors
|
||||
|
||||
Identify PE/financial buyers:
|
||||
|
||||
**Platform Investors**
|
||||
- Sponsors looking for a new platform in this sector
|
||||
- Criteria: Fund size, sector focus, deal size range
|
||||
|
||||
**Add-on Buyers**
|
||||
- Sponsors with existing portfolio companies that could acquire the target as a bolt-on
|
||||
- Identify the specific portfolio company and synergy rationale
|
||||
|
||||
**Growth Equity**
|
||||
- For earlier-stage or high-growth targets
|
||||
- Minority vs. majority preference
|
||||
|
||||
For each sponsor:
|
||||
|
||||
| Sponsor | Fund Size | Sector Focus | Portfolio Overlap | Recent Activity | Priority |
|
||||
|---------|-----------|-------------|-------------------|-----------------|----------|
|
||||
| | | | | | A/B/C |
|
||||
|
||||
### Step 4: Prioritization
|
||||
|
||||
Tier the buyer list:
|
||||
|
||||
- **Tier 1 (5-10)**: Highest strategic fit, proven acquirers, clear rationale — contact first
|
||||
- **Tier 2 (10-15)**: Good fit but less obvious — contact in second wave
|
||||
- **Tier 3 (10-20)**: Possible but lower probability — contact if process needs broadening
|
||||
|
||||
### Step 5: Contact Mapping
|
||||
|
||||
For each Tier 1 buyer:
|
||||
- Key decision maker (CEO, Corp Dev head, Partner)
|
||||
- Relationship status (existing relationship, cold outreach, need introduction)
|
||||
- Known preferences or constraints (size, geography, structure)
|
||||
- Best approach channel
|
||||
|
||||
### Step 6: Output
|
||||
|
||||
- Excel workbook with:
|
||||
- Strategic buyers tab (sorted by tier)
|
||||
- Financial sponsors tab (sorted by tier)
|
||||
- Contact mapping for Tier 1
|
||||
- Summary statistics (total buyers by tier, by type)
|
||||
- One-page buyer universe summary for the engagement letter or pitch
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Quality over quantity — a focused list of 30-40 well-researched buyers beats a list of 200 names
|
||||
- Research recent M&A activity — buyers who just did a deal in the space are either hungry for more or tapped out
|
||||
- Check for antitrust concerns with direct competitors — flag any that might face regulatory issues
|
||||
- Financial sponsors: check fund vintage and deployment pace — a fund nearing end of investment period may be more motivated
|
||||
- Always ask the seller if there are buyers they want included or excluded
|
||||
- Update the list as the process progresses — move buyers between tiers based on feedback
|
||||
@@ -0,0 +1,102 @@
|
||||
# CIM Builder
|
||||
|
||||
description: Structure and draft a Confidential Information Memorandum for sell-side M&A processes. Organizes company information into a professional, investor-ready document with consistent formatting and narrative flow. Use when preparing sell-side materials, drafting a CIM, or organizing company data for a sale process. Triggers on "CIM", "confidential information memorandum", "offering memorandum", "info memo", "draft CIM", or "sell-side materials".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Source Materials
|
||||
|
||||
Ask for available inputs:
|
||||
- Management presentations
|
||||
- Historical financials (3-5 years)
|
||||
- Budget/forecast
|
||||
- Company website and marketing materials
|
||||
- Customer data (anonymized if needed)
|
||||
- Org chart
|
||||
- Prior presentations or board decks
|
||||
- Quality of earnings report (if available)
|
||||
|
||||
### Step 2: CIM Structure
|
||||
|
||||
Standard CIM table of contents:
|
||||
|
||||
**I. Executive Summary** (2-3 pages)
|
||||
- Company overview — what they do, why they win
|
||||
- Investment highlights (5-7 key selling points)
|
||||
- Financial summary — headline revenue, EBITDA, growth, margins
|
||||
- Transaction overview — what's being sold, indicative timeline
|
||||
|
||||
**II. Company Overview** (3-5 pages)
|
||||
- History and founding story
|
||||
- Mission and value proposition
|
||||
- Products and services description
|
||||
- Business model and revenue streams
|
||||
- Key differentiators and competitive advantages
|
||||
|
||||
**III. Industry Overview** (3-5 pages)
|
||||
- Market size and growth dynamics (TAM/SAM/SOM)
|
||||
- Key industry trends and tailwinds
|
||||
- Competitive landscape
|
||||
- Regulatory environment
|
||||
- Barriers to entry
|
||||
|
||||
**IV. Growth Opportunities** (2-3 pages)
|
||||
- Organic growth levers (new products, markets, pricing)
|
||||
- M&A / add-on opportunities
|
||||
- Operational improvements
|
||||
- Technology investments
|
||||
- White space analysis
|
||||
|
||||
**V. Customers & Sales** (3-5 pages)
|
||||
- Customer overview (number, segments, geography)
|
||||
- Top customer analysis (anonymized if pre-LOI)
|
||||
- Customer concentration and retention metrics
|
||||
- Sales process and go-to-market strategy
|
||||
- Pipeline and backlog
|
||||
|
||||
**VI. Operations** (2-3 pages)
|
||||
- Organizational structure
|
||||
- Key personnel
|
||||
- Facilities and geographic footprint
|
||||
- Technology and systems
|
||||
- Supply chain / vendor relationships
|
||||
|
||||
**VII. Financial Overview** (5-8 pages)
|
||||
- Historical income statement (3-5 years)
|
||||
- Revenue analysis — by segment, geography, customer type
|
||||
- EBITDA bridge and margin analysis
|
||||
- Balance sheet overview
|
||||
- Cash flow summary
|
||||
- Capital expenditure history
|
||||
- Working capital analysis
|
||||
- Management forecast / budget (if included)
|
||||
|
||||
**VIII. Appendix**
|
||||
- Detailed financial statements
|
||||
- Customer list (anonymized)
|
||||
- Product catalog
|
||||
- Management bios
|
||||
|
||||
### Step 3: Drafting Guidelines
|
||||
|
||||
- **Tone**: Professional, factual, compelling but not hyperbolic
|
||||
- **Narrative**: Tell a story — why this business is attractive, defensible, and positioned for growth
|
||||
- **Data-driven**: Support every claim with data. "Strong growth" → "Revenue grew at a 15% CAGR from 2021-2024"
|
||||
- **Visuals**: Charts and graphs for financial trends, market size, competitive positioning
|
||||
- **Length**: 40-60 pages total — enough detail to inform first-round bids, not so long buyers won't read it
|
||||
- **Confidentiality**: Include a disclaimer page. Anonymize sensitive customer data unless seller approves
|
||||
|
||||
### Step 4: Output
|
||||
|
||||
- Word document (.docx) with professional formatting
|
||||
- Separate Excel appendix with detailed financials
|
||||
- Charts and exhibits embedded in the document
|
||||
|
||||
## Important Notes
|
||||
|
||||
- The CIM is a sales document — lead with strengths, but don't hide material issues (buyers will find them in diligence)
|
||||
- Investment highlights should address the 3 things every buyer cares about: growth potential, margin profile, and defensibility
|
||||
- Financial normalization / pro forma adjustments should be clearly labeled and explained
|
||||
- Work with legal on the confidentiality disclaimer and any regulatory disclosures
|
||||
- Get management to review for factual accuracy before distribution
|
||||
- The CIM sets expectations on valuation — make sure the narrative supports the asking price
|
||||
@@ -0,0 +1,656 @@
|
||||
---
|
||||
name: anthropic-fsi-datapack-builder
|
||||
description: Build professional financial services data packs from various sources including CIMs, offering memorandums, SEC filings, web search, or MCP servers. Extract, normalize, and standardize financial data into investment committee-ready Excel workbooks with consistent structure, proper formatting, and documented assumptions. Use for M&A due diligence, private equity analysis, investment committee materials, and standardizing financial reporting across portfolio companies. Do not use for simple financial calculations or working with already-completed data packs.
|
||||
---
|
||||
|
||||
# Financial Data Pack Builder
|
||||
|
||||
Build professional, standardized financial data packs for private equity, investment banking, and asset management. Transform financial data from CIMs, offering memorandums, SEC filings, web search, or MCP server access into polished Excel workbooks ready for investment committee review.
|
||||
|
||||
**Important:** Use the xlsx skill for all Excel file creation and manipulation throughout this workflow.
|
||||
|
||||
## CRITICAL SUCCESS FACTORS
|
||||
|
||||
Every data pack must achieve these standards. Failure on any point makes the deliverable unusable.
|
||||
|
||||
### 1. Data Accuracy (Zero Tolerance for Errors)
|
||||
- Trace every number to source document with page reference
|
||||
- Use formula-based calculations exclusively (no hardcoded values)
|
||||
- Cross-check subtotals and totals for internal consistency
|
||||
- Verify balance sheet balances: Assets = Liabilities + Equity
|
||||
- Confirm cash flow ties to balance sheet changes
|
||||
|
||||
### 2. ESSENTIAL RULES
|
||||
|
||||
**RULE 1: Financial data (measuring money) → Currency format with $**
|
||||
Triggers: Revenue, Sales, Income, EBITDA, Profit, Loss, Cost, Expense, Cash, Debt, Assets, Liabilities, Equity, Capex
|
||||
Format: $#,##0.0 for millions, $#,##0 for thousands
|
||||
Negatives: $(123.0) NOT -$123
|
||||
|
||||
**RULE 2: Operational data (counting things) → Number format, NO $**
|
||||
Triggers: Units, Stores, Locations, Employees, Customers, Square Feet, Properties, Headcount
|
||||
Format: #,##0 with commas
|
||||
Negatives: (123) consistent with rest of table
|
||||
|
||||
**RULE 3: Percentages (rates and ratios) → Percentage format**
|
||||
Triggers: Margin, Growth, Rate, Percentage, Yield, Return, Utilization, Occupancy
|
||||
Format: 0.0% for one decimal place
|
||||
Display: 15.0% NOT 0.15
|
||||
|
||||
**RULE 4: Years → Text format to prevent comma insertion**
|
||||
Format: Text or custom to prevent 2,024
|
||||
Display: 2020, 2021, 2022, 2023A, 2024E
|
||||
|
||||
**RULE 5: When context is mixed, each metric gets its own appropriate format**
|
||||
Example:
|
||||
```
|
||||
Segment Analysis, 2022, 2023, 2024
|
||||
Retail Revenue, $50.0, $55.0, $60.0
|
||||
Stores, 100, 110, 120
|
||||
Revenue per Store, $0.5, $0.5, $0.5
|
||||
```
|
||||
Revenue and per-store metrics use $, Store count uses number format.
|
||||
|
||||
**RULE 6: Use formulas for all calculations → Never hardcode calculated values**
|
||||
All subtotals, totals, ratios, and derived metrics must be formula-based, not hardcoded values. This ensures accuracy and allows for dynamic updates.
|
||||
|
||||
### 3. Professional Presentation Standards
|
||||
|
||||
**Formatting Standards:**
|
||||
|
||||
**Color Scheme - Two Layers:**
|
||||
|
||||
**Layer 1: Font Colors (MANDATORY from xlsx skill)**
|
||||
- **Blue text (RGB: 0,0,255)**: ALL hardcoded inputs (historical data, assumptions), NOT normal text
|
||||
- **Black text (RGB: 0,0,0)**: ALL formulas and calculations
|
||||
- **Green text (RGB: 0,128,0)**: Links to other sheets
|
||||
|
||||
**Layer 2: Fill Colors (Optional for enhanced presentation)**
|
||||
- Fill colors are optional and should only be applied if requested by the user or if enhancing presentation
|
||||
- If the user requests colors or professional formatting, use this standard scheme:
|
||||
- **Section headers**: Dark blue (RGB: 68,114,196) background with white text
|
||||
- **Sub-headers/column headers**: Light blue (RGB: 217,225,242) background with black text
|
||||
- **Input cells**: Light green/cream (RGB: 226,239,218) background with blue text
|
||||
- **Calculated cells**: White background with black text
|
||||
- Users can override with custom brand colors if specified
|
||||
|
||||
**How the layers work together (if fill colors are used):**
|
||||
- Input cell: Blue text + light green fill = "User-entered data"
|
||||
- Formula cell: Black text + white background = "Calculated value"
|
||||
- Sheet link: Green text + white background = "Reference from another tab"
|
||||
|
||||
**Font color tells you WHAT it is. Fill color tells you WHERE it is (if used).**
|
||||
|
||||
**IMPORTANT:** Font colors from xlsx skill are mandatory. Fill colors are optional - default is white/no fill unless the user requests enhanced formatting or colors.
|
||||
|
||||
**Always apply:**
|
||||
- Bold headers, left-aligned
|
||||
- Numbers right-aligned
|
||||
- 2-space indentation for sub-items
|
||||
- Single underline above subtotals
|
||||
- Double underline below final totals
|
||||
- Freeze panes on row/column headers
|
||||
- Minimal borders (only where structurally needed)
|
||||
- Consistent font (typically Calibri or Arial 11pt)
|
||||
|
||||
**Never include:**
|
||||
- Borders around every cell
|
||||
- Multiple fonts or font sizes
|
||||
- Charts unless specifically requested
|
||||
- Excessive formatting or decoration
|
||||
|
||||
## Structural Consistency
|
||||
Use the standard 8-tab structure unless explicitly instructed otherwise:
|
||||
1. Executive Summary
|
||||
2. Historical Financials (Income Statement)
|
||||
3. Balance Sheet
|
||||
4. Cash Flow Statement
|
||||
5. Operating Metrics
|
||||
6. Property/Segment Performance (if applicable)
|
||||
7. Market Analysis
|
||||
8. Investment Highlights
|
||||
|
||||
### Tab 1: Executive Summary
|
||||
Purpose: One-page overview for busy executives
|
||||
|
||||
Contents:
|
||||
- Company overview (2-3 sentences on business model)
|
||||
- Key investment highlights (3-5 bullet points)
|
||||
- Financial snapshot table (Revenue, EBITDA, Growth for last 3 years + projections)
|
||||
- Transaction overview if applicable
|
||||
- Key metrics prominently displayed
|
||||
|
||||
Format: Clean, bold headers, minimal decoration, critical numbers emphasized
|
||||
|
||||
### Tab 2: Historical Financials (Income Statement)
|
||||
Purpose: Complete profit and loss history
|
||||
|
||||
Contents:
|
||||
- Revenue breakdown by segment/product line
|
||||
- Cost of goods sold / Cost of revenue
|
||||
- Gross profit and gross margin %
|
||||
- Operating expenses detailed (S&M, R&D, G&A)
|
||||
- EBITDA and Adjusted EBITDA
|
||||
- Below-the-line items (D&A, interest, taxes)
|
||||
- Net income
|
||||
|
||||
Format:
|
||||
- Years as columns (text format: 2020, 2021, 2022)
|
||||
- $ millions or $ thousands (specify units clearly at top)
|
||||
- Accounting format for all financial data
|
||||
- Single underline above subtotals, double underline below net income
|
||||
- Right-align all numbers
|
||||
|
||||
### Tab 3: Balance Sheet
|
||||
Purpose: Financial position at period end
|
||||
|
||||
Contents:
|
||||
- Current assets (cash, AR, inventory, prepaid, other)
|
||||
- Long-term assets (PP&E, intangibles, goodwill, other)
|
||||
- Current liabilities (AP, accrued expenses, current portion of debt, other)
|
||||
- Long-term liabilities (long-term debt, deferred taxes, other)
|
||||
- Shareholders' equity (common stock, retained earnings, other)
|
||||
|
||||
Format:
|
||||
- Verify formula: Assets = Liabilities + Equity
|
||||
- Consistent date labeling
|
||||
- Include working capital calculation
|
||||
- Single underline above major subtotals, double underline for final totals
|
||||
|
||||
### Tab 4: Cash Flow Statement
|
||||
Purpose: Cash generation and use analysis
|
||||
|
||||
Contents:
|
||||
- Operating cash flow (indirect method preferred)
|
||||
- Investing cash flow (capex, acquisitions, asset sales)
|
||||
- Financing cash flow (debt issuance/repayment, equity, dividends)
|
||||
- Net change in cash
|
||||
- Beginning and ending cash balances
|
||||
|
||||
Format:
|
||||
- Link to income statement and balance sheet where possible
|
||||
- Show reconciliation of net income to operating cash flow
|
||||
- Clear labeling of cash uses (outflows) vs sources (inflows)
|
||||
|
||||
### Tab 5: Operating Metrics
|
||||
Purpose: Non-financial KPIs and operational data
|
||||
|
||||
Contents (industry-dependent):
|
||||
- Unit volumes, customer counts, locations
|
||||
- Productivity metrics (revenue per employee, per store, per unit)
|
||||
- Capacity utilization
|
||||
- Market share
|
||||
- Customer retention/churn rates
|
||||
- Industry-specific KPIs
|
||||
|
||||
**CRITICAL FORMAT NOTE:**
|
||||
NO dollar signs on operational metrics. These are quantities, not currency.
|
||||
|
||||
Format:
|
||||
- Clear units specified (customers, employees, stores, square feet, etc.)
|
||||
- Whole numbers with commas: 1,250 NOT $1,250
|
||||
- Percentages for rates: 95.0%
|
||||
- Right-align numbers
|
||||
|
||||
### Tab 6: Property/Segment Performance (if applicable)
|
||||
Purpose: Detailed breakdown by business unit, property, or segment
|
||||
|
||||
Contents:
|
||||
- Revenue and profitability by segment
|
||||
- Key metrics by location/product
|
||||
- Segment-specific KPIs
|
||||
- Comparative performance analysis
|
||||
|
||||
Format: Consistent with financial tabs for revenue/EBITDA, number format for operational metrics
|
||||
|
||||
### Tab 7: Market Analysis
|
||||
Purpose: Industry context and competitive positioning
|
||||
|
||||
Contents:
|
||||
- Market size and growth trends
|
||||
- Competitive landscape overview
|
||||
- Market share analysis
|
||||
- Industry benchmarks and peer comparisons
|
||||
- Regulatory environment if relevant
|
||||
|
||||
Format: Mix of narrative text and tables, cite sources for market data
|
||||
|
||||
### Tab 8: Investment Highlights
|
||||
Purpose: Narrative summary of key investment thesis points
|
||||
|
||||
Contents:
|
||||
- Detailed writeup of competitive strengths
|
||||
- Growth opportunities and strategic initiatives
|
||||
- Risk factors and mitigation strategies
|
||||
- Management assessment and track record
|
||||
- Investment thesis summary
|
||||
|
||||
Format: Clear headers, bullet points, concise paragraphs
|
||||
|
||||
## STEP-BY-STEP WORKFLOW
|
||||
|
||||
### Phase 1: Document Processing and Data Extraction
|
||||
|
||||
**Step 1.1: Analyze source data**
|
||||
- Access source materials: uploaded documents, web search for public filings, or MCP server data
|
||||
- Review data structure and identify key sections
|
||||
- Locate financial statements (typically 3-5 years historical)
|
||||
- Identify management projections if included
|
||||
- Note fiscal year end date
|
||||
- Flag any data quality issues immediately
|
||||
|
||||
**Step 1.2: Extract financial statements**
|
||||
- Locate historical income statement data
|
||||
- Extract balance sheet snapshots (year-end or quarter-end)
|
||||
- Find cash flow statement
|
||||
- Extract management projections if available
|
||||
- Note all page references for traceability
|
||||
|
||||
**Step 1.3: Extract operating metrics**
|
||||
- Identify non-financial KPIs relevant to industry
|
||||
- Capture unit economics data
|
||||
- Extract customer/location/capacity data
|
||||
- Document growth metrics and trends
|
||||
|
||||
**Step 1.4: Extract market and industry data**
|
||||
- Competitive positioning information
|
||||
- Market size and growth rates
|
||||
- Industry benchmark data
|
||||
- Peer comparison information
|
||||
|
||||
**Step 1.5: Note key context**
|
||||
- Transaction structure and rationale
|
||||
- Management team background
|
||||
- Investment highlights from source materials
|
||||
- Risk factors and considerations
|
||||
- Any data gaps or inconsistencies
|
||||
|
||||
### Phase 2: Data Normalization and Standardization
|
||||
|
||||
**Step 2.1: Normalize accounting presentation**
|
||||
- Ensure consistent line item names across all years
|
||||
- Standardize revenue recognition treatment
|
||||
- Identify and document one-time charges
|
||||
- Create "Adjusted EBITDA" reconciliation if needed
|
||||
- Note any accounting policy changes
|
||||
|
||||
**Step 2.2: Apply format detection logic**
|
||||
For each data point, determine format based on full context:
|
||||
- Read tab name, table title, column header, and row label
|
||||
- Apply essential rules (see above)
|
||||
- When uncertain, examine original source document
|
||||
- Default to cleaner formatting (less is more)
|
||||
|
||||
**Step 2.3: Identify normalization adjustments**
|
||||
Common adjustments to document:
|
||||
- Restructuring charges (add back if truly non-recurring)
|
||||
- Stock-based compensation (add back per industry standard)
|
||||
- Acquisition-related costs (add back, specify amounts)
|
||||
- Legal settlements or litigation costs (evaluate recurrence risk)
|
||||
- Asset sales or impairments (exclude from operating results)
|
||||
- Related party adjustments (normalize to market rates)
|
||||
Note: Source citation format varies by data source (page numbers for documents, URLs for web sources, server references for MCP data)
|
||||
|
||||
**Step 2.4: Create adjustment schedule**
|
||||
For every normalization:
|
||||
- Document what was adjusted and why
|
||||
- Cite source (document page number, URL, or data source reference)
|
||||
- Quantify dollar impact by year
|
||||
- Assess recurrence risk
|
||||
- Show calculation from reported to adjusted figures
|
||||
|
||||
**Step 2.5: Verify data integrity**
|
||||
- Confirm subtotals sum correctly using formulas
|
||||
- Verify balance sheet balances
|
||||
- Check cash flow ties to balance sheet changes
|
||||
- Cross-check numbers across tabs for consistency
|
||||
- Flag any discrepancies for investigation
|
||||
|
||||
### Phase 3: Build Excel Workbook
|
||||
|
||||
**CRITICAL: Use xlsx skill for all Excel file manipulation. Read xlsx skill documentation before proceeding.**
|
||||
|
||||
**Step 3.1: Create standardized tab structure**
|
||||
Create workbook with tabs:
|
||||
- Executive Summary
|
||||
- Historical Financials
|
||||
- Balance Sheet
|
||||
- Cash Flow
|
||||
- Operating Metrics
|
||||
- Property Performance (if applicable)
|
||||
- Market Analysis
|
||||
- Investment Highlights
|
||||
|
||||
**Step 3.2: Build each tab with proper formatting**
|
||||
Apply formatting rules systematically:
|
||||
- Headers: Bold, left-aligned, 11pt font
|
||||
- Financial data: Currency format $#,##0.0 for millions
|
||||
- Operational data: Number format #,##0 (no $)
|
||||
- Percentages: 0.0% format
|
||||
- Years: Text format to prevent comma insertion
|
||||
- Negatives: Use accounting format with parentheses
|
||||
- Underlines: Single above subtotals, double below totals
|
||||
|
||||
**Step 3.3: Insert formulas for calculations**
|
||||
- All subtotals and totals must be formula-based
|
||||
- Link balance sheet to income statement where appropriate
|
||||
- Link cash flow to both income statement and balance sheet
|
||||
- Create cross-tab references for validation
|
||||
- Avoid hardcoding any calculated values
|
||||
|
||||
<correct_patterns>
|
||||
|
||||
### Row Reference Tracking - Copy This Pattern
|
||||
|
||||
**Store row numbers when writing data, then reference them in formulas:**
|
||||
|
||||
```python
|
||||
# ✅ CORRECT - Track row numbers as you write
|
||||
revenue_row = row
|
||||
write_data_row(ws, row, "Revenue", revenue_values)
|
||||
row += 1
|
||||
|
||||
ebitda_row = row
|
||||
write_data_row(ws, row, "EBITDA", ebitda_values)
|
||||
row += 1
|
||||
|
||||
# Use stored row numbers in formulas
|
||||
margin_row = row
|
||||
for col in year_columns:
|
||||
cell = ws.cell(row=margin_row, column=col)
|
||||
cell.value = f"={get_column_letter(col)}{ebitda_row}/{get_column_letter(col)}{revenue_row}"
|
||||
```
|
||||
|
||||
**For complex models, use a dictionary:**
|
||||
|
||||
```python
|
||||
row_refs = {
|
||||
'revenue': 5,
|
||||
'cogs': 6,
|
||||
'gross_profit': 7,
|
||||
'ebitda': 12
|
||||
}
|
||||
|
||||
# Later in formulas
|
||||
margin_formula = f"=B{row_refs['ebitda']}/B{row_refs['revenue']}"
|
||||
```
|
||||
|
||||
</correct_patterns>
|
||||
|
||||
<common_mistakes>
|
||||
|
||||
### WRONG: Hardcoded Row Offsets
|
||||
|
||||
**Don't use relative offsets - they break when table structure changes:**
|
||||
|
||||
```python
|
||||
# ❌ WRONG - Fragile offset-based references
|
||||
formula = f"=B{row-15}/B{row-19}" # What is row-15? What is row-19?
|
||||
|
||||
# ❌ WRONG - Magic numbers
|
||||
formula = f"=B{current_row-10}*C{current_row-20}"
|
||||
```
|
||||
|
||||
**Why this fails:**
|
||||
- Breaks silently when you add/remove rows
|
||||
- Impossible to verify correctness by reading code
|
||||
- Creates debugging nightmares in the delivered Excel file
|
||||
|
||||
</common_mistakes>
|
||||
|
||||
**Step 3.4: Apply professional presentation**
|
||||
- Freeze top row and first column on each data tab
|
||||
- Set appropriate column widths (typically 12-15 characters)
|
||||
- Right-align all numeric data
|
||||
- Left-align all text and headers
|
||||
- Add single/double underlines per accounting standards
|
||||
- Ensure clean, minimal appearance
|
||||
|
||||
### Phase 4: Scenario Building (if projections included)
|
||||
|
||||
**Management Case:**
|
||||
Present company's projections as provided in source materials:
|
||||
- Extract all management assumptions
|
||||
- Document growth rates, margin expansion, capital requirements
|
||||
- Note key drivers and sensitivities
|
||||
- Flag any "hockey stick" inflections that require skepticism
|
||||
- Present as "Management Case" with clear labeling
|
||||
|
||||
**Base Case (Risk-Adjusted):**
|
||||
Apply conservative adjustments to management projections based on company-specific risk factors:
|
||||
- Apply revenue growth haircut reflecting execution risk and historical forecast accuracy
|
||||
- Moderate margin expansion assumptions based on industry benchmarks and operating leverage
|
||||
- Increase capex assumptions if growth-dependent
|
||||
- Add working capital requirements if understated
|
||||
- Delay synergy realization if applicable, based on integration complexity
|
||||
- Document all adjustments with rationale and supporting analysis
|
||||
|
||||
**Downside Case (optional but recommended for LBO analysis):**
|
||||
Stress test scenario based on industry cyclicality and company vulnerabilities:
|
||||
- Model revenue decline reflecting recession risk or competitive pressure
|
||||
- Assume margin compression under stress (volume deleverage, pricing pressure)
|
||||
- Test covenant compliance and liquidity
|
||||
- Assess downside protection
|
||||
- Document key risks being stress-tested
|
||||
|
||||
**Documentation requirements for scenarios:**
|
||||
Create assumptions schedule showing:
|
||||
- Key assumptions by scenario (revenue growth, margins, capex %)
|
||||
- Rationale for each adjustment
|
||||
- Sensitivity analysis on key variables
|
||||
- Historical forecast accuracy if available
|
||||
- Comparison to industry benchmarks
|
||||
|
||||
### Phase 5: Quality Control and Validation
|
||||
|
||||
**Step 5.1: Data accuracy checks**
|
||||
Validate:
|
||||
- Every number traces to source (check spot samples, cite documents/URLs/servers)
|
||||
- All calculations are formula-based (no hardcoded values)
|
||||
- Subtotals and totals are mathematically correct
|
||||
- Years display without commas (2024 NOT 2,024)
|
||||
- No formula errors: #REF!, #VALUE!, #DIV/0!, #N/A
|
||||
|
||||
**Step 5.2: Format consistency checks**
|
||||
Verify:
|
||||
- Financial data has $ signs in format
|
||||
- Operational data has NO $ signs
|
||||
- Percentages display as % (15.0% not 0.15)
|
||||
- Negative numbers use parentheses for financial data
|
||||
- Headers are bold and left-aligned
|
||||
- Numbers are right-aligned
|
||||
- Years are text format
|
||||
|
||||
**Step 5.3: Structure and completeness checks**
|
||||
Confirm:
|
||||
- All required tabs present and properly sequenced
|
||||
- Executive summary is concise (fits on one page)
|
||||
- All key metrics captured comprehensively
|
||||
- Logical flow from summary to detail
|
||||
- Appropriate level of granularity in each tab
|
||||
- No missing data or incomplete sections
|
||||
|
||||
**Step 5.4: Professional presentation checks**
|
||||
Review:
|
||||
- Minimal borders (only for structure)
|
||||
- Consistent indentation (2 spaces for sub-items)
|
||||
- Proper accounting underlines (single and double)
|
||||
- Clean, professional appearance throughout
|
||||
- Appropriate column widths (not too narrow or wide)
|
||||
|
||||
**Step 5.5: Documentation and assumptions checks**
|
||||
Ensure:
|
||||
- All normalization adjustments documented with rationale
|
||||
- Source citations included (document page numbers, URLs, or data source references)
|
||||
- Assumptions clearly stated and reasonable
|
||||
- Executive summary accurate and impactful
|
||||
- Filename includes company name and date
|
||||
|
||||
### Phase 6: Final Delivery
|
||||
|
||||
**Step 6.1: Create executive summary**
|
||||
Write concise, impactful summary including:
|
||||
- Company overview: business model, products/services, geography (2-3 sentences)
|
||||
- Key financial metrics: Revenue, EBITDA, Growth rates (table format)
|
||||
- Investment highlights: 3-5 key strengths or opportunities
|
||||
- Notable risks or considerations (briefly)
|
||||
- Transaction context if applicable
|
||||
|
||||
**Step 6.2: Final file preparation**
|
||||
- Save workbook with proper naming: CompanyName_DataPack_YYYY-MM-DD.xlsx
|
||||
|
||||
## NORMALIZATION PATTERNS
|
||||
|
||||
### Common Adjustments to EBITDA
|
||||
|
||||
**1. Restructuring charges**
|
||||
- Add back if truly non-recurring (facility closure, one-time severance)
|
||||
- Do NOT add back if company restructures every year
|
||||
- Document specific nature and rationale for non-recurrence
|
||||
- Example: "2023 restructuring: $3.0M facility closure, documented in source materials, one-time event"
|
||||
|
||||
**2. Stock-based compensation**
|
||||
- Industry standard: add back for private equity analysis
|
||||
- Treat as non-cash operating expense
|
||||
- Be consistent across all periods
|
||||
- Note if unusually high or includes one-time grants
|
||||
|
||||
**3. Acquisition-related costs**
|
||||
- Add back transaction fees, integration costs
|
||||
- Document specific amounts by type
|
||||
- Do not add back ongoing integration investments
|
||||
- Cite source for each adjustment
|
||||
|
||||
**4. Legal settlements and litigation**
|
||||
- Add back if truly isolated incident
|
||||
- Assess recurrence risk (one settlement vs pattern of litigation)
|
||||
- Document nature of settlement
|
||||
- Consider if this is normal course of business
|
||||
|
||||
**5. Asset sales or impairments**
|
||||
- Exclude gains/losses on asset sales from operating EBITDA
|
||||
- Remove impairment charges if truly non-recurring
|
||||
- Document what assets were sold/impaired and why
|
||||
- Adjust revenue if assets generated operating income
|
||||
|
||||
**6. Related party adjustments**
|
||||
- Normalize above-market related party expenses (rent, management fees)
|
||||
- Adjust to market rates with supporting documentation
|
||||
- Remove personal expenses run through business
|
||||
- Document market rate comparison
|
||||
|
||||
### Conservative vs Aggressive Normalization
|
||||
|
||||
**Management Case:**
|
||||
- Include all adjustments management proposes
|
||||
- Accept company's definition of "non-recurring"
|
||||
- More aggressive EBITDA adjustments
|
||||
- Use for understanding management's view
|
||||
|
||||
**Base Case (Recommended for investment decisions):**
|
||||
- Only clearly non-recurring items
|
||||
- Apply higher scrutiny to recurring "one-time" charges
|
||||
- Exclude speculative adjustments
|
||||
- More conservative, defensible to investment committee
|
||||
|
||||
## INDUSTRY-SPECIFIC ADAPTATIONS
|
||||
|
||||
### Technology/SaaS
|
||||
Key metrics to capture:
|
||||
- ARR (Annual Recurring Revenue) and MRR
|
||||
- Customer count by cohort
|
||||
- CAC (Customer Acquisition Cost) and LTV (Lifetime Value)
|
||||
- Churn rate (gross and net)
|
||||
- Net revenue retention
|
||||
- Rule of 40 (Growth % + EBITDA Margin %)
|
||||
- Magic number (sales efficiency)
|
||||
|
||||
Format notes: ARR is currency ($), customer count is number (no $), rates are %
|
||||
|
||||
### Manufacturing/Industrial
|
||||
Key metrics to capture:
|
||||
- Production capacity and capacity utilization %
|
||||
- Units produced by product line
|
||||
- Inventory turns
|
||||
- Gross margin by product line
|
||||
- Order backlog
|
||||
|
||||
Format notes: Units, capacity are numbers (no $), utilization is %, revenue/costs are currency
|
||||
|
||||
### Real Estate/Hospitality
|
||||
Key metrics to capture:
|
||||
- Properties/rooms/square footage
|
||||
- Occupancy rates %
|
||||
- ADR (Average Daily Rate) - currency format
|
||||
- RevPAR (Revenue per Available Room) - currency format
|
||||
- NOI (Net Operating Income) - currency format
|
||||
- Cap rates %
|
||||
- FF&E reserve
|
||||
|
||||
Format notes: Rooms/sqft are numbers, occupancy is %, ADR/RevPAR are currency
|
||||
|
||||
### Healthcare/Services
|
||||
Key metrics to capture:
|
||||
- Locations/facilities
|
||||
- Providers/employees
|
||||
- Patients/visits (volume metrics)
|
||||
- Revenue per visit - currency
|
||||
- Payor mix %
|
||||
- Same-store growth %
|
||||
|
||||
Format notes: Locations/visits are numbers, revenue per visit is currency, rates are %
|
||||
|
||||
## FINAL DELIVERY CHECKLIST
|
||||
|
||||
Complete this checklist before delivering the data pack:
|
||||
|
||||
**Structure:**
|
||||
- All required tabs present and in logical sequence
|
||||
- Each tab has clear header and title
|
||||
- Executive summary is concise (fits on one page)
|
||||
|
||||
**Data Accuracy:**
|
||||
- All numbers trace to source (documents, URLs, or data servers)
|
||||
- Source references documented for key figures (page numbers, URLs, etc.)
|
||||
- All calculations are formula-based (no hardcoded calculated values)
|
||||
- Subtotals and totals verified
|
||||
- Balance sheet balances (Assets = Liabilities + Equity)
|
||||
- No #REF!, #VALUE!, or #DIV/0! errors
|
||||
|
||||
**Formatting - Years and Numbers:**
|
||||
- Years display correctly: 2020, 2021, 2022 (no commas)
|
||||
- Financial data has $ signs: $50.0, $125.5
|
||||
- Operational metrics have NO $ signs: 100 stores, 250 employees
|
||||
- Percentages formatted correctly: 15.0%, 25.5%
|
||||
- Negatives in parentheses: $(15.0) not -$15.0
|
||||
|
||||
**Formatting - Professional Standards:**
|
||||
- Headers bold and left-aligned
|
||||
- Numbers right-aligned
|
||||
- Consistent indentation (2 spaces for sub-items)
|
||||
- Single underline above subtotals
|
||||
- Double underline below final totals
|
||||
- Frozen panes on headers
|
||||
- Consistent font throughout
|
||||
- Minimal borders (only for structure)
|
||||
- Clean, professional appearance throughout
|
||||
|
||||
**Content Completeness:**
|
||||
- Financial statements complete (IS, BS, CF)
|
||||
- Operating metrics comprehensively captured
|
||||
- Normalization adjustments documented
|
||||
- Assumptions clearly stated
|
||||
- Executive summary clear, concise, and impactful
|
||||
- Investment highlights compelling
|
||||
- Market analysis provides context
|
||||
|
||||
**Documentation:**
|
||||
- All normalization adjustments explained
|
||||
- Every data cell cited from source with comments and links (document page numbers, URLs, or data source references)
|
||||
- Assumptions documented with rationale
|
||||
- Any data limitations noted
|
||||
- Filename follows convention: CompanyName_DataPack_YYYY-MM-DD.xlsx
|
||||
|
||||
**Final Output:**
|
||||
- File saved to outputs with proper naming convention
|
||||
- All quality control checks passed
|
||||
@@ -0,0 +1,87 @@
|
||||
# Deal Tracker
|
||||
|
||||
description: Track multiple live deals with milestones, deadlines, action items, and status updates. Maintains a deal pipeline view and surfaces upcoming deadlines and overdue items. Use when managing a book of business, tracking process milestones, or preparing for weekly deal reviews. Triggers on "deal tracker", "deal status", "where are we on", "process update", "deal pipeline", or "weekly deal review".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Deal Setup
|
||||
|
||||
For each deal, capture:
|
||||
- **Deal name / code name**: Project [Name]
|
||||
- **Client**: Seller or buyer name
|
||||
- **Deal type**: Sell-side, buy-side, financing, restructuring
|
||||
- **Role**: Lead advisor, co-advisor, fairness opinion
|
||||
- **Deal size**: Expected enterprise value
|
||||
- **Stage**: Pre-mandate → Engaged → Marketing → IOI → Diligence → Final bids → Signing → Close
|
||||
- **Team**: MD, VP, Associate, Analyst assigned
|
||||
- **Key dates**: Engagement date, CIM distribution, IOI deadline, management meetings, final bid deadline, target close
|
||||
|
||||
### Step 2: Milestone Tracking
|
||||
|
||||
Track key milestones per deal:
|
||||
|
||||
| Milestone | Target Date | Actual Date | Status | Notes |
|
||||
|-----------|------------|-------------|--------|-------|
|
||||
| Engagement letter signed | | | | |
|
||||
| CIM / teaser drafted | | | | |
|
||||
| Buyer list approved | | | | |
|
||||
| Teaser distributed | | | | |
|
||||
| NDA execution | | | | |
|
||||
| CIM distributed | | | | |
|
||||
| IOI deadline | | | | |
|
||||
| IOIs received / reviewed | | | | |
|
||||
| Shortlist selected | | | | |
|
||||
| Management meetings | | | | |
|
||||
| Data room opened | | | | |
|
||||
| Final bid deadline | | | | |
|
||||
| Bids received / reviewed | | | | |
|
||||
| Exclusivity granted | | | | |
|
||||
| Confirmatory diligence | | | | |
|
||||
| Purchase agreement signed | | | | |
|
||||
| Regulatory approval | | | | |
|
||||
| Close | | | | |
|
||||
|
||||
Status: On Track / At Risk / Delayed / Complete
|
||||
|
||||
### Step 3: Action Items
|
||||
|
||||
Maintain a running action item list across all deals:
|
||||
|
||||
| Action | Deal | Owner | Due Date | Priority | Status |
|
||||
|--------|------|-------|----------|----------|--------|
|
||||
| | | | | P0/P1/P2 | Open/Done/Blocked |
|
||||
|
||||
### Step 4: Weekly Deal Review
|
||||
|
||||
Generate a summary for weekly team meetings:
|
||||
|
||||
**For each active deal:**
|
||||
1. One-line status update
|
||||
2. Key developments this week
|
||||
3. Upcoming milestones (next 2 weeks)
|
||||
4. Blockers or risks
|
||||
5. Action items for next week
|
||||
|
||||
**Pipeline summary:**
|
||||
- Total active deals by stage
|
||||
- Deals at risk (missed milestones, stalled processes)
|
||||
- New mandates / pitches in pipeline
|
||||
- Expected closings this quarter
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
- Excel workbook with:
|
||||
- Pipeline overview (all deals, one row each)
|
||||
- Per-deal milestone tracker tabs
|
||||
- Action item master list
|
||||
- Weekly review summary
|
||||
- Optional: Markdown summary for email/Slack distribution
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Update the tracker weekly at minimum — stale trackers are worse than no tracker
|
||||
- Flag deals where milestones are slipping — early warning prevents surprises
|
||||
- Action items without owners and due dates don't get done — be specific
|
||||
- The pipeline view should show deal stage, size, and likelihood — useful for revenue forecasting
|
||||
- Keep notes on buyer/investor feedback — patterns in feedback inform strategy adjustments
|
||||
- Archive closed/dead deals separately — keep the active view clean
|
||||
@@ -0,0 +1,108 @@
|
||||
# Merger Model
|
||||
|
||||
description: Build accretion/dilution analysis for M&A transactions. Models pro forma EPS impact, synergy sensitivities, and purchase price allocation. Use when evaluating a potential acquisition, preparing merger consequences analysis for a pitch, or advising on deal terms. Triggers on "merger model", "accretion dilution", "M&A model", "pro forma EPS", "merger consequences", or "deal impact analysis".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Inputs
|
||||
|
||||
**Acquirer:**
|
||||
- Company name, current share price, shares outstanding
|
||||
- LTM and NTM EPS (GAAP and adjusted)
|
||||
- P/E multiple
|
||||
- Pre-tax cost of debt, tax rate
|
||||
- Cash on balance sheet, existing debt
|
||||
|
||||
**Target:**
|
||||
- Company name, current share price, shares outstanding (if public)
|
||||
- LTM and NTM EPS or net income
|
||||
- Enterprise value or equity value
|
||||
|
||||
**Deal Terms:**
|
||||
- Offer price per share (or premium to current)
|
||||
- Consideration mix: % cash vs. % stock
|
||||
- New debt raised to fund cash portion
|
||||
- Expected synergies (revenue and cost) and phase-in timeline
|
||||
- Transaction fees and financing costs
|
||||
- Expected close date
|
||||
|
||||
### Step 2: Purchase Price Analysis
|
||||
|
||||
| Item | Value |
|
||||
|------|-------|
|
||||
| Offer price per share | |
|
||||
| Premium to current | |
|
||||
| Equity value | |
|
||||
| Plus: net debt assumed | |
|
||||
| Enterprise value | |
|
||||
| EV / EBITDA implied | |
|
||||
| P/E implied | |
|
||||
|
||||
### Step 3: Sources & Uses
|
||||
|
||||
| Sources | $ | Uses | $ |
|
||||
|---------|---|------|---|
|
||||
| New debt | | Equity purchase price | |
|
||||
| Cash on hand | | Refinance target debt | |
|
||||
| New equity issued | | Transaction fees | |
|
||||
| | | Financing fees | |
|
||||
| **Total** | | **Total** | |
|
||||
|
||||
### Step 4: Pro Forma EPS (Accretion / Dilution)
|
||||
|
||||
Calculate year-by-year (Year 1-3):
|
||||
|
||||
| | Standalone | Pro Forma | Accretion/(Dilution) |
|
||||
|---|-----------|-----------|---------------------|
|
||||
| Acquirer net income | | | |
|
||||
| Target net income | | | |
|
||||
| Synergies (after tax) | | | |
|
||||
| Foregone interest on cash (after tax) | | | |
|
||||
| New debt interest (after tax) | | | |
|
||||
| Intangible amortization (after tax) | | | |
|
||||
| Pro forma net income | | | |
|
||||
| Pro forma shares | | | |
|
||||
| **Pro forma EPS** | | | |
|
||||
| **Accretion / (Dilution) %** | | | |
|
||||
|
||||
### Step 5: Sensitivity Analysis
|
||||
|
||||
**Accretion/Dilution vs. Synergies and Offer Premium:**
|
||||
|
||||
| | $0M syn | $25M syn | $50M syn | $75M syn | $100M syn |
|
||||
|---|---------|----------|----------|----------|-----------|
|
||||
| 15% premium | | | | | |
|
||||
| 20% premium | | | | | |
|
||||
| 25% premium | | | | | |
|
||||
| 30% premium | | | | | |
|
||||
|
||||
**Accretion/Dilution vs. Cash/Stock Mix:**
|
||||
|
||||
| | 100% cash | 75/25 | 50/50 | 25/75 | 100% stock |
|
||||
|---|-----------|-------|-------|-------|------------|
|
||||
| Year 1 | | | | | |
|
||||
| Year 2 | | | | | |
|
||||
|
||||
### Step 6: Breakeven Synergies
|
||||
|
||||
Calculate the minimum synergies needed for the deal to be EPS-neutral in Year 1.
|
||||
|
||||
### Step 7: Output
|
||||
|
||||
- Excel workbook with:
|
||||
- Assumptions tab
|
||||
- Sources & uses
|
||||
- Pro forma income statement
|
||||
- Accretion/dilution summary
|
||||
- Sensitivity tables
|
||||
- Breakeven analysis
|
||||
- One-page merger consequences summary for pitch book
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Always show both GAAP and adjusted (cash) EPS where relevant
|
||||
- Stock deals: use acquirer's current price for exchange ratio, note dilution from new shares
|
||||
- Include purchase price allocation — goodwill and intangible amortization matter for GAAP EPS
|
||||
- Synergy phase-in is critical — Year 1 is often only 25-50% of run-rate synergies
|
||||
- Don't forget foregone interest income on cash used and new interest expense on debt raised
|
||||
- Tax rate on synergies and interest adjustments should match the acquirer's marginal rate
|
||||
@@ -0,0 +1,408 @@
|
||||
---
|
||||
name: anthropic-fsi-pitch-deck
|
||||
description: "Populates investment banking pitch deck templates with data from source files. Use when: user provides a PowerPoint template to fill in, user has source data (Excel/CSV) to populate into slides, user mentions populating or filling a pitch deck template, or user needs to transfer data into existing slide layouts. Not for creating presentations from scratch."
|
||||
---
|
||||
|
||||
# Populating Investment Banking Pitch Deck Templates
|
||||
|
||||
## Reference Files
|
||||
|
||||
**Read all reference files at task start before beginning any work.** These contain critical patterns and anti-patterns that will affect your approach. Do not wait until you encounter issues.
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| [`formatting-standards.md`](reference/formatting-standards.md) | Text, bullets, tables, charts, alignment |
|
||||
| [`slide-templates.md`](reference/slide-templates.md) | Content mapping guidance for common slide types |
|
||||
| [`xml-reference.md`](reference/xml-reference.md) | PowerPoint XML patterns for tables, shapes, arrows |
|
||||
| [`calculation-standards.md`](reference/calculation-standards.md) | Financial formulas for verification (CAGR, consensus) |
|
||||
|
||||
---
|
||||
|
||||
## Workflow Decision Tree
|
||||
|
||||
**What type of task is this?**
|
||||
|
||||
```
|
||||
┌─ Populating empty template with source data?
|
||||
│ └─→ Follow "Template Population Workflow" below
|
||||
│
|
||||
├─ Editing existing populated slides?
|
||||
│ └─→ Extract current content, modify, revalidate
|
||||
│
|
||||
└─ Fixing formatting issues on existing slides?
|
||||
└─→ See "Common Failures" table, apply targeted fixes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Critical Rendering Limitation
|
||||
|
||||
**LibreOffice is used for validation but DOES NOT render PowerPoint files accurately.** It will mangle fonts, gradients, shape positions, text wrapping, and some table formatting.
|
||||
|
||||
**What this means:** A slide that passes visual validation in LibreOffice may still have issues in Microsoft PowerPoint. The validation loop catches structural issues (missing content, broken tables, placeholder formatting retained) but **cannot** catch font substitution, subtle alignment shifts, or gradient problems.
|
||||
|
||||
**Required action:** Always include this statement when delivering output:
|
||||
> "This file was validated using LibreOffice. Please review in Microsoft PowerPoint before distribution, as rendering differences may exist."
|
||||
|
||||
---
|
||||
|
||||
## Template Population Workflow
|
||||
|
||||
Copy and track progress:
|
||||
|
||||
```
|
||||
Pitch Deck Progress:
|
||||
- [ ] Phase 1: Extract and validate source data
|
||||
- [ ] Phase 2: Map content to template sections
|
||||
- [ ] Phase 3: Populate slides with proper formatting
|
||||
- [ ] Phase 4: Validate → Fix → Repeat until clean
|
||||
- [ ] Phase 5: Final verification
|
||||
```
|
||||
|
||||
### Phase 1: Data Extraction
|
||||
1. **Create backup** of original template before any modifications — copy to `[filename]_backup.pptx`. Direct XML editing or unexpected errors can corrupt files.
|
||||
2. Identify all source materials (Excel, CSV, PDF reports, Word documents, databases, web sources)
|
||||
3. Extract relevant data points from each source
|
||||
4. Validate all numbers against original sources
|
||||
5. Standardize units and currency (convert all figures to the primary unit/currency used in the template)
|
||||
6. Note any calculations that need verification → see [`calculation-standards.md`](reference/calculation-standards.md) for formulas
|
||||
|
||||
### Phase 2: Content Mapping
|
||||
1. **Open and visually review the template** — understand its structure, style, and existing content before modifying
|
||||
2. Analyze template structure — identify all placeholder areas and content boxes
|
||||
3. Map source data to corresponding template sections → see [`slide-templates.md`](reference/slide-templates.md) for mapping guidance
|
||||
4. Identify placeholder guidance boxes (colored instruction boxes from task creator)
|
||||
5. Note any data gaps or mismatches → see [`slide-templates.md`](reference/slide-templates.md#handling-data-template-mismatches) for resolution
|
||||
|
||||
### Phase 3: Template Population
|
||||
1. **Remove or reformat placeholder boxes** — colored instruction boxes show WHAT to create, not HOW to format. Delete them and create properly formatted content in their place. See [Critical Anti-Patterns](#critical-anti-patterns-never-do-these).
|
||||
2. Populate each section with mapped content (focus on content first)
|
||||
3. **Then apply formatting** to match template style → see [`formatting-standards.md`](reference/formatting-standards.md)
|
||||
4. Create tables as actual table objects (NEVER use pipe/tab-separated text) → see [`xml-reference.md`](reference/xml-reference.md#table-implementation)
|
||||
5. Create arrows/shapes as PowerPoint objects → see [`xml-reference.md`](reference/xml-reference.md#arrow-shapes)
|
||||
6. Insert company logo if provided in task files; if not available, flag to user: "[LOGO NOT PROVIDED - please supply company logo]"
|
||||
|
||||
### Phase 4: Validate → Fix → Repeat
|
||||
|
||||
**This is a feedback loop. Repeat until all checks pass OR escalation is triggered.**
|
||||
|
||||
```bash
|
||||
# Convert to images for visual validation
|
||||
soffice --headless --convert-to pdf presentation.pptx
|
||||
pdftoppm -jpeg -r 150 presentation.pdf slide
|
||||
```
|
||||
|
||||
**Validation checklist (check each slide image):**
|
||||
- [ ] Text readable against background?
|
||||
- [ ] Tables are actual objects (columns aligned, NOT pipe/tab-separated text)?
|
||||
- [ ] Charts/tables fill designated areas?
|
||||
- [ ] Bullet formatting consistent within sections?
|
||||
- [ ] Font sizes match across same-level boxes?
|
||||
- [ ] No content beyond slide boundaries?
|
||||
- [ ] **No placeholder formatting retained** (no large colored boxes with data dumped in)?
|
||||
- [ ] **No text-based "tables"** (no `|` or tab separators creating fake columns)?
|
||||
- [ ] **Cross-slide consistency**: Same metrics/figures identical across all slides where they appear?
|
||||
|
||||
**Fix cycle protocol:**
|
||||
|
||||
| Cycle | Action |
|
||||
|-------|--------|
|
||||
| 1 | Fix all identified issues, re-validate |
|
||||
| 2 | Fix remaining issues, re-validate |
|
||||
| 3 | If issues persist, document remaining problems and escalate to user |
|
||||
|
||||
**After 3 cycles, if issues remain:**
|
||||
1. List each unresolved issue with slide number and description
|
||||
2. Explain what was attempted
|
||||
3. Deliver the file with explicit disclaimer: "The following issues could not be resolved automatically: [list]. Manual review required."
|
||||
|
||||
**Do not** continue cycling indefinitely. Some issues (font rendering, complex shape alignment) may require manual intervention in PowerPoint.
|
||||
|
||||
### Phase 5: Final Verification
|
||||
|
||||
Run through the [Final Quality Checklist](#final-quality-checklist) before delivering.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference Tables
|
||||
|
||||
### Bullet Symbols
|
||||
|
||||
| Context | Symbol | Usage |
|
||||
|---------|--------|-------|
|
||||
| Included/Positive | ✓ | Items within scope, features present |
|
||||
| Excluded/Negative | × | Items outside scope, features absent |
|
||||
| Neutral list | • | General enumeration, commentary |
|
||||
| Numbered sequence | 1. 2. 3. | Process steps, rankings |
|
||||
| Sub-bullets | – | Secondary points under main bullets |
|
||||
|
||||
### Slide Hierarchy Levels (Typical)
|
||||
|
||||
These are typical ranges—adjust based on template specifications:
|
||||
|
||||
| Level | Examples | Typical Size | Style |
|
||||
|-------|----------|--------------|-------|
|
||||
| Title | Slide title | 40-48pt | Bold |
|
||||
| Subtitle | Market definition, slide descriptor | 18-22pt | Bold |
|
||||
| Section Header | "Key Projections", "Commentary" | 14-16pt | Regular |
|
||||
| Block Label | "Segments Included", "Definition" sidebar | 12-14pt | Regular |
|
||||
| Block Content | Bullet points, body text | 11-14pt | Regular |
|
||||
| Table Header | Column headers | 10-12pt | Bold |
|
||||
| Table Body | Cell content | 9-11pt | Regular |
|
||||
| Footnotes | Sources, notes | 8-9pt | Italic |
|
||||
|
||||
### Font Consistency Matching
|
||||
|
||||
Boxes at the **same hierarchy level** MUST use identical font sizes:
|
||||
|
||||
| Same Level | Must Match With |
|
||||
|------------|-----------------|
|
||||
| "Segments Included" | "Segments Excluded" |
|
||||
| "Definition" | "Scope Rationale" |
|
||||
| Left column bullets | Right column bullets |
|
||||
| All block labels | Each other |
|
||||
| All section headers | Each other |
|
||||
|
||||
### Rounding for Presentation
|
||||
|
||||
These are **typical conventions** — adjust based on the magnitude of values and template style:
|
||||
|
||||
| Value Type | Typical Rounding | Example |
|
||||
|------------|------------------|---------|
|
||||
| Large market sizes ($10bn+) | Nearest $1bn | 18.5 → $19bn |
|
||||
| Smaller market sizes (<$10bn) | Nearest $0.5bn or $0.1bn | 2.3 → $2.5bn |
|
||||
| Size ranges | Match precision of sources | 14.9-22.1 → $15-22bn |
|
||||
| CAGR | Whole % or 0.5% | 16.4% → 16% or 16.5% |
|
||||
| Market share | Nearest 5% or match source | 21.4% → 20% |
|
||||
| Multiples | 1 decimal | 9.69 → 9.7x |
|
||||
|
||||
**Principle:** Rounding should not materially change the figure. For smaller values, use finer precision.
|
||||
|
||||
### Text Density Rules
|
||||
|
||||
- Max 6-7 bullets per content box
|
||||
- Max 2 lines per bullet point
|
||||
- Parenthetical examples: same line or indented below
|
||||
- No orphan words (single word on new line)
|
||||
|
||||
### Alignment Principles
|
||||
|
||||
**Vertically stacked boxes** must have identical:
|
||||
- Left margin position, bullet indentation, text start position, box width
|
||||
|
||||
**Horizontally adjacent boxes** must have identical:
|
||||
- Top position, height (where possible), internal padding
|
||||
|
||||
### Multi-Slide Consistency
|
||||
|
||||
When the same data appears on multiple slides:
|
||||
- Use identical figures, formatting, and terminology
|
||||
- If a metric is updated on one slide, update all occurrences
|
||||
- Cross-reference during validation to catch mismatches
|
||||
|
||||
---
|
||||
|
||||
## MUST Requirements
|
||||
|
||||
These requirements are non-negotiable regardless of template:
|
||||
|
||||
| Requirement | Details |
|
||||
|-------------|---------|
|
||||
| **Text Readability** | All text MUST have sufficient contrast with background. Examples: white/light text on dark blue, dark green, black backgrounds; black/dark text on white, light gray, light yellow backgrounds. |
|
||||
| **Actual Table Objects** | Tabular data MUST be table objects, not tab-separated text. See [`xml-reference.md`](reference/xml-reference.md#table-implementation). |
|
||||
| **Proper Chart/Table Sizing** | Pasted visuals MUST fill designated area. See [`formatting-standards.md`](reference/formatting-standards.md#chart-and-image-handling). |
|
||||
| **Consistent Formatting** | Bullets within section MUST match (symbol, size, indent). Same-level boxes MUST use same font size. |
|
||||
| **Content Boundaries** | All content MUST stay within slide edges. Footnote box width: ~32.5cm for 16:9, ~24cm for 4:3. |
|
||||
| **No Placeholder Formatting** | Remove colored instruction boxes. Main body: dark text on light background per template. |
|
||||
|
||||
---
|
||||
|
||||
## Critical Anti-Patterns: NEVER DO THESE
|
||||
|
||||
These failures occur when placeholder formatting is mistaken for output formatting. Recognizing these patterns is essential.
|
||||
|
||||
### Anti-Pattern 1: Populating Data INTO Placeholder Boxes
|
||||
|
||||
**What happens:** Template has colored instruction boxes (yellow, orange, etc.) with guidance text. Model replaces the guidance text with actual data BUT KEEPS THE COLORED BOX.
|
||||
|
||||
**Why it's wrong:** The colored box IS the placeholder. It tells you what content goes there. The output should have different formatting — typically dark text on white/light background, or properly styled shapes.
|
||||
|
||||
**Recognition test:** If your populated slide has large colored rectangles filled with data text, you have copied the placeholder format instead of replacing it.
|
||||
|
||||
**Critical distinction — two types of "placeholders":**
|
||||
|
||||
| Type | How to identify | What to do |
|
||||
|------|-----------------|------------|
|
||||
| **Instruction boxes** | Bright colors (yellow, orange), contains guidance text like "Insert X here", white/light text on colored background | DELETE the entire shape, then create new content with production formatting |
|
||||
| **Layout placeholders** | Part of slide master/layout, neutral colors matching template theme, "Click to add text" | KEEP the shape, REPLACE the text content only |
|
||||
|
||||
If uncertain: check if the shape exists on an empty slide from the same template. Layout placeholders persist; instruction boxes are regular shapes.
|
||||
|
||||
### Anti-Pattern 2: Text-Based "Tables"
|
||||
|
||||
**What happens:** Model creates table-like content using separator characters (`|`, tabs, spaces) instead of actual table objects.
|
||||
|
||||
**Why it's wrong:** This is NOT a table. Columns will never align properly, it cannot be formatted consistently, and it looks unprofessional.
|
||||
|
||||
**Recognition test:** If you're typing `|` characters or relying on spaces/tabs to create columns, you're creating text, not a table.
|
||||
|
||||
**MUST verify:** After creating any table, verify it is an actual table object. See [`xml-reference.md`](reference/xml-reference.md#critical-verify-tables-are-actual-table-objects) for verification methods.
|
||||
|
||||
### Anti-Pattern 3: Inheriting Placeholder Contrast
|
||||
|
||||
**What happens:** Placeholder uses light text on colored background (e.g., white on yellow). Model populates data but keeps this color scheme, resulting in hard-to-read output.
|
||||
|
||||
**Why it's wrong:** Placeholder colors are deliberately distinct to signal "replace me." Production slides typically use dark text on light backgrounds for body content.
|
||||
|
||||
**Recognition test:** If your populated content has light/white text on bright colored backgrounds in body areas (not headers), you've inherited placeholder formatting.
|
||||
|
||||
**Correct approach:** Apply production formatting — typically dark text (#000000 or #333333) on white or light backgrounds for body content. Headers and accent areas may use brand colors.
|
||||
|
||||
### Summary: Placeholder vs. Production
|
||||
|
||||
| Element | Placeholder (Input) | Production (Output) |
|
||||
|---------|---------------------|---------------------|
|
||||
| Instruction boxes | Colored background, guidance text | Removed or reformatted |
|
||||
| Data areas | "[Insert data here]" text | Actual data with clean formatting |
|
||||
| Tables | Description of what table should contain | Actual table object with rows/columns |
|
||||
| Body text | Light text on colored background | Dark text on light background |
|
||||
|
||||
**The placeholder tells you WHAT to create, not HOW to format it.**
|
||||
|
||||
---
|
||||
|
||||
## Common Failures
|
||||
|
||||
For detailed explanations of the most critical failures, see [Critical Anti-Patterns](#critical-anti-patterns-never-do-these) above.
|
||||
|
||||
| Failure | Solution | Reference |
|
||||
|---------|----------|-----------|
|
||||
| Unstructured text dumps | Break into bullets (✓, ×, •) | [`formatting-standards.md`](reference/formatting-standards.md#bullet-point-structure) |
|
||||
| Pipe/tab-separated "tables" | Create actual table objects — text with separators is NOT a table | [`xml-reference.md`](reference/xml-reference.md#table-implementation) |
|
||||
| Poor text/background contrast | Audit every text element | — |
|
||||
| Tiny pasted charts | Resize to fill area, paste chart only | [`formatting-standards.md`](reference/formatting-standards.md#proper-sizing-workflow) |
|
||||
| Source data pasted with charts | Select only chart object before copy | — |
|
||||
| Data dumped into placeholder boxes | Delete colored instruction boxes, create new properly formatted content | [Anti-Patterns](#critical-anti-patterns-never-do-these) |
|
||||
| Inconsistent bullets | Define style once, apply to all | [`formatting-standards.md`](reference/formatting-standards.md#bullet-consistency) |
|
||||
| Inconsistent fonts across boxes | Standardize same-level boxes | [`formatting-standards.md`](reference/formatting-standards.md#font-consistency) |
|
||||
| Content overflow | Set explicit box widths (footnotes: 32.5cm for 16:9, 24cm for 4:3) | — |
|
||||
| Missing logo | Use logo from task files; if not provided, flag to user | — |
|
||||
| Remaining `[brackets]` | Search and replace all placeholders | — |
|
||||
| Text arrows (→, ⟹) | Use PowerPoint shape objects | [`xml-reference.md`](reference/xml-reference.md#arrow-shapes) |
|
||||
|
||||
---
|
||||
|
||||
## Error Handling
|
||||
|
||||
**If PDF/image conversion fails:**
|
||||
1. Check LibreOffice is installed: `which soffice`
|
||||
2. Try alternative: `libreoffice --headless --convert-to pdf presentation.pptx`
|
||||
3. If still failing, open in PowerPoint/LibreOffice manually and export
|
||||
|
||||
**If source data has inconsistencies or conflicts:**
|
||||
1. **Priority order**: Use data explicitly provided in the task files first
|
||||
2. If using data from other sources (web search, external documents), flag this to the user
|
||||
3. Document any discrepancies explicitly
|
||||
4. Add footnote explaining data source choice
|
||||
|
||||
**If calculations don't match source projections:**
|
||||
1. Show your calculation methodology
|
||||
2. Note the discrepancy and possible causes (different base year, methodology)
|
||||
3. Present both values if material difference
|
||||
4. Flag to user for resolution
|
||||
|
||||
---
|
||||
|
||||
## Table Structure Guidelines
|
||||
|
||||
When creating tables (MUST be actual table objects):
|
||||
|
||||
**Column Alignment:**
|
||||
- Text columns: Left-aligned (header and content)
|
||||
- Numeric columns: Right-aligned or center-aligned (header matches content)
|
||||
|
||||
**Header Row:**
|
||||
- Bold text
|
||||
- Shaded background (template's brand color)
|
||||
- White or contrasting text
|
||||
|
||||
**Consensus/Total Row:**
|
||||
- Bold text
|
||||
- Separator line above
|
||||
- Distinct background shading
|
||||
|
||||
**Width:** Fill designated section width completely.
|
||||
|
||||
For XML implementation, see [`xml-reference.md`](reference/xml-reference.md#table-implementation).
|
||||
|
||||
---
|
||||
|
||||
## Footnote Format
|
||||
|
||||
**Format:**
|
||||
```
|
||||
Sources: [Source 1] (Year), [Source 2] (Year).
|
||||
Notes: (1) [First note]; (2) [Second note].
|
||||
```
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Sources: Grand View Research (2024), Mordor Intelligence (2024), Markets and Markets (2023).
|
||||
Notes: (1) Excludes hardware revenue; (2) Includes both B2B and B2C segments.
|
||||
```
|
||||
|
||||
All superscript numbers (¹, ², ³) in slide body MUST have corresponding Notes entries.
|
||||
|
||||
---
|
||||
|
||||
## Logo Placement
|
||||
|
||||
- Use logo file provided in task materials
|
||||
- If no logo provided, flag to user: "[LOGO NOT PROVIDED - please supply company logo]"
|
||||
- Position: typically top-right, consistent size across slides, must not overlap content
|
||||
|
||||
---
|
||||
|
||||
## Data Requirements by Slide Type
|
||||
|
||||
For detailed data requirements, formatting principles, and example column headers for each slide type, see [`slide-templates.md`](reference/slide-templates.md#common-slide-types-and-data-requirements).
|
||||
|
||||
Common slide types covered: Market Definition, Market Sizing/TAM, Competitive Landscape, Financial Summary, Transaction Comparables.
|
||||
|
||||
---
|
||||
|
||||
## Final Quality Checklist
|
||||
|
||||
Before delivering the populated template, verify:
|
||||
|
||||
### Data Accuracy
|
||||
- [ ] All figures match original source documents
|
||||
- [ ] Calculated values verified against formulas (see [`calculation-standards.md`](reference/calculation-standards.md))
|
||||
- [ ] Years and time periods are correct
|
||||
- [ ] Company/competitor names spelled correctly
|
||||
- [ ] Same figures are identical across all slides where they appear
|
||||
|
||||
### Content Mapping
|
||||
- [ ] Every template section populated with appropriate data
|
||||
- [ ] No `[bracket]` placeholder text remaining
|
||||
- [ ] All source citations included in footnotes
|
||||
- [ ] Footnote numbers (¹²³) have corresponding Notes entries
|
||||
|
||||
### Formatting
|
||||
- [ ] Text readable against all backgrounds (sufficient contrast)
|
||||
- [ ] Tables are actual table objects (NOT pipe/tab-separated text)
|
||||
- [ ] Charts/tables fill designated areas (no thumbnails)
|
||||
- [ ] Bullet formatting consistent within each section
|
||||
- [ ] Font sizes match across same-level boxes
|
||||
- [ ] No content extends beyond slide boundaries
|
||||
- [ ] No placeholder boxes retained with data dumped inside
|
||||
- [ ] No colored instruction boxes in final output
|
||||
|
||||
### Template Compliance
|
||||
- [ ] Placeholder instruction boxes reformatted or removed
|
||||
- [ ] Formatting matches template style (colors, fonts)
|
||||
- [ ] Logo present and correctly positioned
|
||||
- [ ] Production formatting applied (dark text on light background for main content)
|
||||
|
||||
### Final Step
|
||||
- [ ] Recommend user validate in Microsoft PowerPoint before distribution (LibreOffice may render differently)
|
||||
@@ -0,0 +1,194 @@
|
||||
# Calculation Verification Reference
|
||||
|
||||
This file provides formulas and guidelines for verifying pre-calculated values in source data before populating templates. Source data should already contain calculated figures—use these formulas to verify accuracy.
|
||||
|
||||
## Contents
|
||||
|
||||
- [Key Verification Formulas](#key-verification-formulas)
|
||||
- [Consensus Methodology](#consensus-methodology)
|
||||
- [Rounding Guidelines](#rounding-guidelines)
|
||||
- [Verification Checklist](#verification-checklist)
|
||||
- [Red Flags to Investigate](#red-flags-to-investigate)
|
||||
|
||||
---
|
||||
|
||||
## Key Verification Formulas
|
||||
|
||||
### CAGR Projection
|
||||
|
||||
**Formula:**
|
||||
```
|
||||
Future Value = Present Value × (1 + CAGR)^n
|
||||
```
|
||||
|
||||
**Variables:**
|
||||
- Present Value: Current/base year market size
|
||||
- CAGR: Compound Annual Growth Rate (as decimal, e.g., 16.4% = 0.164)
|
||||
- n: Number of years between base and target year
|
||||
|
||||
**Verification example:**
|
||||
```
|
||||
Source claims: $22.1bn (2024) at 16.4% CAGR = $55.0bn (2030)
|
||||
|
||||
Verify: 22.1 × (1.164)^6 = 22.1 × 2.488 = 55.0 ✓
|
||||
```
|
||||
|
||||
**Calculating n (years):** Count years between base and target year. Examples: 2024→2030 = 6 years, 2025→2030 = 5 years.
|
||||
|
||||
### Valuation Multiples
|
||||
|
||||
**EV/Revenue:**
|
||||
```
|
||||
EV/Revenue Multiple = Enterprise Value ÷ Revenue
|
||||
Implied EV = Revenue × Multiple
|
||||
```
|
||||
|
||||
**EV/EBITDA:**
|
||||
```
|
||||
EV/EBITDA Multiple = Enterprise Value ÷ EBITDA
|
||||
Implied EV = EBITDA × Multiple
|
||||
```
|
||||
|
||||
**Verification example:**
|
||||
```
|
||||
Source claims: $436m deal at 9.7x revenue multiple on $45m revenue
|
||||
|
||||
Verify: 436 ÷ 45 = 9.69 ≈ 9.7x ✓
|
||||
```
|
||||
|
||||
### Market Share
|
||||
|
||||
**Formula:**
|
||||
```
|
||||
Market Share = (Segment Size ÷ Total Market Size) × 100
|
||||
```
|
||||
|
||||
**Verification example:**
|
||||
```
|
||||
Source claims: Online segment ($18bn) is 28% of total market ($65bn)
|
||||
|
||||
Verify: 18 ÷ 65 = 0.277 = 27.7% ≈ 28% ✓
|
||||
```
|
||||
|
||||
### Growth Rate
|
||||
|
||||
**Year-over-Year:**
|
||||
```
|
||||
YoY Growth = (Current Year - Prior Year) ÷ Prior Year × 100
|
||||
```
|
||||
|
||||
**CAGR from endpoints:**
|
||||
```
|
||||
CAGR = (End Value ÷ Start Value)^(1/n) - 1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Consensus Methodology
|
||||
|
||||
When source data contains multiple estimates, verify consensus calculations:
|
||||
|
||||
### Size Consensus (Range)
|
||||
|
||||
**Method:** Full min-max range across all sources
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Sources: $14.9bn, $18.3bn, $21.1bn, $21.2bn, $22.1bn
|
||||
Consensus: $15-22bn (rounded to nearest $1bn)
|
||||
```
|
||||
|
||||
### CAGR Consensus (Central Cluster)
|
||||
|
||||
**Method:** Exclude outliers (highest and lowest), use central cluster range
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Sources: 10.6%, 16.4%, 17.2%, 19.0%, 22.7%
|
||||
Exclude outliers: 10.6% (low), 22.7% (high)
|
||||
Central cluster: 16.4%, 17.2%, 19.0%
|
||||
Consensus: 16-19% or 16-17% (conservative)
|
||||
```
|
||||
|
||||
### Projection Consensus
|
||||
|
||||
**Method:** Apply consensus CAGR to midpoint of size range
|
||||
|
||||
**Example:**
|
||||
```
|
||||
Size range: $15-22bn → Midpoint: $18.5bn
|
||||
CAGR consensus: 16-17%
|
||||
At 16%: 18.5 × (1.16)^6 = $45.1bn
|
||||
At 17%: 18.5 × (1.17)^6 = $47.5bn
|
||||
Consensus projection: $45-48bn
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rounding Guidelines
|
||||
|
||||
These are **typical conventions** — adjust based on the magnitude of values and template style:
|
||||
|
||||
| Value Type | Typical Rounding | Example |
|
||||
|------------|------------------|---------|
|
||||
| Large market sizes ($10bn+) | Nearest $1bn | 18.47 → $18bn |
|
||||
| Smaller market sizes (<$10bn) | Nearest $0.5bn or $0.1bn | 2.3 → $2.5bn |
|
||||
| Size ranges | Match precision of sources | 14.9-22.1 → $15-22bn |
|
||||
| CAGR | Whole % or 0.5% | 16.4% → 16% or 16.5% |
|
||||
| Market share | Nearest 5% or match source | 27.7% → 25% or 30% |
|
||||
| Revenue ($m) | 1 decimal | 18.47 → $18.5m |
|
||||
| Multiples | 1 decimal | 9.688 → 9.7x |
|
||||
|
||||
**Rounding principles:**
|
||||
- Rounding should not materially change the figure — for smaller values, use finer precision
|
||||
- Consistency matters more than precision — use same rounding across similar figures
|
||||
- When creating ranges, round down for low end, round up for high end
|
||||
- For summary statistics (mean, median), match precision of input data
|
||||
|
||||
---
|
||||
|
||||
## Verification Checklist
|
||||
|
||||
Before using any calculated value from source data:
|
||||
|
||||
### Formula Verification
|
||||
- [ ] Projection uses correct CAGR formula: `PV × (1 + r)^n`
|
||||
- [ ] Multiples calculated as EV ÷ Metric (not reversed)
|
||||
- [ ] Growth rates use correct base year in denominator
|
||||
- [ ] Percentage shares sum to ~100% where applicable
|
||||
|
||||
### Input Verification
|
||||
- [ ] Base year figures match source documents
|
||||
- [ ] CAGR/growth rates match stated source methodology
|
||||
- [ ] Time periods (n) calculated correctly
|
||||
- [ ] Currency and units consistent ($bn vs $m)
|
||||
|
||||
### Output Verification
|
||||
- [ ] Calculated result matches source's stated figure
|
||||
- [ ] If mismatch, investigate methodology difference
|
||||
- [ ] Rounding applied consistently
|
||||
- [ ] Results are plausible (no order-of-magnitude errors)
|
||||
|
||||
### Consensus Verification
|
||||
- [ ] All sources included in range calculations
|
||||
- [ ] Outlier exclusion methodology documented
|
||||
- [ ] Midpoint calculations use correct averaging
|
||||
- [ ] Range bounds represent actual min/max or documented subset
|
||||
|
||||
---
|
||||
|
||||
## Red Flags to Investigate
|
||||
|
||||
**Projection mismatches:**
|
||||
- Calculated projection differs from source by >5%
|
||||
- Likely cause: Different base year, different CAGR, or rounding
|
||||
|
||||
**Multiple mismatches:**
|
||||
- Calculated multiple differs from source
|
||||
- Likely cause: Different metric definition (LTM vs. NTM, Revenue vs. Net Revenue)
|
||||
|
||||
**Consensus mismatches:**
|
||||
- Your consensus differs from source's consensus
|
||||
- Likely cause: Source excluded certain data points, different outlier treatment
|
||||
|
||||
**When in doubt:** Note the discrepancy in a footnote and show your calculation methodology.
|
||||
@@ -0,0 +1,262 @@
|
||||
# Formatting Standards Reference
|
||||
|
||||
This reference file contains general PowerPoint formatting guidance for pitch deck creation. These are best practices that should be adapted to the specific template being used.
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Visual Hierarchy and Layout](#visual-hierarchy-and-layout)
|
||||
2. [Text Formatting](#text-formatting)
|
||||
3. [Table Creation](#table-creation)
|
||||
4. [Chart and Image Handling](#chart-and-image-handling)
|
||||
5. [Data Visualization](#data-visualization)
|
||||
6. [Font Consistency](#font-consistency)
|
||||
7. [Template Adaptation](#template-adaptation)
|
||||
|
||||
---
|
||||
|
||||
## Visual Hierarchy and Layout
|
||||
|
||||
### Box and Section Layout
|
||||
|
||||
Slide layouts vary based on content requirements and template design. Common elements include:
|
||||
- Header sections with titles and subtitles
|
||||
- Content boxes with label sidebars
|
||||
- Tables for structured data
|
||||
- Charts for visual data representation
|
||||
- Footnote bars at slide bottom
|
||||
|
||||
The specific layout should follow the template provided. Common content types and their typical structures:
|
||||
- **Market definition slides**: Label boxes with bullet content + commentary sections
|
||||
- **TAM/sizing slides**: Metrics callouts + data tables + key takeaways
|
||||
- **Competitive analysis**: Comparison tables or matrices
|
||||
- **Financial summaries**: Charts with supporting data tables
|
||||
|
||||
### Alignment Principles
|
||||
|
||||
**Vertical alignment of parallel sections:**
|
||||
|
||||
Boxes that are vertically stacked should have consistent:
|
||||
- Left margin position
|
||||
- Bullet indentation
|
||||
- Text start position
|
||||
- Box width
|
||||
|
||||
Boxes that are horizontally adjacent should have consistent:
|
||||
- Top position
|
||||
- Height (where content allows)
|
||||
- Internal padding
|
||||
|
||||
---
|
||||
|
||||
## Text Formatting
|
||||
|
||||
### Bullet Point Structure
|
||||
|
||||
Avoid unstructured text dumps. Break content into scannable bullet points.
|
||||
|
||||
**Illustrative Correct Structure:**
|
||||
```
|
||||
✓ Consumer mobile and web language learning apps
|
||||
(Duolingo, Babbel, Memrise, Busuu)
|
||||
✓ B2B enterprise language training platforms
|
||||
(goFLUENT, Speexx, Learnship)
|
||||
✓ Online tutoring marketplaces
|
||||
(italki, Preply, Cambly)
|
||||
```
|
||||
|
||||
**Illustrative Incorrect Structure (Text Dump):**
|
||||
```
|
||||
Consumer mobile/web apps (Duolingo, Babbel, Memrise, Busuu)
|
||||
B2B enterprise platforms (Speexx, Rosetta Stone Enterprise)
|
||||
Online tutoring marketplaces (Preply, italki, Cambly)
|
||||
```
|
||||
|
||||
### Bullet Symbol Guidelines
|
||||
|
||||
| Context | Symbol | Usage |
|
||||
|---------|--------|-------|
|
||||
| Included/Positive | ✓ (checkmark) | Items within scope, features present |
|
||||
| Excluded/Negative | × (cross) | Items outside scope, features absent |
|
||||
| Neutral list | • (bullet) | General enumeration, commentary |
|
||||
| Numbered sequence | 1. 2. 3. | Process steps, rankings |
|
||||
| Sub-bullets | ‣ or – | Secondary points under main bullets |
|
||||
|
||||
Adapt symbol usage to match the template's existing conventions.
|
||||
|
||||
### Bullet Consistency
|
||||
|
||||
All bullets within a box/section should have identical formatting:
|
||||
- Same bullet symbol throughout the box (unless intentionally differentiated)
|
||||
- Same indent level for all primary bullets
|
||||
- Same bullet size
|
||||
- Same spacing between bullet and text
|
||||
- Same font size for all bullet text at same level
|
||||
|
||||
### Font Size Guidelines
|
||||
|
||||
These are typical ranges - adjust based on template specifications:
|
||||
|
||||
| Element | Typical Size (pt) | Style |
|
||||
|---------|-------------------|-------|
|
||||
| Slide Title | 40-48 | Bold |
|
||||
| Subtitle/Definition | 18-22 | Bold |
|
||||
| Section Headers | 14-16 | Regular |
|
||||
| Body Text/Bullets | 12-14 | Regular |
|
||||
| Table Headers | 10-12 | Bold |
|
||||
| Table Body | 9-11 | Regular |
|
||||
| Footnotes | 8-9 | Italic |
|
||||
|
||||
### Text Density Guidelines
|
||||
|
||||
- **Maximum 6-7 bullets** per content box (adjust based on space)
|
||||
- **Maximum 2 lines** per bullet point
|
||||
- **Parenthetical examples** on same line or indented below
|
||||
- **Avoid orphan words** - adjust line breaks to avoid single words on new lines
|
||||
|
||||
---
|
||||
|
||||
## Table Creation
|
||||
|
||||
### CRITICAL: Use Actual Table Objects
|
||||
|
||||
**Tables must be actual table objects, NOT text with tab spacing.**
|
||||
|
||||
Text with tabs will never align properly and looks unprofessional. Always create proper table objects.
|
||||
|
||||
### Table Structure Guidelines
|
||||
|
||||
1. **Column alignment**:
|
||||
- Text columns: Left-aligned (both header and content)
|
||||
- Numeric columns: Center-aligned or right-aligned
|
||||
- Headers should align with their column content
|
||||
|
||||
2. **Header row**:
|
||||
- Bold text
|
||||
- Shaded background (use template's brand color)
|
||||
- Contrasting text color for readability
|
||||
- Alignment matches column content alignment
|
||||
|
||||
3. **Alternating rows** (optional):
|
||||
- Light shading on alternate rows improves readability
|
||||
|
||||
4. **Summary/Total row**:
|
||||
- Bold text
|
||||
- Heavier top border (separator line)
|
||||
- Distinct background shading
|
||||
|
||||
5. **Table width**:
|
||||
- Fill the designated section width
|
||||
- Avoid tables floating in white space
|
||||
|
||||
### For XML implementation patterns, see [`xml-reference.md`](xml-reference.md#table-implementation)
|
||||
|
||||
---
|
||||
|
||||
## Chart and Image Handling
|
||||
|
||||
### Pasting Charts from Excel
|
||||
|
||||
When pasting charts from Excel:
|
||||
|
||||
1. **Paste the chart ONLY** - do not include source data tables
|
||||
2. **Resize to fill the designated area** - charts should not appear as tiny thumbnails
|
||||
3. **Maintain aspect ratio** - do not distort the chart
|
||||
4. **Verify readability** - axis labels, legends, data labels must be legible
|
||||
|
||||
### Pasting Tables from Excel
|
||||
|
||||
When pasting tables from Excel:
|
||||
|
||||
1. **Paste the formatted table ONLY** - exclude any source data or calculations
|
||||
2. **Resize to fill the designated area** - table should occupy its full section
|
||||
3. **Verify column widths** - adjust so text is not truncated
|
||||
4. **Check formatting preservation** - colors, borders, fonts may need adjustment
|
||||
|
||||
### Size Guidelines
|
||||
|
||||
**Minimum sizing principles:**
|
||||
- Charts: Should occupy a substantial portion of their designated area
|
||||
- Tables: Fill the designated section width completely
|
||||
- Images: Sized appropriately for context, never thumbnail-sized
|
||||
|
||||
**Indicators of undersized visuals (avoid these):**
|
||||
- Chart occupies small fraction of available space
|
||||
- Text labels are unreadable
|
||||
- Large empty areas surrounding the visual
|
||||
- Visual appears as a "thumbnail"
|
||||
|
||||
### Proper Sizing Workflow
|
||||
|
||||
1. Identify the target area dimensions
|
||||
2. Paste the chart/table
|
||||
3. Immediately resize to fill the target area
|
||||
4. Verify all text remains readable
|
||||
5. Adjust internal elements if needed (legend position, axis labels)
|
||||
|
||||
---
|
||||
|
||||
## Data Visualization
|
||||
|
||||
### Key Metrics Display
|
||||
|
||||
When displaying key metrics (e.g., TAM, CAGR, projections), consider showing relationships between values rather than listing them statically:
|
||||
|
||||
- **Visual flow indicators**: Shapes (arrows, chevrons, connectors) showing progression
|
||||
- **Size hierarchy**: Larger font for primary metrics, smaller for labels
|
||||
- **Spatial arrangement**: Position elements to show logical flow
|
||||
|
||||
### Arrow and Flow Indicators
|
||||
|
||||
If using arrows or flow indicators:
|
||||
- Use PowerPoint shape objects, not text characters
|
||||
- Do not use text-based arrows (→, ⟹) in the final presentation
|
||||
- Create arrows using PowerPoint's shape tools or via XML shape elements
|
||||
|
||||
**For XML implementation, see [`xml-reference.md`](xml-reference.md#arrow-shapes)**
|
||||
|
||||
---
|
||||
|
||||
## Font Consistency
|
||||
|
||||
### Cross-Box Font Consistency
|
||||
|
||||
All text boxes at the same hierarchy level should use identical font sizes.
|
||||
|
||||
**Same-level boxes that should match:**
|
||||
|
||||
| Box Type | Should Match With |
|
||||
|----------|-------------------|
|
||||
| "Segments Included" content | "Segments Excluded" content |
|
||||
| "Definition" content | "Scope Rationale" content |
|
||||
| Left column bullets | Right column bullets |
|
||||
| All label boxes | Each other |
|
||||
| All section headers | Each other |
|
||||
|
||||
### Verification Process
|
||||
|
||||
1. Identify all text boxes at the same hierarchy level
|
||||
2. Check font size of each box
|
||||
3. If any box differs, adjust all to match
|
||||
4. Default to the larger size if content fits; otherwise use the smaller size consistently
|
||||
|
||||
**Exception**: Sub-bullets or secondary text may use smaller font than primary bullets, but this must be consistent across ALL boxes.
|
||||
|
||||
---
|
||||
|
||||
## Template Adaptation
|
||||
|
||||
These standards should be adapted to match the specific template being used:
|
||||
|
||||
1. **Colors**: Use the template's brand colors rather than prescribing specific colors
|
||||
2. **Fonts**: Use the template's font family
|
||||
3. **Spacing**: Match the template's existing spacing conventions
|
||||
4. **Layout**: Follow the template's section structure
|
||||
|
||||
The key principles that remain constant regardless of template:
|
||||
- Text must be readable against its background
|
||||
- Tables must be actual table objects
|
||||
- Content should fill available space appropriately
|
||||
- Formatting should be consistent across parallel elements
|
||||
- Charts/images should be properly sized
|
||||
@@ -0,0 +1,308 @@
|
||||
# Content Mapping Reference
|
||||
|
||||
This file provides guidance for mapping source data to pitch deck template sections. The process is template-agnostic—these principles apply regardless of the specific template design.
|
||||
|
||||
## Contents
|
||||
|
||||
- [Template Analysis Process](#template-analysis-process)
|
||||
- [Content Mapping Workflow](#content-mapping-workflow)
|
||||
- [Common Slide Types and Data Requirements](#common-slide-types-and-data-requirements)
|
||||
- [Mapping Verification Checklist](#mapping-verification-checklist)
|
||||
- [Handling Data-Template Mismatches](#handling-data-template-mismatches)
|
||||
- [Template-Specific Adaptation](#template-specific-adaptation)
|
||||
|
||||
---
|
||||
|
||||
## Template Analysis Process
|
||||
|
||||
Before populating any template, analyze its structure:
|
||||
|
||||
### Step 1: Identify All Content Areas
|
||||
|
||||
Scan each slide for:
|
||||
- **Title/header placeholders** — Where slide titles go
|
||||
- **Subtitle/definition areas** — Secondary headers or definitions
|
||||
- **Content boxes** — Main content areas (may have label sidebars)
|
||||
- **Table placeholders** — Areas designated for tabular data
|
||||
- **Chart/visual areas** — Spaces for charts, diagrams, or images
|
||||
- **Metric callout boxes** — Highlighted key figures
|
||||
- **Footnote/source bars** — Bottom areas for citations and notes
|
||||
- **Logo placeholder** — Usually top-right corner
|
||||
|
||||
### Step 2: Note Template Conventions
|
||||
|
||||
Each template has its own style. Observe:
|
||||
- **Color scheme** — What colors are used for headers, backgrounds, accents?
|
||||
- **Font choices** — What fonts and sizes are already set?
|
||||
- **Box styling** — Do content boxes have sidebars, borders, or shading?
|
||||
- **Bullet styles** — What bullet symbols does the template use?
|
||||
- **Alignment patterns** — How are parallel sections aligned?
|
||||
|
||||
### Step 3: Identify Instruction vs. Output Areas
|
||||
|
||||
Templates often include guidance:
|
||||
- **Instruction boxes** — Colored boxes with guidance text (often yellow background, white text)
|
||||
- **Placeholder text** — Text in [brackets] indicating what to replace
|
||||
- **Example content** — Sample content showing expected format
|
||||
|
||||
**Key distinction**: Instruction boxes tell you what to do; they should be reformatted or removed in final output. Output areas are where your content goes.
|
||||
|
||||
---
|
||||
|
||||
## Content Mapping Workflow
|
||||
|
||||
### Step 1: Inventory Source Data
|
||||
|
||||
Create a list of all available data:
|
||||
- Market size figures and ranges
|
||||
- Growth rates (CAGR, YoY)
|
||||
- Company names and descriptions
|
||||
- Segment definitions
|
||||
- Financial metrics
|
||||
- Source citations and dates
|
||||
- Footnote content
|
||||
|
||||
### Step 2: Match Data to Template Sections
|
||||
|
||||
For each template section, identify:
|
||||
|
||||
| Template Section | Required Data | Source Location |
|
||||
|------------------|---------------|-----------------|
|
||||
| [Section name] | [Data needed] | [Where to find it] |
|
||||
|
||||
### Step 3: Identify Gaps
|
||||
|
||||
After mapping, note:
|
||||
- **Missing data** — Template requires data not in sources
|
||||
- **Extra data** — Sources contain data with no template home
|
||||
- **Format mismatches** — Data exists but in wrong format
|
||||
|
||||
### Step 4: Resolve Gaps Before Populating
|
||||
|
||||
- Missing data: Flag for user or search for additional sources
|
||||
- Extra data: Confirm if it should be excluded or if template needs adjustment
|
||||
- Format mismatches: Transform data to required format
|
||||
|
||||
---
|
||||
|
||||
## Common Slide Types and Data Requirements
|
||||
|
||||
These are typical data requirements for common slide types. Your specific template may vary—always follow the template's actual structure.
|
||||
|
||||
### Market Definition Slides
|
||||
|
||||
**Typical content areas:**
|
||||
- Segments included in scope (with examples/key players)
|
||||
- Segments excluded from scope (with examples)
|
||||
- Market definition text
|
||||
- Scope rationale/justification
|
||||
|
||||
**Data mapping considerations:**
|
||||
- Source data should clearly distinguish included vs. excluded segments
|
||||
- Key players should be mapped to their respective segments
|
||||
- Definition text should align with how sources define the market
|
||||
|
||||
**Data typically needed:**
|
||||
- List of market segments to include (with key player examples)
|
||||
- List of market segments to exclude (with examples)
|
||||
- Market definition text
|
||||
- Scope rationale or justification
|
||||
|
||||
**Formatting principle:** Parallel sections (included vs. excluded) should use matching formatting.
|
||||
|
||||
**Verification questions:**
|
||||
- Does every segment have the appropriate symbol (✓ for included, × for excluded)?
|
||||
- Are key players correctly assigned to segments?
|
||||
- Does the definition match the source methodology?
|
||||
|
||||
### Market Sizing / TAM Slides
|
||||
|
||||
**Typical content areas:**
|
||||
- Current market size (with year)
|
||||
- Growth rate (CAGR with period)
|
||||
- Future projection (with target year)
|
||||
- Source-by-source breakdown table
|
||||
- Consensus/summary figures
|
||||
- Key takeaways or insights
|
||||
|
||||
**Data typically needed:**
|
||||
- Market size figures with base year
|
||||
- Growth rates (CAGR with time period)
|
||||
- Projection figures with target year
|
||||
- Source citations for each data point
|
||||
|
||||
**Example column headers:** Source | [Base Year] Size | CAGR | [Target Year] Projection
|
||||
|
||||
**Formatting principle:** If showing multiple sources, include a consensus/summary row.
|
||||
|
||||
**Data mapping considerations:**
|
||||
- Multiple sources may have different estimates—map each to table rows
|
||||
- Consensus figures require calculation from individual sources
|
||||
- Projections should be verifiable using CAGR formula
|
||||
|
||||
**Verification questions:**
|
||||
- Do all source figures match original documents?
|
||||
- Is the consensus calculated correctly (not just copied from one source)?
|
||||
- Are projection years consistent across all figures?
|
||||
- Do CAGR-based projections match when manually verified?
|
||||
|
||||
### Competitive Landscape Slides
|
||||
|
||||
**Typical content areas:**
|
||||
- Comparison table with competitors as columns
|
||||
- Feature/capability rows
|
||||
- Financial metric rows (revenue, growth, market share)
|
||||
- Key observations or positioning notes
|
||||
|
||||
**Data typically needed:**
|
||||
- List of competitors to compare
|
||||
- Features or capabilities for each
|
||||
- Financial metrics (revenue, growth, market share) if available
|
||||
- Time period for financial data
|
||||
|
||||
**Formatting principle:** Subject company should be visually distinguished from competitors (e.g., bold text, different background color, border, or positioned in rightmost column).
|
||||
|
||||
**Data mapping considerations:**
|
||||
- Ensure all competitors from source data are included
|
||||
- Feature comparisons should use consistent criteria
|
||||
- Financial figures should be from comparable periods
|
||||
|
||||
**Verification questions:**
|
||||
- Are all competitors from the source data represented?
|
||||
- Is the subject company visually distinguished?
|
||||
- Are financial figures from the same time period?
|
||||
- Is the ✓/× usage consistent and accurate?
|
||||
|
||||
### Financial Summary Slides
|
||||
|
||||
**Typical content areas:**
|
||||
- Key metric callouts (headline figures)
|
||||
- Historical financials table (actuals)
|
||||
- Projected financials table (estimates)
|
||||
- Growth rates and margins
|
||||
- Optional trend charts
|
||||
|
||||
**Data typically needed:**
|
||||
- Historical financials (actuals) for recent years
|
||||
- Projected financials (estimates) for future years
|
||||
- Key metrics: Revenue, Growth %, Margins, EBITDA
|
||||
|
||||
**Example column headers:** Metric | FY[Year-2] | FY[Year-1] | FY[Year]A | FY[Year+1]E | FY[Year+2]E
|
||||
|
||||
**Formatting principle:** Clearly distinguish historical (A) from projected (E) data.
|
||||
|
||||
**Data mapping considerations:**
|
||||
- Clearly distinguish historical (A) from projected (E) data
|
||||
- Ensure metric definitions match source (Revenue vs. Net Revenue, EBITDA vs. Adjusted EBITDA)
|
||||
- Growth rates should be calculated consistently
|
||||
|
||||
**Verification questions:**
|
||||
- Are historical vs. projected periods clearly labeled?
|
||||
- Do calculated growth rates match source or manual calculation?
|
||||
- Are metric definitions consistent with source documents?
|
||||
|
||||
### Transaction Comparables Slides
|
||||
|
||||
**Typical content areas:**
|
||||
- Transaction table (date, target, acquirer, deal value)
|
||||
- Valuation multiples (EV/Revenue, EV/EBITDA)
|
||||
- Summary statistics (mean, median, high, low)
|
||||
- Implied valuation for subject company
|
||||
|
||||
**Data typically needed:**
|
||||
- Transaction details: Date, Target, Acquirer, Deal Value
|
||||
- Valuation multiples: EV/Revenue, EV/EBITDA
|
||||
- Subject company metrics for implied valuation
|
||||
|
||||
**Formatting principle:** Include summary statistics (Mean, Median, High, Low) for multiples.
|
||||
|
||||
**Data mapping considerations:**
|
||||
- Multiples should be calculated from transaction data, not just copied
|
||||
- Summary statistics require calculation across all transactions
|
||||
- Implied valuation applies multiples to subject company metrics
|
||||
|
||||
**Verification questions:**
|
||||
- Are all relevant transactions from the source included?
|
||||
- Are multiples calculated correctly (EV ÷ Metric)?
|
||||
- Do summary statistics cover all transactions in the table?
|
||||
- Is implied valuation clearly labeled as illustrative?
|
||||
|
||||
---
|
||||
|
||||
## Mapping Verification Checklist
|
||||
|
||||
Before moving to formatting, verify mapping completeness:
|
||||
|
||||
### Data Completeness
|
||||
- [ ] Every template placeholder has mapped source data
|
||||
- [ ] All source citations are recorded for footnotes
|
||||
- [ ] No placeholder [brackets] remain unmapped
|
||||
|
||||
### Data Accuracy
|
||||
- [ ] Figures match original source documents exactly
|
||||
- [ ] Years and time periods are correctly noted
|
||||
- [ ] Company names are spelled correctly
|
||||
- [ ] Calculated values (consensus, projections, multiples) verified
|
||||
|
||||
### Logical Consistency
|
||||
- [ ] Included vs. excluded segments are logically coherent
|
||||
- [ ] Historical data precedes projected data chronologically
|
||||
- [ ] Comparison data uses consistent time periods
|
||||
- [ ] Totals and subtotals sum correctly
|
||||
|
||||
### Source Attribution
|
||||
- [ ] Every data point can be traced to a source
|
||||
- [ ] Source names and publication years recorded
|
||||
- [ ] Footnote numbers assigned for special notes
|
||||
|
||||
---
|
||||
|
||||
## Handling Data-Template Mismatches
|
||||
|
||||
### Template Requires More Data Than Available
|
||||
|
||||
**Options:**
|
||||
1. Flag the gap explicitly for user review
|
||||
2. Mark section as "Data not available" with explanation
|
||||
3. Search for additional sources if appropriate
|
||||
4. Recommend template adjustment if data doesn't exist
|
||||
|
||||
**Do not:** Fabricate data or make unsupported estimates.
|
||||
|
||||
### Source Has More Data Than Template Accommodates
|
||||
|
||||
**Options:**
|
||||
1. Include most relevant/recent data points
|
||||
2. Summarize or aggregate where appropriate
|
||||
3. Add footnotes referencing additional available data
|
||||
4. Recommend template expansion if data is critical
|
||||
|
||||
### Data Format Doesn't Match Template Format
|
||||
|
||||
**Common transformations:**
|
||||
- Individual figures → Range (use min-max from sources)
|
||||
- Detailed breakdown → Summary category
|
||||
- Annual figures → CAGR (calculate from endpoints)
|
||||
- Absolute values → Percentages (calculate share)
|
||||
- Multiple sources → Consensus (apply methodology)
|
||||
|
||||
### Template Uses Different Terminology
|
||||
|
||||
**Resolution process:**
|
||||
1. Identify template term and source term
|
||||
2. Confirm they refer to the same concept
|
||||
3. Use template terminology in output
|
||||
4. Add footnote if clarification needed
|
||||
|
||||
---
|
||||
|
||||
## Template-Specific Adaptation
|
||||
|
||||
Remember: This guidance describes common patterns, not requirements. Always:
|
||||
|
||||
1. **Follow the template** — If template uses different section names, use those
|
||||
2. **Match template style** — Use template's existing fonts, colors, bullet styles
|
||||
3. **Preserve template structure** — Don't rearrange sections unless necessary
|
||||
4. **Respect template spacing** — Content should fit designated areas without overflow
|
||||
|
||||
The goal is to populate the template as designed, not to redesign it.
|
||||
@@ -0,0 +1,492 @@
|
||||
# PowerPoint XML Reference
|
||||
|
||||
This file contains XML patterns for programmatic PowerPoint editing. Use these patterns when working directly with OOXML format.
|
||||
|
||||
**Note:** Color values in examples (e.g., `E67E22`, `D35400`) are placeholders. Replace with your template's brand colors.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ When to Use This Reference
|
||||
|
||||
**Use python-pptx for:**
|
||||
- Creating new tables (handles cell structure and relationships automatically)
|
||||
- Adding text boxes
|
||||
- Inserting images
|
||||
- Most shape creation
|
||||
- Any operation where python-pptx provides an API
|
||||
|
||||
**Use direct XML editing only for:**
|
||||
- Modifying properties of existing elements that python-pptx doesn't expose
|
||||
- Fine-tuning cell formatting after table creation via python-pptx
|
||||
- Adjusting specific shape properties not available via the python-pptx API
|
||||
|
||||
**NEVER use direct XML for:**
|
||||
- Creating tables from scratch (relationship management is error-prone and will likely corrupt the file)
|
||||
- Initial shape creation (shape ID collision risk)
|
||||
- Anything you can accomplish via python-pptx
|
||||
|
||||
The XML patterns in this file are for **reference and targeted modifications**, not wholesale element construction.
|
||||
|
||||
---
|
||||
|
||||
## XML Editing Risks
|
||||
|
||||
Direct XML editing can corrupt PowerPoint files if not done carefully:
|
||||
- PowerPoint XML has interdependencies (relationship files, content types)
|
||||
- Invalid XML or missing relationships can corrupt the entire file
|
||||
- Shape IDs must be unique across each slide
|
||||
|
||||
**Always work on a backup copy** — never edit the original file directly.
|
||||
|
||||
---
|
||||
|
||||
## Contents
|
||||
- [Table Implementation](#table-implementation)
|
||||
- [Arrow Shapes](#arrow-shapes)
|
||||
- [Text Boxes](#text-boxes)
|
||||
- [Shapes with Fill](#shapes-with-fill)
|
||||
- [Image Insertion](#image-insertion)
|
||||
- [Connector Lines](#connector-lines)
|
||||
- [Unit Conversions](#unit-conversions)
|
||||
|
||||
---
|
||||
|
||||
## Table Implementation
|
||||
|
||||
### CRITICAL: Verify Tables Are Actual Table Objects
|
||||
|
||||
After creating any table, you MUST verify it is an actual table object, not text with separators.
|
||||
|
||||
**Programmatic verification (python-pptx):**
|
||||
```python
|
||||
for shape in slide.shapes:
|
||||
if shape.has_table:
|
||||
print(f"✓ Found table: {len(shape.table.rows)} rows, {len(shape.table.columns)} columns")
|
||||
```
|
||||
|
||||
**Visual verification (in exported image):**
|
||||
- Columns align perfectly regardless of content length
|
||||
- Cell borders are consistent
|
||||
- Selecting the table selects all cells as a unit
|
||||
|
||||
**Failure indicators — you have created TEXT, not a table:**
|
||||
- `|` characters visible between values
|
||||
- Columns misalign when content length varies
|
||||
- Tab characters (`\t`) used for spacing
|
||||
- Multiple text boxes arranged to look like a table
|
||||
|
||||
Text-based "tables" cannot be edited by the recipient, will misalign when fonts change, and signal amateur work. There is no acceptable use case for pipe/tab-separated tabular data in a pitch deck.
|
||||
|
||||
---
|
||||
|
||||
### Basic Table Structure
|
||||
|
||||
```xml
|
||||
<a:tbl>
|
||||
<a:tblPr firstRow="1" bandRow="1">
|
||||
<a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId>
|
||||
</a:tblPr>
|
||||
<a:tblGrid>
|
||||
<a:gridCol w="2000000"/> <!-- Source column - width in EMUs -->
|
||||
<a:gridCol w="1200000"/> <!-- 2024 Size column -->
|
||||
<a:gridCol w="1200000"/> <!-- CAGR column -->
|
||||
<a:gridCol w="1200000"/> <!-- 2030 Projection column -->
|
||||
</a:tblGrid>
|
||||
<!-- Row definitions follow -->
|
||||
</a:tbl>
|
||||
```
|
||||
|
||||
### Table Row with Cells
|
||||
|
||||
```xml
|
||||
<a:tr h="370840"> <!-- Row height in EMUs -->
|
||||
<a:tc>
|
||||
<a:txBody>
|
||||
<a:bodyPr/>
|
||||
<a:lstStyle/>
|
||||
<a:p>
|
||||
<a:pPr algn="l"/> <!-- Left alignment for text columns -->
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1000" b="0"/>
|
||||
<a:t>Grand View Research</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
</a:txBody>
|
||||
<a:tcPr/>
|
||||
</a:tc>
|
||||
<a:tc>
|
||||
<a:txBody>
|
||||
<a:bodyPr/>
|
||||
<a:lstStyle/>
|
||||
<a:p>
|
||||
<a:pPr algn="ctr"/> <!-- Center alignment for numeric columns -->
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1000"/>
|
||||
<a:t>22.1</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
</a:txBody>
|
||||
<a:tcPr/>
|
||||
</a:tc>
|
||||
<!-- Additional cells... -->
|
||||
</a:tr>
|
||||
```
|
||||
|
||||
### Header Row Styling
|
||||
|
||||
```xml
|
||||
<a:tr h="370840">
|
||||
<a:tc>
|
||||
<a:txBody>
|
||||
<a:bodyPr/>
|
||||
<a:lstStyle/>
|
||||
<a:p>
|
||||
<a:pPr algn="l"/>
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1000" b="1"> <!-- Bold for headers -->
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="FFFFFF"/> <!-- White text -->
|
||||
</a:solidFill>
|
||||
</a:rPr>
|
||||
<a:t>Source</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
</a:txBody>
|
||||
<a:tcPr>
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/> <!-- Orange background -->
|
||||
</a:solidFill>
|
||||
</a:tcPr>
|
||||
</a:tc>
|
||||
<!-- Additional header cells... -->
|
||||
</a:tr>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Arrow Shapes
|
||||
|
||||
### Right Arrow Shape
|
||||
|
||||
```xml
|
||||
<p:sp>
|
||||
<p:nvSpPr>
|
||||
<p:cNvPr id="10" name="Arrow Right"/>
|
||||
<p:cNvSpPr/>
|
||||
<p:nvPr/>
|
||||
</p:nvSpPr>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="3000000" y="2500000"/> <!-- Position in EMUs -->
|
||||
<a:ext cx="500000" cy="300000"/> <!-- Size in EMUs -->
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="rightArrow">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/> <!-- Arrow fill color -->
|
||||
</a:solidFill>
|
||||
<a:ln>
|
||||
<a:noFill/> <!-- No outline -->
|
||||
</a:ln>
|
||||
</p:spPr>
|
||||
</p:sp>
|
||||
```
|
||||
|
||||
### Down Arrow Shape
|
||||
|
||||
```xml
|
||||
<p:sp>
|
||||
<p:nvSpPr>
|
||||
<p:cNvPr id="11" name="Arrow Down"/>
|
||||
<p:cNvSpPr/>
|
||||
<p:nvPr/>
|
||||
</p:nvSpPr>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="2500000" y="3000000"/>
|
||||
<a:ext cx="300000" cy="500000"/>
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="downArrow">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/>
|
||||
</a:solidFill>
|
||||
</p:spPr>
|
||||
</p:sp>
|
||||
```
|
||||
|
||||
### Chevron Shape
|
||||
|
||||
```xml
|
||||
<p:sp>
|
||||
<p:nvSpPr>
|
||||
<p:cNvPr id="12" name="Chevron"/>
|
||||
<p:cNvSpPr/>
|
||||
<p:nvPr/>
|
||||
</p:nvSpPr>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="3000000" y="2500000"/>
|
||||
<a:ext cx="400000" cy="600000"/>
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="chevron">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/>
|
||||
</a:solidFill>
|
||||
</p:spPr>
|
||||
</p:sp>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Text Boxes
|
||||
|
||||
### Basic Text Box
|
||||
|
||||
```xml
|
||||
<p:sp>
|
||||
<p:nvSpPr>
|
||||
<p:cNvPr id="5" name="TextBox 4"/>
|
||||
<p:cNvSpPr txBox="1"/>
|
||||
<p:nvPr/>
|
||||
</p:nvSpPr>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="500000" y="1500000"/>
|
||||
<a:ext cx="4000000" cy="500000"/>
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="rect">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:noFill/>
|
||||
</p:spPr>
|
||||
<p:txBody>
|
||||
<a:bodyPr wrap="square" rtlCol="0">
|
||||
<a:spAutoFit/>
|
||||
</a:bodyPr>
|
||||
<a:lstStyle/>
|
||||
<a:p>
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1400" dirty="0"/>
|
||||
<a:t>Text content here</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
</p:txBody>
|
||||
</p:sp>
|
||||
```
|
||||
|
||||
### Text Box with Bullet Points
|
||||
|
||||
```xml
|
||||
<p:txBody>
|
||||
<a:bodyPr wrap="square">
|
||||
<a:spAutoFit/>
|
||||
</a:bodyPr>
|
||||
<a:lstStyle/>
|
||||
<a:p>
|
||||
<a:pPr marL="342900" indent="-342900">
|
||||
<a:buFont typeface="Wingdings" panose="05000000000000000000" pitchFamily="2" charset="2"/>
|
||||
<a:buChar char="ü"/> <!-- Checkmark character -->
|
||||
</a:pPr>
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1400" dirty="0"/>
|
||||
<a:t>First bullet point</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
<a:p>
|
||||
<a:pPr marL="342900" indent="-342900">
|
||||
<a:buFont typeface="Wingdings" panose="05000000000000000000" pitchFamily="2" charset="2"/>
|
||||
<a:buChar char="ü"/>
|
||||
</a:pPr>
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1400" dirty="0"/>
|
||||
<a:t>Second bullet point</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
</p:txBody>
|
||||
```
|
||||
|
||||
### Text with White Color (for dark backgrounds)
|
||||
|
||||
```xml
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1000" b="1" i="1" dirty="0">
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="FFFFFF"/> <!-- White text -->
|
||||
</a:solidFill>
|
||||
</a:rPr>
|
||||
<a:t>White text on colored background</a:t>
|
||||
</a:r>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Shapes with Fill
|
||||
|
||||
### Rectangle with Solid Fill
|
||||
|
||||
```xml
|
||||
<p:sp>
|
||||
<p:nvSpPr>
|
||||
<p:cNvPr id="20" name="Rectangle 19"/>
|
||||
<p:cNvSpPr/>
|
||||
<p:nvPr/>
|
||||
</p:nvSpPr>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="500000" y="2500000"/>
|
||||
<a:ext cx="1000000" cy="2000000"/>
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="rect">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/> <!-- Orange fill -->
|
||||
</a:solidFill>
|
||||
<a:ln w="12700"> <!-- Border width -->
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="D35400"/> <!-- Darker border -->
|
||||
</a:solidFill>
|
||||
</a:ln>
|
||||
</p:spPr>
|
||||
<p:txBody>
|
||||
<a:bodyPr rtlCol="0" anchor="ctr"/> <!-- Vertically centered text -->
|
||||
<a:lstStyle/>
|
||||
<a:p>
|
||||
<a:pPr algn="ctr"/> <!-- Horizontally centered -->
|
||||
<a:r>
|
||||
<a:rPr lang="en-US" sz="1600" b="1">
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="FFFFFF"/>
|
||||
</a:solidFill>
|
||||
</a:rPr>
|
||||
<a:t>Label Text</a:t>
|
||||
</a:r>
|
||||
</a:p>
|
||||
</p:txBody>
|
||||
</p:sp>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Image Insertion
|
||||
|
||||
### Adding Image to Slide
|
||||
|
||||
```xml
|
||||
<p:pic>
|
||||
<p:nvPicPr>
|
||||
<p:cNvPr id="99" name="Company Logo"/>
|
||||
<p:cNvPicPr>
|
||||
<a:picLocks noChangeAspect="1"/>
|
||||
</p:cNvPicPr>
|
||||
<p:nvPr/>
|
||||
</p:nvPicPr>
|
||||
<p:blipFill>
|
||||
<a:blip r:embed="rIdLogo"/> <!-- Reference to relationship ID -->
|
||||
<a:stretch>
|
||||
<a:fillRect/>
|
||||
</a:stretch>
|
||||
</p:blipFill>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="10800000" y="200000"/> <!-- Top-right position -->
|
||||
<a:ext cx="800000" cy="600000"/> <!-- Logo dimensions -->
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="rect">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
</p:spPr>
|
||||
</p:pic>
|
||||
```
|
||||
|
||||
### Adding Image Relationship
|
||||
|
||||
In `ppt/slides/_rels/slideN.xml.rels`:
|
||||
|
||||
```xml
|
||||
<Relationship Id="rIdLogo"
|
||||
Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
|
||||
Target="../media/logo.png"/>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Connector Lines
|
||||
|
||||
### Straight Connector
|
||||
|
||||
```xml
|
||||
<p:cxnSp>
|
||||
<p:nvCxnSpPr>
|
||||
<p:cNvPr id="15" name="Straight Connector 14"/>
|
||||
<p:cNvCxnSpPr>
|
||||
<a:cxnSpLocks/>
|
||||
</p:cNvCxnSpPr>
|
||||
<p:nvPr/>
|
||||
</p:nvCxnSpPr>
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="500000" y="2500000"/>
|
||||
<a:ext cx="5000000" cy="0"/> <!-- Horizontal line -->
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="line">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:ln w="12700">
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/>
|
||||
</a:solidFill>
|
||||
</a:ln>
|
||||
</p:spPr>
|
||||
</p:cxnSp>
|
||||
```
|
||||
|
||||
### Dashed Line
|
||||
|
||||
```xml
|
||||
<p:spPr>
|
||||
<a:xfrm>
|
||||
<a:off x="500000" y="4500000"/>
|
||||
<a:ext cx="5000000" cy="0"/>
|
||||
</a:xfrm>
|
||||
<a:prstGeom prst="line">
|
||||
<a:avLst/>
|
||||
</a:prstGeom>
|
||||
<a:ln w="12700">
|
||||
<a:solidFill>
|
||||
<a:srgbClr val="E67E22"/>
|
||||
</a:solidFill>
|
||||
<a:prstDash val="dash"/> <!-- Dashed style -->
|
||||
</a:ln>
|
||||
</p:spPr>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Unit Conversions
|
||||
|
||||
| Unit | EMUs per unit |
|
||||
|------|---------------|
|
||||
| 1 inch | 914400 |
|
||||
| 1 cm | 360000 |
|
||||
| 1 point | 12700 |
|
||||
| 1 pixel (96 DPI) | 9525 |
|
||||
|
||||
### Common Slide Dimensions (16:9)
|
||||
|
||||
- Width: 12192000 EMUs (13.333 inches)
|
||||
- Height: 6858000 EMUs (7.5 inches)
|
||||
|
||||
### Typical Element Positions
|
||||
|
||||
| Element | X Position | Y Position |
|
||||
|---------|------------|------------|
|
||||
| Logo (top-right) | 10800000 | 200000 |
|
||||
| Title | 342583 | 286603 |
|
||||
| Subtitle | 402591 | 1767390 |
|
||||
| Footer | 342583 | 6435334 |
|
||||
@@ -0,0 +1,72 @@
|
||||
# Process Letter
|
||||
|
||||
description: Draft process letters and bid instructions for sell-side M&A processes. Covers initial indication of interest (IOI) instructions, final bid procedures, and management meeting logistics. Triggers on "process letter", "bid instructions", "IOI letter", "bid procedures", "final round letter", or "management meeting invite".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Determine Letter Type
|
||||
|
||||
- **Initial process letter**: Sent with teaser/CIM to outline the process and IOI requirements
|
||||
- **IOI instructions**: Specific requirements for first-round indications of interest
|
||||
- **Second round / final bid letter**: Instructions for submitting binding offers after diligence
|
||||
- **Management meeting invitation**: Logistics for in-person management presentations
|
||||
|
||||
### Step 2: Initial Process Letter / IOI Instructions
|
||||
|
||||
**Header:**
|
||||
- Date, deal code name
|
||||
- "Confidential"
|
||||
- Addressed to prospective buyer
|
||||
|
||||
**Sections:**
|
||||
|
||||
1. **Introduction**: Brief overview of the opportunity and the seller's objectives
|
||||
2. **Process Overview**: Timeline, key dates, expected number of rounds
|
||||
3. **IOI Requirements**: What to include in the initial indication:
|
||||
- Proposed valuation range (enterprise value)
|
||||
- Consideration form (cash, stock, earnout, rollover)
|
||||
- Financing sources and certainty
|
||||
- Key due diligence requirements
|
||||
- Indicative timeline to close
|
||||
- Any conditions or contingencies
|
||||
- Brief description of the buyer and strategic rationale
|
||||
4. **Submission Details**: Where to send, deadline (date and time), format
|
||||
5. **Confidentiality Reminder**: Reference to NDA, data room access
|
||||
6. **Contact Information**: Banker contacts for questions
|
||||
|
||||
### Step 3: Final Bid / Second Round Letter
|
||||
|
||||
Additional requirements beyond IOI:
|
||||
|
||||
1. **Markup of purchase agreement**: Provide the draft SPA/APA and request markup
|
||||
2. **Detailed financing commitments**: Committed financing letters required
|
||||
3. **Remaining diligence items**: Specify what confirmatory diligence is expected
|
||||
4. **Exclusivity terms**: Duration and conditions of any exclusivity period
|
||||
5. **Regulatory analysis**: Antitrust filing requirements and timeline
|
||||
6. **Key personnel terms**: Employment agreements, compensation, rollover equity
|
||||
7. **Binding vs. non-binding**: Clarify what is binding at this stage
|
||||
8. **Evaluation criteria**: How bids will be evaluated (price, certainty, speed, fit)
|
||||
|
||||
### Step 4: Management Meeting Invitation
|
||||
|
||||
1. **Logistics**: Date, time, location (or video link), duration
|
||||
2. **Attendees**: Who from the company will present, who from the buyer should attend
|
||||
3. **Agenda**: Typical management presentation agenda (overview, financials, operations, growth, Q&A)
|
||||
4. **Ground rules**: No recording, confidentiality, questions format
|
||||
5. **Materials**: What will be distributed (presentation deck, data room access)
|
||||
6. **Follow-up**: Process for submitting additional questions after the meeting
|
||||
|
||||
### Step 5: Output
|
||||
|
||||
- Word document (.docx) with professional letter formatting
|
||||
- Firm letterhead placeholder
|
||||
- Track changes version for client review
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Process letters set the tone for the entire deal — be clear, professional, and organized
|
||||
- Deadlines should be firm but reasonable — typically 2-3 weeks for IOIs, 3-4 weeks for final bids
|
||||
- Always include the evaluation criteria — buyers want to know how they'll be judged
|
||||
- Coordinate with legal on any representations or commitments in the letter
|
||||
- Client should review and approve before sending — they may want to adjust tone or terms
|
||||
- Keep a log of who received each letter and when — this becomes the process tracker
|
||||
@@ -0,0 +1,385 @@
|
||||
---
|
||||
name: fsi-strip-profile
|
||||
description: |
|
||||
Creates professional investment banking strip profiles (company profiles) for pitch books, deal materials, and client presentations. Generates 1-4 information-dense slides with quadrant layouts, charts, and tables.
|
||||
---
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Clarify Requirements
|
||||
- **Ask the user**: Single-slide or multi-slide (3-4 slides)?
|
||||
- **Ask the user**: Any specific focus areas or topics to emphasize?
|
||||
- **Only after user confirms**, proceed to research
|
||||
|
||||
### 2. Research & Planning
|
||||
**Data Sources:**
|
||||
- **Primary**: Company filings (BamSEC, SEC EDGAR - "Item 1. Business", MD&A), investor presentations, corporate website
|
||||
- **Market data**: Bloomberg, FactSet, CapIQ (price, shares, market cap, net debt, EV, ownership)
|
||||
- **Estimates**: FactSet/CapIQ consensus for NTM revenue, EBITDA, EPS
|
||||
- **News**: Press releases from last 90 days, M&A activity, guidance changes
|
||||
|
||||
**Required Metrics:**
|
||||
- **Financials**: Revenue, EBITDA, margins (%), EPS, FCF for ±3 years
|
||||
- **Valuation**: Market Cap, EV, EV/Revenue, EV/EBITDA, P/E multiples
|
||||
- **Growth**: YoY growth rates (%)
|
||||
- **Ownership**: Top 5 shareholders with % ownership
|
||||
- **Segments**: Product mix and/or geographic mix (% breakdown)
|
||||
|
||||
**Normalization:**
|
||||
- Convert all amounts to consistent currency
|
||||
- Scale consistently ($mm or $bn throughout, not mixed)
|
||||
|
||||
**Before Building:**
|
||||
- Print outline to chat with 4-5 bullet points per item (actual numbers, no placeholders)
|
||||
- Print style choices: fonts, colors (hex codes), chart types for each data set
|
||||
- Get user alignment: "Does this outline and visual strategy align with your vision?"
|
||||
|
||||
### 3. Slide-by-Slide Creation
|
||||
**CRITICAL: You MUST create ONE slide at a time and get user approval before proceeding to the next slide.**
|
||||
|
||||
**For EACH slide:**
|
||||
1. Create ONLY this one slide with PptxGenJS
|
||||
2. **MANDATORY: Convert to image for review** - You MUST convert slides to images so you can visually verify them:
|
||||
```bash
|
||||
soffice --headless --convert-to pdf presentation.pptx
|
||||
pdftoppm -jpeg -r 150 -f 1 -l 1 presentation.pdf slide
|
||||
```
|
||||
3. **MANDATORY VISUAL REVIEW**: You MUST carefully examine the rendered slide image before proceeding:
|
||||
- **Text overlap check**: Scan every text element - do any labels, bullets, or titles collide with each other?
|
||||
- **Text cutoff check**: Is any text truncated at boundaries? Are all words fully visible?
|
||||
- **Chart boundary check**: Do charts stay within their containers? Are ALL axis labels fully visible?
|
||||
- **Quadrant integrity**: Does content in one quadrant bleed into adjacent quadrants?
|
||||
4. **If ANY overlap or cutoff is detected**: Fix immediately using these strategies in order:
|
||||
- **First**: Reduce font size (go down 1-2pt)
|
||||
- **Second**: Shorten text (abbreviate, remove less critical info)
|
||||
- **Third**: Adjust element positions or container sizes
|
||||
- **Re-render and verify again** - do not proceed until all text fits cleanly
|
||||
5. Show slide image to user with download link
|
||||
6. **STOP and wait for explicit user approval** before creating the next slide. Do NOT proceed until user confirms.
|
||||
|
||||
**YOU MUST CHECK FOR THESE SPECIFIC ISSUES ON EVERY PAGE:**
|
||||
- Table rows colliding with text below them
|
||||
- Chart x-axis labels cut off at bottom
|
||||
- Long bullet points wrapping into adjacent content
|
||||
- Quadrant content bleeding into adjacent quadrants
|
||||
- Title text overlapping with content below
|
||||
- Legend text overlapping with chart elements
|
||||
- Footer/source text colliding with main content
|
||||
|
||||
---
|
||||
|
||||
## Slide Format Requirements
|
||||
|
||||
### Information Density is Critical
|
||||
|
||||
**The #1 goal is MAXIMUM information density.** A busy executive should understand the entire company story in 30 seconds. Fill every quadrant to capacity.
|
||||
|
||||
**Per quadrant targets:**
|
||||
- **Company Overview**: 6-8 bullets minimum (HQ, founded, employees, CEO/CFO, market cap, ticker, industry, key stat)
|
||||
- **Business & Positioning**: 6-8 bullets (revenue drivers, products, market share %, competitive moat, customer count, geographic mix)
|
||||
- **Key Financials**: Table with 8-10 rows OR chart + 4-5 key metrics (Revenue, EBITDA, margins, EPS, FCF, growth rates, valuation multiples)
|
||||
- **Fourth quadrant**: 5-7 bullets (ownership %, recent M&A, developments, catalysts)
|
||||
|
||||
**Information packing techniques:**
|
||||
- Combine related facts: "HQ: Austin, TX; Founded: 2003; 140K employees"
|
||||
- Always include numbers: "$50B revenue" not "large revenue"
|
||||
- Add context: "EBITDA margin: 25% (vs. 18% industry avg)"
|
||||
- Include YoY changes: "Revenue: $125M (+28% YoY)"
|
||||
- Use percentages: "Enterprise: 62% of revenue"
|
||||
|
||||
**If a quadrant looks sparse, add more:**
|
||||
- Segment breakdowns with %
|
||||
- Geographic revenue splits
|
||||
- Customer concentration (top 10 = X%)
|
||||
- Recent contract wins with $ values
|
||||
- Guidance vs. consensus
|
||||
- Insider ownership %
|
||||
|
||||
**Line spacing - use single textbox per section:**
|
||||
```python
|
||||
def add_section(slide, x, y, w, header_text, bullets, header_size=10, bullet_size=8):
|
||||
"""Header + bullets in single textbox with natural spacing"""
|
||||
tb = slide.shapes.add_textbox(x, y, w, Inches(len(bullets) * 0.18 + 0.3))
|
||||
tf = tb.text_frame
|
||||
tf.word_wrap = True
|
||||
|
||||
# Header paragraph
|
||||
p = tf.paragraphs[0]
|
||||
p.text = header_text
|
||||
p.font.bold = True
|
||||
p.font.size = Pt(header_size)
|
||||
p.font.color.rgb = RGBColor(0, 51, 102)
|
||||
p.space_after = Pt(6) # Small gap after header
|
||||
|
||||
# Bullet paragraphs
|
||||
for bullet in bullets:
|
||||
p = tf.add_paragraph()
|
||||
p.text = bullet
|
||||
p.font.size = Pt(bullet_size)
|
||||
p.space_after = Pt(3)
|
||||
return tb
|
||||
```
|
||||
|
||||
**Key spacing principles:**
|
||||
- Put header + bullets in SAME textbox (no separate header textbox)
|
||||
- Use `space_after = Pt(6)` after header, `Pt(3)` between bullets
|
||||
- Don't hardcode gaps - let paragraph spacing handle it naturally
|
||||
- If content overflows, reduce font by 1pt rather than removing content
|
||||
|
||||
---
|
||||
|
||||
- **3-4 dense slides** - use quadrants, columns, tables, charts
|
||||
- **Bullets for ALL body text** - NEVER paragraphs. **Use ONE textbox per section with all bullets inside** - do NOT create separate textboxes for each bullet point. Use PptxGenJS bullet formatting:
|
||||
```javascript
|
||||
// CORRECT: Single textbox with bullet list - each array item becomes a bullet
|
||||
// Position in top-left quadrant (Company Overview) - after header with accent bar
|
||||
slide.addText(
|
||||
[
|
||||
{ text: 'Headquarters: Austin, Texas; Founded 2003', options: { bullet: { indent: 10 }, breakLine: true } },
|
||||
{ text: 'Employees: 140,000+ globally across 6 continents', options: { bullet: { indent: 10 }, breakLine: true } },
|
||||
{ text: 'CEO: Elon Musk; CFO: Vaibhav Taneja', options: { bullet: { indent: 10 }, breakLine: true } },
|
||||
{ text: 'Market Cap: $850B (#6 globally by market cap)', options: { bullet: { indent: 10 }, breakLine: true } },
|
||||
{ text: 'Segments: Automotive (85%), Energy (10%), Services (5%)', options: { bullet: { indent: 10 } } }
|
||||
],
|
||||
{ x: 0.45, y: 0.95, w: 4.5, h: 2.6, fontSize: 11, fontFace: 'Arial', valign: 'top', paraSpaceAfter: 6 }
|
||||
);
|
||||
|
||||
// WRONG: Multiple separate textboxes for each bullet - causes alignment issues
|
||||
// slide.addText('Headquarters: Austin', { x: 0.5, y: 1.0, bullet: true });
|
||||
```
|
||||
|
||||
**Bullet formatting tips:**
|
||||
- `bullet: { indent: 10 }` - controls bullet indentation (smaller = tighter)
|
||||
- `paraSpaceAfter: 6` - space after each paragraph in points
|
||||
- Pack multiple related facts into each bullet (e.g., "HQ: Austin; Founded: 2003")
|
||||
- Include specific numbers and percentages for information density
|
||||
- **Title case** for titles (not ALL CAPS), left-aligned
|
||||
- **Consistent fonts** everywhere including tables
|
||||
- **Company's brand colors** - YOU MUST research actual brand colors via web search before creating slides. Do not guess or assume colors.
|
||||
- **Follow brand guidelines if provided**
|
||||
|
||||
### Visual Reference
|
||||
See `examples/Nike_Strip_Profile_Example.pptx` for layout inspiration. Adapt colors to each company's brand.
|
||||
|
||||
---
|
||||
|
||||
## First Page Layout
|
||||
|
||||
Must pass "30-second comprehension test" for a busy executive.
|
||||
|
||||
### Slide Setup (CRITICAL)
|
||||
**Use 4:3 aspect ratio** (standard IB pitch book format):
|
||||
```javascript
|
||||
const pptx = new pptxgen();
|
||||
pptx.layout = 'LAYOUT_4x3'; // 10" wide × 7.5" tall - MUST USE THIS
|
||||
```
|
||||
|
||||
### Slide Coordinate System
|
||||
PptxGenJS uses inches. 4:3 slide = **10" wide × 7.5" tall**.
|
||||
- **x**: horizontal position from left edge (0 = left, 10 = right)
|
||||
- **y**: vertical position from top edge (0 = top, 7.5 = bottom)
|
||||
- **Content must stay within bounds** - leave 0.3" margin on all sides
|
||||
|
||||
### First Page Positioning (in inches)
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ y=0.2 Title: Company Name (Ticker) │
|
||||
├────────────────────────────┬────────────────────────────────────┤
|
||||
│ y=0.6 Company Overview │ y=0.6 Business & Positioning │
|
||||
│ x=0.3, w=4.7 │ x=5.0, w=4.7 │
|
||||
│ h=3.0 │ h=3.0 │
|
||||
├────────────────────────────┼────────────────────────────────────┤
|
||||
│ y=3.7 Key Financials │ y=3.7 Stock/Recent Developments │
|
||||
│ x=0.3, w=4.7 │ x=5.0, w=4.7 │
|
||||
│ h=3.5 │ h=3.5 │
|
||||
└────────────────────────────┴────────────────────────────────────┘
|
||||
y=7.5
|
||||
```
|
||||
|
||||
### Title Section (y=0.2)
|
||||
**Company Name (Ticker)** - Example: `Tesla, Inc. (TSLA)`
|
||||
```javascript
|
||||
slide.addText('Tesla, Inc. (TSLA)', { x: 0.3, y: 0.2, w: 9.4, h: 0.35, fontSize: 18, bold: true });
|
||||
```
|
||||
|
||||
### 4-Quadrant Layout (y=0.6 to y=7.2)
|
||||
|
||||
| Quadrant | Position | Content |
|
||||
|----------|----------|---------|
|
||||
| **1** | x=0.3, y=0.6, w=4.7, h=3.0 | **Company Overview**: HQ, founded, key stats, business summary (4-5 bullets) |
|
||||
| **2** | x=5.0, y=0.6, w=4.7, h=3.0 | **Business & Positioning**: revenue drivers, products/services, competitive position, growth drivers (4-5 bullets) |
|
||||
| **3** | x=0.3, y=3.7, w=4.7, h=3.5 | **Key Financials**: Revenue, EBITDA, margins, EPS, FCF + Valuation (Mkt Cap, EV, multiples) — **table OR chart, not both** |
|
||||
| **4** | x=5.0, y=3.7, w=4.7, h=3.5 | **For public companies**: 1Y stock price chart + top shareholders. **For private**: Recent developments or Ownership/M&A history |
|
||||
|
||||
### Font Sizes - USE THESE EXACT VALUES
|
||||
| Element | Size | Notes |
|
||||
|---------|------|-------|
|
||||
| Slide title | 24pt | Bold, company brand color |
|
||||
| Quadrant headers | 14pt | Bold, with accent bar |
|
||||
| Body/bullet text | 11pt | Regular weight |
|
||||
| Table text | 10pt | Use 9pt for dense tables |
|
||||
| Chart labels | 9pt | Keep labels short |
|
||||
| Source/footer | 8pt | Bottom of slide |
|
||||
|
||||
**CRITICAL: If text overflows, REDUCE font size by 1pt and re-render.**
|
||||
|
||||
### Visual Accents (REQUIRED)
|
||||
Each quadrant header MUST have a colored accent bar to the left:
|
||||
```javascript
|
||||
// Add accent bar for quadrant header
|
||||
slide.addShape(pptx.shapes.RECTANGLE, {
|
||||
x: 0.3, y: 0.6, w: 0.08, h: 0.25,
|
||||
fill: { color: 'E31937' } // Use company brand color
|
||||
});
|
||||
slide.addText('Company Overview', {
|
||||
x: 0.45, y: 0.6, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'
|
||||
});
|
||||
```
|
||||
|
||||
**Visual elements to include:**
|
||||
- Accent bars next to all section headers (brand color)
|
||||
- Thin horizontal divider line between top and bottom quadrants
|
||||
- Company logo in top-right corner if available
|
||||
- Subtle gridlines in tables (light gray #CCCCCC)
|
||||
|
||||
### First Page Formatting
|
||||
- **Font: Arial** (or as specified by user/brand guidelines)
|
||||
- **Quadrant titles**: Title Case (not ALL CAPS), e.g., "Company Overview" not "COMPANY OVERVIEW"
|
||||
- **Bullets**: Bold key terms at start, e.g., "**Market Position:** Leading global manufacturer..."
|
||||
- White background only — no boxes, fills, or shading
|
||||
- Section headers: bold text, follow brand guidelines for styling
|
||||
- All quadrants equally sized and aligned
|
||||
|
||||
---
|
||||
|
||||
## Subsequent Pages: Free-Form Layouts
|
||||
|
||||
- Two-column (40/60 or 50/50), full-slide charts, or sidebar layouts
|
||||
- Each page elaborates on first page content
|
||||
- Maintain consistent typography and color scheme
|
||||
- Suggested flow: Products/Market → Financial Analysis → Leadership
|
||||
|
||||
---
|
||||
|
||||
## Charts (Multi-Slide Profiles)
|
||||
|
||||
**For multi-slide profiles**: Include 2-3 actual PptxGenJS charts. Never use placeholder divs or static images.
|
||||
|
||||
**For single-slide profiles**: Use tables for financials (more space-efficient). Only add a chart if it replaces the table, not in addition to it.
|
||||
|
||||
| Data Type | Chart Type |
|
||||
|-----------|------------|
|
||||
| Revenue trends | Line or column (multi-year) |
|
||||
| Geographic breakdown | Horizontal bar |
|
||||
| Product mix | Pie with percentages |
|
||||
| Financial comparison | Column |
|
||||
| Stock price (1Y daily) | Line |
|
||||
|
||||
### Chart Code Examples
|
||||
|
||||
**Horizontal Bar (fits in bottom-right quadrant for 4:3 slide):**
|
||||
```javascript
|
||||
slide.addChart(pptx.charts.BAR, [{
|
||||
name: 'FY2024 Revenue by Region',
|
||||
labels: ['North America', 'EMEA', 'China', 'APLA'],
|
||||
values: [21.4, 13.6, 7.6, 6.7]
|
||||
}], {
|
||||
x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)
|
||||
barDir: 'bar', chartColors: ['FF6B35'], showValue: true,
|
||||
dataLabelFontSize: 10, catAxisLabelFontSize: 10, valAxisLabelFontSize: 10,
|
||||
dataLabelFormatCode: '$#,##0.0B',
|
||||
title: 'Revenue by Geography', titleFontSize: 12, titleBold: true
|
||||
});
|
||||
```
|
||||
|
||||
**Pie Chart (fits in bottom-right quadrant for 4:3 slide):**
|
||||
```javascript
|
||||
slide.addChart(pptx.charts.PIE, [{
|
||||
name: 'Product Mix',
|
||||
labels: ['Footwear', 'Apparel', 'Equipment'],
|
||||
values: [68, 29, 3]
|
||||
}], {
|
||||
x: 5.0, y: 4.1, w: 4.5, h: 3.0, // Fits in bottom-right quadrant (4:3)
|
||||
showPercent: true, showLegend: true, legendPos: 'r',
|
||||
dataLabelFontSize: 10, legendFontSize: 10,
|
||||
chartColors: ['FF6B35', '2C2C2C', '4A4A4A'],
|
||||
title: 'Revenue Mix FY24', titleFontSize: 12, titleBold: true
|
||||
});
|
||||
```
|
||||
|
||||
**Line Chart (full width for subsequent slides):**
|
||||
```javascript
|
||||
slide.addChart(pptx.charts.LINE, [{
|
||||
name: 'Revenue ($B)',
|
||||
labels: ['FY21', 'FY22', 'FY23', 'FY24', 'FY25E'],
|
||||
values: [44.5, 46.7, 48.5, 51.4, 54.2]
|
||||
}], {
|
||||
x: 0.3, y: 1.2, w: 9.4, h: 5.5, // Full width for 4:3 slide
|
||||
chartColors: ['FF6B35'], showValue: true, lineSmooth: true,
|
||||
dataLabelFontSize: 11, catAxisLabelFontSize: 11, valAxisLabelFontSize: 11,
|
||||
title: 'Revenue Trend & Forecast', titleFontSize: 14, titleBold: true
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Financial Data Formatting
|
||||
|
||||
**Always use native PptxGenJS tables or charts - NEVER plain text prose or HTML tables.**
|
||||
|
||||
Use `slide.addTable()` for financial data (fits in bottom-left quadrant for 4:3 slide):
|
||||
```javascript
|
||||
// Add header with accent bar first
|
||||
slide.addShape(pptx.shapes.RECTANGLE, {
|
||||
x: 0.3, y: 3.7, w: 0.08, h: 0.25, fill: { color: 'E31937' }
|
||||
});
|
||||
slide.addText('Key Financials & Valuation', {
|
||||
x: 0.45, y: 3.7, w: 4.5, h: 0.3, fontSize: 14, bold: true, fontFace: 'Arial'
|
||||
});
|
||||
|
||||
// Financial data table
|
||||
slide.addTable([
|
||||
[{ text: 'Metric', options: { bold: true, fill: '003366', color: 'FFFFFF' } },
|
||||
{ text: 'FY24', options: { bold: true, fill: '003366', color: 'FFFFFF' } },
|
||||
{ text: 'FY25E', options: { bold: true, fill: '003366', color: 'FFFFFF' } }],
|
||||
['Revenue', '$51.4B', '$54.2B'],
|
||||
['YoY Growth', '+6.0%', '+5.5%'],
|
||||
['EBITDA', '$8.9B', '$9.5B'],
|
||||
['EBITDA Margin', '17.3%', '17.5%'],
|
||||
['EPS', '$3.42', '$3.75'],
|
||||
['Market Cap', '$185B', '—'],
|
||||
['EV/EBITDA', '12.5x', '11.7x']
|
||||
], {
|
||||
x: 0.45, y: 4.1, w: 4.3, h: 3.0, // Below header in bottom-left quadrant
|
||||
fontFace: 'Arial', fontSize: 10,
|
||||
border: { pt: 0.5, color: 'CCCCCC' },
|
||||
valign: 'middle',
|
||||
colW: [1.8, 1.25, 1.25] // Column widths
|
||||
});
|
||||
```
|
||||
|
||||
❌ **Incorrect:** Plain text like `Note: FY2024 revenue growth +1.0%, Net Income $5.1B...`
|
||||
❌ **Incorrect:** HTML tables that don't convert properly to PowerPoint
|
||||
|
||||
For projections, use Bear/Base/Bull case scenarios in structured tables.
|
||||
|
||||
---
|
||||
|
||||
## Quality Checklist
|
||||
|
||||
### First Page
|
||||
- [ ] Title section with company name, ticker, industry
|
||||
- [ ] Exactly 4 equal quadrants below title
|
||||
- [ ] All bullets, no paragraphs, 1 line max each
|
||||
- [ ] Financials in table or chart (not both)
|
||||
|
||||
### All Slides
|
||||
- [ ] No text overflow or cutoff
|
||||
- [ ] Consistent fonts and colors throughout
|
||||
- [ ] Charts render correctly
|
||||
- [ ] No placeholder text - all actual data
|
||||
- [ ] Consistent scaling ($mm or $bn, not mixed)
|
||||
- [ ] Sources cited
|
||||
- [ ] Investment banking quality (GS/MS/JPM standard)
|
||||
|
||||
**Note:** Reference the **PPTX skill** for PowerPoint file creation.
|
||||
@@ -0,0 +1,77 @@
|
||||
# Teaser
|
||||
|
||||
description: Draft anonymous one-page company teasers for sell-side M&A processes. Creates a compelling summary without revealing the company's identity, designed to gauge buyer interest before NDA execution. Triggers on "teaser", "blind teaser", "anonymous profile", "one-pager for process", or "draft teaser for sell-side".
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Gather Inputs
|
||||
|
||||
- Company description (what they do, how they make money)
|
||||
- Sector / industry
|
||||
- Key financial metrics: revenue, EBITDA, growth rate, margins
|
||||
- Geographic footprint
|
||||
- Key selling points (3-5 highlights)
|
||||
- What to anonymize vs. disclose
|
||||
- Target buyer audience (strategic, financial, or both)
|
||||
|
||||
### Step 2: Teaser Structure
|
||||
|
||||
One page, professionally formatted:
|
||||
|
||||
**Header**
|
||||
- Deal code name (e.g., "Project [Name]")
|
||||
- Sector descriptor (e.g., "Leading Specialty Industrial Services Platform")
|
||||
- "Confidential — For Discussion Purposes Only"
|
||||
|
||||
**Company Description** (2-3 sentences)
|
||||
- What the company does, without naming it
|
||||
- Market position (e.g., "a leading provider of...", "a top-3 player in...")
|
||||
- Geography (region-level, not city-specific)
|
||||
|
||||
**Investment Highlights** (4-6 bullet points)
|
||||
- Market leadership / positioning
|
||||
- Revenue quality (recurring %, retention, diversification)
|
||||
- Growth profile and trajectory
|
||||
- Margin profile and expansion opportunity
|
||||
- Management team strength
|
||||
- Strategic value / synergy potential
|
||||
|
||||
**Financial Summary** (table or key metrics)
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Revenue | $XXM |
|
||||
| Revenue Growth | XX% CAGR |
|
||||
| EBITDA | $XXM |
|
||||
| EBITDA Margin | XX% |
|
||||
| Employees | XXX |
|
||||
|
||||
**Transaction Overview** (2-3 sentences)
|
||||
- What's being offered (100% sale, majority stake, growth equity)
|
||||
- Indicative timeline
|
||||
- Contact information for expressions of interest
|
||||
|
||||
### Step 3: Anonymization Check
|
||||
|
||||
Ensure the teaser doesn't inadvertently identify the company:
|
||||
- No company name, brand names, or product names
|
||||
- No specific city (use region: "Southeast US", "Midwest")
|
||||
- No named customers or partners
|
||||
- No employee count if it's too distinctive
|
||||
- Revenue ranges instead of exact figures if the sector is small
|
||||
- No logos, screenshots, or identifiable imagery
|
||||
|
||||
### Step 4: Output
|
||||
|
||||
- Word document (.docx) — one page, clean formatting
|
||||
- PDF version for distribution
|
||||
- Optional PowerPoint version (single slide)
|
||||
|
||||
## Important Notes
|
||||
|
||||
- The teaser's job is to generate interest, not close a deal — keep it tight and compelling
|
||||
- Less is more — a good teaser makes buyers want to sign the NDA to learn more
|
||||
- Use aspirational but accurate language — "leading", "differentiated", "high-growth" are fine if true
|
||||
- Include enough financial detail to qualify serious buyers but not so much that tire-kickers waste your time
|
||||
- Always have the client and legal review before distribution
|
||||
- Track who receives the teaser — it becomes the outreach log for the process
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "private-equity",
|
||||
"version": "0.1.0",
|
||||
"description": "Private equity deal sourcing and workflow tools: company discovery, CRM integration, and founder outreach",
|
||||
"author": {
|
||||
"name": "Anthropic FSI"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user