🧪 Skills

Stock Quote

Fetch real-time stock prices and fundamental data. Use when: (1) User asks for current stock price or quote, (2) Need to update portfolio holdings with lates...

v1.0.0
❤️ 0
⬇️ 21
👁 1
Share

Description


name: stock-quote description: "Fetch real-time stock prices and fundamental data. Use when: (1) User asks for current stock price or quote, (2) Need to update portfolio holdings with latest prices, (3) Check PE ratios, 52-week ranges, or market caps, (4) Daily portfolio valuation updates, (5) Pre-trade price verification. Supports bulk queries for multiple symbols."

Stock Quote Skill

Real-time stock price and fundamental data retrieval skill.

Quick Start

# Single stock
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA

# Multiple stocks
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA TSLA BABA ORCL

# JSON output (for programmatic use)
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA TSLA --json

# Force web fallback (if yfinance unavailable)
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA --source web

Output Fields

Field Description
price Current market price
change Price change from previous close
change_percent Percentage change
previous_close Previous trading day's close
day_high / day_low Today's trading range
volume Trading volume
market_cap Market capitalization
pe_ratio Trailing P/E ratio
week_52_high / week_52_low 52-week range
dividend_yield Dividend yield (if applicable)

Data Sources

  1. yfinance (primary) - Yahoo Finance API via Python library
  2. Web scrape (fallback) - Direct Yahoo Finance page parsing

Auto-selects best available source.

Integration Examples

Update Portfolio Holdings

from skills.stock_quote.scripts.quote import fetch_yfinance_data

# Fetch current prices for all holdings
holdings = ['NVDA', 'TSLA', 'BABA', 'ORCL', 'UNH', 'AAL', 'AMZN']
quotes = fetch_yfinance_data(holdings)

# Calculate current portfolio value
total_value = sum(quote['price'] * shares for symbol, quote in quotes.items() 
                  if 'price' in quote and quote['price'])

Check Trading Rules Compliance

# Check PE ratio rule (PE > 35 blocked)
quote = fetch_yfinance_data(['NVDA'])['NVDA']
if quote.get('pe_ratio', 0) > 35:
    print("⚠️ PE ratio exceeds 35 - rule violation")

# Check 52-week percentile (above 70% blocked)
if quote.get('price') and quote.get('week_52_high') and quote.get('week_52_low'):
    percentile = (quote['price'] - quote['week_52_low']) / \
                 (quote['week_52_high'] - quote['week_52_low'])
    if percentile > 0.70:
        print("⚠️ Price above 70th percentile of 52-week range")

Daily Heartbeat Update

Add to HEARTBEAT.md:

- Fetch current prices for all holdings (NVDA, TSLA, BABA, ORCL, UNH, AAL, AMZN)
- Update MEMORY.md position table with latest market values
- Check if any position within 5% of stop loss
- Alert if TSLA approaches $385.90 stop loss

Error Handling

  • Network failures → Returns error field with message
  • Invalid symbol → Returns error: "No data found"
  • Market closed → Returns last traded price with timestamp

Always check for 'error' field in results before using price data.

Dependencies

# Primary (recommended)
pip install yfinance

# Fallback (if yfinance unavailable)
pip install requests

Usage with Other Skills

  • stock-advisor: Provides price data for analysis
  • trading-supervisor: Validates prices against trading rules
  • elite-memory: Updates portfolio valuations in MEMORY.md

Example Output

📈 NVDA: $176.46 +2.34 (+1.35%)
   市值:$4.32T
   PE: 68.45
   52 周:$108.13 - $185.50 (当前位置:73.2%)

📉 TSLA: $398.68 -5.12 (-1.27%)
   市值:$1.28T
   PE: 95.23
   52 周:$206.50 - $479.86 (当前位置:41.5%)

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs