限時公開

【🧠 Agent 實戰】打造 FinMind x opencode Agent Skill 投資組合智能診斷助理

更新 發佈閱讀 20 分鐘

這一篇文章我們一樣分享opencode這套AI開發工具結合理財心法, 協助您打造專屬的投資組合健檢查助理, 與過去不一樣的地方是我們只要簡單的一句話加上投資組合的資料素材, AI就能夠根據我們的規範與資源, 協助我們針對現有的資產配置進行評估與建議, 大幅度提升效率, 讓我們可以更快速的調整我們的資產配置, 在此之前會建議您參考opencode相關的文章:

當然這邊也不代表作者只推薦opencode, 而是我們接下來的分享將以opencode這套具有免費模型的工具來進行示範, 心法掌握之後, 套用到claude code、codex...等工具皆能夠適用。


Agent Skill架構概覽

vocus|新世代的創作平台

關鍵元件:

  • 輸入層:支援 CSV / Excel 解析(用 pandas),自動辨識欄位(代號、股數、市值、占比)
  • 資料層:透過 opencode 的 @.opencode/commands/finmind.md 呼叫 FinMind,取得最新股價、還原股價、PER、股利等
  • 規則層:將理財老師的核心理念寫成可設定規則(例如:曝險比例上限、單一標的不超過 X%、股債比 Y:Z、槓桿ETF上限等)
  • 輸出層:產生對比表格 + 建議文字 + 圖表(圓餅圖對比現狀 vs 理念目標)

安裝finmind

FinMind AI Agent Skill 讓你可以直接用自然語言在 Cursor 或 Claude Code 等工具中,快速查詢台美股價、籌碼及財報等 75 種以上的金融數據,並自動生成圖表與分析報告。

vocus|新世代的創作平台

詳細安裝請參考: https://finmind.github.io/tutor/AgentSkill/

詳細架構圖

vocus|新世代的創作平台

建立Skill骨架

prompt參考如下, 請根據自己偏好的理財理念進行調整。

幫我在.opencode/skills底下建立一個​「投資組合理念檢查器」
1. 投資理念參考: <Youtube連結、文章連結、內化知識文件檔...>
2. 資產配置檔案格式: csv、excel、json。
3. 格式範例:
代號,股價,股數,市值,占比,類型
0050,xxx,xxx,xxx,xxx,市值型
4. 股價資料來源:@.opencode/commands/finmind.md。
5. 投資哲學規則撰寫(可選): philosophy_rules.yaml
philosophy:

  name: "XXX 老師的資產配置法"

  description: "股債平衡 + 現金避險 + 槓桿控管"

  version: 1.0



rules:
<以下由AI Agent協助生成, 我們僅負責審核>

6. 工作流程: 分析使用者資產配置 -> 根據股票代號取得資料 -> 投資哲學載入。
7. 分析及評估報告:
**Diagnostic Table:**



| Rule | Target | Current | Status | Severity |

|------|--------|---------|--------|----------|

| 股債比 | 60:40 | 52:48 | ⚠️ 偏離 | medium |

| 單一標的上限 |15% | 00687B 22% | ❌ 超標 | high |

| 槓桿ETF上限 |20% | 28% | ❌ 超標 | high |

| 現金水位 |5% | 14% | ✅ 合格 | - |



**Adjustment Suggestions:**

1. 00687B 佔比 22% 超過 15% 上限 → 建議減持至 15% 以下

2. 槓桿ETF (00631L+00675L) 合計 28% 超過 20% 上限 → 建議逐步減碼 8%

3. 股債比偏離目標 → 建議將多餘現金或減碼債券轉至股票


骨架概覽:

.opencode/skills/portfolio-philosophy-checker/
├── SKILL.md # 主指令 — 定義流程、資料源、分析邏輯
└── philosophy_rules.yaml # 可設定理論規則(換老師只改這檔)


philosophy_rules.yaml範本:

# philosophy_rules.yaml
philosophy:
name: "穩健平衡投資法"
rules:
asset_allocation:
stock_bond_ratio: [60, 40] # 股債比目標 6:4
diversification:
max_single_position: 15 # 單一標的不超過 15%
concentration:
max_leverage_etf: 10 # 槓桿型標的上限制 10%
cash_reserve:
min_cash: 5 # 至少保留 5% 現金


SKILL.md範本:

---

name: portfolio-philosophy-checker

description: Analyze a user's asset portfolio against a configurable investment philosophy and provide actionable adjustment suggestions.

---



# Portfolio Philosophy Checker



Analyze a user's asset portfolio against a configurable investment philosophy and provide actionable adjustment suggestions.



