Okx Cex Portfolio
This skill should be used when the user asks about 'account balance', 'how much USDT do I have', 'my funding account', 'show my positions', 'open positions', 'position P&L', 'unrealized PnL', 'closed positions', 'position history', 'realized PnL', 'account bills', 'transaction history', 'trading fees', 'fee tier', 'account config', 'max order size', 'how much can I buy', 'withdrawable amount', 'transfer funds', 'move USDT to trading account', or 'switch position mode'. Also use for '总资产', 'full balance', 'all assets', 'total holdings', 'net worth', 'how much do I have in total', 'show all my balances', 'all account balances', 'asset overview', 'aggregated balance', 'asset snapshot', '资产快照'. Requires API credentials. Do NOT use for market prices (use okx-cex-market), placing/cancelling orders (use okx-cex-trade), or grid/DCA bots (use okx-cex-bot).
- Skill ID
- okx/agent-skills/okx-cex-portfolio
- Publisher
- okx
- Repository
- agent-skills
- Installs
- 0
- Files
- 1
- License
- MIT
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
okx/agent-skills/okx-cex-portfolioInstalls these files- SKILL.md
What this skill tells the agent
OKX CEX Portfolio & Account CLI
Account balance, positions, P&L, bills, fees, and fund transfers on OKX exchange. Requires API credentials.
Preflight
Before running any command, follow `../_shared/preflight.md`. Use metadata.version from this file's frontmatter as the reference for Step 2.
Prerequisites
- Install
okxCLI: ``bash npm install -g @okx_ai/okx-trade-cli`` - Configure credentials: ``
bash okx config init # select site -> follow browser OAuth flow`` - Test with demo mode (simulated trading, no real funds): ``
bash okx --demo account balance``
Security: NEVER accept credentials in chat. Guide users to okx config init for setup.Credential & Profile Check
Run this check before any authenticated command. The auth method is detected during preflight Step 2 and remembered for the session.
Step A — Verify credentials
Check both sources (see preflight Step 2 for the decision table). okx auth status --json alone is insufficient — its apiKey field is always false and does NOT reflect the TOML config.
okx config show --json # authoritative for API-key presence
okx auth status --json # authoritative for OAuth session stateBranch in this order — first match wins:
config showhas any profile with a non-emptyapi_key— API Key mode. Proceed to Step B.- No API-key profile AND
auth statusreturns"status": "logged_in"— OAuth mode. Proceed to Step B. - No API-key profile AND
auth statusreturns"status": "pending"— login in progress, wait. - No API-key profile AND
auth statusreturns"status": "not_logged_in"— stop all operations, loadokx-cex-authskill and follow login steps, wait for completion.
Step B — Confirm trading mode
Resolution rules:
- Current message intent is clear (e.g. "real" / "实盘" / "live" → live; "test" / "模拟" / "demo" → demo) → use it and inform the user
- Current message has no explicit declaration → check conversation context for a previous choice:
- Found → reuse it, inform user
- Not found → ask:
"Live (实盘) or Demo (模拟盘)?"— wait for answer before proceeding
How to apply the mode depends on auth method (detected in Step A):
| Auth method | Live (实盘) | Demo (模拟盘) |
|---|---|---|
| API Key | --profile <live-profile> | --profile <demo-profile> |
| OAuth | (no flag needed, live is default) | --demo |
- API Key users: run
okx config show --jsonto discover available profile names and theirdemosettings. Use--profile <name>to select the correct one. - OAuth users: omit flags for live trading; add
--demofor simulated trading. Do not use--profileto switch modes.
Handling Authentication Errors
Authentication error (error contains "401", "Session expired", or "Run okx auth login first"):
- Stop immediately — do not retry the same command
- Inform the user: "Authentication failed. Your session may have expired."
- Load
okx-cex-authskill and follow the re-authentication steps - After successful re-authentication, retry the original command
Demo vs Live Mode
| Mode | Funds | API Key param | OAuth param |
|---|---|---|---|
| 实盘 (live) | Real funds | --profile <live-profile> | (default, no flag) |
| 模拟盘 (demo) | Simulated funds | --profile <demo-profile> | --demo |
# API Key user
okx --profile okx-prod account balance # 实盘
okx --profile okx-demo account balance # 模拟盘
# OAuth user
okx account balance # 实盘 (default)
okx --demo account balance # 模拟盘Rules:
- Read commands (balance, positions, bills, etc.): always state which mode was used
- Write commands (
transfer,set-position-mode): mode must be confirmed before execution (see "Credential & Profile Check" Step B); transfer especially — wrong mode means wrong account - Every response after a command must append:
[mode: live]or[mode: demo]
Skill Routing
- For market data (prices, charts, depth, funding rates) → use
okx-cex-market - For account balance, P&L, positions, fees, transfers → use
okx-cex-portfolio(this skill) - For regular spot/swap/futures/algo orders → use
okx-cex-trade - For grid and DCA trading bots → use
okx-cex-bot
Quickstart
# One-shot full asset snapshot (recommended first command)
okx account balance-all
okx account balance-all --no-valuation
okx account balance-all --valuationCcy BTC
# Trading account balance (all currencies with balance > 0)
okx account balance
# Check USDT balance only
okx account balance USDT
# Funding account balance
okx account asset-balance
# All open positions, every product
okx account positions
# Positions for one product only — always narrow when the user named a product
okx account positions --instType SWAP # SWAP | FUTURES | OPTION | MARGIN | EVENTS
# Closed position history with realized PnL
okx account positions-history
# Recent account bills (last 100)
okx account bills
# My trading fee tier
okx account fees --instType SPOT
# Transfer 100 USDT from funding (6) to trading (18)
okx account transfer --ccy USDT --amt 100 --from 6 --to 18Command Index
Read Commands
| # | Command | Type | Description | ||||
|---|---|---|---|---|---|---|---|
| 1 | okx account balance-all [ccy] | READ | One-shot snapshot: trading + funding (+ valuation) in one call | ||||
| 2 | okx account balance [ccy] | READ | Trading account equity, available, frozen | ||||
| 3a | okx account asset-balance [ccy] | READ | Funding account balance (per-currency list) | ||||
| 3b | okx account asset-balance [ccy] --valuation [--valuationCcy <ccy>] | READ | Same + total asset valuation across trading/funding/earn; denomination defaults to USDT, override with --valuationCcy BTC | ||||
| 4 | okx account positions [--instType <type>] [--instId <id>] | READ | Open contract/swap positions. When the user names a product ("my swap positions", "futures positions", "option positions"), pass --instType <type> (SWAP \ | FUTURES \ | OPTION \ | MARGIN \ | EVENTS) — or use that product's own command (okx swap positions, okx futures positions, okx option positions). Only omit the filter when the user genuinely wants everything: an unfiltered list is larger and leaves the product filtering to the model, which is where mistakes happen |
| 5 | okx account positions-history | READ | Closed positions + realized PnL | ||||
| 6 | okx account bills | READ | Account ledger (deposits, withdrawals, trades) | ||||
| 7 | okx account fees --instType <type> | READ | My trading fee tier (maker/taker) | ||||
| 8 | okx account config | READ | Account level, position mode, UID | ||||
| 9 | okx account max-size --instId <id> --tdMode <mode> | READ | Max buy/sell size at current price | ||||
| 10 | okx account max-avail-size --instId <id> --tdMode <mode> | READ | Available size for next order | ||||
| 11 | okx account max-withdrawal [ccy] | READ | Max withdrawable per currency |
Write Commands
| # | Command | Type | Description |
|---|---|---|---|
| 12 | okx account set-position-mode <mode> | WRITE | Switch net/hedge position mode |
| 13 | okx account transfer | WRITE | Transfer funds between accounts |
Cross-Skill Workflows
Pre-trade balance check
User: "I want to buy 0.1 BTC — do I have enough USDT?"
1. okx-cex-portfolio okx account balance-all → one-shot trading + funding + valuation snapshot
→ check trading.details (available in trading account)
→ if trading balance < needed: check funding.details — may need to transfer
2. okx-cex-market okx market ticker BTC-USDT → check current price
↓ user approves
3. okx-cex-trade okx spot place --instId BTC-USDT --side buy --ordType market --sz 0.1Pre-bot balance check
More from okx
Use this skill in a project
Open any RiverX project, search the Skills panel for okx/agent-skills/okx-cex-portfolio, and install it in one click.
