Daily Market Report

Data & APIs

Generate daily US stock market analysis reports for user holdings, including portfolio P&L, 52-week range, analyst ratings, and actionable suggestions. Data sourced from Yahoo Finance (yfinance, no API key required).

Install

openclaw skills install daily-market-report

Daily Market Report

A Python-based skill that generates a daily US stock market analysis report covering your portfolio holdings, market indices, and actionable suggestions.

How It Works

The skill uses Yahoo Finance (via yfinance) — no API key required. It reads your current holdings from HOLDINGS config in the script, fetches live/recent market data, and prints a formatted report.

Holdings Configuration

Edit the HOLDINGS dict in scripts/get_market_data.py to match your portfolio:

HOLDINGS = {
    "BMI": {"name": "Badger Meter", "cost": 123.0, "shares": None},
    "PDD": {"name": "PDD Holdings", "cost": 110.0, "shares": None},
}

Supported tickers: any valid Yahoo Finance symbol (US stocks, ETFs, crypto, forex).

Setup

1. Install uv (Python package manager)

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Homebrew (macOS):

brew install uv

pip:

pip install uv

2. Verify yfinance is installed

uv pip install yfinance
# or
pip install yfinance

Usage

Run the report generator directly:

python scripts/get_market_data.py

Sample Output

============================================================
  Daily US Stock Report
  2026-05-28 15:00 (Weekend - data from last Friday)
============================================================

=== Market Overview ===

  Nasdaq QQQ: $478.32  +2.15 (+0.45%)
  ...

=== Holdings Analysis ===

  BMI (Badger Meter)
     Price: $119.50 | Cost: $123.00
     P&L: -$3.50 (-2.85%)
     52W Range: $256.08 / $112.09
     Analysts: Buy=16 Hold=1 Sell=1

  PDD (PDD Holdings)
     Price: $95.83 | Cost: $110.00
     P&L: -$14.17 (-12.88%)
     52W Range: $139.41 / $93.81
     Market Cap: $128.45B
     PE: 10.23
     ...

Market Indices Tracked

The script tracks these indices by default:

  • QQQ — Nasdaq 100 ETF
  • DIA — Dow Jones ETF
  • SPY — S&P 500 ETF

Edit the INDICES dict in scripts/get_market_data.py to customize.

Data Points Retrieved

FieldDescription
Price & ChangeCurrent price, daily change ($ and %)
52-Week RangeHigh / Low with distance from current price
Market CapFormatted (T/B/M)
PE RatioTrailing P/E
BetaStock beta vs market
Analyst RatingsBuy / Hold / Sell / Strong Buy / Strong Sell counts

Requirements

  • Python 3.8+
  • yfinance library
  • uv package manager (recommended, or plain pip)

Troubleshooting

"Module not found: yfinance"

Run: uv pip install yfinance (or pip install yfinance)

Rate limiting

Yahoo Finance may throttle rapid consecutive requests. The script includes a 3-retry mechanism with 2-second delays. Wait a few minutes if rate-limited.

No data for a symbol

Verify the ticker is valid on Yahoo Finance: yf ticker should return data on the Yahoo Finance website.

License

Published on ClawHub under MIT-0 license.