## Usage



```bash

# Load the skill in opencode

/load-skill portfolio-philosophy-checker



# Then ask naturally:

"幫我檢視資產配置是否符合 xxx 老師的理念"

"分析我的 portfolio 並給調整建議"

"檢查目前持股的股債比是否合理"

```



## Input Format



Support these user-supplied files (auto-detect by extension):



| Format | File Pattern | Notes |

|--------|-------------|-------|

| CSV | `*.csv` | Must contain: 代號, 股價, 股數, 市值, 占比, 類型 |

| Excel | `*.xlsx` / `*.xls` | Same columns as CSV |

| JSON | `*.json` | Keys: `symbol`, `price`, `shares`, `market_value`, `weight`, `type` |



### Example CSV (matching existing project format):



```csv

代號,股價,股數,市值,占比,類型

Symbol_A,100.0,1000,100000,10%,核心持股

Symbol_B,50.0,2000,100000,10%,槓桿基金

Symbol_C,30.0,5000,150000,15%,高股息

Symbol_D,25.0,8000,200000,20%,債券

現金,1,450000,450000,45%,現金

```



Place the file anywhere under the project root. The skill will search for `*資產*`, `*portfolio*`, `*holding*` patterns.



## Investment Philosophy Configuration



The core philosophy rules are defined in `philosophy_rules.yaml` (same directory as this skill).



### Built-in Rule Categories



| Category | Example Rule | Description |

|----------|-------------|-------------|

| `asset_allocation` | `stock_bond_ratio: 60:40` | Target allocation between stocks/equity and bonds |

| `diversification` | `max_single_position: 15%` | Maximum allowed weight per single position |

| `concentration` | `max_leverage_etf: 20%` | Limit on leveraged/inverse ETFs |

| `region_exposure` | `max_tw_stock: 50%` | Maximum Taiwan stock exposure |

| `sector_exposure` | `max_tech: 40%` | Maximum single sector exposure |

| `cash_reserve` | `min_cash: 5%` | Minimum cash holding |

| `risk_control` | `max_drawdown: 20%` | Maximum acceptable drawdown |

| `yield_requirement` | `min_dividend_yield: 3%` | Minimum portfolio dividend yield |



## Data Sources



Uses `@.opencode/commands/finmind.md` to fetch live data:



| Data Needed | FinMind Dataset | Purpose |

|------------|----------------|---------|

| Current price | `TaiwanStockPrice` / `USStockPrice` | Recalculate market value & weight |

| Adjusted price | `TaiwanStockPriceAdj` | Total return calculation |

| PER / PBR | `TaiwanStockPER` | Valuation check |

| Dividend | `TaiwanStockDividend` | Yield calculation |

| Institutional flow | `TaiwanStockInstitutionalInvestorsBuySell` | Recent buy/sell signal |



## Analysis Workflow



### Step 1: Parse Portfolio

Read the user's asset file, normalize column names, calculate current weights.



### Step 2: Fetch Live Data

For each holding:

- Call FinMind via the command reference to get latest price

- Calculate current market value and actual weight

- Get dividend yield for yield-type assets



### Step 3: Apply Philosophy Rules

Compare current allocation against each rule in `philosophy_rules.yaml`:



```

For each rule:

  if current_value violates rule_threshold:

    record as VIOLATION with severity (low/medium/high)

    store: rule_name, current, target, delta, severity

```



### Step 4: Generate Report



**Diagnostic Table:**



| Rule | Target | Current | Status | Severity |

|------|--------|---------|--------|----------|

| 股債比 | 60:40 | 52:48 | ⚠️ 偏離 | medium |

| 單一標的上限 | ≤15% | 00687B 22% | ❌ 超標 | high |

| 槓桿ETF上限 | ≤20% | 28% | ❌ 超標 | high |

| 現金水位 | ≥5% | 14% | ✅ 合格 | - |



**Adjustment Suggestions:**

1. 00687B 佔比 22% 超過 15% 上限 → 建議減持至 15% 以下

2. 槓桿ETF (00631L+00675L) 合計 28% 超過 20% 上限 → 建議逐步減碼 8%

3. 股債比偏離目標 → 建議將多餘現金或減碼債券轉至股票



### Step 5: Visualization (Optional)

Generate comparison charts:

- Pie chart: current allocation vs target allocation

- Bar chart: each rule status (green/yellow/red)

- Treemap: position sizes with violation highlights



## Configuration Tips



Users should edit `philosophy_rules.yaml` to match their chosen teacher's philosophy:



