How to see your positions on Kalshi and Polymarket in one view
Six ways to put your own positions on two venues side by side — and why the one-line total is the number to distrust.
Link both accounts to a terminal that reads them, import one venue's export into a tracker that reads the other live, or pull each venue's positions endpoint into one sheet yourself. Each works, and none produces a true single total: Kalshi holds dollars in an account, Polymarket an on-chain stablecoin, the two settle on different schedules, and a question that looks shared across them may not be one contract.
The short way
If you trade from outside the United States and will hand over a Kalshi key, link both venues to a terminal and read its portfolio page. If you will not, read Polymarket live and bring Kalshi in as a file. If you are in the United States, skip to the end of the options: nothing here shows both of the venues open to you under its own terms, and the route that works is your own sheet.
The second way costs nothing and holds no key. PredictFolio reads a Polymarket address from the chain — any address, no wallet connection — and draws its profit and loss over time, with a mark-to-market setting that values open positions at the current price. Its importer takes Kalshi's export and draws it beside the Polymarket line, or sums the two into one. The importer checks the file: a Kalshi export whose rows do not add up gets a warning, and the chart then uses the file's own profit-and-loss columns anyway.
That is the whole of the trade-off in one product. Polymarket is live and Kalshi is a snapshot as of the day you exported it.
What the options are
A terminal that reads both live. Parity links Kalshi with an API key ID and the entire RSA private key, Polymarket US with a key ID and secret, and Polymarket through an embedded wallet or an imported key. Its Portfolio view then merges positions, resting orders, fills and a profit breakdown by category across every linked venue. Parity charges no fee of its own today. Its terms bar US persons, which rules out the one reader most likely to hold Polymarket US.
Kairos shows positions, orders and profit and loss across Kalshi, Polymarket and Predict.fun, and its account docs refuse to add them up: there is no grand total, because Kalshi dollars and on-chain collateral sit in different custody domains and no single order can spend both. That is the correct answer, delivered as a missing number. A US account sees Kalshi only. Kairos charges per taker fill, which costs nothing if you only read. The two terminals are compared on fees and keys in Kairos vs Parity.
Your own sheet. Each venue publishes your positions; the join is yours.
On the international venue, Polymarket's Data API needs no key at all.
GET /v2/positions serves a user's open book and, with status=CLOSED, the closed one, each row
carrying size, average price, current value, cash profit and the current price of the outcome.
# Open positions for the address that holds them (the proxy wallet, not the key that signs)
curl "https://data-api.polymarket.com/v2/positions?user=YOUR_WALLET_ADDRESS"
# Exited positions
curl "https://data-api.polymarket.com/v2/positions?user=YOUR_WALLET_ADDRESS&status=CLOSED"
On Kalshi, the Kalshi API serves GET /portfolio/positions behind
authentication: every request signed with the RSA key you created in your account settings, over a
timestamp, the method and the path. It pages by cursor, filters by settlement status, and can be
narrowed to positions with a non-zero holding or any traded volume. Run it on your own machine and
the key never leaves it, which is the one thing a hosted tracker cannot offer.
On Polymarket US, the portfolio and balance endpoints sit on the signed trading host, and a private WebSocket carries position and balance updates. The key comes from a developer portal you sign into with the same method as the iOS app, after the identity check.
Then flatten all of it to one shape and keep the columns that refuse to merge:
venue,market_id,question,side,contracts,avg_price,mark,currency,status,as_of
currency and as_of are the two a first draft drops, and the next section is why they stay.
Where this breaks
Two currencies, presented as one column. Kalshi and Polymarket US hold dollars in an account.
Polymarket holds pUSD, a stablecoin on Polygon, through fields still named usdc_size and
entry_cost_usdc. Kairos refuses to total them; Parity's Portfolio merges them while its own docs
say the positions settle separately and the balances are not interchangeable; PredictFolio offers to
sum them. A total is a figure about two custody arrangements, and the day you need to move money
from one to the other it will be wrong by whatever the move costs —
how money gets out is that cost.
A question that looks shared is not one position. Putting a Kalshi YES beside a Polymarket NO on the same screen makes them look like a hedge. They are a hedge only if both contracts settle on the same source, the same threshold and the same close time. Parity pairs markets by a matching short title, and its own front page put a Kalshi and a Polymarket Fed market in one ladder with end dates of 28 and 29 October 2026. Do the check in matching a question across venues before a merged view persuades you that two positions cancel.
The two venues end a position on different schedules. On Kalshi the winning side is paid a
dollar a contract, netted, shortly after expiration — with timing that varies by market type and
manual review. On Polymarket a resolved winner stays in the default open set until it is redeemed:
Polymarket's documentation says OPEN is the superset that includes settled-but-unredeemed winners.
A combined view that counts open positions is counting finished Polymarket positions as live ones
until you redeem them.
Each venue marks and computes its own way. Polymarket's Data API documents its profit fields but not the cost-basis method behind them, and an open position's current value is the venue's current price applied to a holding — a quote on a thin market, not a valuation. A tracker that re-derives profit from your trades may not match the venue's figure, and two trackers may not match each other. Tracking a wallet's positions covers why on the Polymarket side.
Reading may cost a key that can trade. To show Kalshi positions, Parity holds an encrypted copy of the same RSA private key that signs orders, and disconnecting in Parity does not revoke it at Kalshi; you delete it there too. Kairos's conditional orders need Kalshi credentials stored with it. Neither card documents a read-only key. Where your key lives sets out what a copy of each kind of key lets its holder do.
An import is a snapshot, and history moves. PredictFolio's Kalshi line is as current as the file you last exported. On the API, Kalshi moves positions older than a moving cutoff to a separate set of historical endpoints, so a script written against the live endpoint quietly loses its oldest rows. And on Polymarket the address that holds positions is the proxy wallet, not the key that signs: query the signer and the response is a valid, empty book.
For a US reader with Kalshi and Polymarket US, there is no shortcut. Parity's terms bar US persons, Kairos has no Polymarket US, PredictFolio and the Data API read only the international venue. Two signed API clients and a sheet is the route, and it needs two identity-checked accounts and two keys you look after yourself.
If you outgrow this
If the sheet becomes a daily job, write it once against both venues' official clients rather than raw signed requests — the SDKs category has Kalshi's and Polymarket's own packages, and PMXT puts several venues behind one interface on your own keys. If what you need is the record for a year rather than a view of today, export your Polymarket trade history covers what a complete export contains, and who sends you a tax form covers which venue sends paperwork and which leaves it to you.
The approaches, in order
Cards in the catalogue that do this, ordered editorially. Paid placement does not affect this order.
1.PredictFolio
Free and read-only — your Polymarket wallet live from the chain, with Kalshi's export imported beside it or summed into one line.
Free Polymarket P&L tracker for any wallet, with a yearly PDF or CSV tax report in beta.
FreeFree tier
2.Parity (PredictParity)
Link Kalshi, Polymarket and Polymarket US and one Portfolio view merges positions, orders and fills — the Kalshi link is a key that can trade.
One trading screen over Polymarket, Kalshi and Polymarket US, with wallet tracking.
FreeFree tier
3.Kairos
Positions on Kalshi, Polymarket and Predict.fun on one screen, deliberately with no grand total; a US account sees Kalshi only.
One order book across Kalshi, Polymarket and Predict.fun, with a fee on every taker fill.
Per-trade feeFree tier
4.Kalshi API
Your own Kalshi positions over RSA-signed REST, paged by cursor, for a sheet you control and a key that never leaves your machine.
REST, WebSocket and FIX access to a CFTC-regulated event exchange.
Per-trade feeFree tier
5.Polymarket Data API
Keyless /v2/positions for the wallet that holds your Polymarket positions, with average price, current value and cash P&L per row.
Polymarket's keyless read API for trades, positions, holders and price history.
FreeFree tier
6.Polymarket US API
The US exchange's portfolio over signed REST, in dollars — a US reader's only route to it here, after the iOS app and an identity check.
A keyless public gateway for reading, and a signed key behind KYC for trading.
Per-trade feeFree tier
FAQ
Is there one free tool that shows Kalshi and Polymarket positions live?
Not among the cards here. PredictFolio is free and reads Polymarket live, but Kalshi arrives only as an export file you import. Parity reads both live and charges no fee of its own today, but it needs your Kalshi signing key and its terms bar US persons. Kairos reads both live and charges per taker fill.
I am in the United States and hold Kalshi and Polymarket US. What shows both?
Nothing in this catalogue under its own terms. Parity links both but its terms exclude US persons; Kairos serves US accounts for Kalshi only and has no Polymarket US; PredictFolio and Polymarket's Data API cover the international venue, not Polymarket US. The route that exists is each venue's own API, joined in a sheet you keep.
Can I give a tracker a read-only Kalshi key?
Do not assume so. Kalshi's key is an RSA key pair minted in a verified account, and most venues here do not document per-key permissions at all. Parity's linking guide asks for the whole private key file, the same one that signs orders. The guide on where your key lives covers what a copy of each kind of key lets its holder do.
Why does my combined profit figure not match either venue's own screen?
Because it adds two different things. Kalshi reports dollars in an account; Polymarket reports a stablecoin on Polygon, through fields still named after USDC. Each venue computes profit and marks open positions its own way, and Polymarket keeps a resolved winner open until it is redeemed. A sum across the two is a sum of two methods.
Sources
- List positions for a user or market (GET /v2/positions) — Polymarket, read
- Get Positions (GET /portfolio/positions) — Kalshi, read
The catalogue next door
This page names a handful of cards. The rest of them are in Trading Clients & Bots, each filled in against the same schema, with the fields to narrow it yourself.
Last updated . Corrected in place: this is a reference page, not a dated post.