Market Makers

Quoting Requirements

Spread requirements, quote depth obligations, uptime targets, and quoting best practices for LX market makers

Quoting Requirements

Market makers on LX must meet specific quoting obligations to maintain their tier status and receive associated benefits. This document details spread requirements, depth obligations, uptime targets, and monitoring procedures.

Quoting Obligations Overview

┌─────────────────────────────────────────────────────────────────────┐
│                    QUOTING REQUIREMENTS BY TIER                      │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  Metric          │ Tier 1  │ Tier 2  │ Tier 3  │ Tier 4            │
│  ─────────────────┼─────────┼─────────┼─────────┼─────────          │
│  Max Spread       │ 10 bps  │ 5 bps   │ 3 bps   │ 2 bps            │
│  Min Depth/Side   │ $50K    │ $250K   │ $1M     │ $5M              │
│  Uptime           │ 85%     │ 90%     │ 92%     │ 95%              │
│  Depth Levels     │ 1       │ 3       │ 5       │ 10               │
│  RFQ Response     │ 500ms   │ 200ms   │ 50ms    │ 10ms             │
│  Quote Update     │ 1s      │ 500ms   │ 100ms   │ 10ms             │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

Spread Requirements

Maximum Spread by Market Tier

Markets are classified into tiers based on liquidity and trading volume:

Market TierExamplesTier 1 MMTier 2 MMTier 3 MMTier 4 MM
Tier A (Ultra-Liquid)BTC-USD, ETH-USD10 bps3 bps2 bps1 bps
Tier B (High-Liquid)SOL-USD, LUX-USD10 bps5 bps3 bps2 bps
Tier C (Mid-Liquid)LINK-USD, UNI-USD15 bps8 bps5 bps3 bps
Tier D (Low-Liquid)New listings25 bps15 bps10 bps5 bps

Spread Calculation

# Spread calculated as percentage of mid-price
spread_bps = ((best_ask - best_bid) / mid_price) * 10000

# Example: BTC-USD
best_bid = 50000.00
best_ask = 50005.00
mid_price = (best_bid + best_ask) / 2  # 50002.50
spread_bps = ((50005 - 50000) / 50002.50) * 10000  # 1.0 bps

Spread Monitoring

Spreads are monitored continuously with the following methodology:

Spread Compliance Score = (Compliant Samples / Total Samples) * 100

Sampling:
- Frequency: Every 100ms during trading hours
- Window: 24/7 for crypto markets
- Exclusions: Scheduled maintenance, force majeure events

Compliance Thresholds:
- Tier 1: 85% of samples within max spread
- Tier 2: 90% of samples within max spread
- Tier 3: 92% of samples within max spread
- Tier 4: 95% of samples within max spread

Spread Widening Allowances

Market makers may widen spreads under specific conditions:

ConditionMax WideningDuration
High volatility (>5% 1h move)3x normalUntil volatility subsides
Low liquidity period2x normalMax 1 hour
Exchange maintenanceUnlimitedDuring maintenance
Oracle outage5x normalUntil oracle recovery
Position limit reached2x normalUntil position reduced

Depth Requirements

Minimum Depth per Side

TierBest LevelTop 3 LevelsTop 5 LevelsTop 10 Levels
Tier 1$50,000N/AN/AN/A
Tier 2$100,000$250,000N/AN/A
Tier 3$250,000$500,000$1,000,000N/A
Tier 4$500,000$1,500,000$3,000,000$5,000,000

Depth Level Spacing

Tier 2+ Depth Level Requirements:

Level 1: Best bid/ask (within max spread)
Level 2: +0.1% from Level 1
Level 3: +0.2% from Level 1
Level 4: +0.3% from Level 1 (Tier 3+)
Level 5: +0.5% from Level 1 (Tier 3+)
Level 6-10: +1.0% increments (Tier 4 only)

Depth Calculation Example

// Example: BTC-USD depth for Tier 3 MM
const midPrice = 50000;
const requirements = {
  level1: { price: midPrice * 1.0003, minSize: 5.0 },   // $250K
  level2: { price: midPrice * 1.0010, minSize: 2.5 },   // $125K
  level3: { price: midPrice * 1.0020, minSize: 2.5 },   // $125K
  level4: { price: midPrice * 1.0030, minSize: 2.5 },   // $125K
  level5: { price: midPrice * 1.0050, minSize: 7.5 },   // $375K
  // Total: $1M per side
};

Uptime Requirements

Definition

Uptime is measured as the percentage of time a market maker maintains compliant quotes:

Uptime % = (Time with Valid Quotes / Total Scheduled Time) * 100

Valid Quote Definition:
- Both bid and ask prices present
- Spread within maximum allowed
- Depth meets minimum requirements
- Prices updated within freshness window

Uptime Targets

TierMinimum UptimeGrace AllowancePenalty Threshold
Tier 185%15% downtimeBelow 80%
Tier 290%10% downtimeBelow 85%
Tier 392%8% downtimeBelow 88%
Tier 495%5% downtimeBelow 92%

Scheduled Downtime

Market makers may request scheduled maintenance windows:

TierMonthly AllowanceMax DurationNotice Required
Tier 14 hours2 hours24 hours
Tier 22 hours1 hour24 hours
Tier 31 hour30 mins48 hours
Tier 430 mins15 mins72 hours

