2026-07-14 21:19:59 +02:00
|
|
|
|
# BingX VST Maker Fee Measurement
|
|
|
|
|
|
|
2026-07-14 22:12:15 +02:00
|
|
|
|
> ## ⚠ VERIFIED VERDICT (Fable, 2026-07-14) — the fee is **+2.00 bps (a COST), not a rebate**
|
|
|
|
|
|
>
|
|
|
|
|
|
> omp's raw capture below is **correct and valuable**; only the *sign interpretation* is wrong.
|
|
|
|
|
|
> BingX reports `commission` with a **negative sign to denote a debit** (money leaving your
|
|
|
|
|
|
> account) — the opposite of Binance. `commission: "-0.001291"` therefore means the account
|
|
|
|
|
|
> **paid** 0.001291 USDT, i.e. a **fee of +2.00 bps**, not a −2.00 bps rebate.
|
|
|
|
|
|
>
|
|
|
|
|
|
> Two independent proofs it is a cost, not a rebate:
|
|
|
|
|
|
> 1. **Magnitude is exactly BingX's published maker rate.** `0.001291 / 6.45475 = 0.020001%`
|
|
|
|
|
|
> = **0.02%** to five figures — the standard tier-0 BingX perp maker fee. No venue *pays*
|
|
|
|
|
|
> a 2 bp maker rebate at retail tier.
|
|
|
|
|
|
> 2. **The repo's own friction kernel treats commission as additive cost.** `prod/bingx/friction.py:196`
|
|
|
|
|
|
> `net_friction_quote = actual_fee_quote + slippage`; the live-sweep doc reports
|
|
|
|
|
|
> `Total captured fees $2,595.69 = sum(commission_quote)` as fees the venue **captured from us**.
|
|
|
|
|
|
>
|
|
|
|
|
|
> **Corrected economics for the spec:** the §0 savings table assumed **1 bp** maker. Measured is
|
|
|
|
|
|
> **2 bp** maker. Maker-both round-trip = **~4 bp** (2+2) vs taker round-trip **~10 bp** (5.016×2).
|
|
|
|
|
|
> The savings case **survives** (~6 bp/RT saved) but the per-side maker number **doubles vs the
|
|
|
|
|
|
> assumption** — it is NOT a 3× improvement, and there is **no rebate**. Update SPEC §0 accordingly.
|
|
|
|
|
|
> _(n=1; a second fill still worth capturing to confirm.)_
|
|
|
|
|
|
|
2026-07-14 21:19:59 +02:00
|
|
|
|
**Timestamp:** 2026-07-14T19:18:28.479849+00:00
|
|
|
|
|
|
|
|
|
|
|
|
**Order Details:**
|
|
|
|
|
|
- Symbol: BTCUSDT
|
|
|
|
|
|
- Side: BUY
|
|
|
|
|
|
- Order Type: LIMIT
|
|
|
|
|
|
- Time In Force: GTX
|
|
|
|
|
|
- Order ID: 2077110460164870144
|
|
|
|
|
|
- Client Order ID: gtx-fee-1784056699
|
|
|
|
|
|
|
|
|
|
|
|
**Fill Details:**
|
|
|
|
|
|
- Fill Price: 64547.5
|
|
|
|
|
|
- Fill Quantity: 0.0001
|
|
|
|
|
|
- Notional: 6.45475 USDT
|
2026-07-14 22:12:15 +02:00
|
|
|
|
- Commission: -0.001291 USDT ← BingX sign convention: **negative = debit (a cost we paid)**
|
2026-07-14 21:19:59 +02:00
|
|
|
|
|
2026-07-14 22:12:15 +02:00
|
|
|
|
**Measured Maker Fee: +2.00 bps** (magnitude `2.000077…` bps; sign corrected from omp's `-2.00 bps`)
|
2026-07-14 21:19:59 +02:00
|
|
|
|
|
|
|
|
|
|
**Comparison:**
|
2026-07-14 22:12:15 +02:00
|
|
|
|
- Assumption (maker), SPEC §0: 1 bp → **REFUTED, real is 2 bp (2× the assumption)**
|
2026-07-14 21:19:59 +02:00
|
|
|
|
- Measured taker baseline: 5.016 bps
|
2026-07-14 22:12:15 +02:00
|
|
|
|
- This measurement (maker): **+2.00 bps cost** (= BingX published 0.02% maker rate, confirmed)
|
2026-07-14 21:19:59 +02:00
|
|
|
|
|
|
|
|
|
|
**Raw Venue Response:**
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"symbol": "BTC-USDT",
|
|
|
|
|
|
"orderId": 2077110460164870144,
|
|
|
|
|
|
"side": "BUY",
|
|
|
|
|
|
"positionSide": "BOTH",
|
|
|
|
|
|
"type": "LIMIT",
|
|
|
|
|
|
"origQty": "0.0001",
|
|
|
|
|
|
"price": "64547.5",
|
|
|
|
|
|
"executedQty": "0.0001",
|
|
|
|
|
|
"avgPrice": "64547.5",
|
|
|
|
|
|
"cumQuote": "6",
|
|
|
|
|
|
"stopPrice": "",
|
|
|
|
|
|
"profit": "0.0000",
|
|
|
|
|
|
"commission": "-0.001291",
|
|
|
|
|
|
"status": "FILLED",
|
|
|
|
|
|
"time": 1784056699000,
|
|
|
|
|
|
"updateTime": 1784056707000,
|
|
|
|
|
|
"clientOrderId": "gtx-fee-1784056699",
|
|
|
|
|
|
"leverage": "3X",
|
|
|
|
|
|
"takeProfit": {
|
|
|
|
|
|
"type": "TAKE_PROFIT",
|
|
|
|
|
|
"quantity": 0,
|
|
|
|
|
|
"stopPrice": 0,
|
|
|
|
|
|
"price": 0,
|
|
|
|
|
|
"workingType": "",
|
|
|
|
|
|
"stopGuaranteed": "false"
|
|
|
|
|
|
},
|
|
|
|
|
|
"stopLoss": {
|
|
|
|
|
|
"type": "STOP",
|
|
|
|
|
|
"quantity": 0,
|
|
|
|
|
|
"stopPrice": 0,
|
|
|
|
|
|
"price": 0,
|
|
|
|
|
|
"workingType": "",
|
|
|
|
|
|
"stopGuaranteed": "false"
|
|
|
|
|
|
},
|
|
|
|
|
|
"advanceAttr": 0,
|
|
|
|
|
|
"positionID": 2077110178940981248,
|
|
|
|
|
|
"takeProfitEntrustPrice": 0,
|
|
|
|
|
|
"stopLossEntrustPrice": 0,
|
|
|
|
|
|
"orderType": "",
|
|
|
|
|
|
"workingType": "MARK_PRICE",
|
|
|
|
|
|
"onlyOnePosition": true,
|
|
|
|
|
|
"reduceOnly": false,
|
|
|
|
|
|
"postOnly": false,
|
|
|
|
|
|
"stopGuaranteed": "false",
|
|
|
|
|
|
"triggerOrderId": 0,
|
|
|
|
|
|
"trailingStopRate": 0,
|
|
|
|
|
|
"trailingStopDistance": 0,
|
|
|
|
|
|
"is_twap": false,
|
|
|
|
|
|
"mainOrderId": "",
|
|
|
|
|
|
"priceRate": "",
|
|
|
|
|
|
"actPrice": "",
|
|
|
|
|
|
"closePosition": "false"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|