My friend texted me last week, half laughing and half furious: "it says I've hit my ticket limit and I've bought literally one." She was booking nine seats for her extended family, and checkout kept rejecting her.
The culprit turned out to be an old browser tab, cart full but never checked out, still holding a reservation that counted against her limit as if it were a real seat.
Position-size limits on exchanges have the same blind spot. An order that hasn't filled yet can get treated like exposure that already exists.
On GRVT, the position ceiling works like my friend's phantom cart. Every instrument carries a Maximum Position Size, a cap independent of deposited collateral.
To check against it, GRVT takes your Open Position Size, a signed number, positive for a long and negative for a short, then adds every open buy order to the long-side total and every open sell order to the short-side total.
Whichever total is larger gets checked against the Maximum Position Size. A resting order that hasn't traded is already counted as if it had.
Self-critique: this means a trader running several resting limit orders, a normal way to build into a position, can bump the ceiling using size that may never fill. Cancel most of those orders and the ceiling clears instantly.
That is the same gap as the ticket reservation: a hold with no expiry, indistinguishable from a completed purchase.
The obvious defense is that any resting order could fill on the next tick, so counting it as potential exposure is just conservative risk management. Fair, but that holds whether the ceiling reflects real fill probability or just treats every order as certain to fill, and the documentation never says which.
That distinction matters more than the arithmetic. One version is a calibrated buffer, the other a blunt rule that happens to work most of the time.
$GRVT should be evaluated based on whether that ceiling is calibrated to real fill probability or just a flat rule dressed up as risk management, not on whether the formula is easy to follow.
#GRVT @grvt_io
The culprit turned out to be an old browser tab, cart full but never checked out, still holding a reservation that counted against her limit as if it were a real seat.
Position-size limits on exchanges have the same blind spot. An order that hasn't filled yet can get treated like exposure that already exists.
On GRVT, the position ceiling works like my friend's phantom cart. Every instrument carries a Maximum Position Size, a cap independent of deposited collateral.
To check against it, GRVT takes your Open Position Size, a signed number, positive for a long and negative for a short, then adds every open buy order to the long-side total and every open sell order to the short-side total.
Whichever total is larger gets checked against the Maximum Position Size. A resting order that hasn't traded is already counted as if it had.
Self-critique: this means a trader running several resting limit orders, a normal way to build into a position, can bump the ceiling using size that may never fill. Cancel most of those orders and the ceiling clears instantly.
That is the same gap as the ticket reservation: a hold with no expiry, indistinguishable from a completed purchase.
The obvious defense is that any resting order could fill on the next tick, so counting it as potential exposure is just conservative risk management. Fair, but that holds whether the ceiling reflects real fill probability or just treats every order as certain to fill, and the documentation never says which.
That distinction matters more than the arithmetic. One version is a calibrated buffer, the other a blunt rule that happens to work most of the time.
$GRVT should be evaluated based on whether that ceiling is calibrated to real fill probability or just a flat rule dressed up as risk management, not on whether the formula is easy to follow.
#GRVT @grvt_io