Investing update

Refresh existing research note and Excel model with latest data

install
source · Clone the upstream repo
git clone https://github.com/daloopa/investing
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/daloopa/investing "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/update" ~/.claude/skills/daloopa-investing-update && rm -rf "$T"
manifest: .claude/skills/update/SKILL.md
source content

Update existing coverage for the company specified by the user: $ARGUMENTS

Before starting, read

../data-access.md
for data access methods and
../design-system.md
for formatting conventions.
Follow the data access detection logic and design system throughout this skill.

This skill refreshes existing deliverables with the latest quarterly data, highlights what changed, and re-renders both outputs.

Phase 1 — Load Existing Context

Check for existing context files in

reports/.tmp/
:

  • reports/.tmp/{TICKER}_context.json
    (research note context)
  • reports/.tmp/{TICKER}_model_context.json
    (model context)

If neither exists, tell the user: "No existing coverage found for {TICKER}. Run

/initiate {TICKER}
first to create initial coverage." and stop.

Read the existing context(s) to understand what periods and data were previously gathered.

Phase 2 — Identify New Data

Look up the company using

discover_companies
. Capture
company_id
,
latest_calendar_quarter
(anchor for all period calculations — see
../data-access.md
Section 1.5), and
latest_fiscal_quarter
. Note the firm name for report attribution (default: "Daloopa") — see
../data-access.md
Section 4.5. Compare to the periods in existing context. Determine which new quarters need to be pulled.

If no new quarters are available, tell the user: "Coverage is already current through {latest_period}. No new data to update." and stop.

Phase 3 — Pull Fresh Data

Pull data for ALL periods (not just new ones) to ensure consistency:

  • Full Income Statement, Balance Sheet, Cash Flow
  • Segments, KPIs, Guidance
  • Share count, buyback activity

This refreshes the entire dataset, catching any Daloopa revisions to prior quarters.

Phase 4 — Market Data Refresh

Get current prices, trading multiples, and risk-free rate (see ../data-access.md Section 2).

Also refresh peer multiples if comps data exists in context.

Phase 5 — Re-run Projections

With updated historical data, re-run projections. If a projection engine is available (see ../data-access.md Section 5), use it. Otherwise project manually.

Phase 6 — Diff Analysis

Save the new context alongside the old:

  • Write new context to
    reports/.tmp/{TICKER}_context_new.json
  • Run:
    python infra/report_differ.py --old reports/.tmp/{TICKER}_context.json --new reports/.tmp/{TICKER}_context_new.json --output reports/.tmp/{TICKER}_diff.json
  • Read the diff to understand what changed

Key changes to highlight:

  • Revenue/EPS beats or misses vs prior estimates
  • Margin changes (expansion or compression)
  • Guidance changes (raised, lowered, maintained)
  • New KPI data points
  • Share count changes (buyback acceleration/deceleration)
  • Valuation changes (price moved, multiples shifted)

Phase 7 — Update Qualitative Sections

Search filings for the new quarter(s):

  • Earnings highlights and management commentary
  • Updated guidance language
  • New risk factors or strategic shifts
  • Update investment thesis if data warrants it

Revise the executive summary and key findings to reflect the latest quarter.

Phase 8 — Re-render Outputs

Update charts with new data points, then re-render:

Research Note:

  1. Overwrite context:
    reports/.tmp/{TICKER}_context.json
  2. Re-generate charts with updated data
  3. Run:
    python infra/docx_renderer.py --template templates/research_note.docx --context reports/.tmp/{TICKER}_context.json --output reports/{TICKER}_research_note.docx

Excel Model:

  1. Overwrite context:
    reports/.tmp/{TICKER}_model_context.json
  2. Run:
    python infra/excel_builder.py --context reports/.tmp/{TICKER}_model_context.json --output reports/{TICKER}_model.xlsx

Phase 9 — Change Summary

Present a clear summary of changes to the user:

## {TICKER} Coverage Update — {new_quarter} Added

### Key Changes
- Revenue: $XX.XB vs $XX.XB prior quarter (+X.X% QoQ, +X.X% YoY)
- EPS: $X.XX vs $X.XX guidance (beat/miss by X.X%)
- Gross Margin: XX.X% vs XX.X% prior quarter (+/- XXbps)
- {other notable changes}

### Projection Updates
- {what changed in forward estimates and why}

### Valuation Impact
- DCF implied price: $XXX (was $XXX, change of +/-X%)
- Comps implied range: $XXX - $XXX

### Files Updated
- Research note: reports/{TICKER}_research_note.docx
- Excel model: reports/{TICKER}_model.xlsx
- Diff report: reports/.tmp/{TICKER}_diff.json

All financial figures must use Daloopa citation format: $X.XX million