calculus-dbti
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDBTI Investment Personality Assessment
DBTI 投资人格测评
Determine your trading personality across four dimensions and earn a DBTI label.
从四个维度判定你的交易人格,生成对应的DBTI标签。
Overview
概述
DBTI is an investment personality framework with four dimensions:
| Dimension | Negative Pole | Positive Pole |
|---|---|---|
| Risk Appetite | D — Defensive | d — Daring |
| Time Horizon | B — Brief | b — Broad |
| Decision Basis | T — Technical | t — Thematic |
| Position Style | I — Intensive | i — Inclusive |
After answering 12 questions, you receive a 4-letter label (e.g. ) representing your investment personality.
DbTiDBTI是包含四个维度的投资人格框架:
| 维度 | 负极 | 正极 |
|---|---|---|
| 风险偏好 | D — Defensive | d — Daring |
| 时间周期 | B — Brief | b — Broad |
| 决策依据 | T — Technical | t — Thematic |
| 持仓风格 | I — Intensive | i — Inclusive |
回答12道问题后,你会得到一个4字母的标签(例如 ),代表你的投资人格。
DbTiAPI Base URL
API 基础URL
http://localhost:8000/apiFor production deployments, replace with the actual API hostname.
http://localhost:8000/api生产环境部署时,请替换为实际的API域名。
Operation Flow
操作流程
Step 1 — Detect Wallet & Fetch Questions
步骤1 — 检测钱包并获取问题
Do both in a single step. Do NOT prompt the user about wallets. Do NOT suggest logging in.
bash
undefined两个操作一步完成。不要向用户提示钱包相关内容,不要建议登录。
bash
undefinedDetect wallet and get address in one command
Detect wallet and get address in one command
WALLET_JSON=$(onchainos wallet status 2>/dev/null) &&
LOGGED_IN=$(echo "$WALLET_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['loggedIn'])" 2>/dev/null) &&
if [ "$LOGGED_IN" = "True" ]; then
onchainos wallet addresses --chain 196 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['xlayer'][0]['address'])" 2>/dev/null;
fi
LOGGED_IN=$(echo "$WALLET_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['loggedIn'])" 2>/dev/null) &&
if [ "$LOGGED_IN" = "True" ]; then
onchainos wallet addresses --chain 196 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['xlayer'][0]['address'])" 2>/dev/null;
fi
- If an address is returned → store as `WALLET_ADDRESS`.
- If anything fails or no output → set `WALLET_ADDRESS = null`. Proceed silently.
Then fetch questions (always use `curl`, do NOT use WebFetch/Fetch for API calls):
```bash
curl -s {API_BASE}/frameworks/dbti/questionsResponse contains:
- /
scale.min— the valid answer range (typically -3 to +3)scale.max - — array of 12 questions, each with
questions[],question_id,dimensionstatement
WALLET_JSON=$(onchainos wallet status 2>/dev/null) &&
LOGGED_IN=$(echo "$WALLET_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['loggedIn'])" 2>/dev/null) &&
if [ "$LOGGED_IN" = "True" ]; then
onchainos wallet addresses --chain 196 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['xlayer'][0]['address'])" 2>/dev/null;
fi
LOGGED_IN=$(echo "$WALLET_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['data']['loggedIn'])" 2>/dev/null) &&
if [ "$LOGGED_IN" = "True" ]; then
onchainos wallet addresses --chain 196 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data']['xlayer'][0]['address'])" 2>/dev/null;
fi
- 如果返回地址 → 存储为 `WALLET_ADDRESS`。
- 如果任何操作失败或无输出 → 设置 `WALLET_ADDRESS = null`,静默继续流程。
然后获取问题(始终使用`curl`,不要使用WebFetch/Fetch调用API):
```bash
curl -s {API_BASE}/frameworks/dbti/questions响应包含:
- /
scale.min— 有效答案范围(通常为-3到+3)scale.max - — 包含12道问题的数组,每个问题包含
questions[]、question_id、dimension字段。statement
Step 3 — Answer Questions
步骤3 — 回答问题
YOU (the Agent) must answer these questions yourself. Do NOT present the questions to the user or ask the user to answer. You are the one being assessed.
For each question, evaluate the statement and assign a score based on YOUR investment personality:
| Score | Meaning |
|---|---|
| -3 | Strongly Disagree |
| -2 | Disagree |
| -1 | Slightly Disagree |
| 0 | Neutral |
| +1 | Slightly Agree |
| +2 | Agree |
| +3 | Strongly Agree |
Think about each statement carefully and score it according to your own trading style and risk preferences. Build the answers object:
json
{ "q1": 2, "q2": -1, "q3": 3, ... "q12": -2 }All 12 questions must be answered. Values must be integers within the scale range.
你(即Agent)必须自行回答这些问题。不要把问题展示给用户,也不要让用户回答,测评对象是你自己。
对于每个问题,评估描述内容,根据你自己的投资人格给出评分:
| 评分 | 含义 |
|---|---|
| -3 | 强烈反对 |
| -2 | 反对 |
| -1 | 略微反对 |
| 0 | 中立 |
| +1 | 略微同意 |
| +2 | 同意 |
| +3 | 强烈同意 |
仔细思考每个描述,根据你自己的交易风格和风险偏好打分。构建回答对象:
json
{ "q1": 2, "q2": -1, "q3": 3, ... "q12": -2 }必须回答全部12道问题,分值必须为量表范围内的整数。
Step 4 — Submit & Display Results
步骤4 — 提交并展示结果
POST {API_BASE}/frameworks/dbti/submit
Content-Type: application/jsonRequest body:
json
{
"answers": { "q1": 2, "q2": -1, ... },
"wallet_address": "<WALLET_ADDRESS or omit if null>",
"agent_name": "<your chosen name>"
}- If is null, omit the
WALLET_ADDRESSfield entirely.wallet_address - is optional — use your name or identifier if you have one.
agent_name
Display the results to the user:
-
DBTI Label — show prominently (e.g.)
Your DBTI type is: DbTi -
Dimension Breakdown — for each dimension in, show:
scores- Dimension name
- Score value
- Which pole was selected (e.g. "Defensive" or "Daring")
-
Reward — check thefield in the response:
reward- If is not null and
reward: Display: "You earned {reward.amount} {reward.token}! Claim your reward: {reward.claim_url}" Then ask: "Would you like me to claim the reward now?" If user confirms → POST to thereward.status == "claimable"and show the tx_hash.claim_url - If is null and
rewardwas provided: This wallet has already claimed a reward for this framework version. Inform the user: "Your DBTI label has been updated. This wallet has already claimed the reward for this quiz version."WALLET_ADDRESS - If is null and
rewardwas null: Do not mention rewards at all. Only show the label and scores.WALLET_ADDRESS
- If
POST {API_BASE}/frameworks/dbti/submit
Content-Type: application/json请求体:
json
{
"answers": { "q1": 2, "q2": -1, ... },
"wallet_address": "<WALLET_ADDRESS or omit if null>",
"agent_name": "<your chosen name>"
}- 如果为null,直接省略
WALLET_ADDRESS字段。wallet_address - 为可选字段 — 如果你有自己的名称或标识可以填写。
agent_name
向用户展示结果:
-
DBTI标签 — 突出展示(例如)
你的DBTI类型为:DbTi -
维度明细 — 针对中的每个维度,展示:
scores- 维度名称
- 得分值
- 对应的极性(例如 "Defensive" 或 "Daring")
-
奖励 — 检查响应中的字段:
reward- 如果不为空且
reward: 展示:"你获得了 {reward.amount} {reward.token}!领取你的奖励:{reward.claim_url}" 然后询问:"你需要我现在领取奖励吗?" 如果用户确认 → 向reward.status == "claimable"发送POST请求并展示tx_hash。claim_url - 如果为空且已经提供了
reward: 说明该钱包已经领取过此框架版本的奖励,告知用户: "你的DBTI标签已更新。该钱包已领取过此测验版本的奖励。"WALLET_ADDRESS - 如果为空且
reward为null: 完全不要提及奖励,仅展示标签和得分即可。WALLET_ADDRESS
- 如果
Scoring Guide
评分指南
Each letter in the DBTI label represents one dimension:
- D (Defensive): prefers capital preservation, avoids high-risk trades
- d (Daring): embraces volatility, willing to take significant risk for upside
- B (Brief): short-term trader, opens and closes positions within hours/days
- b (Broad): long-term holder, comfortable riding out short-term fluctuations
- T (Technical): decisions driven by on-chain data, charts, and quantitative signals
- t (Thematic): decisions driven by narratives, community sentiment, and macro trends
- I (Intensive): concentrated portfolio, few high-conviction positions
- i (Inclusive): diversified portfolio, risk spread across many positions
DBTI标签中的每个字母代表一个维度:
- D (Defensive):偏好保本,规避高风险交易
- d (Daring):接受波动,愿意为高收益承担较大风险
- B (Brief):短线交易者,数小时/数天内完成开平仓
- b (Broad):长期持有者,能承受短期波动
- T (Technical):决策基于链上数据、图表和量化信号
- t (Thematic):决策基于叙事、社区情绪和宏观趋势
- I (Intensive):持仓集中,少量高确信度仓位
- i (Inclusive):持仓分散,风险分摊到多个仓位
Edge Cases
边界情况
- API unreachable: Inform the user the assessment service is unavailable. Do not retry more than once.
- onchainos not installed: Proceed without wallet detection — quiz works without rewards.
- wallet status fails: Treat as no wallet. Proceed silently.
- Submit returns 422: Check error detail — likely missing answers or values out of range. Fix and retry.
- Reward already claimed: If is null despite providing
reward, it means this wallet has already been rewarded for this framework version. Inform the user their label is updated but no additional reward is available.wallet_address
- API无法访问:告知用户测评服务不可用,重试次数不超过1次。
- onchainos未安装:跳过钱包检测流程,测验无需奖励也可正常进行。
- 钱包状态检测失败:视为无钱包,静默继续流程。
- 提交返回422错误:检查错误详情 — 通常是缺失答案或分值超出范围,修复后重试。
- 奖励已领取:如果提供了但
wallet_address为空,说明该钱包已领取过此框架版本的奖励,告知用户标签已更新,但无额外奖励可领取。reward
Skill Routing
技能路由
- For wallet operations (login, balance, send) → use
okx-agentic-wallet - For token prices and market data → use
okx-dex-market - For security scanning → use
okx-security
- 钱包操作(登录、余额、转账)→ 使用
okx-agentic-wallet - 代币价格和市场数据 → 使用
okx-dex-market - 安全扫描 → 使用
okx-security