Skip to main content

Risk Parameters

PredMart's risk management system is designed to protect both lenders and the protocol from losses while allowing borrowers to maintain competitive leverage. This page provides a thorough explanation of every risk parameter in the protocol: the dynamic LTV curve, liquidation thresholds, health factor calculations, and how these parameters interact to form a cohesive risk framework.

Understanding these parameters is essential for borrowers who want to manage their positions safely and for lenders who want to evaluate the protocol's risk profile.


The Dynamic LTV Curve

What is LTV?

Loan-to-Value (LTV) ratio is the maximum percentage of your collateral's value that you can borrow. For example, if your collateral is worth $1,000 and the LTV is 60%, you can borrow up to $600 USDC.

Why PredMart Uses a Dynamic Curve

Most lending protocols (Aave, Compound) assign a fixed LTV to each asset type. For example, ETH might have an 80% LTV, and LINK might have a 70% LTV. This works because these assets have relatively stable risk profiles.

Prediction market shares are fundamentally different. A share trading at $0.90 (the market strongly expects this outcome) is much less risky than a share trading at $0.10 (the market considers this outcome unlikely). The risk profile of the same asset changes dramatically depending on its price.

PredMart addresses this by implementing a price-dependent LTV curve — the LTV ratio is a function of the current share price, not a fixed value.

The 7-Anchor Interpolation System

PredMart's LTV curve is defined by 7 anchor points — specific (price, LTV) pairs that are stored on-chain. Between these anchor points, the LTV is calculated using linear interpolation.

Default Anchor Values

AnchorShare PriceLTV RatioLiquidation Threshold (LTV + 10%)
1$0.002%12%
2$0.108%18%
3$0.2030%40%
4$0.4045%55%
5$0.6060%70%
6$0.8070%80%
7$1.0075%85%

How Interpolation Works

For any price between two anchors, the LTV is calculated using linear interpolation:

LTV(price) = LTV_lower + (price - price_lower) / (price_upper - price_lower) × (LTV_upper - LTV_lower)

Example: LTV at $0.50

The $0.50 price falls between anchor 4 ($0.40, 45%) and anchor 5 ($0.60, 60%):

LTV(0.50) = 45% + (0.50 - 0.40) / (0.60 - 0.40) × (60% - 45%)
= 45% + (0.10 / 0.20) × 15%
= 45% + 0.5 × 15%
= 45% + 7.5%
= 52.5%

Example: LTV at $0.73

The $0.73 price falls between anchor 5 ($0.60, 60%) and anchor 6 ($0.80, 70%):

LTV(0.73) = 60% + (0.73 - 0.60) / (0.80 - 0.60) × (70% - 60%)
= 60% + (0.13 / 0.20) × 10%
= 60% + 0.65 × 10%
= 60% + 6.5%
= 66.5%

Why the Curve is Shaped This Way

The LTV curve is deliberately conservative at low prices and more generous at high prices:

  • At $0.10 (LTV 8%): The market considers this outcome very unlikely. A share at $0.10 could easily drop to $0.05 or lower — a 50%+ decline. The 8% LTV ensures that even a dramatic price drop is unlikely to result in bad debt.

  • At $0.50 (LTV 52.5%): A mid-range price suggests genuine uncertainty about the outcome. The moderate LTV reflects this balanced risk.

  • At $0.80 (LTV 70%): The market strongly favors this outcome. The share needs to drop significantly (to ~$0.55 area) before liquidation becomes a concern at maximum borrow. The higher LTV rewards the lower risk.

  • At $1.00 (LTV 75%): Even at the maximum possible price, PredMart caps the LTV at 75%. This ensures that borrowers always maintain a 25% equity buffer. Shares at $1.00 can only go down, so a meaningful buffer is necessary.

  • At $0.00 (LTV 2%): Shares near $0.00 are nearly worthless and extremely risky. The 2% LTV essentially prevents meaningful borrowing at these levels.

Anchor Updates (Governance)

The LTV anchor values are not permanently fixed. The protocol admin can propose new anchor values through the timelocked governance system. Any change to the anchors must go through:

  1. Proposal: The admin submits new anchor values via proposeAnchors()
  2. Waiting period: The timelock delay must pass (giving users time to react)
  3. Execution: After the delay, the admin calls executeAnchors() to apply the change
  4. Cancellation: The admin can cancel a pending proposal via cancelAnchors()

