---
id: daily-okx-defi-portfolio
name: "okx-defi-portfolio"
url: https://skills.yangsir.net/skill/daily-okx-defi-portfolio
author: okx
domain: investment
tags: ["defi", "portfolio-tracking", "multi-chain", "okx-api", "asset-management"]
install_count: 3300
rating: 4.40 (20 reviews)
github: https://github.com/okx/onchainos-skills
---

# okx-defi-portfolio

> 跨链查看DeFi投资组合，汇总多协议持仓和资产分布，实时追踪各链DeFi项目收益和风险

**Stats**: 3,300 installs · 4.4/5 (20 reviews)

## Before / After 对比

### 查看DeFi投资组合

**Before**:

分别登录各个DeFi协议和区块链浏览器，手动记录每个链上的持仓地址、资产数量和收益情况，需要在不同平台间切换，耗时超过1小时

**After**:

一个命令汇总所有链和协议的DeFi持仓，自动计算资产分布和总价值，实时更新收益数据，3分钟完成完整投资组合分析

| Metric | Before | After | Change |
|---|---|---|---|
| 组合查看时间 | 60分钟 | 3分钟 | -95% |

## Readme

# okx-defi-portfolio

# OKX DeFi Portfolio

2 commands for viewing DeFi positions and holdings across protocols and chains.

## Skill Routing

- For DeFi deposit/redeem/claim → use `okx-defi-invest`

- For token price/chart → use `okx-dex-market`

- For wallet token balances → use `okx-wallet-portfolio`

- For DEX spot swap → use `okx-dex-swap`

## Quickstart

```
# Get DeFi holdings overview across chains
onchainos defi positions \
  --address 0xYourWallet \
  --chains ethereum,bsc,solana

# Get detailed holdings for a specific protocol (analysisPlatformId from positions output)
onchainos defi position-detail \
  --address 0xYourWallet \
  --chain ethereum \
  --platform-id 67890

```

## Command Index

#
Command
Description

1
`onchainos defi support-chains`
Get supported chains for DeFi

2
`onchainos defi support-platforms`
Get supported platforms for DeFi

3
`onchainos defi positions --address <addr> --chains <chains>`
Get user DeFi holdings overview

4
`onchainos defi position-detail --address <addr> --chain <chain> --platform-id <id>`
Get detailed holdings for a protocol

## Chain Support

Chain
Name / Aliases
chainIndex

Ethereum
`ethereum`, `eth`
`1`

BSC
`bsc`, `bnb`
`56`

Polygon
`polygon`, `matic`
`137`

Arbitrum
`arbitrum`, `arb`
`42161`

Base
`base`
`8453`

X Layer
`xlayer`, `okb`
`196`

Avalanche
`avalanche`, `avax`
`43114`

Optimism
`optimism`, `op`
`10`

Fantom
`fantom`, `ftm`
`250`

Sui
`sui`
`784`

Tron
`tron`, `trx`
`195`

TON
`ton`
`607`

Linea
`linea`
`59144`

Scroll
`scroll`
`534352`

zkSync
`zksync`
`324`

Solana
`solana`, `sol`
`501`

## Operation Flow

### Step 0: Address Resolution

When the user does NOT provide a wallet address, resolve it automatically from the Agentic Wallet **before** running any defi command:

```
1. onchainos wallet status          → check if logged in, get active account
2. onchainos wallet addresses       → get addresses grouped by chain category:
                                       - XLayer addresses
                                       - EVM addresses (Ethereum, BSC, Polygon, etc.)
                                       - Solana addresses
3. Match address to target chain:
   - EVM chains → use EVM address
   - Solana     → use Solana address
   - XLayer     → use XLayer address

```

Rules:

- If the user provides an explicit address, use it directly — skip this step

- If wallet is not logged in, ask the user to log in first (→ `okx-agentic-wallet`) or provide an address manually

- If the user says "check all accounts" or "all wallets", use `wallet balance --all` to get all account IDs, then `wallet switch <id>` + `wallet addresses` for each account, and query positions for each

- Always confirm the resolved address with the user before proceeding if the account has multiple addresses of the same type

### Step 1: Identify Intent

User says
Action

View positions / portfolio / holdings
`onchainos defi positions`

View detail for a protocol
`onchainos defi position-detail`

Redeem / claim after viewing
Suggest → use `okx-defi-invest`

### Step 2: Collect Parameters

- **Missing wallet address** → resolve via Step 0 (wallet status → wallet addresses), or ask user if not logged in

- **Missing chains** → ask user which chains to query, or suggest common ones (ethereum, bsc, solana)

- **Missing platform-id** → run `defi positions` first to get `analysisPlatformId`

### Step 3: Display Results

