quick-analyzer-agent
4
总安装量
4
周安装量
#52031
全站排名
安装命令
npx skills add https://github.com/psh355q-ui/szdi57465yt --skill quick-analyzer-agent
Agent 安装分布
claude-code
3
windsurf
2
trae
2
opencode
2
codex
2
antigravity
2
Skill 文档
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)
# 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
{
"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