```yaml

# Example: 保守型價值投資

philosophy:

  name: "XXX 老師價值投資法"

  rules:

    asset_allocation:

      stock_bond_ratio: [50, 50]   # stock:bond

    diversification:

      max_single_position: 10       # %

    concentration:

      max_leverage_etf: 0           # no leverage

    region_exposure:

      max_tw_stock: 40

      max_us_stock: 60

    cash_reserve:

      min_cash: 10

    yield_requirement:

      min_dividend_yield: 4

```



## Customization



To adapt for a different teacher/philosophy, only edit `philosophy_rules.yaml` — no code changes needed.



To add new rule categories, extend the `rules` section and the analysis script will auto-detect them.



## Integration with opencode



This skill is designed to work alongside:

- `@.opencode/commands/finmind.md` — for all financial data queries

- Existing `query_stock.py` / `query_etf_adj.py` — for reusable data extraction patterns

- `AGENTS.md` — for project-level conventions (script cleanup, reusable patterns)





實際案例

幫我檢視資產配置是否符合 <文章、Youtube連結、筆記...> 老師的投資理念
1. 務必使用近一年的核心理念。
2. 股價務必按照skill提供工具抓取最新資訊。


分析報告參考如下:

vocus|新世代的創作平台



結語

AI Agent已經是這個時代必要的技能了, 我們只要給予足夠的資訊、規範、核心理念, AI就能夠自動根據我們的資料進行檢核、評估、分析與建議, 除了大幅提升效率之外, 更把我們的工作流程進行SOP, 甚至可複製, 只要我們將這樣的代理規則制定好, AI就會按照指令幫我們做事, 過去的我們從做事情的角色進化成制定規則、審核規則、調整優化方向的轉變, 這已經是不得不改變的趨勢了, 就讓我們共同學習並跟上吧! 共勉之。

