360 Secure SkillHub
360 安全技能中心

portfolio tracking

在本地 ~/.portfolio-tracker/ 保存数据的投资组合追踪 Skill。通过 TypeScript CLI 脚本加载/保存组合与配置、查询加密货币与股票价格及汇率、从 Binance、IBKR 和 EVM 钱包同步持仓,并提供查看组合、刷新价格、配置凭据、同步账户和获取投资建议等命令。

aigeneralstore
aigeneralstore
热度 68.59
最近更新 2026-05-17 12:36:23
分类:生活依赖:代码执行 / 读写文件 / 第三方 API / 内部调用大模型应用场景:个人理财 / 财务 / 数据处理 / 报告撰写 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add portfolio-tracking-skill
Metadata
name
portfolio-tracker
description
An investment portfolio tracker that runs entirely locally. All data stays in ~/.portfolio-tracker/.

Portfolio Tracker Skill

An investment portfolio tracker that runs entirely locally. All data stays in ~/.portfolio-tracker/.

Architecture

  • Data: ~/.portfolio-tracker/data.json (portfolios, assets, prices)
  • Config: ~/.portfolio-tracker/config.json (API keys, wallet addresses, user profile)
  • Scripts: TypeScript CLI tools in <skill-path>/scripts/, run via npx tsx

First-Time Setup

Before running any script, ensure dependencies are installed:

npm install --prefix <skill-path>/scripts

Replace <skill-path> with the actual installed path of this skill.

How Scripts Work

Each script is a standalone CLI tool. Run them with:

npx tsx <skill-path>/scripts/<script>.ts <command> [args]

Scripts read from stdin when needed and output JSON to stdout.

data-store.ts

  • load — Read portfolio data (creates default if missing)
  • save — Write portfolio data (JSON from stdin)
  • load-config — Read config
  • save-config — Write config (JSON from stdin)

fetch-prices.ts

  • crypto <symbol> — Get crypto price (Binance → CoinGecko)
  • stock <symbol> — Get stock price (Yahoo Finance)
  • fx — Get USD/CNY/HKD exchange rates
  • historical <symbol> — Get 3yr monthly historical data
  • search <query> — Search for assets by name/symbol
  • refresh — Batch refresh prices (assets JSON from stdin)

binance-sync.ts

  • sync <apiKey> <apiSecret> — Fetch all Binance balances (6 account types)
  • validate <apiKey> <apiSecret> — Validate API credentials

ibkr-sync.ts

  • sync <token> <queryId> — Fetch IBKR positions via Flex Query
  • validate <token> <queryId> — Validate IBKR credentials

blockchain-sync.ts

  • sync <address> [chain] — Fetch wallet balances (single chain or all 5 EVM chains)
  • validate <address> — Validate EVM address

Data Types

Asset

{
  "id": "unique-id",
  "type": "CRYPTO | USSTOCK | HKSTOCK | ASHARE | CASH",
  "symbol": "BTC",
  "name": "Bitcoin",
  "quantity": 1.5,
  "avgPrice": 40000,
  "currentPrice": 50000,
  "currency": "USD | CNY | HKD",
  "transactions": [],
  "source": { "type": "manual | binance | wallet | ibkr" }
}

Portfolio

{
  "id": "unique-id",
  "name": "Main",
  "assets": [...]
}

Workflow Patterns

Viewing Portfolio

  1. Load data via data-store.ts load
  2. Find current portfolio by currentPortfolioId
  3. Calculate total value using quantity * currentPrice per asset
  4. Convert to display currency using exchangeRates
  5. Present as a formatted table

Adding Assets

  1. Load data
  2. Search for the asset using fetch-prices.ts search <query>
  3. Get current price via fetch-prices.ts crypto/stock <symbol>
  4. Add asset to current portfolio with a generated unique ID
  5. Save data

Refreshing Prices

  1. Load data
  2. Pipe current portfolio assets to fetch-prices.ts refresh via stdin
  3. Also run fetch-prices.ts fx for exchange rates
  4. Update each asset's currentPrice and the exchangeRates
  5. Set lastPriceRefresh to current ISO timestamp
  6. Save data

Syncing from Exchange/Wallet

  1. Load config to get credentials
  2. Run the appropriate sync script
  3. Merge results: update existing assets (match by symbol+source), add new ones
  4. Save data

Commands

Available user commands:

  • /portfolio — View and manage portfolios
  • /prices — Refresh all prices
  • /setup — Configure API keys and wallets
  • /sync-binance — Sync from Binance
  • /sync-ibkr — Sync from Interactive Brokers
  • /sync-wallet — Sync from blockchain wallet
  • /advise — Get AI investment advice