mcpField
D
dflow-kalshi-portfolio

dflow-kalshi-portfolio

github.com/dflowprotocol其他042 次安装3 周前更新
代码仓库

关于 dflow-kalshi-portfolio

dflow-kalshi-portfolio 是用于只读查看钱包 Kalshi 持仓和活动的技能。它将链上余额与市场元数据关联,以计算估值、已实现盈亏、交易历史和赎回资格。

主要功能

  1. 01查看钱包持仓和市场标签
  2. 02按买价计算盯市估值
  3. 03查看成交记录和已实现盈亏
  4. 04识别符合赎回条件的仓位
  5. 05使用 CLI 快速查看或 API 流程

适用场景

  1. 01检查活动金库钱包中的持仓
  2. 02按当前买价估算结果代币仓位
  3. 03查看交易活动和已实现盈亏
  4. 04查找可赎回的获胜仓位

MCP 相关

使用 https://pond.dflow.net/mcp 上的 DFlow 文档 MCP 查询响应结构、分页和批量端点详情;本技能本身不提供 MCP 服务。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dflowprotocol/dflow-skills --skill dflow-kalshi-portfolio

安装后在 Claude Code 中输入/dflow-kalshi-portfolio确认已加载。

详细介绍

DFlow Kalshi 投资组合

以只读方式查看钱包的 Kalshi 活动——持仓、市值估算、已实现盈亏、成交历史、可赎回持仓。