留言
avatar-img
阿Han的沙龍
314會員
334內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2026/03/25
上一篇文章 👉 【🧠 Agent 實戰】FastRTC 打造 AI 面試官(agent skills + speckit),我們分享了如何利用 spec-kit 與 skills 打造高品質語音機器人。雖然效果驚人,但過程仍稍顯「工程」。 這一次,我們要挑戰極限:將流程徹底封裝,實現「以自
Thumbnail
2026/03/25
上一篇文章 👉 【🧠 Agent 實戰】FastRTC 打造 AI 面試官(agent skills + speckit),我們分享了如何利用 spec-kit 與 skills 打造高品質語音機器人。雖然效果驚人,但過程仍稍顯「工程」。 這一次,我們要挑戰極限:將流程徹底封裝,實現「以自
Thumbnail
2026/03/18
在上一篇文章 👉【🧠 Agent 實戰】LangGraph × FastRTC x MultiAgent:打造「智能語音機器人」 我們深入探討了如何結合 Spec-Kit(規格驅動)、FastRTC(低延遲語音管線)、LangGraph(流程管理)與 Multi-Agent(多代理架構
Thumbnail
2026/03/18
在上一篇文章 👉【🧠 Agent 實戰】LangGraph × FastRTC x MultiAgent:打造「智能語音機器人」 我們深入探討了如何結合 Spec-Kit(規格驅動)、FastRTC(低延遲語音管線)、LangGraph(流程管理)與 Multi-Agent(多代理架構
Thumbnail
2026/03/11
在上一篇文章 👉 【🧠 LLM 系列】LangGraph × FastRTC:打造「流程導向」語音機器人 分享了如何透過 Spec-Kit(規格驅動) 與 FastRTC(低延遲語音管線),快速打造一個「能動、能說話、能接 API、能處理流程事務」的 VoiceBot。 實際對話之後
Thumbnail
2026/03/11
在上一篇文章 👉 【🧠 LLM 系列】LangGraph × FastRTC:打造「流程導向」語音機器人 分享了如何透過 Spec-Kit(規格驅動) 與 FastRTC(低延遲語音管線),快速打造一個「能動、能說話、能接 API、能處理流程事務」的 VoiceBot。 實際對話之後
Thumbnail
看更多
你可能也想看
Thumbnail
投資,從提升「財商」開始 投資理財不是憑感覺或道聽途說。投資要花時間學習,不是用問的。多學習,多分享,才能讓自己從「老鼠籠」(為錢工作)中跳出來,真正財務及人生自由。 投資策略:長期持有、無腦買進 韓信點兵:所謂的「兵」,指的就是「資金」,整合並最大化財務資源。例如:賣房、房貸、增貸、信貸、不
Thumbnail
投資,從提升「財商」開始 投資理財不是憑感覺或道聽途說。投資要花時間學習,不是用問的。多學習,多分享,才能讓自己從「老鼠籠」(為錢工作)中跳出來,真正財務及人生自由。 投資策略:長期持有、無腦買進 韓信點兵:所謂的「兵」,指的就是「資金」,整合並最大化財務資源。例如:賣房、房貸、增貸、信貸、不
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
當代名導基里爾.賽勒布倫尼科夫身兼電影、劇場與歌劇導演,其作品流動著強烈的反叛與詩意。在俄烏戰爭爆發後,他持續以創作回應專制體制的壓迫。《傳奇:帕拉贊諾夫的十段殘篇》致敬蘇聯電影大師帕拉贊諾夫。本文作者透過媒介本質的分析,解構賽勒布倫尼科夫如何利用影劇雙棲的特質,在荒謬世道中尋找藝術的「生存之道」。
Thumbnail
投資理念 長期持有無視波動 James 老師強調投資的長期性,提倡 「投資要禪定 」,保持心境平穩,不受市場消息干擾。 指數投資為主 老師強烈推薦投資 那斯達克100指數基金(QQQ / 00662),相信科技成長會帶來長期報酬 。 再平衡的重要性 透過 再平衡 ,可以達到相同的 Bet
Thumbnail
投資理念 長期持有無視波動 James 老師強調投資的長期性,提倡 「投資要禪定 」,保持心境平穩,不受市場消息干擾。 指數投資為主 老師強烈推薦投資 那斯達克100指數基金(QQQ / 00662),相信科技成長會帶來長期報酬 。 再平衡的重要性 透過 再平衡 ,可以達到相同的 Bet
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
見諸參與鄧伯宸口述,鄧湘庭於〈那個大霧的時代〉記述父親回憶,鄧伯宸因故遭受牽連,而案件核心的三人,在鄧伯宸記憶裡:「成立了成大共產黨,他們製作了五星徽章,印刷共產黨宣言——刻鋼板的——他們收集中共空飄的傳單,以及中國共產黨中央委員會有關文化大革命決議文的英文打字稿,另外還有手槍子彈十發。」
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
當時間變少之後,看戲反而變得更加重要——這是在成為母親之後,我第一次誠實地面對這一件事:我沒有那麼多的晚上,可以任性地留給自己了。看戲不再只是「今天有沒有空」,而是牽動整個週末的結構,誰應該照顧孩子,我該在什麼時間回到家,隔天還有沒有精神帶小孩⋯⋯於是,我不得不學會一件以前並不擅長的事:挑選。
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
5 月,方格創作島正式開島。這是一趟 28 天的創作旅程。活動期間,每週都會有新的任務地圖與陪跑計畫,從最簡單的帳號使用、沙龍建立,到帶著你從一句話、一張照片開始,一步一步找到屬於自己的創作節奏。不需要長篇大論,不需要完美的文筆,只需要帶上你今天的日常,就可以出發。征服創作島,抱回靈感與大獎!
Thumbnail
James老師的投資哲學核心在於長期持有指數基金(如QQQ和00662),善用槓桿和現金,並嚴格控管風險。此策略強調紀律和簡單性,目標為財富自由。文章詳細分析其投資理念、工具、策略及資產配置建議,包含不同年齡層和退休狀態的案例,並提醒投資前須審慎評估風險。
Thumbnail
James老師的投資哲學核心在於長期持有指數基金(如QQQ和00662),善用槓桿和現金,並嚴格控管風險。此策略強調紀律和簡單性,目標為財富自由。文章詳細分析其投資理念、工具、策略及資產配置建議,包含不同年齡層和退休狀態的案例,並提醒投資前須審慎評估風險。
Thumbnail
任何的投資都有風險,要設立停利停損點,才不會全然是場空,透過投資,讓小錢慢慢積沙成塔,不要小看時間的力量,到需要用一大筆錢時,平力會投資就發揮到最大的力量,每個人承受的風險不同,要有分寸的拿捏,何時該進、何時該出,不要貪得無厭,投資的市場中,變化多端,不要迷失在市場內,要保持清醒,做出正確的判斷。
Thumbnail
任何的投資都有風險,要設立停利停損點,才不會全然是場空,透過投資,讓小錢慢慢積沙成塔,不要小看時間的力量,到需要用一大筆錢時,平力會投資就發揮到最大的力量,每個人承受的風險不同,要有分寸的拿捏,何時該進、何時該出,不要貪得無厭,投資的市場中,變化多端,不要迷失在市場內,要保持清醒,做出正確的判斷。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News