Toxicity fee
A 1% to 10% win fee priced per stock and per account, from markouts.
The fee prices how much a trader's flow costs the house. Most traders are close to random over a few minutes: after they trade, the price is as likely to move against them as for them. Toxic flow is different. People trading on news, on a faster feed, or on a price they are moving themselves see the price move their way straight after they trade, over and over.
The formula
winFee = stockFloor + (10% − stockFloor) × accountScore
stockFlooris between 1% and 10%, set per stock.accountScoreis between 0 and 1, set per account.- A clean account (score 0) pays the stock's floor. A toxic or brand-new account (score 1) pays 10%.
The fee rate is locked into the position when it opens. Later changes to the stock floor or the account score never apply to positions already open.
Measuring toxicity: markouts
For every fill, look at where the Pyth price was 10 seconds, 60 seconds and 300 seconds later.
markout_h = direction × (price(fill time + h) − fillPrice) / fillPrice
direction is +1 for a fill that buys (open long, close short) and −1 for a fill that sells (open short, close long). Average the three horizons, weight by notional, and express in basis points. Random flow averages about zero. Toxic flow averages positive.
Closes count as well as opens: closing just before a drop is as informed as opening just before a rise.
Stock floor
- Computed from every fill in that stock over the last 30 days.
- Maps linearly from 1% (average markout at or below the low threshold) to 10% (at or above the high threshold). Thresholds to be calibrated.
- A new stock starts at 5% until it has 500 fills.
- Moves at most 1 percentage point per day, so it cannot be gamed by a burst of trades or raised suddenly by the operator.
Account score
- Every new account starts at 1.0, so it pays 10% on wins.
- After 50 fills, the account's own markout sets a target score.
- If the target is lower, the score falls toward it by at most 0.1 per week. A good trader reaches the stock floor after about ten weeks of clean history.
- If the target is higher, the score jumps straight there.
Starting at the top means a flagged trader gains nothing by opening a new wallet. A discount has to be earned; a penalty cannot be escaped.
Who computes it
An off-chain scorer, run by the foundation, recomputes stock floors daily and account scores as fills arrive, and posts changes on-chain. The contract enforces the 1% to 10% range, the 1-point daily limit on stock floors and the 0.1-per-week limit on score improvements. The formula and inputs are public, and every fill and Pyth price is on-chain, so anyone can recompute the scores.