How to Analyse Stocks with Claude

Use Claude agents to analyse NVIDIA earnings and build an audited DCF.

Introduction

30 Second Summary

Public-company analysis can look convincing even when important claims have no source. A valuation can feel precise while hiding the assumptions that drive it.

In this project, you will create a source-linked NVIDIA analyst pack by coordinating specialized finance agents in Claude Code. The workflow uses primary-source research to expose evidence gaps before producing a simplified five-year discounted cash flow valuation.

What You'll Build

You'll open one compact analyst pack that lets you trace NVIDIA Q2 FY27 claims back to official sources before challenging the assumptions behind its implied value.

By the end of this project, you'll have:

  • A source-linked market brief in out/sector-brief.md that places NVIDIA's accelerated-computing position beside clearly labelled evidence gaps.
  • A sourced earnings review in out/earnings-note.md where you can trace NVIDIA Q2 FY27 performance, guidance, risks, and figures back to official sources.
  • A reviewable five-year DCF in out/nvda-dcf.xlsx where you can inspect inputs, formulas, sensitivities, and audit checks before explaining the implied value with out/dcf-summary.md.
  • Secret Mission: Stress-test NVIDIA's valuation with a bear-case workbook that explains how harsher assumptions change the implied value.

Do I need finance or coding experience?

You'll need a paid Claude plan plus a Mac running macOS 13.0 or later. The guided setup assumes no finance, programming, Excel, or paid market-data experience.

Before We Start

This opening checkpoint helps you commit to the final deliverable you most want to explain confidently. Your completed NVIDIA analysis pack is educational work that does not constitute investment advice.

Set Up Claude Code and Python

Your NVIDIA analyst pack depends on two local tools before the finance agents can work. Claude Code coordinates those agents.

The finance plugins need a supported Claude Code installation on macOS 13.0 or later. Python provides the predictable runtime that creates the workbook later.

In this step, get ready to:
  • Confirm that your Mac runs macOS 13.0 or later.
  • Set up Python 3.14.7 with working certificates.
  • Install Claude Code 2.1.270 with your paid Claude account.
Confirm macOS and prepare Python

Claude Code requires macOS 13.0 or later. Checking this requirement first prevents an unsupported installation path.

The complete Python version matters because patch releases can include compatibility fixes. This project uses the exact 3.14.7 runtime.

  • Click the Apple menu in the upper-left corner of your screen.
  • Select About This Mac.
  • Read the macOS version shown in the window.

✔️ I see macOS 13.0 or later

Your Mac meets the Claude Code system requirement. You can continue with the Python check.

ⓧ I see an older macOS version

Your Mac needs a supported macOS release before Claude Code can run reliably.

  • Open System Settings.
  • Select General in the sidebar.
  • Click Software Update.
  • Install an available update that brings your Mac to macOS 13.0 or later.
  • Return to About This Mac.
  • Confirm that the displayed version is macOS 13.0 or later.

Unable to install a supported macOS release?

Your Mac must support macOS 13.0 or later to continue with this project.

Ask for help checking your Mac model and available updates.

  • Press Cmd+Space to open Spotlight.
  • Type Terminal into Spotlight.
  • Press Return to open Terminal.
  • Check the installed Python version by running this command:
python3 --version

What does this command check?

The python3 command asks the default Python 3 executable to print its version. The result determines which setup path you follow.

✔️ I see the required Python version

Good progress. Python 3.14.7 is already available through python3.

ⓧ I see an older Python version

Your Mac has Python installed. This project needs the pinned 3.14.7 release for a consistent workbook environment.

Installing system software can feel significant. This installer adds the required Python runtime through the standard macOS installation flow.

  • Download the official Python 3.14.7 macOS installer.
  • Open python-3.14.7-macos11.pkg from your Downloads folder.
  • Complete the standard installer.
  • Open /Applications/Python 3.14/ in Finder.
  • Double-click Install Certificates.command.

The certificate window completes when you see Successfully installed certifi followed by update complete.

  • Close the temporary certificate Terminal window.
  • Close your original Terminal window.
  • Use Spotlight to open a fresh Terminal window.
  • Verify the new Python installation by running this command:
python3 --version

What does this verification prove?

A fresh Terminal reads the updated command path. The version result confirms which Python installation responds to python3.

You should now see Python 3.14.7 in the output.

Still seeing an older Python version?

