quick-analyzer-agent

Quick Analyzer Agent - 빠른 티커 분석

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "quick-analyzer-agent" with this command: npx skills add psh355q-ui/szdi57465yt/psh355q-ui-szdi57465yt-quick-analyzer-agent

Quick Analyzer Agent - 빠른 티커 분석

Role

/analysis 페이지에서 사용자가 티커를 입력하면 5초 이내에 BUY/SELL/HOLD 추천을 제공합니다. 속도를 위해 핵심 지표만 분석합니다.

Core Capabilities

  1. Fast Technical Analysis

Price Action

  • Moving Averages: MA20, MA50 교차 확인

  • Trend: 상승/하락/횡보 판단

  • Support/Resistance: 주요 가격대

Momentum Indicators

  • RSI (14일): 과매수(>70), 과매도(<30)

  • MACD: 골든크로스/데드크로스

  • Volume: 거래량 증가/감소 패턴

  1. Recent News Scan (Last 7 Days)

News sentiment aggregation

news_articles = get_recent_news(ticker, days=7)

avg_sentiment = sum(a.sentiment_score for a in news_articles) / len(news_articles)

positive_ratio = len([a for a in news_articles if a.sentiment_score > 0.3]) / len(news_articles)

News Signals

  • Very Positive (avg > 0.6): 강한 호재

  • Positive (avg > 0.3): 긍정적

  • Neutral (avg -0.3 to 0.3): 중립

  • Negative (avg < -0.3): 부정적

  • Very Negative (avg < -0.6): 강한 악재

  1. Basic Fundamental Check

Valuation

  • P/E Ratio: 현재 vs 업종 평균

  • P/B Ratio: 자산 가치 대비

  • Quick Check: 과대/적정/저평가

Recent Earnings

  • Beat/Miss: 최근 분기 실적

  • Surprise %: 컨센서스 대비

Decision Framework

Step 1: Technical Analysis score_technical = 0

IF MA20 > MA50: score_technical += 2

IF RSI in [30, 70]: score_technical += 1 ELIF RSI < 30: score_technical += 3 # Oversold ELIF RSI > 70: score_technical -= 3 # Overbought

IF Volume > avg_volume * 1.5: score_technical += 1

Step 2: News Analysis score_news = 0

IF avg_sentiment > 0.6: score_news += 3 ELIF avg_sentiment > 0.3: score_news += 2 ELIF avg_sentiment < -0.3: score_news -= 2 ELIF avg_sentiment < -0.6: score_news -= 3

Step 3: Fundamental Check score_fundamental = 0

IF P/E < industry_avg * 0.8: score_fundamental += 2 # Undervalued ELIF P/E > industry_avg * 1.2: score_fundamental -= 2 # Overvalued

IF recent_earnings == 'BEAT': score_fundamental += 2

Step 4: Final Decision total_score = score_technical + score_news + score_fundamental

IF total_score >= 5: action = "BUY" confidence = min(0.9, 0.6 + total_score * 0.05)

ELIF total_score <= -5: action = "SELL" confidence = min(0.9, 0.6 + abs(total_score) * 0.05)

ELSE: action = "HOLD" confidence = 0.5 + abs(total_score) * 0.03

Output Format

{ "ticker": "AAPL", "action": "BUY", "confidence": 0.75, "reasoning": "기술적 골든크로스 (MA20 > MA50), 최근 뉴스 긍정적 (sentiment +0.6), 업종 대비 저평가 (P/E 25 vs 28)", "analysis_time_ms": 3200, "price_info": { "current": 197.50, "change_1d_pct": 0.024, "change_1w_pct": 0.058, "ma20": 195.00, "ma50": 192.00, "ma200": 185.00, "support_level": 190.00, "resistance_level": 205.00 }, "technical_indicators": { "rsi_14": 58, "rsi_signal": "NEUTRAL", "macd_signal": "BULLISH", "volume_change_pct": 0.35, "trend": "UPTREND" }, "technical_summary": "BULLISH", "technical_score": 6, "news_analysis": { "total_articles_7d": 9, "avg_sentiment": 0.62, "positive_count": 7, "negative_count": 2, "sentiment_label": "VERY_POSITIVE", "top_headlines": [ "Apple reports record iPhone sales", "New AI features boost user engagement" ] }, "news_summary": "7 positive, 2 negative (last 7d)", "news_score": 3, "fundamental_analysis": { "pe_ratio": 25.3, "industry_avg_pe": 28.0, "pe_relative": 0.904, "valuation": "UNDERVALUED", "pb_ratio": 42.5, "recent_earnings": "BEAT", "earnings_surprise_pct": 0.125 }, "fundamental_summary": "P/E 25 (industry avg 28) - undervalued, recent earnings beat 12.5%", "fundamental_score": 4, "total_score": 13, "risk_factors": [ "Potential profit-taking at resistance $205", "Tech sector rotation risk" ], "next_review_date": "2025-12-28" }

Examples

Example 1: Strong BUY Signal