This ensures that anchor changes are transparent and users have time to adjust their positions if needed.


The Liquidation Buffer

What is the Liquidation Buffer?

The liquidation buffer is the gap between the LTV ratio (your maximum borrowing limit) and the liquidation threshold (the point at which your position can be liquidated). PredMart's liquidation buffer is 10 percentage points (0.10e18).

Liquidation Threshold = LTV(price) + Liquidation Buffer (10%)

Why the Buffer Exists

The buffer provides a safety margin between borrowing and liquidation. Without a buffer, a position at maximum borrow would be immediately liquidatable — any tiny price movement or interest accrual would trigger liquidation.

The 10% buffer means:

  • You can borrow up to the LTV ratio
  • You won't be liquidated until your effective LTV exceeds LTV + 10%
  • This gives you time to react to adverse price movements

Example

At a price of $0.60:

  • LTV = 60% → You can borrow up to 60% of your collateral value
  • Liquidation Threshold = 70% → You're liquidated when your debt reaches 70% of collateral value
  • The 10% gap is your safety cushion

If you borrow the maximum (60% of collateral value), your health factor starts at:

Health Factor = (Collateral Value × 0.70) / (Collateral Value × 0.60) = 0.70 / 0.60 = 1.167

This means you start with a ~16.7% buffer above the liquidation threshold. Your position would need the price to drop enough for the health factor to reach 1.0 before liquidation triggers.


Health Factor

Definition

The health factor is the single most important metric for borrowers. It represents how safe your position is relative to liquidation:

Health Factor = (Collateral Amount × Price × Liquidation Threshold) / Debt

Where:

  • Collateral Amount = Number of shares deposited
  • Price = Current midpoint price from Polymarket CLOB
  • Liquidation Threshold = LTV(price) + 10% (liquidation buffer)
  • Debt = Current owed amount (original borrow + accrued interest)

Interpreting the Health Factor

Health FactorStatusRecommended Action
> 2.0Very safeNo action needed
1.5 – 2.0HealthyMonitor periodically
1.2 – 1.5Moderate riskMonitor frequently, consider adding collateral
1.0 – 1.2High riskAdd collateral or repay debt immediately
< 1.0LiquidatablePosition can (and will) be liquidated
< 0.95Fully liquidatable100% of debt can be repaid in single liquidation

How Health Factor Changes

Your health factor is affected by three variables:

  1. Price changes (largest impact): If the share price drops, both the collateral value decreases AND the liquidation threshold changes (because LTV is dynamic). This is the primary driver of health factor changes.

  2. Interest accrual (slow, continuous impact): As interest accrues, your debt increases. Even with a stable price, your health factor slowly decreases over time.

  3. Your actions: Adding collateral increases health factor. Repaying debt increases health factor. Withdrawing collateral or borrowing more decreases it.

Worked Example: Health Factor Over Time

Starting position:

  • 10,000 shares at $0.70
  • Collateral value: $7,000
  • LTV at $0.70: 65%, Liquidation Threshold: 75%
  • Borrowed: $4,000
  • Health Factor = (10,000 × 0.70 × 0.75) / 4,000 = 5,250 / 4,000 = 1.3125

After 30 days (20% APR, price unchanged):

  • Debt: $4,000 × (1 + 0.20 × 30/365) = $4,065.75
  • Health Factor = 5,250 / 4,065.75 = 1.2912 (slight decrease from interest)

After price drops to $0.60:

  • Collateral value: 10,000 × $0.60 = $6,000
  • LTV at $0.60: 60%, Liquidation Threshold: 70%
  • Health Factor = (10,000 × 0.60 × 0.70) / 4,065.75 = 4,200 / 4,065.75 = 1.0330

The position is now dangerously close to liquidation! Notice how the price drop affected health factor in two ways: the collateral value decreased AND the liquidation threshold decreased (from 75% to 70%) because LTV is lower at lower prices.


Per-Token Borrow Cap (Pool Cap)

What is the Pool Cap?

The pool cap limits the total amount that can be borrowed against any single token ID to a percentage of the pool's total assets. The current pool cap is 5% (500 basis points).

Max Borrow Per Token = Total Pool Assets × Pool Cap BPS / 10,000