Confirm that the installer completed before opening the fresh Terminal window. An existing Terminal window can retain its earlier command path.

Ask for help identifying which Python executable your Mac is using.

ⓧ Python is not installed

Your Mac needs Python 3.14.7 before the workbook tools can run.

The installer may request your Mac password because it adds Python to standard system locations. Your password stays inside the macOS permission prompt.

  • Download the official Python 3.14.7 macOS installer.
  • Open python-3.14.7-macos11.pkg from your Downloads folder.
  • Complete the standard installer.
  • Open /Applications/Python 3.14/ in Finder.
  • Double-click Install Certificates.command.

The certificate window completes when you see Successfully installed certifi followed by update complete.

  • Close the temporary certificate Terminal window.
  • Close your original Terminal window.
  • Use Spotlight to open a fresh Terminal window.
  • Verify the Python installation by running this command:
python3 --version

What does this verification prove?

The command checks that the installer made Python available through python3. The printed version confirms the installation that your shell can use.

You should now see Python 3.14.7 in the output.

Python command still unavailable?

Confirm that the package installer reached its completion screen. Reopen Terminal only after the installer finishes.

Ask for help checking the Python installation path.

Install Claude Code 2.1.270

Claude Code provides the terminal session where you use the finance agents later. Pinning the release keeps the plugin workflow consistent throughout the project.

Why Claude Code for this project?

Claude Code can coordinate plugin agents while working with local source files. Python provides the separate workbook-writing path without requiring a desktop spreadsheet app.

  • Check whether Claude Code is already installed by running this command:
claude --version

What does this command check?

The claude executable prints its installed release. The result tells you whether the pinned version is ready.

✔️ I see the required Claude Code version

Claude Code 2.1.270 is already installed. Continue to authentication below.

ⓧ I see a different version

The installed release differs from the project pin. The official installer can set Claude Code to 2.1.270.

This installation updates the Claude Code command on your Mac. Your paid Claude account is connected separately during authentication.

  • Install the pinned Claude Code release by running this command:
curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.270

What does this command do?

The command downloads Anthropic's official installer. It passes 2.1.270 as the release to install.

  • Close the current Terminal window after the installer completes.
  • Use Spotlight to open a fresh Terminal window.
  • Verify the installed release by running this command:
claude --version

What does this verification prove?

The version output confirms that your fresh shell can find the installed Claude Code executable. It should include 2.1.270.

That is the pinned Claude Code release ready for authentication.

Still seeing a different version?

Confirm that the installer completed before you opened the fresh Terminal window. A previously open shell can keep an older executable path.

Ask for help interpreting your installation output.

ⓧ Claude command not found

Claude Code needs to be installed before you can authenticate your paid account.

The installer adds the Claude Code command to your Mac. It leaves the project workspace for the next step.

  • Install the pinned Claude Code release by running this command:
curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.270

What does this command do?

The command downloads Anthropic's official installer. It requests the exact 2.1.270 release.

  • Close the current Terminal window after the installer completes.
  • Use Spotlight to open a fresh Terminal window.
  • Verify the installation by running this command:
claude --version

What does this verification prove?

The version output confirms that Terminal can find Claude Code. It should include 2.1.270.

Claude Code is now installed at the project release.

Claude command still unavailable?

Confirm that your internet connection stayed active until the installer completed. Open a fresh Terminal window before checking again.

Ask for help with the installation output.

Authenticate and verify the tools

Installation makes Claude Code available locally. Authentication connects that installation to your existing paid Claude account.

  • Start Claude Code by running this command:
claude

What happens when Claude Code starts?

Claude Code begins an interactive session. On the first run it opens a browser flow for account authentication.

  • Follow the browser prompts to authenticate.
  • Sign in with your existing paid Claude account.
  • Return to Claude Code after the browser confirms authentication.

That is the account step complete. Claude Code is now installed and authenticated for the finance-agent workflow.

Browser authentication not completing?

Confirm that your internet connection is active. Check that the browser is using the paid Claude account required for Claude Code.

Ask for help with the sign-in flow.

  • Return to your shell by entering this Claude Code session command:
/exit

What does this session command do?

The /exit session command closes Claude Code. It returns you to the regular Terminal prompt for the remaining checks.

  • Confirm that Python's package manager is available by running this command:
python3 -m pip --version

What does this pip check prove?

