PredMart > Documentation > Market Resolution

Market Resolution

Every Polymarket market eventually reaches a conclusion — the event either happens or it doesn't, and the market "resolves." When this occurs, the outcome shares that were used as collateral on PredMart must be processed. Winning shares can be redeemed for $1.00 USDC each, while losing shares become worthless. PredMart handles both scenarios automatically through its market resolution system.

This page explains the complete resolution process: how PredMart detects resolved markets, what happens to positions backed by winning and losing shares, how redemption works, and how bad debt from losing positions is managed.


How Markets Resolve on Polymarket

The Resolution Process

When a real-world event occurs (or fails to occur by its deadline), Polymarket's resolution committee determines the outcome. This is done through Polymarket's oracle system — typically involving UMA's optimistic oracle or a designated resolution source.

Once the outcome is determined: 1. Polymarket marks the market as "resolved" in its API 2. The winning outcome's shares become redeemable for $1.00 each through the CTF contract 3. The losing outcome's shares become worthless ($0.00)

Binary Markets

For binary markets (Yes/No), exactly one outcome wins. If "Yes" wins, Yes shares are redeemable for $1.00 and No shares are worth $0.00, and vice versa.

Multi-Outcome Markets

For multi-outcome markets (e.g., "Which team will win?"), the winning outcome's shares are redeemable for $1.00, and all other outcomes' shares become worthless.


How PredMart Detects Resolutions

PredMart monitors Polymarket resolutions through multiple independent paths. When a market resolves and the outcome becomes final (shares become worth $1 or $0), the resolution monitor flags the event and initiates the on-chain settlement flow. Redundant detection paths keep the system responsive even if one path experiences an outage.

Oracle-Signed Resolution Data

To process a resolution on-chain, PredMart's backend provides oracle-signed resolution data to the smart contract. This data includes: - The token ID - Whether the token won or lost - A timestamp - The oracle's cryptographic signature

The contract verifies that the resolution data is valid, signed by the authorized oracle, and sufficiently recent.


Resolving a Market On-Chain

Market resolution functions have been moved to the PredmartPoolExtension contract and are called via delegatecall through the main contract's fallback() function. From the user's perspective, nothing changes — you still call these functions on the same proxy address (0xD90D012990F0245cAD29823bDF0B4C9AF207d9ee).

Anyone can call the resolveMarket(tokenId, resolutionData) function on the smart contract to formally register that a market has resolved. The function:

  1. Verifies the oracle's signature on the resolution data
  2. Verifies the resolution data is fresh (within 1 hour)
  3. Records whether the token won or lost in the contract's storage
  4. Emits a MarketResolvedEvent(tokenId, won) event

Once a market is resolved on-chain, the contract knows whether each token is a winner or loser, and the appropriate position handling can proceed.


Won Markets: Redemption Flow

When a market resolves in favor of the collateral token (the outcome occurred), the shares are "winners" and can be redeemed for $1.00 USDC each through Polymarket's CTF contract.

Two-Step Settlement

  1. Redeem collateral (redeemWonCollateral): converts all winning CTF shares for that token into USDC at $1.00 each. Callable by anyone after the market is resolved on-chain.
  2. Settle each position (settleRedemption): repays each borrower's debt from their proportional share, sends any surplus to them, deletes the position. Also callable by anyone.

Example: Alice posts 5,000 shares as collateral with $2,500 debt. Token wins. Shares redeem for $5,000; debt is repaid; Alice gets the $2,500 surplus. If she had zero debt, she'd receive the full $5,000.


Lost Markets: Bad Debt Handling

When a market resolves against the collateral token (the outcome did not occur), the shares become worthless — $0.00. This is the most significant risk in PredMart's system.

Closing Lost Positions