前置条件

  • DFlow 文档 MCP(https://pond.dflow.net/mcp)——按照仓库 README 安装。此技能是操作指南;MCP 是参考依据。通过 search_d_flow / query_docs_filesystem_d_flow 查询确切的响应结构、分页方式和批量端点载荷——不要猜测。
  • dflow CLI(可选,用于快速查看持仓)——按照仓库 README 安装。

接口

没有 /positions 端点。 投资组合需要手动通过链上钱包余额和元数据关联来构建。有两种方式:

  • CLI — dflow positions — 一条命令即可转储当前激活的金库钱包中的现货和结果代币,并附带余额和市场标签。通过 CLI 可查看“我现在持有哪些资产?”,且稳定币的 uiAmount 已直接以美元表示。此方式不提供结果代币的标记价格、redemptionStatus 或成交历史,因此结果代币估值、赎回检查和盈亏仍需通过 API 流程处理。仅限当前激活的金库。
  • API — 自行构建流程 — 只要用户需要市值估算、盈亏、活动历史、赎回资格,或者查看的不是 CLI 当前激活的金库钱包,就需要使用此方式。

快速路径:dflow positions(CLI)

输出(单个 JSON 信封,在每个钱包上的格式相同):

{
  "ok": true,
  "data": {
    "wallet": "<pubkey>",
    "positions": [
      { "type": "spot",    "mint": "...", "symbol": "USDC", "amount": "1326161", "uiAmount": 1.326161, "decimals": 6 },
      { "type": "outcome", "mint": "...", "symbol": "DFlowYU0192", "amount": "2000000", "uiAmount": 2.0, "decimals": 6,
        "side": "yes", "market": { "title": "...", "status": "active" } }
    ]
  }
}
  • type: "spot" — SOL、USDC、CASH 以及钱包中的其他资产。
  • type: "outcome" — Kalshi 结果代币;还包含 side("yes" | "no")和简要的 market(title、status)。
  • 没有用于查看其他钱包的标志。查看其他钱包时,请使用 API 流程。

完整路径:自行构建(API)

DFlow 指南 /prediction-markets/recipes/track-positions 中的标准流程:

  1. 通过 Solana RPC 读取钱包余额 — getParsedTokenAccountsByOwner(wallet, { programId: TOKEN_2022_PROGRAM_ID })。结果代币使用 Token-2022。(如需稳定币余额,也要查询经典 SPL 代币程序。)
  2. POST /api/v1/filter_outcome_mints — 发送钱包的铸币地址列表,获取其中的 PM 结果代币铸币地址。
  3. POST /api/v1/markets/batch — 获取这些结果代币铸币地址对应的完整市场元数据(标题、状态、closeTime、yesBid / yesAsk / noBid / noAsk、redemptionStatus、accounts.yesMint / noMint)。
  4. 关联 — 将每项持仓映射到对应市场;通过将持有的铸币地址与 accounts.yesMint / accounts.noMint 匹配,确定是 YES 还是 NO。

字段级详情(响应信封、分页)→ 文档 MCP。

基于该流程构建的视图

当前持仓

即上述流程的输出。也可为每项持仓附加当前标记价格(YES 持仓使用 yesBid,NO 持仓使用 noBid——见下文的市值估算)。

未实现市值估算

按结果代币所在一侧的买价计算每项持仓的价值(即你可以卖出的价格),而不是卖价:

  • 持有 YES → uiAmount * parseFloat(yesBid)
  • 持有 NO → uiAmount * parseFloat(noBid)

对一个钱包的所有持仓求和,得到未实现总价值。减去成本基础(见下文)即可得出未实现盈亏。

已实现活动和盈亏

GET /api/v1/onchain-trades?wallet=<pubkey>&sortBy=createdAt&sortOrder=desc&limit=N — DFlow 索引的钱包链上成交记录视图。

  • 活动流:每行包含 createdAt、marketTicker、side、inputAmount、outputAmount、transactionSignature。
  • 每个市场的成本基础:跟踪每个结果代币铸币地址的结算代币净流量(买入时流入的结算代币减去卖出时流出的结算代币)。
  • 费用:对所有成交中的结算代币 feeAmount 求和。
可赎回仓位

只有同时满足以下三项,持仓才可赎回:

  • 市场 status 为 determined 或 finalized,
  • 市场 redemptionStatus 为 "open",
  • 持有的结果 mint 是获胜方(根据市场 result 判断)。

要赎回,请转交给 dflow-kalshi-trading(赎回就是将获胜方卖回结算 mint)。

待处理订单检查

如果应用本身提交了订单,请保存提交时返回的 orderAddress,并轮询 GET /order-status?orderAddress=<addr>,直到订单进入终态。没有按钱包查询订单的接口。大多数成交都会在 CLI 的 120s 轮询时限内结束,因此这通常不会成为用户需要关心的问题;但在维护窗口之外,不要假定具体的成交时间。

应该询问用户什么(以及不该询问什么)

视图形式——明确无误时自行判断,不明确时请用户确认:

  1. 视图类型——持仓 / 按市值计价 / 已实现盈亏 / 活动 / 可赎回。
  2. 钱包公钥——仅 API 需要(CLI 使用当前激活的 vault 钱包)。

基础设施——务必询问,绝不要自行推断(仅适用于 HTTP/RPC 流程;dflow positions 快速路径两者都不需要):

  1. DFlow API 密钥(仅当脚本直接调用 Metadata API 时需要,例如 markets/batch、onchain-trades 等)。CLI 快速路径(dflow positions)不需要密钥——它使用 CLI 中保存的配置。对于 HTTP 流程,请直接、中立地询问:“你有 DFlow API 密钥吗?” 不要擅自假定密钥存放在哪里——例如 “环境变量里有吗?” 或 “DFLOW_API_KEY 已设置吗?” 之类的说法,会引导用户使用他们并未要求的环境变量默认值。让用户选择;不要暗中回退到环境变量或 dev。所有地方都使用同一个 DFlow 密钥——同一个 x-api-key 即可访问 Metadata API 和 Trade API。回答“有”→ 生产环境主机 https://prediction-markets-api.dflow.net,并使用 x-api-key。回答“没有”→ dev 主机 https://dev-prediction-markets-api.dflow.net,该主机有速率限制。相关链接:https://pond.dflow.net/get-started/api-key。生成脚本时,请在启动时记录最终使用的主机和密钥是否存在。
  2. RPC URL——此处要询问,不同于现货 / PM 交易或市场数据场景。HTTP 流程会通过 RPC 直接读取代币账户;没有钱包可以代你完成此操作。建议使用 Helius。使用 dflow positions 快速路径的 CLI 用户不需要提供 RPC URL——dflow setup 已完成配置。

不要询问:

  • 结算 mint、滑点、费用、签名——这是只读技能。如果用户转而想操作仓位,请转交给 dflow-kalshi-trading。

注意事项(文档 MCP 不会主动告诉你这些)

  • 没有 /positions 端点。 投资组合 = 钱包余额 + 元数据关联。别指望从 API 找到捷径。
  • 结果代币使用 Token-2022 程序。 使用 TOKEN_2022_PROGRAM_ID,而不是经典代币程序。USDC / SOL / CASH 则需单独查询经典程序。
  • 按市价计值 = 买价,而非卖价。 持有 YES → yesBid。持有 NO → noBid。按卖价计值会高估投资组合。
  • 有两个 POST 端点。 filter_outcome_mints 和 markets/batch 都通过 POST 请求体接收地址列表。很容易误用 GET,导致请求失败。
  • 稳定币不是结果代币。 filter_outcome_mints 会将其剔除(它们用于结算,而非持仓)。需在 PM 视图之外单独跟踪 USDC / CASH 余额。
  • 可赎回状态需要三个条件同时满足,不能只看“市场已关闭”。只有当状态、redemptionStatus 和获胜方都匹配时,才显示可赎回列表。
  • 成交后余额有延迟。 刚上链的成交可能不会立即显示在未索引的 RPC 上——交易最终确认后,代币账户更新才会传播。快速刷新时请做防抖;如果用户预期余额会变化但没有看到,请重试后再判断是否失败。
  • dflow positions 仅适用于当前活跃金库。 没有 --wallet 标志;切换钱包需使用 dflow setup 或 API 流程。
  • dflow positions 返回的是余额,不是标记价格。 对结果代币,你会得到 amount / uiAmount / decimals,以及 side + market.title + market.status。这些数据已足以估算 USDC 和 CASH 的美元价值(其 uiAmount ≈ 美元价值,可能受脱锚影响);但结果代币需要从 markets/batch 获取 yesBid / noBid 来计值,其他现货代币(SOL 等)则需要外部现货价格。输出中也没有 redemptionStatus 或成本基准——需搭配 markets/batch 判断是否可赎回,并使用 /onchain-trades 计算盈亏。
  • 已关闭的结果代币账户。 全部卖出或赎回后,代币账户可能会关闭(回收租金),之后便不会再显示在钱包中。这是正常情况——如需查看记录,请检查 onchain-trades 历史。
  • 同一市场、不同通道 = 单独的持仓。 DFlow 上的每个 Kalshi 市场都有 USDC 通道和 CASH 通道,各自拥有独立的 yesMint / noMint。钱包可以在同一市场的两个通道都持有 YES——它们是投资组合中的两行记录,有两条赎回流程,市价计值也分别计算后再相加。实际中较少见(大多数用户只使用一个通道),但出现时应妥善处理。
  • 两个界面,两种认证方式。 dflow positions 会通过 CLI 调用,并使用其存储的配置(密钥、钱包、RPC)——该脚本不会为这次调用传入任何参数。自行构建的 HTTP 流程(markets/batch、onchain-trades、RPC getParsedTokenAccountsByOwner)使用普通 HTTP/RPC,需要显式传入 DFlow API 密钥 + RPC URL。两者相互独立:CLI 存储的密钥无法被同级 HTTP 客户端访问。只有使用 HTTP 流程时才询问 API 密钥 + RPC。

遇到不符合上述说明的情况

对于上述未涵盖的内容——filter_outcome_mints / markets/batch / onchain-trades 的完整响应封装、分页参数、涉及 Proof 的状态、redemptionStatus 转换的边缘情况、订单状态的终止状态——请查询文档 MCP(search_d_flow、query_docs_filesystem_d_flow)。不要猜测。

如需可运行的参考代码,请参阅 /prediction-markets/recipes/track-positions(以及其中的 Cookbook Repo 链接)。

相关技能

  • dflow-kalshi-trading — 卖出、赎回或以其他方式处理你在此处看到的持仓。
  • dflow-kalshi-market-data — 获取你正在关注的持仓所对应的市场数据(订单簿、成交、K 线、比赛中数据)。
  • dflow-kalshi-market-scanner — 寻找可开仓的新市场。
  • dflow-proof-kyc — 在钱包买入新持仓前验证钱包。

评论

支持 Markdown