Skip to main content

Rewards Tracker

Horizon provides tools to track and estimate Polymarket liquidity rewards. Market makers earn USDC rebates on qualifying orders. The rewards module fetches eligible markets, checks order scoring status, and estimates earnings from fill data.
Polymarket pays liquidity rewards daily as USDC. There is no historical rewards API, so Horizon estimates earnings locally from fill data at a configurable rebate rate.

Overview

Reward Markets

hz.fetch_reward_markets() - fetch all reward-eligible markets from Polymarket.

Order Scoring

engine.check_order_scoring() - check if a specific order qualifies for rewards.

Rewards Tracker

hz.RewardsTracker - track maker fills and estimate rebates with deduplication.

Pipeline

hz.rewards_tracker() - pipeline function for automatic reward tracking in hz.run().

Fetching Reward Markets

Fetch all markets currently eligible for liquidity rewards (unauthenticated).

RewardMarket Fields

RewardConfig Fields


Checking Order Scoring

Check if a live order qualifies for rewards (authenticated, Polymarket only).
Returns False for non-Polymarket exchanges.

RewardsTracker Class

Track maker fills and estimate rebates locally.

Features

  • Deduplication: duplicate fill IDs are automatically rejected
  • Per-market tracking: separate EpochRewards per market
  • Epoch reset: clear per-market accumulators while preserving lifetime totals
  • Configurable rate: default 2bps, adjustable via rebate_rate

EpochRewards Fields


Pipeline Function

The hz.rewards_tracker() pipeline function automatically tracks fills from the engine during hz.run().

Parameters

Pipeline Output

The pipeline function returns a dict each cycle:
Setting check_scoring=True makes an authenticated API call per fill, which adds latency. Only enable this for low-frequency strategies or when precise scoring data is needed.