mcpField
D
dflow-kalshi-portfolio

dflow-kalshi-portfolio

github.com/dflowprotocolその他042 回インストール3 週間前に更新
リポジトリ

dflow-kalshi-portfolio について

dflow-kalshi-portfolioは、ウォレットのKalshi保有状況と取引履歴を読み取り専用で確認するスキルです。オンチェーン残高と市場メタデータを結合し、評価額、実現損益、履歴、償還可否を把握できます。

主な機能

  1. 01ウォレット保有状況と市場ラベルの表示
  2. 02Bid価格に基づく時価評価
  3. 03約定履歴と実現損益の確認
  4. 04償還可能なポジションの特定
  5. 05CLIの簡易表示またはAPIパイプライン

活用シーン

  1. 01アクティブなVaultウォレットの保有確認
  2. 02現在のBidによる結果トークン評価
  3. 03取引履歴と実現損益の確認
  4. 04償還可能な勝ちポジションの特定

MCP 対応

レスポンス形式、ページネーション、バッチエンドポイントの詳細確認に https://pond.dflow.net/mcp のDFlow docs MCPを参照します。このスキル自体はMCPサーバーを提供しません。

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/dflow-kalshi-portfolioを入力して読み込まれたか確認します。

詳細

DFlow Kalshi ポートフォリオ

ウォレットの Kalshi アクティビティを読み取り専用で表示します。保有資産、時価評価額、実現損益、約定履歴、償還可能なポジションを確認できます。