Python runs its bundled pip module. A version line confirms that the package manager is ready for the workbook library in the next step.

You should see a pip version line with a Python installation location.

Pip check not working?

Confirm that your Python installation completed through the official macOS package. Run the certificate installer before checking pip again.

Ask for help diagnosing the Python package manager.

  • Run the Claude Code installation diagnostic with this command:
claude doctor

What does the diagnostic check?

The diagnostic reviews your Claude Code installation. Its report helps identify local configuration problems before plugins are added.

Review the diagnostic report for a healthy Claude Code setup.

Diagnostic reports a problem?

Confirm that browser authentication completed. Confirm that the pinned version appears in the earlier version check.

Ask for help interpreting the diagnostic report.

Before the final check, which two pinned versions do you expect Terminal to report?

  • Verify both tools together by running this command:
claude --version && python3 --version

What does the final command prove?

The first check prints the installed Claude Code release. The second check runs only after the first succeeds.

Together they confirm that both pinned tools are available in the same Terminal environment.

You should see Claude Code 2.1.270 on the first line. You should see Python 3.14.7 on the second line.

Setup checkpoint

  • Claude Code is installed at version 2.1.270. It is authenticated with your paid Claude account.
  • Python 3.14.7 is installed and available as python3.
  • Pip is available through Python. Python certificates are configured.

🙋‍♀️ One version does not match?

Return to the matching setup tab above. Reopen Terminal after completing the installer.

Ask for help comparing both version results.

Your local tools are ready for the NVIDIA analysis pack. Next, you will create the controlled workspace and load its finance agents.

Load Finance Agents and Sources

Claude Code is pinned to 2.1.270. Python 3.14.7 is ready too.

The finance agents need a controlled workspace. A fixed local source pack keeps their research inside the same official NVIDIA evidence.

In this step, get ready to:
  • Create an isolated Python environment inside the analysis workspace.
  • Download the fixed NVIDIA Q2 FY27 source pack.
  • Install the three pinned finance agents at User scope.
Create the isolated workspace

A virtual environment isolates project packages from the rest of your Mac. The workspace gives evidence files a separate home from later analysis outputs.

  • Switch back to the Terminal session from the setup step.
  • Set up the project workspace by running these commands:
mkdir -p ~/Documents/claude-stock-analysis/source ~/Documents/claude-stock-analysis/out
cd ~/Documents/claude-stock-analysis

What do these commands do?

  • The mkdir command creates the source folder plus the out folder.
  • The cd command makes claude-stock-analysis the current Terminal directory.
  • Confirm the workspace folders exist by running:
ls

What does this check prove?

The command lists the contents of your current directory. It confirms that the workspace contains both required folders.

You should see out plus source in the output. That is a solid start because your analysis now has dedicated locations for evidence and generated work.

  • Create the project environment by running these commands:
python3 -m venv .venv
source .venv/bin/activate

What do these commands do?

  • The first command creates a Python environment inside .venv.
  • The second command activates that environment for the current Terminal session.

You should see (.venv) at the start of your Terminal prompt. This confirms the isolated environment is active.

Extra for Experts: Why Activate the Environment?

Activation places the executables inside .venv first in the shell's search path. Package resolution now stays tied to this workspace.

🙋‍♀️ Don't see (.venv) in your prompt?

Confirm your Terminal is inside ~/Documents/claude-stock-analysis. Re-enter the activation command from the code block above.

If the environment still does not activate, ask for help with the Terminal output.

  • Install the pinned workbook library by running:
pip install openpyxl==3.1.5
pip show openpyxl

What do these commands do?

  • The first command installs openpyxl version 3.1.5 inside the active environment.
  • The second command reports details for the installed package.

You should see openpyxl package details containing version 3.1.5.

Package installation failed?

Check that (.venv) still appears in your prompt. Confirm that your Mac has an active internet connection before trying the installation again.

Share the final lines of the installation output when you ask for package installation help.

Download the fixed NVIDIA source pack

A fixed source pack creates a clear boundary for primary-source research. Both pages are official SEC exhibits filed by NVIDIA for Q2 FY27.

  • Download both official NVIDIA Q2 FY27 pages by running these commands:
curl -L -o source/nvda-q2-fy27-earnings.html https://www.sec.gov/Archives/edgar/data/1045810/000104581026000073/q2fy27pr.htm
curl -L -o source/nvda-q2-fy27-cfo-commentary.html https://www.sec.gov/Archives/edgar/data/1045810/000104581026000073/q2fy27cfocommentary.htm