Example:

  • Pool has $1,000,000 in total assets
  • Pool cap = 500 BPS (5%)
  • Maximum total borrowing against any single token: $1,000,000 × 5% = $50,000

Why the Pool Cap Exists

The pool cap prevents concentration risk. Without it, a large borrower could take a massive position against a single token, concentrating the pool's risk in one market. If that market had an adverse outcome, the resulting bad debt could be devastating for lenders.

By limiting each token to 5% of the pool, the protocol ensures diversification. Even if a single token's borrowers all defaulted simultaneously, the maximum loss would be 5% of the pool — a manageable amount for lenders.

Interaction with Depth Gate

The pool cap sets the upper limit, but the actual borrow limit for a specific token may be lower due to the depth gate (see Depth Gate). The depth gate further restricts borrowing based on the orderbook liquidity of each token.

Actual Max Borrow = min(Pool Cap × Total Assets, Depth Gate Cap for Token)

Minimum Borrow

The protocol enforces a minimum borrow amount of $1 USDC (MIN_BORROW = 1e6 in USDC's 6-decimal representation). This prevents dust positions that would be uneconomical to liquidate.


The Borrow Haircut

When the backend calculates your maximum borrow amount, it applies a 0.5% haircut (BORROW_HAIRCUT = 995, meaning 99.5% of the theoretical maximum is returned). This small buffer prevents edge cases where:

  • Rounding differences between the backend and contract could cause the transaction to revert
  • The price moves slightly between the time the backend calculates the max and the time the transaction is processed
  • Interest accrual between the API call and the on-chain execution changes the numbers slightly

If the backend tells you that you can borrow $5,000, it has already applied this haircut. You won't need to account for it separately.


How Parameters Work Together: A Complete Example

Let's trace through a complete lifecycle to see how all risk parameters interact:

Setup

  • Alice deposits 15,000 shares of Token X (current price: $0.65)
  • LTV at $0.65: interpolated between $0.60 (60%) and $0.80 (70%) = 62.5%
  • Liquidation Threshold: 62.5% + 10% = 72.5%
  • Collateral Value: 15,000 × $0.65 = $9,750
  • Max Borrow: $9,750 × 62.5% × 99.5% = $6,062
  • Alice borrows: $5,500 (conservative, below max)
  • Starting Health Factor: (15,000 × 0.65 × 0.725) / 5,500 = 7,069 / 5,500 = 1.285

Price Drops to $0.55

  • New Collateral Value: 15,000 × $0.55 = $8,250
  • New LTV at $0.55: interpolated between $0.40 (45%) and $0.60 (60%) = 56.25%
  • New Liquidation Threshold: 56.25% + 10% = 66.25%
  • Debt (after some interest): ~$5,520
  • New Health Factor: (15,000 × 0.55 × 0.6625) / 5,520 = 5,466 / 5,520 = 0.990
  • Alice's position is now liquidatable!

Liquidation Occurs

  • Health Factor 0.990 > 0.95 → Close Factor = 50%
  • Max repayable: 50% × $5,520 = $2,760
  • Liquidation bonus: 5%
  • Collateral seized: $2,760 × 1.05 / $0.55 = 5,269 shares
  • After liquidation: Alice has 9,731 shares and $2,760 debt
  • New Health Factor: (9,731 × 0.55 × 0.6625) / 2,760 = 3,546 / 2,760 = 1.285 (healthy again!)

This example illustrates how the system self-corrects: liquidation reduces debt and seizes collateral in a way that restores the position to health.


Parameter Summary

ParameterValuePurpose
LTV Curve7 anchors (2% to 75%)Maximum borrowing limit at each price
Liquidation Buffer10%Gap between LTV and liquidation threshold
Liquidation ThresholdLTV + 10%Point at which position becomes liquidatable
Pool Cap5% (500 BPS)Max borrow per token as % of total pool
Min Borrow$1 USDCMinimum loan size
Borrow Haircut99.5%Backend safety buffer on max borrow calculation
Health Factor = 1.0Liquidation triggerPosition can be liquidated
Health Factor = 0.95Full liquidation trigger100% close factor applies

Next Steps

  • Liquidation — What happens when health factor drops below 1.0
  • Interest Rates — The cost of borrowing that affects your health factor
  • Depth Gate — Additional borrow limits based on market liquidity
  • Protocol Constants — Complete reference of all on-chain parameters