前提条件

  • DFlow docs MCP(https://pond.dflow.net/mcp)— リポジトリの README に従ってインストールします。このスキルは手順書であり、MCP は参照先です。正確なレスポンス形式、ページネーション、バッチエンドポイントのペイロードは、search_d_flow / query_docs_filesystem_d_flow で調べてください。推測しないでください。
  • dflow CLI(任意。保有資産をすばやく表示する場合)— リポジトリの README に従ってインストールします。

利用方法

/positions エンドポイントはありません。 オンチェーンのウォレット残高とメタデータの結合を手作業で行い、ポートフォリオを組み立てます。方法は 2 つあります。

  • CLI — dflow positions — 1 つのコマンドで、アクティブなボールトウォレットのスポットトークンとアウトカムトークンを残高およびマーケットラベル付きで出力します。CLI で「今、何を保有しているか」を確認でき、ステーブルコインの uiAmount はすでに USD として表示されます。アウトカムトークンのマーク価格、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 — 対象のアウトカムミントについて、マーケットの完全なメタデータ(title、status、closeTime、yesBid / yesAsk / noBid / noAsk、redemptionStatus、accounts.yesMint / noMint)を取得します。
  4. 結合 — 各保有資産をマーケットに対応付けます。保有ミントと accounts.yesMint / accounts.noMint を照合して、YES と NO のどちらかを判定します。

フィールドごとの詳細(レスポンスエンベロープ、ページネーション)→ docs 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 を合計します。
換金可能なポジション

保有ポジションが換金可能なのは、次の3つすべてを満たす場合です。

  • 市場の status が determined または finalized である。
  • 市場の redemptionStatus が "open" である。
  • 保有しているアウトカムミントが、(市場の result に基づく)勝ち側である。

換金するには、dflow-kalshi-trading に引き継いでください(換金は、勝ち側を決済ミントに売却する操作です)。

保留中の注文を確認する

アプリ自体が注文を送信した場合は、送信時に返された orderAddress を保存し、終端状態になるまで GET /order-status?orderAddress=<addr> をポーリングしてください。ウォレット単位で一覧を取得するエンドポイントはありません。ほとんどの約定は CLI の 120 秒のポーリング時間内に終了するため、ユーザーが気にすることはほとんどありません。ただし、メンテナンス時間外に特定の約定時間を前提としないでください。

ユーザーに尋ねること(および尋ねないこと)

表示形式 — 一意に判断できる場合は推測し、判断できない場合は確認してください。

  1. 表示形式 — 保有ポジション/時価評価/実現損益/アクティビティ/換金可能なポジション。
  2. ウォレットの公開鍵 — API のみ(CLI ではアクティブなボールトウォレットを使用します)。

インフラ — 必ず尋ね、推測しないでください(HTTP/RPC パイプラインのみ。dflow positions のクイックパスではどちらも不要です)。

  1. DFlow API キー(スクリプトが Metadata API(markets/batch、onchain-trades など)に直接アクセスする場合のみ)。CLI のクイックパス(dflow positions)では、CLI に保存された設定を使用するため、API キーは不要です。HTTP パイプラインでは、簡潔で中立的な聞き方をしてください。「DFlow API キーをお持ちですか?」 キーの保存場所を決めつけないでください。*「環境変数に設定していますか?」や「DFLOW_API_KEY は設定されていますか?」*といった聞き方は、ユーザーが求めていない環境変数の使用を促してしまいます。選択肢を示し、環境変数や開発環境へ無断でフォールバックしないでください。DFlow キーはどこでも共通の1つです — 同じ x-api-key で Metadata API と Trade API の両方を使用できます。はい → 本番ホスト https://prediction-markets-api.dflow.net と x-api-key を使用します。いいえ → 開発ホスト 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 ユーザーには不要です。dflow setup ですでに設定されています。

尋ねないこと:

  • 決済ミント、スリッページ、手数料、署名 — 読み取り専用のスキルです。ユーザーがポジションを操作しようとする場合は、dflow-kalshi-trading に引き継いでください。

注意点(docs MCP では教えてくれないこと)

  • /positions エンドポイントはありません。 ポートフォリオは、ウォレット残高とメタデータの結合で構成します。API に近道がないか探すのはやめましょう。
  • アウトカムトークンには Token-2022 プログラムを使います。 クラシックトークンプログラムではなく、TOKEN_2022_PROGRAM_ID を使います。USDC/SOL/CASH はクラシックプログラムを別途照会します。
  • 時価評価にはアスクではなくビッドを使います。 YES のロングなら yesBid、NO のロングなら noBid です。アスクで評価するとポートフォリオの価値を過大に見積もります。
  • POST エンドポイントは 2 つあります。 filter_outcome_mints と markets/batch はどちらも、アドレスリストを含む POST ボディを受け取ります。GET を使って失敗しやすいので注意してください。
  • ステーブルコインはアウトカムミントではありません。 filter_outcome_mints はステーブルコインを除外します(ポジションではなく決済に使われるためです)。PM ビューとは別に USDC/CASH の残高を追跡してください。
  • 償還可能になるには、3 つの条件すべてを満たす必要があります。 「市場が終了した」だけでは不十分です。ステータス、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 を組み合わせてください。
  • 閉鎖済みのアウトカムトークンアカウント。 全額売却または償還の後、トークンアカウントが閉鎖され(レンタが返還され)、ウォレットに表示されなくなる場合があります。これは想定どおりです。記録を確認する必要がある場合は、オンチェーン取引の履歴を確認してください。
  • 同じ市場でも、異なるレールなら別々のポジションです。 DFlow 上の各 Kalshi 市場には USDC レールと CASH レールがあり、それぞれに独自の yesMint/noMint があります。1 つのウォレットが同じ市場の両方のレールで YES を保有することもあります。その場合、ポートフォリオ上では 2 行に分かれ、償還フローも 2 つになり、時価評価もそれぞれ独立して合計されます。実際にはまれですが(ほとんどのユーザーは一方のレールのみを使います)、発生した場合に処理できるようにしておくとよいでしょう。
  • 2 つのインターフェースには、それぞれ別の認証経路があります。 dflow positions は CLI 経由で実行され、保存済みの設定(キー、ウォレット、RPC)を使います。この呼び出しにスクリプトから渡すものはありません。独自に構築する HTTP パイプライン(markets/batch、onchain-trades、RPC の getParsedTokenAccountsByOwner)は通常の HTTP/RPC であり、DFlow API キーと RPC URL を明示的に渡す必要があります。両者は独立しているため、CLI に保存されたキーを別の HTTP クライアントから利用することはできません。API キーと RPC について確認するのは、HTTP パイプラインの場合に限ってください。

想定どおりにいかない場合

上記で扱っていない事項(filter_outcome_mints/markets/batch/onchain-trades の完全なレスポンスエンベロープ、ページネーションのパラメーター、Proof の状態の扱い、redemptionStatus の遷移におけるエッジケース、注文ステータスの終端状態)については、docs MCP(search_d_flow、query_docs_filesystem_d_flow)を照会してください。推測しないでください。

実行可能な参考コードについては、/prediction-markets/recipes/track-positions(およびその Cookbook Repo リンク)を参照してください。

関連スキル

  • dflow-kalshi-trading — ここに表示されているポジションを売却、償還、またはその他の方法で操作します。
  • dflow-kalshi-market-data — 監視中のポジションに関する市場中心のデータ(オーダーブック、取引、ローソク足、ゲーム中のデータ)を取得します。
  • dflow-kalshi-market-scanner — ポジションを持つ新しい市場を探します。
  • dflow-proof-kyc — 新しいポジションを購入できるよう、ウォレットを認証します。

コメント