For positions backed by losing tokens, the function closeLostPosition(borrower, tokenId) is called. This function:

  1. Verifies the token has been marked as a loser via resolveMarket()
  2. Calculates the borrower's outstanding debt
  3. Since the collateral is worthless, the entire debt becomes bad debt
  4. The bad debt is absorbed by the lending pool (reducing totalBorrowAssets without a corresponding USDC inflow)
  5. The position is deleted
  6. Emits a PositionClosed(borrower, tokenId, badDebt) event

Impact of Bad Debt on Lenders

When bad debt is absorbed:

Total Borrow Assets -= Debt Amount  (debt is written off)
(but no USDC is added to the pool)

This means totalAssets decreases by the bad debt amount. Since pUSDC share value is based on totalAssets / totalPUSDCSupply, all pUSDC shares lose a proportional amount of value.

Example: - Pool has $1,000,000 in total assets - A market resolution creates $10,000 in bad debt - Total assets drop to $990,000 - All lenders experience a 1% loss on their position value

Mitigating Bad Debt Risk

PredMart employs several mechanisms to minimize bad debt from market resolutions:

  1. LTV cap: The flat 80% LTV ensures borrowers always maintain at least 20% equity, limiting bad debt exposure. See Protocol Constants.

  2. Real-time liquidation: As a market's price crashes toward $0 (indicating resolution against the outcome), PredMart's liquidation engine intervenes. The liquidation happens before the official resolution, recovering most of the debt through collateral seizure while the shares still have some value.

  3. Per-market borrow caps: Limits total borrowing against any single token, capping the maximum bad debt exposure from any one market.

  4. Pool cap diversification: The per-token cap ensures that even complete loss of one token's value limits total damage. See Protocol Constants.

The Race Between Liquidation and Resolution

In practice, sudden bad debt from resolution is rare because the price usually drops gradually as news spreads — giving the liquidator time to seize and sell collateral while it still has value. The risk spikes when the price collapses in seconds, the market is thin, or many positions hit their threshold simultaneously.


Resolution Monitor

PredMart's resolution monitor automatically manages the full resolution lifecycle:

  1. Detection: Identifies resolved markets from Polymarket
  2. On-chain resolution: Calls resolveMarket() to register the outcome on the contract, which immediately blocks new deposits and borrows against the resolved token
  3. Winner processing: Calls redeemWonCollateral() and settleRedemption() for winning tokens
  4. Loser processing: Calls closeLostPosition() for losing tokens

Positions Without Debt on Losing Markets

If a borrower deposited collateral but never borrowed against it, and the market resolves as a loss, the closeLostPosition() function still needs to be called to clean up the position. However, since there's no debt, there's no bad debt — the position is simply deleted, and the worthless collateral is discarded.

The borrower loses their shares (which are worth $0 anyway), but no impact on the pool occurs.


Timeline: Market Resolution Processing

Step What Happens
1 Polymarket determines the outcome
2 PredMart detects the resolution
3 resolveMarket() called on-chain with oracle-signed data
4 For winners: redeemWonCollateral() converts shares to USDC
5 For each winner: settleRedemption() repays debt and sends surplus
6 For each loser: closeLostPosition() writes off bad debt

Resolution Events

Emitted on-chain during the resolution lifecycle: MarketResolvedEvent, PositionClosed (loser, debt written off), CollateralRedeemed (winner shares → USDC), RedemptionSettled (per-borrower payout). Full signatures in Smart Contract Reference.


Key Takeaways

  1. Winning markets are profitable for borrowers: If your collateral wins, you get back $1.00 per share minus your outstanding debt. This is usually a very positive outcome.

  2. Losing markets create bad debt: If your collateral loses, your shares are worth $0 and your debt is written off. Lenders absorb the loss proportionally.

  3. Liquidation usually happens before resolution: In most cases, the price drops gradually enough that positions are liquidated before formal resolution, minimizing bad debt.

  4. PredMart processes everything automatically: You don't need to manually redeem winning shares or close losing positions — the resolution monitor handles it.

  5. The pool cap limits worst-case damage: Even if an entire token's borrowers default, the per-token cap limits total bad debt. See Protocol Constants.


Next Steps