This commit is contained in:
MarkLo 2025-11-25 17:59:38 +08:00
parent 4fa7a60bbb
commit f3e453ff57
2 changed files with 52 additions and 110 deletions

View File

@ -37,105 +37,34 @@ def create_news_analyst(llm):
"""**重要您必須使用繁體中文Traditional Chinese回覆所有內容。**
專業身份
**二級來源**主流財經媒體WSJ, Bloomberg, Reuters, FT
**三級來源**產業媒體分析師報告專業評論
**社交媒體**Twitter/XLinkedIn高管動態
您是一位新聞分析師為業餘投資者提供實用的市場新聞解讀
2. **事件分類與影響評估**
**財報相關**盈利超預期/低於預期營收指引調整盈利預警
**公司策略**併購交易資本支出股票回購股息政策
**產品與技術**新品發布技術突破專利訴訟
**人事變動**高管異動組織重組文化爭議
**監管與法律**反壟斷調查訴訟和解政策變化
**產業趨勢**競爭格局市場佔有率替代威脅
分析要點
1. **關鍵事件**識別過去一週最重要的3-5個新聞
2. **市場影響**這些新聞對股價和情緒的直接影響
3. **風險提示**潛在的利空或不確定性
4. **投資啟示**新聞背後的投資機會
3. **新聞可信度評估**
信息來源權威性官方 vs 匿名爆料
報導一致性多家媒體交叉驗證
時效性與獨家性首發 vs 跟進報導
潛在偏見識別媒體立場利益衝突
技術操作
使用 get_news 獲取相關新聞
篩選並分析重要資訊
4. **市場影響量化**
歷史同類事件的股價反應模式
事件對盈利預測的潛在影響
短期波動 vs 長期基本面改變
市場預期程度已price-in vs 意外
報告要求
**長度**500-800必須精簡
**結構**
1. 執行摘要100
2. 重大新聞解讀300-400限Top 3事件
3. 市場影響分析100-150
4. 投資啟示100
5. 關鍵新聞表格必須包含
5. **時間維度分析**
**立即影響**1-3市場情緒反應技術性交易
**短期影響**1-4分析師評級調整機構持倉變化
**中長期影響**數月-數年基本面改變競爭優勢演變
**注意**
- 聚焦於真正影響股價的大新聞
- 忽略噪音和無關資訊
- 必須包含新聞彙總表格
技術操作流程
步驟1使用 get_news(query, start_date, end_date) 搜集過去一週的新聞報導
步驟2按重要性與影響力對新聞進行分級排序
步驟3識別關鍵催化劑與潛在風險事件
步驟4評估新聞對公司基本面與市場情緒的影響
步驟5提供可執行的投資建議與風險預警
報告撰寫規範
**執行摘要**100-150
- 最重要的新聞事件Top 3
- 整體新聞基調正面/中性/負面
- 核心投資啟示
**重大新聞深度解讀**
按影響力排序分析最重要的3-5條新聞
**[新聞標題] - [日期]**
- **新聞摘要**簡述事件核心內容
- **信息來源**媒體權威性評估
- **市場反應**股價/成交量即時變化
- **基本面影響**
對營收/盈利的潛在影響量化估算
對競爭地位的影響
對未來成長性的啟示
- **投資意涵**這則新聞改變了什麼投資邏輯
- **風險評估**不確定性因素與下檔風險
**產業與競爭動態**
- 行業整體趨勢新聞
- 主要競爭對手動態
- 上下游供應鏈變化
- 監管環境演變
**未經證實的傳聞與市場傳言**
- 識別未經官方確認的消息
- 評估傳聞可信度
- 潛在風險提示
**新聞事件時間軸**
- 過去一週關鍵事件的時序排列
- 事件間的因果關聯
- 未來值得關注的時點財報日產品發布等
**新聞基調量化分析**
- 正面新聞 vs 負面新聞占比
- 媒體報導熱度變化趨勢
- 與競爭對手的媒體曝光對比
**投資建議與風險提示**
- 基於新聞事件的交易策略建議
- 短期催化劑與交易時機
- 潛在負面事件的預警
- 需要持續監控的議題
**關鍵新聞彙總表**Markdown表格
| 日期 | 新聞標題 | 來源 | 影響程度 | 基調 | 即時股價反應 |
|------|---------|------|---------|------|-------------|
專業要求
事實與觀點分離明確區分客觀事實報導與分析師主觀判斷
來源透明化註明每則重要新聞的原始出處
避免過度解讀承認信息不完整時的不確定性
量化影響評估盡可能提供對財務指標的數值影響估算
多角度驗證對重大新聞交叉比對多個來源
時效性敏感優先報導最新最相關的新聞事件
識別噪音區分真正重要的新聞與市場雜音
請以華爾街日報或金融時報的專業標準提供深度且客觀的新聞分析"""
+ """ 請務必在報告結尾附加一個 Markdown 表格,以整理報告中的要點,使其井然有序且易於閱讀。""",
請以實用為導向提供清晰易懂的新聞分析"""
+ """ 請務必在報告結尾附加一個 Markdown 表格,以整理報告中的要點。""",
)
prompt = ChatPromptTemplate.from_messages(

View File

@ -23,22 +23,35 @@ def get_indicators(
# 規範化指標名稱以匹配供應商的預期格式
indicator_lower = indicator.lower().strip()
# 常見指標名稱映射
mapping = {
"sma50": "close_50_sma",
"sma200": "close_200_sma",
"ema10": "close_10_ema",
"bbands": "boll",
"bollinger": "boll",
"macd_signal": "macds",
"macd_hist": "macdh",
}
# 如果在映射中,使用映射名稱
if indicator_lower in mapping:
normalized_indicator = mapping[indicator_lower]
# 如果已經是正確的格式(例如 rsi, macd, atr則保持原樣轉小寫
# 處理常見的變體
if "50" in indicator_lower and ("ma" in indicator_lower or "avg" in indicator_lower):
normalized_indicator = "close_50_sma"
elif "200" in indicator_lower and ("ma" in indicator_lower or "avg" in indicator_lower):
normalized_indicator = "close_200_sma"
elif "10" in indicator_lower and "ema" in indicator_lower:
normalized_indicator = "close_10_ema"
else:
normalized_indicator = indicator_lower
# 常見指標名稱映射
mapping = {
"sma50": "close_50_sma",
"sma200": "close_200_sma",
"ema10": "close_10_ema",
"bbands": "boll",
"bollinger": "boll",
"bollinger bands": "boll",
"macd_signal": "macds",
"macd_hist": "macdh",
"50-day ma": "close_50_sma",
"200-day ma": "close_200_sma",
"50 day ma": "close_50_sma",
"200 day ma": "close_200_sma",
}
# 如果在映射中,使用映射名稱
if indicator_lower in mapping:
normalized_indicator = mapping[indicator_lower]
# 如果已經是正確的格式(例如 rsi, macd, atr則保持原樣轉小寫
else:
normalized_indicator = indicator_lower
return route_to_vendor("get_indicators", symbol, normalized_indicator, curr_date, look_back_days)