#### Displaying Positions Results

When displaying `defi positions` output, you MUST use **exactly** these columns in this order — no substitutions, no omissions:

#
Platform
analysisPlatformId
Chains
Positions
Value(USD)

1
Aave V3
12345
ETH,BSC
2
$120.00

Rules:

- **`analysisPlatformId` is MANDATORY in every row** — users must copy this value to run `position-detail`

- **Never omit, hide, or replace `analysisPlatformId`** with any other field

- **Never group platforms** — show every platform as its own row regardless of value size

- Raw JSON path: `walletIdPlatformList[*].platformList[*]` — each element is one platform row

`platformName` → Platform

- `analysisPlatformId` → analysisPlatformId

- `networkBalanceList[*].network` → Chains (join with comma)

- `investmentCount` → Positions

- `currencyAmount` → Value(USD)

#### Displaying Position Detail Results

**Output shape**: `{ "ok": true, "data": [ { "walletIdPlatformDetailList": [...] }, ... ] }` — `data` is an **array**. Never call `.get()` on `data` directly; iterate over it as a list.

When displaying `defi position-detail` output, render all tokens in a **single flat table** with these exact columns:

Type
Asset
Amount
Value(USD)
investmentId
aggregateProductId
Token Contract
Rewards

Supply
USDT
1.002285
$1.0025
127
71931
0x970223...7
0.000080 AVAX

Pending
sAVAX
0.00000091
$0.000012
–
–
–
Platform reward

Rules:

- Each token row is one row; merge in `investmentId` and `aggregateProductId` from its parent investment entry

- **`investmentId` is MANDATORY in every row** — users need it for `redeem`/`claim` (via `okx-defi-invest`)

- `aggregateProductId` — show if present, otherwise `–`

- Token Contract: show the **full contract address** without truncation; show `–` if native/empty

- Rewards: show pending reward amount + symbol if present, `–` if none; for platform rewards show `Platform reward`

- Type: map investType → Supply/Borrow/Stake/Farm/Pool etc; pending rewards row uses `Pending`

- **Health rate**: show separately below the table with warning if `healthRate < 1.5`

## investType Reference

investType
Description

1
Save (savings/yield)

2
Pool (liquidity pool)

3
Farm (yield farming)

4
Vaults

5
Stake

6
Borrow

7
Staking

8
Locked

9
Deposit

10
Vesting

## Post-execution Suggestions

Just completed
Suggest

`defi positions`
1. View detail → `defi position-detail`  2. Redeem → `okx-defi-invest`  3. Claim rewards → `okx-defi-invest`

`defi position-detail`
1. Redeem position → use `okx-defi-invest` with `investmentId` from table  2. Claim rewards → use `okx-defi-invest`  3. Add more → use `okx-defi-invest`

## Global Notes

- **CRITICAL — Address-chain compatibility**: The `--address` and `--chains` parameters must be compatible. EVM addresses (`0x…`) can only query EVM chains; Solana addresses (base58) can only query `solana`. Never mix them in a single call — the API will return error 84019 (Address format error).

`0x…` address → only pass EVM chains: `ethereum,bsc,polygon,arbitrum,base,xlayer,avalanche,optimism,fantom,linea,scroll,zksync`

- base58 address → only pass `solana`

- Sui address → only pass `sui`

- Tron address (`T…`) → only pass `tron`

- TON address → only pass `ton`

- If the user wants positions across both EVM and Solana, make **two separate calls** with the respective addresses

- `defi positions` uses `--chains` (plural, comma-separated, e.g. `--chains ethereum,bsc`) — do NOT use `--chain`

- `defi position-detail` uses `--chain` (singular) — do NOT use `--chains`

- The wallet address parameter is `--address` for both commands

- `position-detail` requires `analysisPlatformId` from `positions` output as `--platform-id`

- The CLI resolves chain names automatically (`ethereum` → `1`, `bsc` → `56`, `solana` → `501`)

Weekly Installs536Repository[okx/onchainos-skills](https://github.com/okx/onchainos-skills)GitHub Stars188First Seen14 days agoSecurity Audits[Gen Agent Trust HubPass](/okx/onchainos-skills/okx-defi-portfolio/security/agent-trust-hub)[SocketPass](/okx/onchainos-skills/okx-defi-portfolio/security/socket)[SnykWarn](/okx/onchainos-skills/okx-defi-portfolio/security/snyk)Installed oncodex524cursor524github-copilot523opencode523gemini-cli522kimi-cli522

---
*Source: https://skills.yangsir.net/skill/daily-okx-defi-portfolio*
*Markdown mirror: https://skills.yangsir.net/api/skill/daily-okx-defi-portfolio/markdown*