What do these commands do?

  • The curl command follows each SEC link if the site redirects the request.
  • The first download saves NVIDIA's official Q2 FY27 earnings release as source/nvda-q2-fy27-earnings.html.
  • The second download saves NVIDIA's official CFO commentary as source/nvda-q2-fy27-cfo-commentary.html.

You should see transfer progress for both downloads. Each completed transfer writes one page into the source folder.

Before you check, which two filenames should the fixed source pack contain?

  • List the downloaded source files by running:
ls source

What does this check prove?

This command displays the files available to the finance agents. The result confirms that both official pages are stored locally.

You should see nvda-q2-fy27-earnings.html plus nvda-q2-fy27-cfo-commentary.html.

Missing one of the source files?

Confirm that your Terminal is inside ~/Documents/claude-stock-analysis. Check your internet connection before repeating the missing download command.

If a file still does not appear, ask for help checking the download.

Install the pinned finance agents

Plugins extend Claude Code with specialized workflows. The Anthropic Financial Services marketplace supplies the three agents used throughout this project.

The pinned commit 90912d92c73e6fec9176de510976bbdf35e92fa6 fixes the plugin source to one repository revision. User scope makes the installed agents available to your Claude Code account.

  • Return to the activated project Terminal session.
  • Launch Claude Code from the workspace by running:
claude

What does this command do?

Claude Code starts with ~/Documents/claude-stock-analysis as its workspace. This gives the session access to the local source pack.

You should see the Claude Code prompt open. The session is now attached to your NVIDIA analysis workspace.

  • Add the pinned Financial Services marketplace by entering:
/plugin marketplace add https://github.com/anthropics/financial-services.git#90912d92c73e6fec9176de510976bbdf35e92fa6

What does this command do?

This registers the Anthropic Financial Services repository as a Claude Code plugin marketplace. The commit hash keeps discovery tied to the pinned revision.

Claude Code should confirm that the marketplace was added. You can now discover its finance plugins.

  • Open the plugin manager by entering:
/plugin

What does this command do?

The plugin manager separates available plugins from installed plugins. It also lets you choose the installation scope.

  • Select Discover.
  • Select Market Researcher.

Claude Code shows the plugin details before installation. This lets you review what the agent adds.

  • Select Install.
  • Choose User when Claude Code asks for the installation scope.

You should see Market Researcher listed as installed.

  • Return to Discover.
  • Select Earnings Reviewer.

Claude Code shows the Earnings Reviewer plugin details.

  • Select Install.
  • Choose User when Claude Code asks for the installation scope.

You should see Earnings Reviewer listed as installed.

  • Return to Discover.
  • Select Model Builder.

Claude Code shows the Model Builder plugin details.

  • Select Install.
  • Choose User when Claude Code asks for the installation scope.

You should see Model Builder listed as installed.

Before the final check, which three specialist names do you expect to find under Installed?

  • Select Installed in the plugin manager.

You should see Market Researcher, Earnings Reviewer, plus Model Builder. Each plugin should show User scope.

The earlier ls source check proves that the two Microsoft pages are local. The Installed view proves that the three finance agents are ready.

Missing a finance plugin?

Confirm that the Financial Services marketplace appears in the plugin manager. Re-enter the pinned marketplace command above if the marketplace is absent.

If one agent remains unavailable, ask for help with the plugin manager.

You now have the complete research workspace with two fixed Microsoft sources plus three specialist agents. Next, you'll use Market Researcher to draft the first Microsoft-centered competitive brief.

Build a Market Brief

Your controlled source pack is ready. The three finance agents are available in Claude Code.

The Market Researcher agent can create a Microsoft-centered competitive brief from the official earnings page.

A single company's disclosures cannot substantiate a complete sector map or peer-multiples spread. This first pass makes those evidence gaps visible before a polished answer can hide them.

In this step, get ready to:
  • Invoke the Market Researcher agent in Claude Code.
  • Create an issuer-only market brief from the official earnings page.
  • Audit the brief for visible evidence gaps.
Set the brief's evidence boundary

A strict source boundary keeps the agent's conclusions traceable. It also reveals where the available evidence ends.

