Agent skill
quick-analyzer-agent
Fast ticker analysis for /analysis page. Provides quick BUY/SELL/HOLD recommendations based on technical indicators, recent news, and basic fundamentals within seconds. Optimized for speed over depth.
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/quick-analyzer-agent
Metadata
Additional technical details for this skill
- author
- ai-trading-system
- version
- 1.0
- category
- analysis
- agent role
- quick_analyst
SKILL.md
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: 거래량 증가/감소 패턴
2. Recent News Scan (Last 7 Days)
python
# 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): 강한 악재
3. 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
json
{
"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
python
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
python
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
python
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
Didn't find tool you were looking for?