Input:

  • Ticker: NVDA
  • Price: $520
  • MA20: $510, MA50: $490 (골든크로스)
  • RSI: 55
  • News: 8 positive, 1 negative (avg +0.7)
  • P/E: 45 (industry 52) - 저평가
  • Recent Earnings: Beat 15%

Calculation:

  • Technical Score: +6 (MA골든+2, RSI중립+1, Volume+1, Trend+2)
  • News Score: +3 (매우 긍정)
  • Fundamental Score: +4 (저평가+2, Beat+2)
  • Total: 13

Output:

  • Action: BUY
  • Confidence: 0.85
  • Reasoning: "강한 기술적 신호 + 긍정적 뉴스 + 저평가"

Example 2: SELL Signal

Input:

  • Ticker: XYZ
  • MA20 < MA50 (데드크로스)
  • RSI: 78 (과매수)
  • News: 2 positive, 7 negative (avg -0.5)
  • P/E: 85 (industry 40) - 고평가

Calculation:

  • Technical Score: -4 (데드크로스-2, 과매수-3, 정상볼륨+1)
  • News Score: -2 (부정)
  • Fundamental Score: -2 (고평가)
  • Total: -8

Output:

  • Action: SELL
  • Confidence: 0.80
  • Reasoning: "기술적 약세 + 부정 뉴스 + 고평가"

Example 3: HOLD Signal

Input:

  • Ticker: MSFT
  • MA20 ≈ MA50 (횡보)
  • RSI: 52
  • News: 4 positive, 3 negative (avg +0.1)
  • P/E: 30 (industry 30) - 적정

Calculation:

  • Technical Score: +1
  • News Score: 0
  • Fundamental Score: 0
  • Total: 1

Output:

  • Action: HOLD
  • Confidence: 0.55
  • Reasoning: "명확한 방향성 부재, 관망 추천"

Guidelines

Do's ✅

  • Speed First: 5초 이내 응답 (복잡한 분석 지양)

  • 핵심 지표만: RSI, MA, P/E, News Sentiment

  • 명확한 신호: 강한 BUY/SELL만, 애매하면 HOLD

  • Risk Factors 포함: 주요 리스크 1-2개 언급

Don'ts ❌

  • 과도한 분석 금지 (Deep Reasoning Agent 역할 아님)

  • 복잡한 모델 사용 금지 (속도 저하)

  • 모호한 표현 금지 ("maybe", "possibly")

  • 100% 확신 금지 (confidence 최대 0.90)

Integration

API Endpoint

from fastapi import APIRouter, HTTPException from backend.ai.skills.base_agent import AnalysisSkillAgent

router = APIRouter()

@router.get("/api/analysis/quick/{ticker}") async def quick_analyze_ticker(ticker: str): """Quick analysis for a ticker"""

try:
    agent = QuickAnalyzerAgent()
    
    result = await agent.execute({
        'ticker': ticker,
        'task_description': f'Provide quick analysis for {ticker}'
    })
    
    return result

except Exception as e:
    raise HTTPException(status_code=500, detail=str(e))

Data Sources

from backend.data.yahoo_client import YahooClient from backend.database.models import NewsArticle from sqlalchemy.orm import Session

async def gather_quick_data(ticker: str, db: Session) -> Dict: """Gather data for quick analysis"""

yahoo = YahooClient()

# Price data
price_data = yahoo.get_current_price(ticker)

# Technical indicators
tech_data = yahoo.get_technical_indicators(ticker)

# News (last 7 days)
news = db.query(NewsArticle).filter(
    NewsArticle.ticker == ticker,
    NewsArticle.created_at >= datetime.now() - timedelta(days=7)
).all()

# Basic fundamentals
fundamentals = yahoo.get_key_stats(ticker)

return {
    'price': price_data,
    'technical': tech_data,
    'news': news,
    'fundamentals': fundamentals
}

Performance Metrics

  • Response Time: 목표 < 5초 (평균 3초)

  • Accuracy: > 60% (빠른 분석이므로 Deep Reasoning보다 낮음)

  • User Satisfaction: > 4/5 (속도 중요)

  • Cache Hit Rate: > 70% (동일 ticker 5분 내 재조회 시)

Caching Strategy

from functools import lru_cache from time import time

5분 TTL cache

@lru_cache(maxsize=100) def cached_quick_analysis(ticker: str, timestamp: int) -> Dict: """Cache analysis for 5 minutes""" # timestamp rounded to 5 minutes return perform_quick_analysis(ticker)

Usage

current_5min_slot = int(time() // 300) result = cached_quick_analysis(ticker, current_5min_slot)

Comparison with Other Agents

Agent Speed Depth Use Case

Quick Analyzer ⭐⭐⭐ 5s ⭐ Basic 빠른 확인

Deep Reasoning ⭐ 30s ⭐⭐⭐ Deep 중요한 결정

War Room ⭐⭐ 15s ⭐⭐ Medium 합의 기반

Version History

  • v1.0 (2025-12-21): Initial release with 5-second target response time

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

notification-agent

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

debugging-agent

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

backtest-analyzer-agent

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

signal-generator-agent

No summary provided by upstream source.

Repository SourceNeeds Review