Use a Strict Brief Contract

  • Source boundary: only source/msft-fy26-q4-earnings.html.
  • Output: out/sector-brief.md.
  • Coverage: Microsoft's reported segments.
  • Coverage: strategic growth drivers.
  • Coverage: named competitive pressures.
  • Coverage: possible peers.
  • Citation rule: every reported number cites the source filename.
  • Gap rule: unavailable market sizes appear under Evidence Gaps as [UNSOURCED].
  • Gap rule: unavailable market shares appear under Evidence Gaps as [UNSOURCED].
  • Gap rule: unavailable peer multiples appear under Evidence Gaps as [UNSOURCED].

💡 Why Use Market Researcher Here?

Market Researcher normally supports sector or thematic research. The narrow source rule limits this task to competitive framing that Microsoft supports directly.

Possible peers remain hypotheses at this stage. The brief cannot calculate a credible peer spread without comparable data from those companies.

  • Switch back to the Claude Code session from earlier.
  • Type @ in the Claude Code input.
  • Select Market Researcher from the suggestions.
  • Enter one message that applies every requirement in the brief contract above.

Before you submit the message, do you expect one issuer page to support every sector statistic the brief would normally need?

  • Submit the message to start the first pass.
  • Approve the file write if Claude Code requests permission.

When the agent finishes, out/sector-brief.md should exist. The file should contain useful Microsoft context alongside visible evidence gaps.

Can't Find the New Brief?

  • Check that you selected the Market Researcher agent before submitting the request.
  • Check that the source path is exactly source/msft-fy26-q4-earnings.html.
  • Ask the agent to save its finished brief at out/sector-brief.md.

Help me create the market brief with the installed Market Researcher agent.

Audit the evidence gaps

An evidence audit separates supported issuer facts from attractive claims that the source cannot prove. Precision only helps when a reader can trace it.

How to Classify Each Claim

A reported number belongs in the company-supported analysis when its citation points to the earnings source filename. A broader sector claim belongs in Evidence Gaps when the source pack lacks the required market or peer data.

Possible peers can still guide later research. Their valuations remain unsupported until comparable primary evidence is available.

  • Ask Claude Code to show the contents of out/sector-brief.md.
  • Read the company-supported sections.
  • Compare each reported number with its source-filename citation.
  • Locate the Evidence Gaps section.
  • Identify the unavailable market-size claims.
  • Identify the unavailable market-share claims.
  • Identify the unavailable peer-multiple claims.
  • Keep every unsupported item visible with its [UNSOURCED] marker.

You should find that the earnings page supports a Microsoft-centered competitive context. It does not provide enough evidence for complete sector statistics or a peer-multiples spread.

That shortfall is intentional. The brief now shows readers exactly where the evidence stops.

Verify the completed brief

The final check tests both usefulness and restraint. A successful brief explains what the issuer disclosed while preserving every material evidence gap.

Before the final check, do you expect the brief to look complete or to show clear limits around unsupported sector data?

  • Ask Claude Code to open out/sector-brief.md.
  • Confirm the brief describes Microsoft's reported segments.
  • Confirm the brief describes strategic growth drivers.
  • Confirm the brief names competitive pressures.
  • Confirm the brief suggests possible peers.
  • Confirm every reported number cites source/msft-fy26-q4-earnings.html.
  • Confirm the Evidence Gaps section uses [UNSOURCED] for unavailable market sizes, market shares, or peer multiples.

You should see a useful Microsoft-centered brief with traceable numbers. You should also see an Evidence Gaps section that preserves the missing sector evidence.

You have your first analysis artifact. Its visible limits make it more trustworthy than a polished brief filled with unsupported estimates.

Missing an Evidence Gap?

  • Ask the same Market Researcher agent to revise the brief using only the original earnings source.
  • Ask the agent to move unsupported market sizes into Evidence Gaps.
  • Ask the agent to move unsupported market shares into Evidence Gaps.
  • Ask the agent to move unsupported peer multiples into Evidence Gaps.
  • Require each unavailable claim to use the literal [UNSOURCED] marker.

Help me correct unsupported claims in my market brief.

Your market brief now distinguishes issuer-supported context from missing evidence. Next up, you'll turn the fixed source pack into a traceable earnings review.

Create an Earnings Review

Your first-pass market brief did something useful: it kept its [UNSOURCED] evidence gaps visible. Those gaps show the limit of a single company disclosure.

This step uses the Earnings Reviewer agent in Claude Code to produce a focused Microsoft FY26 Q4 note. The agent will ground its conclusions in primary-source research from the fixed source pack.

