dflow-kalshi-portfolio について
dflow-kalshi-portfolioは、ウォレットのKalshi保有状況と取引履歴を読み取り専用で確認するスキルです。オンチェーン残高と市場メタデータを結合し、評価額、実現損益、履歴、償還可否を把握できます。
主な機能
- 01ウォレット保有状況と市場ラベルの表示
- 02Bid価格に基づく時価評価
- 03約定履歴と実現損益の確認
- 04償還可能なポジションの特定
- 05CLIの簡易表示またはAPIパイプライン
活用シーン
- 01アクティブなVaultウォレットの保有確認
- 02現在のBidによる結果トークン評価
- 03取引履歴と実現損益の確認
- 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で調べてください。推測しないでください。 dflowCLI(任意。保有資産をすばやく表示する場合)— リポジトリの 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 にある標準的なパイプラインです。
- Solana RPC でウォレット残高を読み取る —
getParsedTokenAccountsByOwner(wallet, { programId: TOKEN_2022_PROGRAM_ID })を実行します。アウトカムトークンは Token-2022 です。(ステーブルコイン残高については、従来の SPL トークンプログラムにもクエリを送信します。) POST /api/v1/filter_outcome_mints— ウォレットのミント一覧を送信し、PM アウトカムミントのみを取得します。POST /api/v1/markets/batch— 対象のアウトカムミントについて、マーケットの完全なメタデータ(title、status、closeTime、yesBid/yesAsk/noBid/noAsk、redemptionStatus、accounts.yesMint/noMint)を取得します。- 結合 — 各保有資産をマーケットに対応付けます。保有ミントと
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 秒のポーリング時間内に終了するため、ユーザーが気にすることはほとんどありません。ただし、メンテナンス時間外に特定の約定時間を前提としないでください。
ユーザーに尋ねること(および尋ねないこと)
表示形式 — 一意に判断できる場合は推測し、判断できない場合は確認してください。
- 表示形式 — 保有ポジション/時価評価/実現損益/アクティビティ/換金可能なポジション。
- ウォレットの公開鍵 — API のみ(CLI ではアクティブなボールトウォレットを使用します)。
インフラ — 必ず尋ね、推測しないでください(HTTP/RPC パイプラインのみ。dflow positions のクイックパスではどちらも不要です)。
- 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。スクリプトを生成する場合は、起動時に解決されたホストとキーの有無をログに記録してください。 - 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— 新しいポジションを購入できるよう、ウォレットを認証します。