OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  riskofficer:投资组合管理与风险指标计算

riskofficer:投资组合管理与风险指标计算

 
  refactor ·  2026-02-04 20:34:13 · 3 次点击  · 0 条评论  

名称: riskofficer
描述: 风险管理与投资组合分析:VaR、蒙特卡洛模拟、压力测试、风险平价与卡尔玛比率优化。在虚拟投资组合上运行风险评估、情景模拟和配置优化;不执行真实经纪商订单。
元数据: {"openclaw":{"requires":{"env":["RISK_OFFICER_TOKEN"]},"primaryEnv":"RISK_OFFICER_TOKEN","emoji":"📊","homepage":"https://riskofficer.tech"}}


RiskOfficer 投资组合管理

连接至 RiskOfficer API,用于管理投资组合并计算金融风险指标。

必需项: 一个环境变量 —— RISK_OFFICER_TOKEN(请在 RiskOfficer 应用中创建:设置 → API 密钥)。无需其他环境变量或二进制文件。

来源: 官方技能仓库:github.com/mib424242/riskofficer-openclaw-skill。产品:riskofficer.tech。令牌仅由 RiskOfficer 应用签发;本技能不收集或存储任何凭证。

适用范围:仅限分析与研究(虚拟投资组合)

本技能中的所有投资组合数据与操作均在 RiskOfficer 自身环境中进行。 您在此创建、编辑或优化的投资组合均为虚拟组合 —— 仅用于分析与研究。助手可以:

  • 读取您的投资组合(包括从经纪商同步的组合),以展示持仓、历史和风险指标
  • 在 RiskOfficer 内创建和修改虚拟/手动投资组合,并运行优化
  • 对这些投资组合运行计算(VaR、蒙特卡洛模拟、压力测试)

本技能不会在您的经纪商账户中下达或执行任何真实订单。 经纪商同步仅为分析目的,是只读的;任何在真实账户中的再平衡或交易操作,都需要您在自己的经纪商应用或 RiskOfficer 自有流程中完成,而非由助手执行。令牌仅用于访问 RiskOfficer API,以进行此类分析与研究。

设置步骤

  1. 打开 RiskOfficer 应用 → 设置 → API 密钥
  2. 创建一个名为 "OpenClaw" 的新令牌
  3. 设置环境变量:RISK_OFFICER_TOKEN=ro_pat_...

或在 ~/.openclaw/openclaw.json 中配置:

{
  "skills": {
    "entries": {
      "riskofficer": {
        "enabled": true,
        "apiKey": "ro_pat_..."
      }
    }
  }
}

API 基础 URL

https://api.riskofficer.tech/api/v1

所有请求均需包含:Authorization: Bearer ${RISK_OFFICER_TOKEN}


可用命令

代码搜索

搜索代码

在创建或编辑任何投资组合之前,请使用此功能验证代码符号并获取其货币/交易所信息。当用户提及公司名称而非代码时也应使用。

curl -s "https://api.riskofficer.tech/api/v1/tickers/search?q=Apple&limit=10&locale=en" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

查询参数:
- q(可选):搜索查询 —— 可按代码、名称或全名搜索(不区分大小写)。省略则返回按受欢迎程度排序的热门代码。
- limit(可选,默认 20,最大 50):返回结果数量
- include_prices(可选,默认 false):包含 current_priceprice_change_percentprice_change_absoluteprice_date
- locale(可选,默认 ru):en 表示英文名称,ru 表示俄文名称
- exchange(可选):按交易所筛选 —— MOEXNYSENASDAQCRYPTO

响应: tickers 数组,每个元素包含:tickernamefull_nameinstrument_typecurrencyexchangepopularity_scoreisin

工具类型: sharebondetffuturesfutures_continuous(例如 MOEX 上的 BR、SI)、currencycrypto

关键规则:
- 始终使用代码搜索来解析公司名称 → 代码符号(例如 "Apple" → "AAPL","Sberbank" → "SBER")
- 在将资产添加到投资组合前,使用结果中的 currency 字段检查货币一致性约束
- MOEX 期货:搜索 "BR" 或 "SI" 返回的是连续合约,而非单个合约(如 BRF6、SIM5)
- 当用户询问 "X 现在值多少钱?" 时,使用 include_prices=true 来显示当前价格

# 按公司名称搜索(英文)
curl -s "https://api.riskofficer.tech/api/v1/tickers/search?q=Gazprom&locale=en&limit=5" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