In this step, get ready to:
  • Create a Microsoft FY26 Q4 earnings review from both fixed source files.
  • Label unavailable consensus or prior-estimate fields with [UNSOURCED].
  • Audit every quantitative claim before retaining conclusions from the market brief.
Draft the source-bound earnings note

The press release provides reported results. The transcript provides management commentary.

Keeping the analysis inside those two files creates a clear evidence boundary. Unsupported benchmarks stay visible instead of becoming plausible-looking facts.

  • Switch back to the Claude Code session running from ~/Documents/microsoft-agent-analysis.
  • Type @ in the Claude Code prompt field.
  • Select Earnings Reviewer from the typeahead.
  • Submit the source-bound review request by pasting this prompt:
Use only `source/msft-fy26-q4-earnings.html` and `source/msft-fy26-q4-transcript.html`. Do not use external connectors or outside facts.

Create `out/earnings-note.md` as a Microsoft FY26 Q4 earnings review.

Include:
- A headline read.
- An actual-versus-prior-year table.
- Reported revenue.
- Reported operating income.
- Reported diluted EPS.
- Reported cash from operations.
- Reported additions to property and equipment.
- Segment trends.
- Management guidance.
- Three thesis-relevant risks.

Add a traceable source reference for every quantitative claim. Label unavailable consensus or prior-estimate fields `[UNSOURCED]`. Write the completed review to `out/earnings-note.md`.

How Does This Prompt Control the Review?

  • The two file paths establish the complete evidence boundary for the note.
  • The required sections give each reported result a defined place in the review.
  • The [UNSOURCED] marker preserves unavailable benchmarks as evidence gaps.
  • The source-reference rule makes every quantitative claim traceable.
  • Allow Earnings Reviewer to complete the request.
  • Read the agent's completion message in the Claude Code session.

Good progress. You should see confirmation that out/earnings-note.md was created from the two fixed source files.

Was the Earnings Note Not Created?

  • Check that you selected Earnings Reviewer from the @ typeahead.
  • Check that the prompt names source/msft-fy26-q4-earnings.html exactly.
  • Check that the prompt names source/msft-fy26-q4-transcript.html exactly.

Help me diagnose why Earnings Reviewer did not create the requested file.

Audit the note against both sources

A polished earnings note can still carry an unsupported conclusion from the earlier market brief. This audit keeps only conclusions that the official source pack can support.

  • Type @ in the Claude Code prompt field.
  • Select Earnings Reviewer from the typeahead.
  • Submit the cross-note audit request by pasting this prompt:
Compare `out/earnings-note.md` with `out/sector-brief.md`.

Check every retained conclusion against `source/msft-fy26-q4-earnings.html` and `source/msft-fy26-q4-transcript.html`. Keep only conclusions supported by the official source pack.

Trace every quantitative claim to a source reference. Correct any number whose source cannot be traced. Keep unavailable consensus or prior-estimate fields labeled `[UNSOURCED]`.

Update `out/earnings-note.md` with the corrected review. Report what you changed.

What Does This Audit Test?

  • The comparison catches conclusions carried over from the broader market brief.
  • The source check tests whether each conclusion belongs inside the fixed evidence boundary.
  • The traceability check sends every quantitative claim back to a named source file.
  • The correction request turns the audit findings into an updated artifact.
  • Read the correction report from Earnings Reviewer.
  • Review each conclusion the agent removed or revised.

You should see a correction summary tied to out/earnings-note.md. Unsupported conclusions should be removed or labeled as evidence gaps.

Do Any Numbers Still Lack a Source?

  • Ask Earnings Reviewer to name the source filename beside the untraceable number.
  • Remove the number when neither fixed source supports it.
  • Use [UNSOURCED] when the missing field is consensus or a prior estimate.

Help me audit an untraceable quantitative claim.

Verify the corrected review

The final check tests the note as a reviewable artifact. Each required section should reveal where its evidence came from.

Before you inspect the corrected note, where do you expect the reported figures to point? Where do you expect management guidance to point?

  • Display the corrected earnings note by submitting this prompt in Claude Code:
Display the complete contents of `out/earnings-note.md` without changing the file.

Why Display the Complete Note?

Displaying the complete file lets you inspect the final artifact without asking the agent to rewrite it. Your review stays separate from the correction pass.

  • Confirm the note opens with a headline read.
  • Confirm the note contains an actual-versus-prior-year table.
  • Locate the reported revenue reference.
  • Locate the reported operating income reference.
  • Locate the reported diluted EPS reference.
  • Locate the reported cash from operations reference.
  • Locate the reported additions to property and equipment reference.
  • Confirm the note includes segment trends.

Complete the Evidence Check

  • Confirm the note includes management guidance from the transcript.
  • Count three thesis-relevant risks.
  • Trace every quantitative claim to a source reference.
  • Confirm unavailable consensus fields retain the [UNSOURCED] marker.
  • Confirm unavailable prior-estimate fields retain the [UNSOURCED] marker.

You should now see a corrected Microsoft FY26 Q4 review with traceable quantitative claims. Only conclusions supported by the official source pack should remain.

Strong work. Your corrected earnings note is ready to become the evidence base for a simplified DCF in the next step.

Build and Audit a DCF

Your corrected earnings note now gives you source-traceable Microsoft FY26 Q4 analysis.

An earnings narrative becomes useful for a decision when its cash-flow implications enter a transparent model. You’ll build a simplified five-year discounted cash flow model whose assumptions can be challenged.

In this step, get ready to:
  • Specify a source-traceable five-year DCF.
  • Create the workbook and its plain-language summary.
  • Audit the formulas and verify the worksheet structure.
Specify the five-year DCF

The Model Builder agent translates your sourced earnings evidence into a model blueprint. The blueprint defines a free cash flow proxy before any valuation calculations begin.

How is the base case framed?

  • The starting free-cash-flow proxy equals annual cash from operations minus annual additions to property and equipment.
  • The five annual free-cash-flow growth assumptions are 12%, 10%, 8%, 6%, then 5%.
  • The discount rate is 8%.
  • Terminal growth is 3%.
  • Issuer values carry source labels.
  • Analyst inputs carry assumption labels.
  • Type @ in Claude Code.
  • Select the installed Model Builder agent from the typeahead.
  • Ask Model Builder to create out/model-spec.md from both files in source/ plus out/earnings-note.md using the base-case framework above.
  • Open out/model-spec.md in Claude Code.
  • Confirm the specification labels issuer facts separately from analyst assumptions.
  • Confirm the specification contains all five growth assumptions plus the discount rate and terminal growth assumption.

Good work. out/model-spec.md now gives the workbook a traceable blueprint.

Create the workbook and summary

The main session turns the specification into files you can inspect. It uses the Python library openpyxl version 3.1.5 to create the workbook without requiring Microsoft Excel.

What must the workbook contain?

  • The workbook path is out/msft-dcf.xlsx.
  • The workbook contains exactly Inputs, DCF, Sensitivity, and Checks worksheets.
  • Calculation cells use formulas in black.
  • Hardcoded inputs are blue.
  • Source URLs sit beside issuer data.
  • The Sensitivity worksheet provides sensitivity analysis for challenging the model.
  • The summary path is out/dcf-summary.md.
  • The summary explains the implied value in plain language.
  • Return to the main Claude Code session.
  • Ask the main session to create out/msft-dcf.xlsx plus out/dcf-summary.md from out/model-spec.md using openpyxl 3.1.5 and the workbook contract above.
  • Open out/dcf-summary.md in Claude Code.
  • Confirm the summary explains the base-case implied value.
  • Confirm the summary identifies the sourced inputs and analyst assumptions driving that value.

You now have a workbook plus a readable explanation of its result. The next check tests whether the workbook structure supports that explanation.

Audit and verify the model

A model audit checks whether calculation cells contain formulas and whether references still work. The installed audit-xls guidance gives the main session a consistent review process.

  • Request an audit report from the main session using the installed audit-xls guidance. The report must cover hardcoded values in calculation cells plus broken references.
  • Read the audit report to identify every issue that needs correction.

The report makes formula problems visible before they affect your conclusion.

  • Ask the main session to correct every issue named in the audit report.
  • Ask the main session to rerun the audit after making the corrections.

The follow-up report should show no hardcoded values in calculation cells. It should also show no broken references.

Before you run the final check, which four worksheet names do you expect the workbook to return?

  • Verify the workbook worksheet names by running this command in the activated project Terminal:
python3 -c "from openpyxl import load_workbook; wb=load_workbook('out/msft-dcf.xlsx'); print(wb.sheetnames)"

What does this check prove?

  • The load_workbook() function reads the workbook from out/msft-dcf.xlsx.
  • The wb.sheetnames property reports every worksheet in order.
  • The resulting list confirms that the expected structure survived the audit.

You’ll see ['Inputs', 'DCF', 'Sensitivity', 'Checks'] in Terminal.

Worksheet names don't match?

  • Check that Terminal is still inside ~/Documents/microsoft-agent-analysis.
  • Confirm that out/msft-dcf.xlsx exists inside the workspace.
  • Ask the main session to restore the exact four-worksheet structure from out/model-spec.md.
  • Rerun the audit before repeating the worksheet-name check.

Need another pair of eyes? Help me verify my DCF workbook.

  • Open out/dcf-summary.md in Claude Code.
  • Confirm the summary explains the implied value and the assumptions driving it.

That is the model built and checked. You can now trace the issuer data, challenge the assumptions, and explain how the workbook reaches its result.

Secret mission

Stress-Test the Valuation with a Bear Case

Put the base-case valuation under pressure with slower cash-flow growth plus a higher discount rate. You will create a bear-case workbook and explain which assumptions push its implied value lower.

Clean Up Your Resources

Clean Up Your Resources

Everything you created for this analysis is stored on your Mac. No cloud resources or paid market-data connectors were created, so keeping the workspace adds no ongoing project cost.

The options below let you keep the workspace, pause the active session, or delete the local project folder.

Resources you used:

  • The local ~/Documents/microsoft-agent-analysis project folder.
  • The active Claude Code session running in Terminal.

Keep everything running

No action is needed. This option keeps the complete analyst pack available for more review.

  • Keep ~/Documents/microsoft-agent-analysis in its current location.
  • Leave the Claude Code session running while you continue the analysis.
  • Retain the installed analysis tools for future projects.

Pause - I'll come back to this later

Stopping the active session frees the Terminal window. Your complete analyst pack stays on your Mac for later review.

  • Close the Terminal window containing the Claude Code session.
  • Keep ~/Documents/microsoft-agent-analysis unchanged.
  • Use the same workspace setup from earlier when you return.
  • Repeat the virtual environment activation from earlier before running Python workbook checks.

Delete - I don't want to use this again

Permanent deletion can feel drastic. The command below targets only ~/Documents/microsoft-agent-analysis.

Your installed analysis tools remain available for future projects.

  • Copy any artifact you want to keep to a folder outside ~/Documents/microsoft-agent-analysis.
  • Close the Terminal window containing the Claude Code session.
  • Press Cmd+Space to open macOS search.
  • Type Terminal into macOS search.
  • Press Enter to open Terminal.
  • Remove the complete project folder by running this command:
rm -rf ~/Documents/microsoft-agent-analysis

What does this command remove?

The command permanently deletes the microsoft-agent-analysis folder. Using the full path confines the cleanup to the workspace created for this project.

  • Check the Documents folder in your file browser.

You should no longer see microsoft-agent-analysis. You have now removed the complete local analyst pack.

Folder still present?

  • Confirm that the command uses the exact ~/Documents/microsoft-agent-analysis path.
  • Close any app that still has a project file open.
  • Run the cleanup command again.

Help me diagnose why the project folder is still present after the cleanup command.

Nice Work!

Nice Work!

You did it. You built a source-linked Microsoft FY26 Q4 analyst pack in Claude Code with three specialized finance agents. It pairs an evidence-first earnings review with an audited five-year DCF.

You've learned how to:

  • Used Market Researcher to create a Microsoft-centered competitive brief from one official source. Its Evidence Gaps section keeps unsupported market sizes, market shares, and peer multiples visible with [UNSOURCED] markers.
  • Used Earnings Reviewer to turn the official source pack into a traceable FY26 Q4 earnings note. The note covers reported performance, management guidance, and thesis-relevant risks without outside facts.
  • Used Model Builder to specify a simplified five-year DCF. Produced an audited workbook with openpyxl 3.1.5. Kept issuer data separate from analyst assumptions across Inputs, DCF, Sensitivity, and Checks.
  • Secret Mission: Built a bear-case workbook that stress-tests the base valuation. Explained why lower free-cash-flow growth reduces the implied value. Showed how a higher discount rate pushes that value lower while terminal growth remains 3%.

Ready to quiz yourself?