name: "fund-analyzer-plus" slug: "fund-analyzer-plus" version: "1.1.0" displayName: "股票基金助手" summary: "基金收益計算、風險分析、同類對比、持倉回測、調倉建議、股票分析。支援基金淨值查詢、收益計算、風險分析、多基金對比、同類推薦、持倉回測,以及股票K線、盤口深度、大單流向、板塊行情、問財選股等。" description: "基金收益計算、風險分析、同類對比、持倉回測、調倉建議、股票分析。當用戶需要查詢基金淨值、計算基金收益、分析基金風險、對比多隻基金、查詢同類基金推薦、回測持倉歷史收益、檢視股票K線、盤口、大單流向、板塊行情時觸發。支援所有基金型別和A股/港股/美股股票分析。"
專業的投資投研分析工具,支援基金和股票兩大投資品種。
⚠️ 能力說明:本工具僅提供公開市場資料分析,不支援即時交易、個人賬戶查詢、未來收益預測、私募基金等服務。詳細說明見「能力邊界」章節。
所有模式的報告必須輸出為自包含的 HTML 檔案,使用 html-report 技能生成。報告儲存到使用者工作區,檔名格式:基金分析報告_{模式}_{YYYYMMDD}.html。
中國A股慣例:紅色=上漲,綠色=下跌。 生成報告時,必須根據數值正負判斷並應用對應顏色:
color: #cf1322color: #3f8600color: #999判斷邏輯:看到 + 號或正數 → 紅色;看到 - 號或負數 → 綠色。絕對不能搞反!
每個 HTML 報告必須包含以下結構,<style> 中的配色 CSS 必須完整包含,不得省略:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{報告標題}</title>
<style>
/* === 以下 CSS 必須完整嵌入,不可省略任何規則 === */
/* 紅漲綠跌配色 - 中國A股慣例 */
.up, .positive, .rise { color: #cf1322; font-weight: 500; }
.down, .negative, .fall { color: #3f8600; font-weight: 500; }
.flat, .zero { color: #999; }
.warning { color: #d46b08; background: #fff7e6; border-left: 3px solid #fa8c16; padding: 8px 12px; margin: 8px 0; border-radius: 4px; }
.excellent { color: #1890ff; font-weight: 600; }
.quartile-excellent { color: #cf1322; }
.quartile-good { color: #fa8c16; }
.quartile-average { color: #999; }
.quartile-warning { color: #3f8600; }
/* 基礎樣式 + 手機端適配 */
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; font-size: 14px; line-height: 1.6; color: #333; background: #f5f5f5; padding: 0; -webkit-text-size-adjust: 100%; }
.container { max-width: 100%; margin: 0 auto; padding: 12px; }
table { width: 100%; border-collapse: collapse; font-size: 13px; margin: 8px 0; display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
th, td { padding: 8px 6px; text-align: left; border-bottom: 1px solid #eee; white-space: nowrap; }
th { background: #f8f9fa; font-weight: 600; position: sticky; top: 0; }
.card { background: #fff; border-radius: 8px; padding: 12px; margin-bottom: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.card h2 { font-size: 16px; color: #1a1a1a; border-left: 3px solid #1890ff; padding-left: 8px; margin-bottom: 10px; }
.card h3 { font-size: 14px; color: #333; margin: 8px 0 6px; }
@media (min-width: 768px) { .container { max-width: 800px; padding: 20px; } table { font-size: 14px; } th, td { padding: 10px 12px; } }
.report-header { background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); color: #fff; padding: 16px; border-radius: 8px; margin-bottom: 12px; }
.report-header h1 { font-size: 18px; margin-bottom: 4px; }
.report-header .date { font-size: 12px; color: rgba(255,255,255,0.7); }
.summary-box { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.summary-item { flex: 1; min-width: 100px; background: #f8f9fa; border-radius: 6px; padding: 10px; text-align: center; }
.summary-item .label { font-size: 11px; color: #999; margin-bottom: 4px; }
.summary-item .value { font-size: 16px; font-weight: 600; }
ul, ol { padding-left: 20px; margin: 6px 0; }
li { margin: 4px 0; }
hr { border: none; border-top: 1px solid #eee; margin: 12px 0; }
strong { color: #1a1a1a; }
a { color: #1890ff; text-decoration: none; }
</style>
</head>
<body>
<div class="container">
<!-- 報告內容 -->
</div>
</body>
</html>
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
font-size: 14px;
line-height: 1.6;
color: #333;
background: #f5f5f5;
padding: 0;
-webkit-text-size-adjust: 100%;
}
.container {
max-width: 100%;
margin: 0 auto;
padding: 12px;
}
/* 表格手機端適配 */
table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
margin: 8px 0;
display: block;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
th, td {
padding: 8px 6px;
text-align: left;
border-bottom: 1px solid #eee;
white-space: nowrap;
}
th {
background: #f8f9fa;
font-weight: 600;
position: sticky;
top: 0;
}
/* 卡片式佈局 */
.card {
background: #fff;
border-radius: 8px;
padding: 12px;
margin-bottom: 12px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.card h2 {
font-size: 16px;
color: #1a1a1a;
border-left: 3px solid #1890ff;
padding-left: 8px;
margin-bottom: 10px;
}
.card h3 {
font-size: 14px;
color: #333;
margin: 8px 0 6px;
}
/* 響應式:大螢幕居中 */
@media (min-width: 768px) {
.container { max-width: 800px; padding: 20px; }
table { font-size: 14px; }
th, td { padding: 10px 12px; }
}
/* 上漲/正收益 → 紅色 */
.up, .positive, .rise {
color: #cf1322;
font-weight: 500;
}
/* 下跌/負收益 → 綠色 */
.down, .negative, .fall {
color: #3f8600;
font-weight: 500;
}
/* 平盤/零收益 → 灰色 */
.flat, .zero {
color: #999;
}
/* 風險預警 → 橙色 */
.warning {
color: #d46b08;
background: #fff7e6;
border-left: 3px solid #fa8c16;
padding: 8px 12px;
margin: 8px 0;
border-radius: 4px;
}
/* 優秀/推薦 → 藍色高亮 */
.excellent {
color: #1890ff;
font-weight: 600;
}
/* 排名四分位顏色 */
.quartile-excellent { color: #cf1322; } /* 前25% - 紅色(好) */
.quartile-good { color: #fa8c16; } /* 前50% - 橙色 */
.quartile-average { color: #999; } /* 後50% - 灰色 */
.quartile-warning { color: #3f8600; } /* 後25% - 綠色(差) */
在 HTML 報告中,所有涉及漲跌、收益的資料必須使用 <span> 標籤包裹並應用對應 CSS 類:
| 資料型別 | 正值(上漲/盈利) | 負值(下跌/虧損) | 零值(平盤) |
|---|---|---|---|
| 漲跌幅、收益率 | <span class="up">+X.XX%</span> |
<span class="down">-X.XX%</span> |
<span class="flat">0.00%</span> |
| 收益金額(元) | <span class="up">+X,XXX.XX</span> |
<span class="down">-X,XXX.XX</span> |
<span class="flat">0.00</span> |
| 同類排名百分位 | <span class="up">前25%</span> |
<span class="down">後25%</span> |
- |
| 四分位評級 | <span class="quartile-excellent">優秀</span> |
<span class="quartile-warning">預警</span> |
<span class="quartile-average">一般</span> |
| 最大回撤 | - | <span class="down">-X.XX%</span> |
- |
| 夏普比率 | <span class="up">>1</span> |
<span class="down"><0</span> |
<span class="flat">0-1</span> |
| 超額收益 | <span class="up">+X.XX%</span> |
<span class="down">-X.XX%</span> |
<span class="flat">0.00%</span> |
重要:
- 絕對不要在 HTML 中使用 emoji(⚠️🥇🥈🥉⭐🏆❌⏰等),改用 CSS 樣式或純文字替代
- 風險預警用 <div class="warning"> 包裹
- 評級用文字+顏色類:<span class="excellent">優秀</span>、<span class="up">良好</span>、<span class="flat">一般</span>、<span class="down">預警</span>
- 推薦排序用文字:[最推薦]、[次推薦]、[備選]
- 非交易日提示用 <div class="warning"> 包裹,文字開頭用 [提示]
.report-header {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
color: #fff;
padding: 16px;
border-radius: 8px;
margin-bottom: 12px;
}
.report-header h1 {
font-size: 18px;
margin-bottom: 4px;
}
.report-header .date {
font-size: 12px;
color: rgba(255,255,255,0.7);
}
/* 彙總資料高亮 */
.summary-box {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 10px 0;
}
.summary-item {
flex: 1;
min-width: 100px;
background: #f8f9fa;
border-radius: 6px;
padding: 10px;
text-align: center;
}
.summary-item .label {
font-size: 11px;
color: #999;
margin-bottom: 4px;
}
.summary-item .value {
font-size: 16px;
font-weight: 600;
}
/* 列表樣式 */
ul, ol { padding-left: 20px; margin: 6px 0; }
li { margin: 4px 0; }
/* 分割線 */
hr { border: none; border-top: 1px solid #eee; margin: 12px 0; }
/* 加粗 */
strong { color: #1a1a1a; }
/* 連結 */
a { color: #1890ff; text-decoration: none; }
| 模式 | 場景 | 一句話說明 |
|---|---|---|
| A | 查一隻基金 | 輸入基金名稱或程式碼,自動完成全方位深度分析 |
| B | 對比多隻基金 | 2-3只基金橫向PK,含評分和推薦 |
| C | 算持倉收益 | 提供持倉清單,計算每日/周/月收益 |
| D | 回測歷史表現 | 提供持倉+時間段,回測年化收益、回撤、夏普等 |
幫我分析 003429 → 模式A(單基金)
幫我比較 003429 和 004322 → 模式B(對比)
幫我分析以下持倉: → 模式C(收益)
基金名 | 003429 | 130,000
幫我回測過去一年收益: → 模式D(回測)
基金名 | 003429 | 130,000
模式自動識別規則: - 含"對比/比較/vs/哪個好" → 模式B - 含持有金額 + "回測/過去/近X年/近X月/成立以來/YTD" → 模式D - 含持有金額但不含時間關鍵詞 → 模式C - 其餘 → 模式A
模糊輸入處理:
| 輸入情況 | 處理方式 |
|---|---|
| 只說基金簡稱(如"易方達藍籌") | WebSearch搜尋全稱和程式碼,確認後繼續 |
| 只說基金程式碼(如"003429") | 直接使用,若程式碼不存在則提示 |
| 含多隻但未用分隔符 | 嘗試按頓號、換行、空格分割 |
| 金額格式不標準(如"13萬"、"800萬") | 自動解析為數字 |
| 無法識別意圖 | 提示使用者按標準格式輸入 |
識別失敗提示模板:
未能準確識別您的輸入,請按以下格式重新輸入:
- 單基金分析:幫我分析 {基金名稱或程式碼}
- 基金對比:比較 {基金A} 和 {基金B}
- 持倉分析:每行一隻 基金名 | 程式碼 | 金額
| 功能 | 說明 |
|---|---|
| 基金淨值查詢 | 當日/歷史淨值,來源天天基金網 |
| 業績分析 | 階段漲幅、同類排名、四分位 |
| 風險排查 | 8維度風險檢測(規模、機構、經理、回撤等) |
| 同類推薦 | 基於業績、費率、規模篩選同類優質基金 |
| 持倉收益計算 | 當日/周/月收益,持倉結構分析 |
| 持倉回測 | 歷史收益、年化收益率、最大回撤、夏普比率 |
| 市場行情 | A股/債市/海外/貨幣市場行情概要 |
| 調倉建議 | 基於持倉結構和市場行情給出建議 |
| 功能 | 說明 | 替代方案 |
|---|---|---|
| 即時交易/買賣 | 無法執行基金申購贖回 | 請使用券商/銀行APP |
| 個人賬戶資料 | 無法獲取您的真實持倉、收益記錄 | 需手動輸入持倉清單 |
| 基金經理訪談/路演 | 無法獲取非公開資訊 | 關注基金公司官網公告 |
| 未來收益預測 | 無法預測基金未來漲跌 | 僅提供歷史資料分析 |
| 私募基金/專戶 | 僅支援公募基金 | 私募資訊不公開 |
| 基金開戶/費率優惠 | 無法辦理業務 | 請諮詢銷售渠道 |
| 24小時即時資料 | 僅在交易日收盤後更新淨值 | 盤中為估算值 |
| 基金公司內部資訊 | 無法獲取基金經理策略、內部持倉調整等 | 關注定期報告和公告 |
| 個性化投資建議 | 僅提供基於資料的一般性分析 | 請諮詢專業理財顧問 |
| 不同渠道費率比較 | 無法查詢各銷售渠道的具體費率 | 直接諮詢各銷售渠道 |
| 封閉期基金贖回 | 無法查詢封閉期內的贖回規則 | 檢視基金合同或諮詢客服 |
| 限制 | 說明 |
|---|---|
| 資料來源 | 僅從天天基金網獲取,可能存在延遲 |
| 同時分析數量 | 建議不超過10只,過多可能超時 |
| 回測時間跨度 | 最長支援5年,更長時間資料可能不完整 |
| 非交易日 | 可執行分析,但資料為上一個交易日 |
本技能提供兩個Python封裝指令碼:
封裝天天基金的資料介面,支援:
封裝 thsdk 庫的常用操作,支援:
# 匯入指令碼
import sys
sys.path.insert(0, '/path/to/fund-analyzer-plus/scripts')
from fund_api import FundAPI
api = FundAPI()
# 1. 解析基金程式碼(支援名稱/簡稱輸入)
code = api.resolve_fund_code("易方達藍籌") # -> "005827"
code = api.resolve_fund_code("中證興業信用債") # -> "003429"(模糊匹配)
code = api.resolve_fund_code("003429") # -> "003429"
# 2. 獲取最新淨值
nav = api.get_estimated_nav("003429")
# 返回: {"fundcode": "003429", "name": "...", "dwjz": "1.1946", "gszzl": "0.01", "ljjz": "1.4436", ...}
# 3. 獲取歷史淨值(用於回測)
hist = api.get_historical_nav_as_list("003429", days=365)
# 返回: [{"date": "2025-07-03", "nav": 1.1964, "cumnav": 1.1964}, ...]
# 4. 搜尋基金(支援首字母縮寫)
results = api.search_fund("易方達") # 按名稱
results = api.search_fund("YFD") # 按拼音首字母縮寫
# 5. 帶降級的淨值獲取
result = api.get_nav_with_fallback("003429")
# 返回: {"nav": "1.1946", "date": "2026-08-14", "source": "lsjz_api", "type": "confirmed"}
# 6. 基金詳情
detail = api.get_fund_detail("003429")
# 返回: {"name": "...", "manage_fee": "0.15%", "establish_date": "2016-11-04", ...}
# 7. 金額解析
amount = api.parse_amount("13萬") # -> 130000.0
# 8. 收益計算
ret = api.calculate_return([{"code": "003429", "amount": 130000}])
# 返回: {"total_return": 13.0, "daily_return_rate": 0.01, ...}
# 9. 回測計算
bt = api.calculate_backtest([{"code": "003429", "amount": 130000}], days=365)
# 返回: {"portfolio_return": 2.02, "fund_details": [{"sharpe_ratio": 0.45, "max_drawdown": -1.15, ...}]}
from stock_api import StockAPI
with StockAPI() as api:
# 搜尋股票
result = api.search_symbol("寧德時代") # -> {"THSCODE": "USZA300750", ...}
# 即時行情
quote = api.get_realtime_quote("寧德時代")
# K線資料
klines = api.get_klines("寧德時代", interval="5m", count=78)
# 板塊行情
block_data = api.get_block_market_data("半導體")
constituents = api.get_block_constituents("半導體")
# 問財選股
stocks = api.wencai_select("連續3日主力淨流入,換手率大於5%,非ST")
| 介面 | URL | 用途 |
|---|---|---|
| 最新淨值 | https://api.fund.eastmoney.com/f10/lsjz |
獲取最新確認淨值和日漲跌幅 |
| 歷史淨值 | http://fund.eastmoney.com/pingzhongdata/{code}.js |
獲取完整歷史淨值資料 |
| 基金列表 | http://fund.eastmoney.com/js/fundcode_search.js |
獲取所有基金資訊用於搜尋 |
| 基金詳情 | https://fundf10.eastmoney.com/jbgk_{code}.html |
獲取基金規模/經理/費率等 |
| 持倉詳情 | https://fundf10.eastmoney.com/ccmx_{code}.html |
獲取前十大重倉股 |
| 股票資料 | thsdk 庫 | 同花順行情介面(遊客模式可用) |
第一步:確定今天的日期。 使用系統當前日期(YYYY-MM-DD),不要猜測或假設。
第二步:判斷是否為交易日。 A股交易日規則: - 週一至週五 → 交易日(但法定節假日除外) - 週六、週日 → 非交易日 - 法定節假日必須通過 WebSearch 確認,常見節假日包括:元旦(1天)、春節(7天)、清明(3天)、五一(5天)、端午(3天)、中秋(3天)、國慶(7天)。注意:節假日可能涉及調休,如某週六可能因調休變為工作日但並非交易日
判斷流程: 1. 先看星期幾:週六/週日 → 非交易日,直接使用上一交易日資料 2. 週一至週五 → 通過 WebSearch 搜尋"{今天日期} A股是否開市" 或 "{今年} {節日名} 放假時間" 確認是否為節假日 3. 節假日 → 非交易日,使用上一交易日資料 4. 普通工作日 → 交易日
第三步:獲取淨值資料(關鍵)。 基金淨值分兩種,必須正確區分:
| 型別 | 說明 | 精度 |
|---|---|---|
| 確認淨值 | 基金公司計算後的正式淨值,收盤後 18:00-22:00 公佈 | 精確,用於計算實際收益 |
| 估算淨值 | 盤中根據持倉股票即時價格估算的淨值,有誤差 | 估算值,僅供參考 |
重要:天天基金網的 WebFetch 問題
天天基金網(fund.eastmoney.com)的所有頁面通過 JavaScript 動態渲染資料。使用 WebFetch 工具抓取時,獲取的是伺服器端快取的舊 HTML,資料可能是幾天前的。這是一個已知的技術限制。
資料獲取策略(按優先順序):
scripts/fund_api.py 中的 FundAPI 類api.get_estimated_nav(程式碼) - 獲取最新確認淨值和日漲跌幅api.get_nav_with_fallback(程式碼) - 帶降級的淨值獲取api.get_historical_nav_as_list(程式碼) - 獲取歷史淨值api.get_fund_detail(程式碼) - 獲取基金詳情(規模/經理/費率)api.resolve_fund_code(名稱) - 自動解析基金名稱/簡稱為程式碼api.calculate_return(持倉) - 計算持倉當日收益api.calculate_backtest(持倉, days) - 回測計算(年化/回撤/夏普)優點:無需瀏覽器,速度快,支援歷史資料和計算
瀏覽器工具(備用,用於確認淨值或獲取指令碼未覆蓋的資料):
browser_navigate 訪問 https://fund.eastmoney.com/{程式碼}.htmlbrowser_evaluate 執行 document.querySelector('.w782') 獲取歷史淨值表格的最新一行這是獲取天天基金網最新確認淨值的唯一可靠方式
lsjz API(Python指令碼內部使用):
api.fund.eastmoney.com/f10/lsjz 獲取最新確認淨值注意:該介面返回的是確認淨值(非盤中估算),資料更新於收盤後
所有方案均失敗時:
WebSearch 搜尋"{基金名稱} {基金程式碼} 最新淨值"獲取第三方網站的資料報告中的日期標註: - 使用瀏覽器獲取的確認淨值 → "資料日期:{日期}(確認淨值)" - 使用估算介面 → "資料日期:{日期}(盤中估算淨值,實際收益以收盤後確認為準)" - 非交易日 → "[提示] 今日為非交易日({原因}),以下資料為上一個交易日({日期})的確認淨值。"
重要:
- 絕對不要把週一到週五的普通工作日誤判為非交易日
- 絕對不要忽略法定節假日(端午、中秋等可能恰逢週五/週一)
- 絕對不要把估算淨值當作確認淨值使用,必須在報告中明確標註
- 絕對不要直接使用 WebFetch 抓取天天基金網獲取的淨值資料,該資料可能是快取的舊資料
- 如果估值介面的 gztime 不是今天的日期,說明今日沒有估算資料(如非交易日),應使用確認淨值
- 如果估值介面對QDII基金返回空資料,必須使用瀏覽器工具獲取最新資料
從天天基金網(fund.eastmoney.com)採集:
| 欄位 | 來源 | 說明 |
|---|---|---|
| 基金全稱/程式碼/型別/風險等級 | 瀏覽器訪問 fund.eastmoney.com/{程式碼}.html | 頂部基本資訊 |
| 最新單位淨值 + 日漲跌幅 | 見下方"淨值獲取策略" | 區分確認淨值和估算淨值 |
| 淨值日期 | 淨值資料中附帶 | 必須標註是確認還是估算 |
| 基金規模/成立日期 | 瀏覽器訪問或 WebFetch 均可 | 靜態資料,快取影響不大 |
| 基金經理 + 任職時間 | fundf10.eastmoney.com/jjjl_{程式碼}.html | 靜態資料 |
| 管理費率 | 購買資訊 | 含管理費+託管費+銷售服務費 |
淨值獲取策略(按優先順序):
1. Python指令碼(推薦):使用 FundAPI.get_estimated_nav(程式碼) 或 FundAPI.get_nav_with_fallback(程式碼)
2. 瀏覽器工具(最可靠):訪問 https://fund.eastmoney.com/{程式碼}.html,通過 JS 獲取最新確認淨值和日期
3. lsjz API(備用):https://api.fund.eastmoney.com/f10/lsjz?fundCode={程式碼}(Python指令碼已封裝此介面,返回確認淨值和日漲跌幅)
4. WebSearch(兜底):搜尋"{基金名稱} 最新淨值"從第三方獲取
注意:WebFetch 抓取天天基金網頁面獲取的是快取舊資料,不可直接用於獲取淨值。靜態資訊(基金名稱、規模、經理等)使用 WebFetch 沒有問題。 注意:舊的估算淨值介面
fundgz.1234567.com.cn已失效,不要使用。
| 維度 | 時間區間 | 對比 |
|---|---|---|
| 階段漲幅 | 近1周/1月/3月/6月/今年/1年/2年/3年 | 同類平均 |
| 季度/年度漲幅 | 近4季度 + 近3年 | 同類平均 |
| 同類排名 | 各區間百分位 + 四分位 |
評級標準: 各區間均前25% → 優秀 | 多數前50% → 良好 | 多數後50% → 一般 | 多數後25% → 預警
| 檢查維度 | 異常閾值 | 風險型別 |
|---|---|---|
| 基金規模 | < 2億元 | 清盤風險 |
| 規模變動 | 近一季縮水 > 30% | 大額贖回 |
| 機構佔比 | > 80% 或大幅減持 | 贖回踩踏 |
| 基金經理 | 任職 < 1年或近期變更 | 策略不穩定 |
| 最大回撤 | > 同類1.5倍 | 風控預警 |
| 跟蹤誤差 | > 0.3%(債指)/> 1%(股指) | 指數管理問題 |
| 換手率 | 異常高/低 | 策略風險 |
| 持倉集中度 | 前十大 > 60% | 集中風險 |
查詢路徑:基金規模 fundf10.eastmoney.com/gmbd_{程式碼}.html | 機構佔比 cyrjg_{程式碼}.html
對股票型/混合型/指數型基金,額外分析:前十大重倉股、行業分佈、持倉風格(大盤/中盤/小盤,成長/價值)
查詢路徑:fundf10.eastmoney.com/ccmx_{程式碼}.html
搜尋同類基金,按優先順序排序推薦2-3只: 1. 近1年/3年業績排名同類前20% 2. 基金經理任職 > 2年 3. 規模 5-100億元 4. 費率低於同類平均 5. 最大回撤優於同類平均
| 基金型別 | 搜尋關鍵詞 |
|---|---|
| 股票型/混合型 | "A股行情 板塊輪動"、"主力資金流向" |
| 債券型 | "債市行情 國債收益率"、"央行公開市場操作" |
| 指數型 | "{跟蹤指數名稱} 走勢" |
| QDII | "{投資區域} 市場行情"、"匯率走勢" |
| 貨幣型 | "資金面 銀行間利率" |
| FOF | "基金市場整體表現" |
報告檔名:基金分析報告_單基金_{YYYYMMDD}.html
<div class="report-header">
<h1>基金分析報告:{基金名稱}</h1>
<div class="date">資料日期:{YYYY-MM-DD}</div>
</div>
<!-- 非交易日時顯示 -->
<div class="warning">[提示] 今日為非交易日,以下資料為上一個交易日({YYYY-MM-DD})的資料。</div>
<div class="card">
<h2>一、基本資訊</h2>
<table>
<tr><th>專案</th><th>內容</th></tr>
<tr><td>基金名稱</td><td>{名稱}</td></tr>
<tr><td>基金程式碼</td><td>{程式碼}</td></tr>
<tr><td>基金型別</td><td>{型別}</td></tr>
<tr><td>風險等級</td><td>{等級}</td></tr>
<tr><td>最新淨值</td><td>{淨值} ({日期})</td></tr>
<tr><td>日漲跌幅</td><td><span class="up/down/flat">{漲跌幅}</span></td></tr>
<tr><td>基金規模</td><td>{規模}</td></tr>
<tr><td>基金經理</td><td>{經理} (任職X年X天)</td></tr>
<tr><td>綜合費率</td><td>{費率}</td></tr>
</table>
</div>
<div class="card">
<h2>二、業績表現</h2>
<table>
<tr><th>時間區間</th><th>漲幅</th><th>同類平均</th><th>同類排名</th><th>四分位</th></tr>
<tr><td>近1周</td><td><span class="up/down/flat">{值}</span></td><td><span class="up/down/flat">{值}</span></td><td>{排名}</td><td><span class="quartile-*">{評級}</span></td></tr>
<!-- 近1月/3月/6月/今年/1年/3年 同上 -->
</table>
<p>業績評級:<span class="excellent/up/flat/down">{評級文字}</span></p>
</div>
<div class="card">
<h2>三、風險預警</h2>
<!-- 有風險時 -->
<div class="warning">[風險型別] - [具體原因]</div>
<!-- 無風險時 -->
<p>全部正常,未發現異常風險。</p>
</div>
<div class="card">
<h2>四、持倉概覽</h2>
<!-- 權益類基金顯示 -->
<h3>前十大重倉股</h3>
<table>
<tr><th>序號</th><th>股票名稱</th><th>程式碼</th><th>佔淨值比</th></tr>
<!-- 資料行 -->
</table>
<h3>行業分佈</h3>
<table>
<tr><th>行業</th><th>佔比</th></tr>
<!-- 資料行 -->
</table>
</div>
<div class="card">
<h2>五、同類對比推薦</h2>
<table>
<tr><th>基金名稱</th><th>程式碼</th><th>近1年</th><th>近3年</th><th>規模</th><th>費率</th><th>推薦理由</th></tr>
<!-- 推薦基金行,漲幅用 up/down/flat 類 -->
</table>
</div>
<div class="card">
<h2>六、綜合建議</h2>
<p>{50-150字建議,結合業績、風險、市場行情}</p>
</div>
HTML 輸出示例:
<div class="report-header">
<h1>基金分析報告:中證興業中高等級信用債指數A</h1>
<div class="date">資料日期:2026-06-18</div>
</div>
<div class="warning">[提示] 今日為非交易日(週六),以下資料為上一個交易日(2026-06-18)的資料。</div>
<div class="card">
<h2>一、基本資訊</h2>
<table>
<tr><th>專案</th><th>內容</th></tr>
<tr><td>基金名稱</td><td>中證興業中高等級信用債指數A</td></tr>
<tr><td>基金程式碼</td><td>003429</td></tr>
<tr><td>基金型別</td><td>指數型-債券(信用債指數)</td></tr>
<tr><td>風險等級</td><td>R2(中低風險)</td></tr>
<tr><td>最新淨值</td><td>1.1962 (2026-06-18)</td></tr>
<tr><td>日漲跌幅</td><td><span class="up">+0.03%</span></td></tr>
<tr><td>基金規模</td><td>105.18億元</td></tr>
<tr><td>基金經理</td><td>伍方方、郭益均 (任職2年87天)</td></tr>
<tr><td>綜合費率</td><td>管理費0.20%+託管費0.10%</td></tr>
</table>
</div>
<div class="card">
<h2>二、業績表現</h2>
<table>
<tr><th>時間區間</th><th>漲幅</th><th>同類平均</th><th>同類排名</th><th>四分位</th></tr>
<tr><td>近1周</td><td><span class="up">+0.15%</span></td><td><span class="up">+0.15%</span></td><td>239/662</td><td><span class="quartile-good">良好</span></td></tr>
</table>
<p>業績評級:<span class="up">良好</span></p>
</div>
<div class="card">
<h2>三、風險預警</h2>
<div class="warning">[機構集中度過高] - 機構持有99.58%,存在大額贖回風險</div>
</div>
<div class="card">
<h2>六、綜合建議</h2>
<p>該基金跟蹤中高等級信用債指數,規模充足(105億),但機構佔比過高(99.58%)存在流動性風險。建議關注季度機構贖回動向,可考慮分散配置。</p>
</div>
對每隻基金執行 A1(資訊採集)+ A2(業績分析)+ A3(風險排查),然後橫向對比。
報告檔名:基金分析報告_對比_{YYYYMMDD}.html
<div class="report-header">
<h1>基金對比分析報告</h1>
<div class="date">資料日期:{YYYY-MM-DD}</div>
</div>
<!-- 非交易日時顯示 -->
<div class="warning">[提示] 今日為非交易日,以下資料為上一個交易日({YYYY-MM-DD})的資料。</div>
<div class="card">
<h2>一、基本資訊對比</h2>
<table>
<tr><th>專案</th><th>基金A</th><th>基金B</th><th>基金C</th></tr>
<tr><td>名稱</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>程式碼</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>型別</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>風險等級</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>規模</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>經理/任職時間</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>綜合費率</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>淨值</td><td>...</td><td>...</td><td>...</td></tr>
<tr><td>漲跌幅</td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td></tr>
</table>
</div>
<div class="card">
<h2>二、業績對比</h2>
<table>
<tr><th>時間區間</th><th>基金A</th><th>基金B</th><th>基金C</th><th>勝出</th></tr>
<tr><td>近1周</td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td><span class="excellent">[基金名]</span></td></tr>
<!-- 近1月/3月/6月/今年/1年/3年 同上 -->
<tr><td>綜合勝率</td><td>X/Y</td><td>X/Y</td><td>X/Y</td><td>-</td></tr>
</table>
</div>
<div class="card">
<h2>三、風險對比</h2>
<table>
<tr><th>維度</th><th>基金A</th><th>基金B</th><th>基金C</th><th>優選</th></tr>
<tr><td>最大回撤</td><td><span class="down">...</span></td><td><span class="down">...</span></td><td><span class="down">...</span></td><td><span class="excellent">[基金名]</span></td></tr>
<tr><td>機構佔比</td><td>...</td><td>...</td><td>...</td><td><span class="excellent">[基金名]</span></td></tr>
<tr><td>規模穩定性</td><td>...</td><td>...</td><td>...</td><td><span class="excellent">[基金名]</span></td></tr>
<tr><td>經理穩定性</td><td>...</td><td>...</td><td>...</td><td><span class="excellent">[基金名]</span></td></tr>
</table>
</div>
<div class="card">
<h2>四、費率對比</h2>
<table>
<tr><th>費用項</th><th>基金A</th><th>基金B</th><th>基金C</th><th>最低</th></tr>
<tr><td>管理費</td><td>...</td><td>...</td><td>...</td><td><span class="excellent">[基金名]</span></td></tr>
<tr><td>託管費</td><td>...</td><td>...</td><td>...</td><td><span class="excellent">[基金名]</span></td></tr>
</table>
</div>
<div class="card">
<h2>五、綜合評價與推薦</h2>
<h3>評分表(滿分5分)</h3>
<table>
<tr><th>維度</th><th>基金A</th><th>基金B</th><th>基金C</th></tr>
<tr><td>業績</td><td>X</td><td>X</td><td>X</td></tr>
<tr><td>風險</td><td>X</td><td>X</td><td>X</td></tr>
<tr><td>費率</td><td>X</td><td>X</td><td>X</td></tr>
<tr><td>管理</td><td>X</td><td>X</td><td>X</td></tr>
<tr><td>綜合</td><td><strong>X</strong></td><td><strong>X</strong></td><td><strong>X</strong></td></tr>
</table>
<h3>推薦結論</h3>
<p><span class="excellent">[最推薦]</span>:{基金名稱} - {理由}</p>
<p><span class="up">[次推薦]</span>:{基金名稱} - {理由}</p>
<p><span class="flat">[備選]</span>:{基金名稱} - {理由}</p>
<h3>適用場景建議</h3>
<ul>
<li>追求高收益 → {基金X}</li>
<li>追求穩健 → {基金Y}</li>
<li>低費率優先 → {基金Z}</li>
</ul>
</div>
HTML 輸出示例:
<div class="report-header">
<h1>基金對比分析報告</h1>
<div class="date">資料日期:2026-06-18</div>
</div>
<div class="warning">[提示] 今日為非交易日(週六),以下資料為上一個交易日(2026-06-18)的資料。</div>
<div class="card">
<h2>一、基本資訊對比</h2>
<table>
<tr><th>專案</th><th>基金A</th><th>基金B</th></tr>
<tr><td>名稱</td><td>中證興業中高等級信用債指數A</td><td>創金合信尊隆純債債券A</td></tr>
</table>
</div>
<div class="card">
<h2>五、綜合評價與推薦</h2>
<p><span class="excellent">[最推薦]</span>:創金合信尊隆純債A - 業績更優,回撤更小</p>
<p><span class="up">[次推薦]</span>:中證興業信用債指數A - 規模大,流動性好</p>
</div>
計算公式:
當日收益 = 持有金額 × 日漲跌幅(%轉小數,如0.05% = 0.0005)
總持有市值 = Σ(各基金持有金額)
當日總收益 = Σ(各基金當日收益)
日收益率 = 當日總收益 / 總持有市值 × 100%
收益精度:小數點後2位,正負號(+/-)。
按基金型別分類統計(股票型/混合型/債券型/指數型/貨幣型/其他),評估:股債比例、行業集中度、重複持倉。
同模式A的A3/A6,根據持倉型別組合搜尋對應市場行情。
報告檔名:基金分析報告_持倉_{YYYYMMDD}.html
<div class="report-header">
<h1>基金持倉分析報告</h1>
<div class="date">資料日期:{YYYY-MM-DD}</div>
</div>
<!-- 非交易日時顯示 -->
<div class="warning">[提示] 今日為非交易日,以下資料為上一個交易日({YYYY-MM-DD})的資料。</div>
<div class="card">
<h2>一、交易日說明</h2>
<p>本週交易日:X/X、X/X、X/X(共X天)</p>
</div>
<div class="card">
<h2>二、淨值與收益明細</h2>
<p>(按收益從高到低排序)</p>
<table>
<tr><th>序號</th><th>基金名稱</th><th>程式碼</th><th>型別</th><th>單位淨值</th><th>日漲跌幅</th><th>當日收益(元)</th><th>風險狀態</th></tr>
<tr><td>1</td><td>...</td><td>...</td><td>...</td><td>...</td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td>正常/預警</td></tr>
</table>
</div>
<div class="card">
<h2>三、收益彙總</h2>
<div class="summary-box">
<div class="summary-item">
<div class="label">總持有市值</div>
<div class="value">XXX,XXX.XX 元</div>
</div>
<div class="summary-item">
<div class="label">當日總收益</div>
<div class="value"><span class="up/down/flat">+X,XXX.XX 元</span></div>
</div>
<div class="summary-item">
<div class="label">日收益率</div>
<div class="value"><span class="up/down/flat">+X.XXXX%</span></div>
</div>
</div>
</div>
<div class="card">
<h2>四、持倉結構</h2>
<p>{各類基金佔比 + 配置合理性評估}</p>
</div>
<div class="card">
<h2>五、風險預警清單</h2>
<!-- 有風險時 -->
<div class="warning">[{基金名稱}]:[{風險型別}] - [{具體原因}]</div>
<!-- 無風險時 -->
<p>全部正常,未發現異常風險。</p>
</div>
<div class="card">
<h2>六、市場行情與調倉建議</h2>
<h3>市場要點</h3>
<p>...</p>
<h3>調倉建議</h3>
<ol>
<li>...</li>
<li>...</li>
<li>...</li>
</ol>
</div>
HTML 輸出示例:
<div class="report-header">
<h1>基金持倉分析報告</h1>
<div class="date">資料日期:2026-06-18</div>
</div>
<div class="warning">[提示] 今日為非交易日(週六),以下資料為上一個交易日(2026-06-18)的資料。</div>
<div class="card">
<h2>二、淨值與收益明細</h2>
<table>
<tr><th>序號</th><th>基金名稱</th><th>程式碼</th><th>型別</th><th>淨值</th><th>漲跌幅</th><th>當日收益(元)</th></tr>
<!-- 資料行,漲跌幅和收益用 up/down/flat 類 -->
</table>
</div>
<div class="card">
<h2>三、收益彙總</h2>
<div class="summary-box">
<div class="summary-item">
<div class="label">總持有市值</div>
<div class="value">381,030.15 元</div>
</div>
<div class="summary-item">
<div class="label">當日總收益</div>
<div class="value"><span class="up">+117.29 元</span></div>
</div>
<div class="summary-item">
<div class="label">日收益率</div>
<div class="value"><span class="up">+0.0308%</span></div>
</div>
</div>
</div>
<div class="card">
<h2>四、持倉結構</h2>
<p>債券型佔比100%(信用債指數34% + 純債53% + 同業存單13%)</p>
</div>
| 使用者表述 | 起始日期 |
|---|---|
| 過去一年 / 近1年 | 當日往前推1年 |
| 過去半年 / 近6月 | 當日往前推6個月 |
| 今年以來 / YTD | 今年1月2日 至 當日 |
| 成立以來 | 最晚成立的基金成立日 |
| 自定義(如"2025年至今") | 按使用者指定 |
通過WebSearch確認起始日和結束日各自對應的最近交易日。
推薦方式:使用Python指令碼獲取歷史淨值資料
import sys
sys.path.insert(0, '/path/to/fund-analyzer-plus/scripts')
from fund_api import FundAPI
api = FundAPI()
# 獲取歷史淨值(最近365天)
hist = api.get_historical_nav_as_list("003429", days=365)
# 返回: [{"date": "2025-07-03", "nav": 1.1964, "cumnav": 1.1964}, ...]
# 或獲取完整歷史資料(含原始資料)
data = api.get_historical_nav("003429")
# data["unit_nav"] - 單位淨值走勢
# data["cumulative_nav"] - 累計淨值走勢
備用方式:瀏覽器訪問 fundf10.eastmoney.com/jjjz_{基金程式碼}.html
需採集:起始日淨值、結束日淨值、期間每個交易日淨值(計算回撤/波動率)、分紅記錄。 使用累計淨值計算含分紅的真實收益。
單基金:期間收益率 = (NAV_end - NAV_start) / NAV_start × 100%
年化收益率 = (1 + 期間收益率) ^ (365 / 持有天數) - 1
組合(加權):組合收益率 = Σ(各基金收益額) / 總持有金額 × 100%
基準對比:滬深300(權益)、中證全債(債券)、銀行理財平均(保守)。
| 指標 | 計算方法 |
|---|---|
| 最大回撤 | (最高點 - 最低點) / 最高點 |
| 年化波動率 | 日收益率標準差 × √252 |
| 夏普比率 | (年化收益率 - 無風險利率) / 年化波動率(無風險利率取1年期國債約1.5%) |
| 正收益天數佔比 | 正收益交易日數 / 總交易日數 |
| 最長回撤修復天數 | 從最大回撤到淨值恢復的天數 |
報告檔名:基金分析報告_回測_{YYYYMMDD}.html
<div class="report-header">
<h1>持倉回測分析報告</h1>
<div class="date">資料截至:{YYYY-MM-DD}</div>
</div>
<!-- 非交易日時顯示 -->
<div class="warning">[提示] 今日為非交易日,以下資料截至上一個交易日({YYYY-MM-DD})。</div>
<div class="card">
<h2>一、回測區間</h2>
<table>
<tr><th>專案</th><th>內容</th></tr>
<tr><td>起始日期</td><td>{YYYY-MM-DD}</td></tr>
<tr><td>結束日期</td><td>{YYYY-MM-DD}</td></tr>
<tr><td>持有天數</td><td>X天</td></tr>
<tr><td>交易日數</td><td>X天</td></tr>
</table>
</div>
<div class="card">
<h2>二、組合整體表現</h2>
<div class="summary-box">
<div class="summary-item">
<div class="label">總持有金額</div>
<div class="value">XXX,XXX.XX 元</div>
</div>
<div class="summary-item">
<div class="label">期間總收益</div>
<div class="value"><span class="up/down/flat">+XXX,XXX.XX 元</span></div>
</div>
<div class="summary-item">
<div class="label">期間收益率</div>
<div class="value"><span class="up/down/flat">+X.XX%</span></div>
</div>
<div class="summary-item">
<div class="label">年化收益率</div>
<div class="value"><span class="up/down/flat">+X.XX%</span></div>
</div>
<div class="summary-item">
<div class="label">最大回撤</div>
<div class="value"><span class="down">-X.XX%</span></div>
</div>
<div class="summary-item">
<div class="label">夏普比率</div>
<div class="value"><span class="up/down/flat">X.XX</span></div>
</div>
</div>
<table>
<tr><th>指標</th><th>數值</th></tr>
<tr><td>基準收益率(滬深300/中證全債)</td><td><span class="up/down/flat">+X.XX%</span></td></tr>
<tr><td>超額收益</td><td><span class="up/down/flat">+X.XX%</span></td></tr>
</table>
</div>
<div class="card">
<h2>三、各基金明細(按收益從高到低)</h2>
<table>
<tr><th>序號</th><th>基金名稱</th><th>程式碼</th><th>型別</th><th>起始淨值</th><th>結束淨值</th><th>期間收益</th><th>年化收益</th><th>收益額</th><th>最大回撤</th></tr>
<tr><td>1</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td><span class="down">...</span></td></tr>
</table>
</div>
<div class="card">
<h2>四、收益貢獻分析</h2>
<table>
<tr><th>基金名稱</th><th>持倉佔比</th><th>收益貢獻</th><th>貢獻佔比</th></tr>
<tr><td>...</td><td>...</td><td><span class="up/down/flat">...</span></td><td>...</td></tr>
</table>
</div>
<div class="card">
<h2>五、風險指標對比</h2>
<table>
<tr><th>指標</th><th>組合</th><th>同類平均</th><th>評價</th></tr>
<tr><td>年化收益率</td><td><span class="up/down/flat">...</span></td><td><span class="up/down/flat">...</span></td><td><span class="excellent/up/down">優於/劣於</span></td></tr>
<tr><td>最大回撤</td><td><span class="down">...</span></td><td><span class="down">...</span></td><td><span class="excellent/up/down">優於/劣於</span></td></tr>
<tr><td>夏普比率</td><td>...</td><td>...</td><td><span class="excellent/up/down">優於/劣於</span></td></tr>
</table>
</div>
<div class="card">
<h2>六、關鍵發現與建議</h2>
<ol>
<li>表現最佳基金 + 原因</li>
<li>表現最差基金 + 原因</li>
<li>風險提示</li>
<li>最佳化建議(150字以內)</li>
</ol>
</div>
HTML 輸出示例:
<div class="report-header">
<h1>持倉回測分析報告</h1>
<div class="date">資料截至:2026-06-18</div>
</div>
<div class="warning">[提示] 今日為非交易日(週六),以下資料截至上一個交易日(2026-06-18)。</div>
<div class="card">
<h2>一、回測區間</h2>
<table>
<tr><th>專案</th><th>內容</th></tr>
<tr><td>起始日期</td><td>2025-06-18</td></tr>
<tr><td>結束日期</td><td>2026-06-18</td></tr>
<tr><td>持有天數</td><td>365天</td></tr>
<tr><td>交易日數</td><td>244天</td></tr>
</table>
</div>
<div class="card">
<h2>二、組合整體表現</h2>
<div class="summary-box">
<div class="summary-item">
<div class="label">總持有金額</div>
<div class="value">381,030.15 元</div>
</div>
<div class="summary-item">
<div class="label">期間總收益</div>
<div class="value"><span class="up">+10,250.00 元</span></div>
</div>
<div class="summary-item">
<div class="label">年化收益率</div>
<div class="value"><span class="up">+2.69%</span></div>
</div>
<div class="summary-item">
<div class="label">最大回撤</div>
<div class="value"><span class="down">-0.85%</span></div>
</div>
<div class="summary-item">
<div class="label">夏普比率</div>
<div class="value"><span class="up">1.82</span></div>
</div>
</div>
<table>
<tr><th>指標</th><th>數值</th></tr>
<tr><td>基準收益率(中證全債)</td><td><span class="up">+3.20%</span></td></tr>
<tr><td>超額收益</td><td><span class="down">-0.51%</span></td></tr>
</table>
</div>
<div class="card">
<h2>三、各基金明細</h2>
<table>
<tr><th>序號</th><th>基金名稱</th><th>程式碼</th><th>型別</th><th>起始淨值</th><th>結束淨值</th><th>期間收益</th><th>年化收益</th><th>收益額</th><th>最大回撤</th></tr>
<tr><td>1</td><td>創金合信尊隆純債A</td><td>004322</td><td>純債</td><td>1.0156</td><td>1.0234</td><td><span class="up">+0.77%</span></td><td><span class="up">+0.77%</span></td><td><span class="up">+1,547</span></td><td><span class="down">-0.32%</span></td></tr>
<tr><td>2</td><td>中證興業信用債指數A</td><td>003429</td><td>信用債指數</td><td>1.1810</td><td>1.1962</td><td><span class="up">+1.29%</span></td><td><span class="up">+1.29%</span></td><td><span class="up">+1,678</span></td><td><span class="down">-0.68%</span></td></tr>
<tr><td>3</td><td>天弘同業存單AAA</td><td>017423</td><td>同業存單</td><td>1.0012</td><td>1.0089</td><td><span class="up">+0.77%</span></td><td><span class="up">+0.77%</span></td><td><span class="up">+385</span></td><td><span class="down">-0.05%</span></td></tr>
</table>
</div>
<div class="card">
<h2>五、風險指標對比</h2>
<table>
<tr><th>指標</th><th>組合</th><th>同類平均</th><th>評價</th></tr>
<tr><td>年化收益率</td><td><span class="up">+2.69%</span></td><td><span class="up">+2.45%</span></td><td><span class="excellent">優於</span></td></tr>
<tr><td>最大回撤</td><td><span class="down">-0.85%</span></td><td><span class="down">-1.20%</span></td><td><span class="excellent">優於</span></td></tr>
<tr><td>夏普比率</td><td>1.82</td><td>1.50</td><td><span class="excellent">優於</span></td></tr>
</table>
</div>
<div class="card">
<h2>六、關鍵發現與建議</h2>
<ol>
<li>表現最佳:中證興業信用債指數A,收益<span class="up">+1.29%</span>,貢獻佔比55.7%</li>
<li>組合回撤控制良好(<span class="down">-0.85%</span>),波動率低於同類</li>
<li>最佳化建議:可適當增加長久期利率債配置以提升收益彈性</li>
</ol>
</div>
| 關鍵詞 | 大類 | 二級分類 | 典型風險等級 |
|---|---|---|---|
| 滬深300/中證500/創業板/科創 | 指數型-股票 | 寬基指數 | R4-R5 |
| 消費/醫藥/新能源/半導體/軍工 | 股票型或指數型 | 行業主題 | R4-R5 |
| 藍籌/成長/價值/精選 | 混合型或股票型 | 主動權益 | R4 |
| 信用債/產業債/城投債 | 債券型 | 信用債 | R2 |
| 國開債/國債指數 | 指數型-債券 | 利率債指數 | R2 |
| 同業存單 | 指數型-債券 | 同業存單 | R2 |
| 純債/短債/中短債 | 債券型 | 純債 | R2 |
| 可轉債 | 債券型 | 可轉債 | R3 |
| QDII/納斯達克/標普 | QDII | 海外 | R4-R5 |
| FOF/養老目標 | FOF | 基金中基金 | R3-R4 |
| 貨幣/餘額寶 | 貨幣型 | 貨幣 | R1 |
權益類(股票型/混合型/股票指數): 大盤走勢、板塊輪動、北向資金、漲跌家數 搜尋:"A股今日行情"、"北向資金流向"、"板塊輪動 主力資金"
債券市場(債券型/債券指數): 10年期國債收益率、央行公開市場操作、DR007/Shibor、信用利差 搜尋:"今日債市行情"、"國債收益率走勢"、"央行公開市場操作"
海外市場(QDII): 美股三大指數、投資區域主要指數、人民幣匯率、美聯儲政策 搜尋:"美股行情"、"{投資區域}市場行情"、"人民幣匯率走勢"
| 異常 | 處理 | 使用者提示 |
|---|---|---|
| 請求超時 | 等3秒重試1次 | "網路請求中,請稍候..." |
| 重試仍失敗 | 跳過,標記"資料獲取失敗" | "[警告] [資料項] 獲取失敗" |
| 連續3項失敗 | 終止任務 | "[錯誤] 網路連線異常,請檢查網路後重試" |
備用資料來源: 搜狐基金 q.fund.sohu.com/{程式碼}/ → 新浪財經 finance.sina.com.cn/fund/{程式碼}.html → WebSearch "{名稱} 最新淨值"
| 異常 | 判斷 | 處理 |
|---|---|---|
| 淨值日期過期 | < 上一個交易日 | 標記"資料未更新" |
| 漲跌幅異常 | > ±10% | 標記"異常波動" |
| 淨值為0/負 | NAV ≤ 0 | 跳過該基金 |
| 規模資料缺失 | 無法獲取 | 標記"無法評估" |
| 輸入 | 識別 | 處理 |
|---|---|---|
003429 / 003429基金 / 幫我看看003429 |
基金程式碼 | 正則提取6位數字 |
中證興業信用債 / 易方達藍籌 |
基金名稱/簡稱 | WebSearch搜尋全稱和程式碼 |
130,096.47元 / 13萬元 / 800萬 |
金額 | 解析為數字 |
| 場景 | 提示 | 操作 |
|---|---|---|
| 網路斷開 | "[錯誤] 網路連線失敗" | 使用者檢查網路 |
| 天天基金不可用 | "[警告] 正在嘗試其他資料來源..." | 自動切換 |
| 基金程式碼不存在 | "[錯誤] 未找到基金 {程式碼}" | 使用者核實 |
| 淨值未更新 | "[提示] 最新淨值日期為 {日期}" | 等待T+1 |
| 格式 | 說明 | 示例 |
|---|---|---|
| 基金名稱或程式碼 | 模式A | 幫我分析 003429 |
| 多隻基金 + 對比關鍵詞 | 模式B | 對比 003429 和 004322 |
| 基金名 | 程式碼 | 金額 | 模式C | 基金名 \| 003429 \| 130,000 |
| 基金名 | 程式碼 | 金額 + 時間 | 模式D | 基金名 \| 003429 \| 130,000 + 過去一年 |
| 股票名稱或程式碼 | 股票模式 | 幫我分析 寧德時代 |
| 多隻股票 + 對比 | 股票對比 | 對比 貴州茅臺 和 五糧液 |
| 分鐘K線 | K線模式 | 檢視寧德時代5分鐘K線 |
| 板塊行情 | 板塊模式 | 檢視半導體板塊行情 |
基於同花順資料介面的高階股票分析功能,與基金分析無縫銜接
優先使用 scripts/stock_api.py 中的 StockAPI 類,它封裝了 thsdk 的常用操作,提供與 fund_api.py 一致的介面風格(自動程式碼解析、錯誤處理、批次查詢):
from stock_api import StockAPI
with StockAPI() as api:
# 所有方法都支援直接傳入中文名稱,自動解析為 THSCODE
quote = api.get_realtime_quote("寧德時代") # 即時行情
klines = api.get_klines("寧德時代", "5m", count=78) # K線
depth = api.get_depth("寧德時代") # 五檔盤口
block = api.get_block_market_data("半導體") # 板塊行情
stocks = api.wencai_select("連續3日主力淨流入") # 問財選股
comparison = api.compare_stocks(["貴州茅臺", "五糧液"]) # 多股對比
以下文件展示 thsdk 底層介面的詳細用法,供需要直接呼叫 thsdk 或 stock_api.py 未覆蓋的場景使用。
| 模式 | 場景 | 一句話說明 |
|---|---|---|
| E | 查一隻股票 | 輸入股票名稱或程式碼,檢視即時行情、K線走勢、資金流向 |
| F | 對比多隻股票 | 2-3只股票橫向PK,含漲跌對比、相關性分析 |
| G | 分鐘K線分析 | 檢視1m/5m/15m/30m/60m/120m多週期K線,疊加均線、標註異動 |
| H | 板塊行情 | 檢視申萬行業/概念板塊漲跌排名、成分股、領漲股 |
| I | 盤口與大單 | 五檔盤口深度、大單流向、集合競價異動掃描 |
| J | 智慧選股 | 問財自然語言選股:財務指標、技術形態、資金流向等 |
幫我分析 寧德時代 → 模式E(單股票)
幫我比較 貴州茅臺 和 五糧液 → 模式F(對比)
檢視寧德時代5分鐘K線 → 模式G(K線)
檢視半導體板塊行情 → 模式H(板塊)
檢視寧德時代盤口和大單 → 模式I(盤口)
幫我選一些ROE大於15%的股票 → 模式J(選股)
模式自動識別規則: - 含"對比/比較/vs/哪個好" → 模式F - 含"分鐘/K線/走勢/分時" → 模式G - 含"板塊/行業/概念/成分股" → 模式H - 含"盤口/大單/資金/競價" → 模式I - 含"選股/篩選/找/選" → 模式J - 其餘 → 模式E
想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。
所有中文名/縮寫/短程式碼先用 search_symbols 獲得完整 THSCODE:
from thsdk import THS
with THS() as ths:
resp = ths.search_symbols("寧德時代")
# data → [
# {'THSCODE': 'USZA300750', 'Name': '寧德時代',
# 'MarketStr': 'USZA', 'Code': '300750', 'MarketDisplay': '深A'},
# ]
選碼規則:
| 情況 | 處理 |
|---|---|
| 0條 | 告知未找到 |
| 1條 | 直接使用 |
| 多條,只有1只A股 | 自動選A股 |
| 多條,多隻A股 | 展示列表,等使用者選擇 |
市場字首:
| 字首 | 含義 | 字首 | 含義 |
|---|---|---|---|
USHA |
上海A股 | USHI |
上海指數 |
USZA |
深圳A股 | USZI |
深圳指數 |
USTM |
北交所 | UHKG |
港股 |
URFI |
行業/概念板塊 | UFXB |
外匯 |
常用指數 THSCODE:
| 指數 | THSCODE | 指數 | THSCODE |
|---|---|---|---|
| 上證指數 | USHI000001 |
滬深300 | USHI000300 |
| 深證成指 | USZI399001 |
中證500 | USHI000905 |
| 創業板指 | USZI399006 |
上證50 | USHI000016 |
| 科創50 | USHI000688 |
with THS() as ths:
resp = ths.market_data_cn("USZA300750", "基礎資料")
df = resp.df
# 欄位:價格, 成交方向, 成交量, 交易筆數, 總金額,
# 漲速, 當前量, 程式碼, 名稱, 昨收價, 開盤價, 最高價, 最低價
query_key 選項:
| query_key | 含義 |
|---|---|
"基礎資料" |
價格、漲跌幅、成交量、金額、開高低、漲速 |
"擴充套件1" |
漲幅、漲跌、換手率、量比、主力淨流入、委比 |
"彙總" |
全量欄位,多股對比首選 |
from datetime import datetime
from zoneinfo import ZoneInfo
tz = ZoneInfo('Asia/Shanghai')
with THS() as ths:
# 按條數
resp = ths.klines("USZA300750", interval="5m", count=78)
# 按時間範圍
resp = ths.klines("USZA300750", interval="day",
start_time=datetime(2025, 1, 1, tzinfo=tz),
end_time=datetime(2025, 3, 1, tzinfo=tz))
df = resp.df
# 欄位:時間, 收盤價, 成交量, 總金額, 開盤價, 最高價, 最低價
interval 引數: "1m" / "5m" / "15m" / "30m" / "60m" / "120m" / "day" / "week" / "month"
with THS() as ths:
# 日內分時
resp = ths.intraday_data("USZA300750")
df = resp.df
# 五檔盤口
resp = ths.depth("USZA300750")
df = resp.df
import pandas as pd
from thsdk import THS
stock_names = ["貴州茅臺", "五糧液", "瀘州老窖"]
with THS() as ths:
# 批次解析程式碼
stock_codes = []
for name in stock_names:
resp = ths.search_symbols(name)
a_shares = [s for s in resp.data
if any(m in s.get('MarketDisplay', '') for m in ['滬A', '深A'])]
if a_shares:
stock_codes.append({'name': name, 'code': a_shares[0]['THSCODE']})
# 批次行情
codes = [s['code'] for s in stock_codes]
resp = ths.market_data_cn(codes, "彙總")
quote_df = pd.DataFrame(resp.data)
# 批次K線
klines_data = {}
for s in stock_codes:
resp = ths.klines(s['code'], interval="day", count=30, adjust="forward")
klines_data[s['name']] = resp.df
輸出規範: 1. 表格:股票 / 最新價 / 漲幅% / 成交額 / 換手率 / 量比 / 主力淨流入 / 總市值 2. 歸一化走勢折線圖(多線,顏色區分) 3. 相關性熱力圖(量化場景)
with THS() as ths:
resp = ths.klines("USZA300750", interval="5m", count=78)
df = resp.df
# 計算指標
df['ma5'] = df['收盤價'].rolling(5).mean()
df['ma10'] = df['收盤價'].rolling(10).mean()
df['vol_avg'] = df['成交量'].rolling(20).mean()
df['vol_spike'] = df['成交量'] > df['vol_avg'] * 2 # 成交量異動
輸出: K線圖 + 成交量柱狀圖 + 均線疊加 + 異動標註
with THS() as ths:
resp = ths.ths_industry() # 同花順行業,約90個
resp = ths.ths_concept() # 概念板塊,約390個
df = resp.df
with THS() as ths:
# Step 1:獲取板塊列表
resp = ths.ths_industry()
target = next(r for r in resp.data if '半導體' in r['名稱'])
link_code = target['程式碼'] # 格式 URFIXXXXXX
# Step 2:查板塊行情
resp = ths.market_data_block(link_code, "基礎資料")
df = resp.df
# 欄位:價格, 漲幅, 成交量, 板塊總市值, 上漲家數, 下跌家數, 領漲股
with THS() as ths:
resp = ths.block_constituents("URFI883404")
df = resp.df
with THS() as ths:
resp = ths.market_data_index(["USHI000001", "USHI000300"])
df = resp.df
⚠️ 遊客模式限制:遊客賬戶下
market_data_index可能返回空資料(許可權限制)。如需指數行情,建議使用WebSearch搜尋"{指數名稱} 今日行情"作為降級方案。stock_api.py的get_index_data()方法已內建此提示。
with THS() as ths:
resp = ths.big_order_flow("USZA300750")
df = resp.df
# 欄位:時間, 成交方向, 成交量, 總金額, 委託買入價, 委託賣出價
with THS() as ths:
resp_sh = ths.call_auction_anomaly("USHA") # 滬市
resp_sz = ths.call_auction_anomaly("USZA") # 深市
df = resp_sh.df
# 異動型別:漲停試盤/競價搶籌/大幅高開/急速上漲/大買單試盤 等13種
with THS() as ths:
resp = ths.order_book_bid("USZA300750") # 買方深度
resp = ths.order_book_ask("USZA300750") # 賣方深度
df = resp.df
with THS() as ths:
resp = ths.wencai_nlp("連續3日主力淨流入,換手率大於5%,非ST")
df = resp.df
選股場景速查:
| 場景 | 查詢語句示例 |
|---|---|
| 漲停/連板 | "今日漲停,非ST" / "連續2日漲停,非一字板" |
| 財務選股 | "連續3年ROE大於15%,非ST" / "市盈率小於15,股息率大於3%" |
| 技術形態 | "均線多頭排列,MACD金叉" / "250日新高,非ST" |
| 資金流向 | "主力淨流入由大到小排名前20" / "近10日主力資金流向大於5000萬" |
| 板塊概念 | "人工智慧概念股,今日漲跌幅" / "今日概念板塊漲幅排名前20" |
| 複合條件 | "均線多頭+MACD金叉+換手率大於1%且小於10%" |
| 市場 | 方法 | 示例 |
|---|---|---|
| A股 | market_data_cn(code) |
market_data_cn("USZA300750") |
| 港股 | market_data_hk(code) |
market_data_hk("UHKG00700") |
| 美股 | market_data_us(code) |
market_data_us("UNQQAAPL") |
| 外匯 | market_data_forex(code) |
market_data_forex("UFXBGBPUSD") |
| 期貨 | market_data_future(code) |
market_data_future("UCFSAU2506") |
pip install --upgrade thsdk
from thsdk import THS
with THS() as ths: # 遊客模式,無需賬戶配置
...
with THS() as ths:
resp = ths.klines("USZA300750", interval="5m", count=60)
if not resp:
print(f"呼叫失敗: {resp.error}")
elif resp.df.empty:
print("資料為空,可能是非交易時間")
else:
df = resp.df
常見報錯:
| 錯誤 | 原因 | 解決 |
|---|---|---|
"未登入" |
未 connect | 確保用 with THS() as ths |
"證券程式碼必須為10個字元" |
格式錯誤 | 先過 search_symbols |
"一次性查詢多支股票必須市場程式碼相同" |
滬深混合 | 按市場分組查詢 |
"無效的週期型別: 5min" |
interval 寫法錯 | 改為 "5m" |
注意事項:
- 遊客賬戶在部分專業資料/即時資料上可能有許可權限制
- 批次拉取時建議加 time.sleep(0.5) 避免限流
- THS 為同步阻塞,在 FastAPI/asyncio 中需放入執行緒池
這個Skill質量不錯,功能覆蓋全面,基金和股票分析都能做。文件規範做得好,報告輸出格式統一,配色清晰,閱讀體驗好。容錯考慮周全,資料獲取失敗有降級方案。不足是文件比較長,功能說明較複雜,複雜功能對新手不太友好。總體推薦,適合需要基金/股票分析的使用者使用。