# Trading Competitions

Trading competitions rank users by their trading activity over a defined time window and distribute rewards based on final position. They combine Fuul's **Leaderboard** payout type with a trading trigger.

## How it works

1. Define a competition start and end date
2. Choose a ranking metric — volume, PnL, or custom formula
3. Configure rewards per position (1st place, top 10, etc.)
4. Users trade during the period — rankings update in near real-time
5. At the end date, rewards are distributed based on final standings

## Competition types

### Volume-based

Users are ranked by the **total USD value of trades** made during the period.

Best for: Incentivizing overall activity and liquidity depth.

**Example:**

| Position | Reward        |
| -------- | ------------- |
| 1st      | 5,000 USDC    |
| 2nd      | 2,500 USDC    |
| 3rd–10th | 500 USDC each |

Configuration: payout scheme `rank`, amount source `volume`.

### PnL-based

Users are ranked by their **realized profit and loss** during the period.

Best for: Rewarding skilled traders rather than high-volume participants.

Configuration: payout scheme `rank`, amount source `revenue` (PnL maps to the revenue metric in Fuul's data model).

{% hint style="info" %}
PnL tracking requires a supported perpetuals integration — HyperLiquid or Orderly. Spot trading triggers do not support PnL ranking.
{% endhint %}

### Custom formula-based (points)

Users earn **points** through a custom scoring formula that combines multiple metrics — for example, weighting volume, fees generated, and trade count differently.

Best for: Nuanced competitions that reward multiple behaviors simultaneously.

**Example formula:**

```
Score = (Volume × 0.5) + (Fees × 200) + (TradeCount × 10)
```

Implementation: use a points program where your backend calculates the score and submits it via the [Custom Offchain Events API](https://docs.fuul.xyz/developer-guide/sending-custom-events-through-the-api), or use a proportional pool with the relevant metric as its amount source.

## Creating a competition

1. Create a conversion with a trading trigger (HyperLiquid, Orderly, etc.)
2. Add a **Leaderboard** incentive to the conversion
3. Configure the date range, ranking metric, and rewards per position

{% hint style="info" %}
One leaderboard incentive can be active per program at a time.
{% endhint %}

{% hint style="info" %}
Display live rankings in your app → [Volume Leaderboard](https://docs.fuul.xyz/developer-guide/getting-leaderboard-data/volume) · [Points Leaderboard](https://docs.fuul.xyz/developer-guide/getting-leaderboard-data/points)
{% endhint %}
