On Tuesday, May 31st 2022, at 20:00 EDT (UTC-4) FTX added an additional four VIP and MM fee and rate limit tiers to the VIP/MM program for a total of 7 (MM1-7, VIP1-7). The new tiers will reduce the incremental volume requirement increase between tiers, providing users the opportunity to obtain higher VIP/MM tiers–and therefore higher rate limits, lower taker fees, and higher maker rebates–consistently as they grow their volumes.
Soft and hard ratelimits: hard ratelimits always apply. Soft ratelimits only apply when the matching engine gets close to a backlog. This means that, when orders become more in demand, ratelimits help ensure that the most important orders still have room by reducing the room for less important ones; but when markets are quiet, users have more freedom to use the spare capacity.
Additional considerations for VIPs
Small orders: small orders will be subject to Fee Tier 6 limits (as described above). Small orders are those that are under largeOrderThreshold (typically $3000, see the response in this endpoint https://ftx.com/api/markets) in size and are on a market whose max order size is greater than $10k. Large orders will enjoy full VIP limits, which have been increased along with this restriction on small orders.
Very high limits: For users with volumes at least 2x the requirements of VIP7/MM7, the rate limits are 2x the VIP7/MM7 tier. For users with volumes at least 4x the requirements for VIP7/MM7, the rate limits are 4x the VIP7/MM7 tier. If you are in this category, please feel free to contact us.
Reasons for our rate limit design
The relevant limits on order placement are mostly unaffected by other API calls; you can cancel orders and fetch private data without using your order placement rate limits.
You will likely begin to see longer latency if you send more than one order in a 50ms period in a particular subaccount; this means that you can theoretically get out roughly 20 orders per second per subaccount if they are evenly spaced out without experiencing higher latency.
In addition to this, there is a cap on how many requested-but-not-yet-risk-checked orders a given subaccount can have out at once. This limit is only relevant if you are sending at a rate that exceeds our risk checking throughput for your subaccount. This is typically around 140 orders per second, but may vary with market conditions. Again, you can send more if you split between subaccounts; and this restriction only applies to orders placed, not orders canceled. Splitting between different API keys or IP addresses will not have any effect on this limit.
Furthermore, there is a cap on orders sent overall for a user and per market per user (just orders, not cancels or marketdata!). A user, here, means a full account on FTX including all subaccounts. To be clear this limit applies across an entire account--not just a subaccount--but to some extent you get individual limits for each market.
The context for these changes:
When markets move a lot, it can take longer to process orders. This is because everyone wants to send lots of orders, and so everyone does--enough to cause a backlog. There are two problems: first that it causes delays; but second, that it means that orders that would have traded end up getting backlogged in favor of orders that were going to be quickly cancelled anyway.
Each person sends all of their marginal orders (why not!), enough that the total number of orders sent is faster than the matching engine can process them. And so only some of the orders are processed quickly (the first sent), including some marginal orders that the sender didn't really care about. But this means that other orders--including some really important orders--end up at the back of the line.
The best solution is to increase capacity, and we're doing that. Improvements to the matching engine to increase throughput and efficiently handle load are constantly being worked on. But in addition, it's important that even when things are busy, (a) there isn't much lag, and (b) people can get their most important orders through.
That's why ratelimits exist: to make sure that each person's most important orders get through quickly and aren't held back by others' marginal orders.
Note that, generally, these ratelimits attempt to maintain a consistent $ volume traded per order ratio--that is, each user has roughly the same fill rate * order size threshold.
Remember that cancels do not count towards any of these ratelimits, and hitting the ratelimits won’t stop you from being able to cancel. Similarly, marketdata calls do not contribute to the ratelimites, only order placement. Soft ratelimits kick in when exchange load is relatively high. Note that if a user's volume/order ratio is significantly below $10 FTX reserves the right to impose additional ratelimits on them. In general, FTX reserves the right to alter ratelimits and other features on FTX as reasonable or necessary.
Lastly there are account wide rate limits of 10 withdrawal requests per 30 seconds; and account wide rate limits of 1500 requests per minute for Tier 1 to Tier 4 accounts, which includes all authenticated requests, and GETs.
Before Tuesday, May 31st, 2022 at 20:00 EDT (UTC-4), the following rate limit schedules were in effect.
Per 200ms hard (will never allow more than this)
*Units used in the chart below are in requests/200ms
Per 200ms soft (will sometimes allow more than this but depends on exchange load)
*Units used in the chart below are in requests/200ms