Unplanned Downtime Handling

Unplanned Downtime Protocol:

1. Detection
   - System detects missing/stale quotes
   - 30-second grace period before flagging

2. Notification
   - Alert sent to MM operations team
   - Status page updated

3. Escalation (after 5 minutes)
   - Dedicated support contacted
   - Incident ticket created

4. Resolution
   - MM must provide incident report within 24 hours
   - Repeated incidents may affect tier status

Quote Freshness

Maximum Quote Age

TierMax Quote AgeUpdate Frequency
Tier 11,000msEvery 1 second
Tier 2500msEvery 500ms
Tier 3100msEvery 100ms
Tier 410msEvery 10ms

Stale Quote Handling

# Quote freshness monitoring
def is_quote_fresh(quote, tier):
    max_age_ms = {1: 1000, 2: 500, 3: 100, 4: 10}
    quote_age = time.now() - quote.timestamp
    return quote_age < max_age_ms[tier]

# Stale quotes are:
# - Not counted toward uptime
# - Not eligible for maker rebates
# - Flagged in performance reports

Request for Quote (RFQ)

Response Time Requirements

TierMax Response TimeMinimum Quote SizeQuote Validity
Tier 1500ms$10,0002 seconds
Tier 2200ms$50,0003 seconds
Tier 350ms$250,0005 seconds
Tier 410ms$1,000,00010 seconds

RFQ Protocol

// RFQ Request
{
  "type": "rfq_request",
  "request_id": "rfq_12345",
  "symbol": "BTC-USD",
  "side": "buy",
  "size": "10.0",
  "timestamp": 1702300800000
}

// RFQ Response
{
  "type": "rfq_response",
  "request_id": "rfq_12345",
  "bid": "50000.00",
  "ask": "50002.00",
  "bid_size": "15.0",
  "ask_size": "15.0",
  "valid_until": 1702300805000,
  "timestamp": 1702300800005
}

Market-Specific Requirements

Crypto Spot Markets

MarketMin DepthMax SpreadSpecial Requirements
BTC-USD$500K2 bps24/7 quoting
ETH-USD$300K2 bps24/7 quoting
LUX-USD$200K3 bpsPrimary market
BTC-ETH$200K3 bpsCross pair
Stables$1M0.5 bpsTight spreads

Perpetual Futures

ContractMin DepthMax SpreadFunding Impact
BTC-PERP$1M3 bpsAdjust for funding
ETH-PERP$500K3 bpsAdjust for funding
LUX-PERP$250K5 bpsAdjust for funding

Options (When Available)

RequirementNear-TermMid-TermFar-Term
Max Spread5% of premium8% of premium12% of premium
Min Depth10 contracts5 contracts2 contracts
Delta Range0.1 - 0.90.15 - 0.850.2 - 0.8

Performance Monitoring

Real-Time Dashboard

Market makers have access to real-time performance metrics:

┌─────────────────────────────────────────────────────────────────┐
│  MARKET MAKER PERFORMANCE DASHBOARD                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Current Status: ● COMPLIANT                                    │
│                                                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             │
│  │ Uptime      │  │ Avg Spread  │  │ Total Depth │             │
│  │   94.3%     │  │   2.1 bps   │  │   $12.5M    │             │
│  │ Target: 92% │  │ Max: 3 bps  │  │ Min: $10M   │             │
│  └─────────────┘  └─────────────┘  └─────────────┘             │
│                                                                  │
│  Markets Quoted: 35/30 required                                 │
│  RFQ Response: 45ms avg (Target: <50ms)                        │
│  Quote Updates: 85ms avg (Target: <100ms)                      │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Alerts and Notifications

Alert TypeTriggerNotification
Spread Violation>150% of max spreadImmediate
Depth Below Min<80% of requiredImmediate
Uptime Warning3% below targetEvery 15 mins
Stale Quotes>2x max ageImmediate
RFQ Timeout>2x max responseImmediate

Compliance Consequences

Violations

ViolationFirst OccurrenceRepeated
Spread > 150% maxWarningFee increase
Depth < 50% minWarningTier review
Uptime < thresholdWarningTier downgrade
Stale quotes > 10%WarningAPI suspension

Remediation

  1. Warning: Written notice with 7-day cure period
  2. Probation: 30-day monitoring with weekly reviews
  3. Tier Downgrade: Move to lower tier with reduced benefits
  4. Suspension: Temporary removal from MM program
  5. Termination: Permanent removal (severe/repeated violations)

Best Practices

Quote Management

# Recommended quote update strategy
class QuoteManager:
    def update_quotes(self, market_data):
        # 1. Calculate fair value
        fair_value = self.calculate_fair_value(market_data)

        # 2. Determine spread based on volatility
        spread = self.calculate_spread(market_data.volatility)

        # 3. Set depth based on inventory
        depth = self.calculate_depth(self.inventory)

        # 4. Apply risk limits
        quotes = self.apply_risk_limits(fair_value, spread, depth)

        # 5. Send atomic update
        self.send_quotes(quotes)

Resilience

  • Maintain hot standby systems
  • Implement automatic failover
  • Use multiple network paths
  • Monitor quote acknowledgments

Requirements subject to change with 30 days notice. Last updated: December 2024