# 按俄文名称搜索
curl -s "https://api.riskofficer.tech/api/v1/tickers/search?q=%D0%93%D0%B0%D0%B7%D0%BF%D1%80%D0%BE%D0%BC&locale=ru&limit=5" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

# 获取代码的当前价格
curl -s "https://api.riskofficer.tech/api/v1/tickers/search?q=AAPL&include_prices=true" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

# 获取热门代码(无查询参数)
curl -s "https://api.riskofficer.tech/api/v1/tickers/search?limit=10&include_prices=true" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

# 按交易所筛选
curl -s "https://api.riskofficer.tech/api/v1/tickers/search?q=SBER&exchange=MOEX" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

获取历史价格

当用户询问特定资产的价格历史、图表数据或趋势时:

curl -s "https://api.riskofficer.tech/api/v1/tickers/historical?tickers=SBER,GAZP,AAPL&days=30" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

查询参数: tickers(必需,逗号分隔,最多 50 个),days(可选,默认 7,最多 252 个交易日)。

响应: data 对象,以代码符号为键,每个元素包含:
- prices{date, close} 对象数组
- current_priceprice_change_percentprice_change_absolute


投资组合管理

列出投资组合

当用户要求查看其投资组合或需要概览时:

curl -s "https://api.riskofficer.tech/api/v1/portfolios/list" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

查询参数: portfolio_type(可选):"production"(手动 + 实盘经纪商)、"sandbox"(仅经纪商沙盒)、"all"(默认)。

响应:投资组合数组,包含 snapshot_idnametotal_valuecurrencypositions_countbrokersandboxactive_snapshot_id(UUID 或 null —— 如果设置,风险计算将使用此历史快照而非最新快照)。

获取投资组合详情

当用户希望查看特定投资组合的持仓时:

curl -s "https://api.riskofficer.tech/api/v1/portfolio/snapshot/{snapshot_id}" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

响应:nametotal_valuecurrencypositions(数组,包含 tickerquantitycurrent_pricevalueweightavg_price)。

获取投资组合历史

当用户询问其投资组合随时间的变化或希望浏览过去快照时:

curl -s "https://api.riskofficer.tech/api/v1/portfolio/history?days=30" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

查询参数: days(可选,默认 30,范围 1–365)。

响应:snapshots 数组,包含 snapshot_idtimestamptotal_valuepositions_countsync_sourcetypeaggregated/manual/broker)、namebrokersandbox

获取快照差异(比较两个投资组合版本)

当用户希望比较两个投资组合状态时(例如,再平衡前后,或两个不同日期):

curl -s "https://api.riskofficer.tech/api/v1/portfolio/snapshot/{snapshot_id}/diff?compare_to={other_snapshot_id}" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

响应:added/removed/modified 持仓,total_value_delta。两个快照必须属于同一用户。

获取聚合投资组合

当用户要求查看其所有账户的总计或合并投资组合时:

curl -s "https://api.riskofficer.tech/api/v1/portfolio/aggregated?type=all" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

查询参数:
- type=production —— 手动 + 经纪商实盘账户
- type=sandbox —— 仅经纪商沙盒账户
- type=all —— 全部(默认)

响应:
- portfolio.positions —— 跨所有投资组合合并的持仓
- portfolio.total_value —— 以基础货币计的总价值
- portfolio.currency —— 基础货币(RUBUSD
- portfolio.sources_count —— 聚合的投资组合数量

响应示例:

{
  "portfolio": {
    "positions": [
      {"ticker": "SBER", "quantity": 150, "value": 42795, "sources": ["T-Bank", "Manual"]},
      {"ticker": "AAPL", "quantity": 10, "value": 189500, "original_currency": "USD"}
    ],
    "total_value": 1500000,
    "currency": "RUB",
    "sources_count": 3
  },
  "snapshot_id": "uuid-of-aggregated"
}

不同货币的持仓将使用当前俄罗斯央行汇率自动转换。

更改基础货币(聚合投资组合)

当用户希望以不同货币查看聚合投资组合时:

curl -s -X PATCH "https://api.riskofficer.tech/api/v1/portfolio/{aggregated_snapshot_id}/settings" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"base_currency": "USD"}'

支持的货币: RUBUSD。更改后,聚合投资组合会自动重新计算。

用户提示示例:
- "Show everything in dollars" / "Покажи всё в долларах" → base_currency: "USD"
- "Switch to rubles" / "Переведи в рубли" → base_currency: "RUB"

从聚合中包括/排除投资组合

当用户希望从总计计算中排除特定投资组合时:

curl -s -X PATCH "https://api.riskofficer.tech/api/v1/portfolio/{snapshot_id}/settings" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"include_in_aggregated": false}'

用户提示示例:
- "Exclude sandbox from total" / "Не учитывай песочницу в общем портфеле"
- "Remove demo portfolio from calculations" / "Убери демо-портфель из расчёта"

创建手动投资组合

当用户希望创建包含特定持仓的新投资组合时:

curl -s -X POST "https://api.riskofficer.tech/api/v1/portfolio/manual" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Portfolio",
    "positions": [
      {"ticker": "SBER", "quantity": 100},
      {"ticker": "GAZP", "quantity": 50, "avg_price": 148.0},
      {"ticker": "YNDX", "quantity": -20}
    ]
  }'

字段:
- ticker(必需):代码符号。务必先使用 /tickers/search 进行验证并检查货币。
- quantity(必需):股数。负值 = 空头头寸(例如 -20 = 做空 20 股)。
- avg_price(可选):用于盈亏跟踪的平均买入/入场价格。在新投资组合中省略 → 使用当前市价。在编辑时省略 → 继承自先前快照。

查询参数: locale(可选,默认 ru)—— 影响资产名称解析。

重要 —— 单一货币规则:
一个投资组合中的所有资产必须使用同一种货币
- 卢布资产(MOEX):SBER、GAZP、LKOH、YNDX 等。
- 美元资产(NYSE/NASDAQ):AAPL、MSFT、GOOGL、TSLA 等。
单个投资组合中不能混合货币!建议创建独立的投资组合。

空头头寸:
- 使用负的 quantity 表示做空(例如 {"ticker": "GAZP", "quantity": -50}
- 同一投资组合中支持同时持有多头和空头(多空投资组合)
- 优化多空投资组合时,使用 optimization_mode: "preserve_directions" 以保留空头

更新投资组合(添加/移除持仓)

当用户希望修改现有投资组合时:

  1. 获取当前持仓:
curl -s "https://api.riskofficer.tech/api/v1/portfolio/snapshot/{snapshot_id}" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"
  1. 使用相同的名称和更新后的完整持仓列表重新提交:
curl -s -X POST "https://api.riskofficer.tech/api/v1/portfolio/manual" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"name": "<same name>", "positions": [<complete updated list>]}'

重要: 在更新前,始终向用户展示将要发生的更改并请求确认。除非明确指定,否则 avg_price 将从先前快照中保留。

删除手动投资组合

当用户希望完全删除/移除一个手动投资组合时:

curl -s -X DELETE "https://api.riskofficer.tech/api/v1/portfolio/manual/My%20Portfolio" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"
  • 投资组合名称必须进行 URL 编码
  • 归档该投资组合的所有快照 —— 不可逆
  • 删除前务必与用户确认 —— 无法撤销
  • 响应:archived_snapshots 数量、portfolio_namemessage

删除经纪商投资组合快照

当用户希望在不断开经纪商连接的情况下清除经纪商投资组合历史时:

curl -s -X DELETE "https://api.riskofficer.tech/api/v1/portfolio/broker/tinkoff?sandbox=false" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"
  • sandbox=true 表示沙盒投资组合,sandbox=false 表示实盘/生产环境
  • 仅归档快照;经纪商连接保持活动状态
  • 下次同步将创建新快照
  • 删除前务必确认

经纪商集成

列出已连接的经纪商

当用户询问其经纪商连接时:

curl -s "https://api.riskofficer.tech/api/v1/brokers/connections" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

列出可用的经纪商提供商

当用户询问支持哪些经纪商时:

curl -s "https://api.riskofficer.tech/api/v1/brokers/available" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}"

从经纪商同步投资组合

当用户希望从已连接的经纪商刷新/更新其投资组合时:

curl -s -X POST "https://api.riskofficer.tech/api/v1/portfolio/proxy/broker/{broker}/portfolio" \
  -H "Authorization: Bearer ${RISK_OFFICER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"sandbox": false}'
  • {broker}tinkoffalfa
  • sandboxfalse 表示实盘账户,true
3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor