The maker-taker decision: fee tiers, rebates, and the true cost of crossing the spread
Mỗi lệnh bạn gửi đi đều đưa ra một lựa chọn nhị phân trước bất kỳ điều gì khác: vượt spread và trả phí taker, hoặc nằm chờ trong sổ lệnh và trả phí maker — thậm chí có thể nhận được rebate. Ngành này thường đóng khung điều này như một bài toán tối ưu phí, và các bảng phí khiến nó trông giống vậy: taker 5 bps, maker 2 bps, tiết kiệm 3 bps, bật cờ post-only, xong. Cách đóng khung đó chỉ là lớp vỏ. Bên dưới nó, maker so với taker là một giao dịch về lựa chọn bất lợi (adverse selection): liệu bạn trả một mức giá đã biết trước để đổi lấy sự tức thời, hay bán cho thị trường một quyền chọn để khớp lệnh bạn theo ý họ — một quyền chọn mà các đối tác có thông tin thực thi chính xác vào lúc việc khớp lệnh gây hại cho bạn nhất. Bảng phí định giá quyền chọn đó cho người tham gia trung bình. Bạn không phải là người tham gia trung bình, và dòng lệnh đánh vào báo giá của bạn cũng vậy.
Bài viết này thực hiện phép tính mà bảng phí che giấu: điểm hòa vốn đã hiệu chỉnh, lý do vì sao Glosten-Milgrom (1985) ngụ ý rằng các lệnh khớp thụ động về mặt cấu trúc luôn bất lợi cho bạn, các bậc phí crypto thực tế và chiết khấu bằng token tác động thế nào đến những con số này, vì sao rebate mining đã chết trong thị trường cổ phiếu và dạng biến thể nào của nó còn sống sót trong crypto, vị trí trong hàng đợi (queue position) quyết định giá trị thật của rebate ra sao, và cách mô hình hóa tất cả điều này trong một backtest mà không mắc phải lỗi phí phổ biến nhất trong ngành.
Điểm hòa vốn ngây thơ — và số hạng ai cũng quên
Ký hiệu: spread niêm yết , phí taker , phí maker (âm nếu là rebate), tất cả tính bằng basis points trên giá trị danh nghĩa, mid làm mức chuẩn. Vượt spread khiến bạn tốn nửa spread cộng phí taker; nằm chờ mang lại nửa spread và tốn phí maker:
Thay các mức phí cơ bản của Binance USDⓈ-M futures — maker 2 bps, taker 5 bps — vào một hợp đồng perp niêm yết rộng 2 bps: taker tốn bps, maker "tốn" bps. Khoản tiết kiệm bề ngoài: 5 bps mỗi giao dịch, mọi giao dịch. Với một chiến lược thực hiện 20 vòng giao dịch mỗi ngày, điều này được cho là mang lại 100 bps lợi thế hàng ngày chỉ từ một cú tick vào ô chọn.
Trước tiên hãy để ý điều này về các con số trên: phí không phải là một điều chỉnh cho spread — trên các cặp crypto thanh khoản cao, nó chính là chi phí. BTCUSDT perp thường niêm yết hẹp hơn 1 bps trong khi một taker bán lẻ trả 5 bps phí. Nửa spread chỉ là một sai số làm tròn so với phí. Đây là điều ngược lại với trực giác trong thị trường cổ phiếu, nơi spread và phí có cùng độ lớn, và đó là lý do vì sao trong crypto mọi so sánh ngây thơ đều hét lên "luôn luôn làm maker". Đó cũng là lý do vì sao backtest market-making đầu tiên nào cũng có lãi và hầu hết các lần triển khai đầu tiên thì không.
Chi phí maker ngây thơ đang thiếu ba số hạng:
- Rủi ro không khớp lệnh (non-fill risk). Một lệnh giới hạn không phải là một giao dịch; nó là một vé số cho một giao dịch. Khi nó không khớp, bạn hoặc bỏ lỡ đợt biến động, hoặc phải vượt spread sau đó ở mức giá tệ hơn.
- Lựa chọn bất lợi (adverse selection). Với điều kiện lệnh được khớp, giá có nhiều khả năng di chuyển bất lợi cho bạn hơn so với phân phối không điều kiện gợi ý. Đây không phải là vận rủi; đó là một định lý.
- Chi phí báo giá lại (re-quote cost). Đuổi theo thị trường bằng cách hủy/đặt lại lệnh sẽ đặt lại vị trí hàng đợi của bạn về cuối, âm thầm biến phân phối các lệnh khớp của bạn thành chủ yếu là loại khớp thứ hai.
Số hạng thứ hai là số hạng có năm mươi năm lý thuyết đứng sau nó, vậy hãy làm cho đúng.
Glosten-Milgrom: việc khớp lệnh chính là tin xấu
Glosten và Milgrom (1985), "Bid, Ask and Transaction Prices in a Specialist Market with Heterogeneously Informed Traders" (Journal of Financial Economics 14), là mô hình rõ ràng nhất về lý do vì sao spread tồn tại. Một market maker trung tính rủi ro, cạnh tranh, không chi phí, niêm yết giá bid và ask. Một phần các trader đến là người có thông tin (informed) — họ biết giá trị thật của tài sản — và phần còn lại giao dịch vì lý do ngoại sinh, mua hoặc bán với xác suất bằng nhau. Market maker không thể phân biệt họ. Sự cạnh tranh buộc mỗi báo giá phải là một kỳ vọng có điều kiện:
Ví dụ tính toán cụ thể. Giả sử là 101 hoặc 99 với xác suất bằng nhau, và . Nếu , một lệnh mua đến với xác suất (tất cả người có thông tin mua, một nửa người không có thông tin mua); nếu , với xác suất . Khi đó
Spread là — hoàn toàn là khoản bù đắp cho lựa chọn bất lợi. Không có rủi ro tồn kho, không phí, không lợi nhuận độc quyền, và spread vẫn tồn tại, tỷ lệ thuận với phần trăm người có thông tin và độ lớn của điều họ biết.
Hệ quả quan trọng đối với quyết định maker-taker: việc được khớp lệnh tự nó là một thông tin, và thông tin đó bất lợi cho bạn. Lệnh bid đang nằm chờ của bạn được mua nhiều hơn khi giá trị thật thấp, bởi vì đó chính là lúc người bán có thông tin xuất hiện. Việc điều kiện hóa theo chính lệnh khớp của bạn làm dịch chuyển giá trị kỳ vọng của thứ bạn vừa mua xuống thấp hơn — do cấu trúc, không phải do vận rủi. Cách chuẩn để đo lường điều này là markout: đối với một lệnh mua khớp ở giá , markout tại thời điểm là . Markout tổng hợp trên các lệnh khớp thụ động là âm đối với gần như tất cả mọi người ở gần như mọi nơi; cách tính chúng mà không tự lừa dối bản thân được trình bày trong Implementation shortfall and TCA.
Một cách đóng khung tương đương khái quát hóa tốt hơn: một lệnh giới hạn nằm chờ là một quyền chọn miễn phí được trao cho thị trường. Đối tác — chứ không phải bạn — chọn thời điểm thực hiện quyền, và họ thực hiện khi điều đó có lợi cho họ. Rebate maker là khoản phí bảo hiểm mà sàn giao dịch trả cho bạn để viết quyền chọn đó. Câu hỏi không bao giờ là "khoản phí bảo hiểm có dương không" mà là "khoản phí bảo hiểm có lớn hơn giá trị của quyền chọn đối với những người thực hiện nó không".
Điểm hòa vốn đã hiệu chỉnh
Gọi là xác suất báo giá của bạn được khớp trong khung thời gian quyết định của bạn, là chi phí markout có điều kiện tính bằng bps, và là chi phí bổ sung bạn trả khi không được khớp (độ trôi giá trong lúc chờ cộng với việc vượt spread ở mức giá mới). Chi phí maker trung thực là:
Làm maker được ưu tiên hơn làm taker khi , điều này sắp xếp lại thành một bất đẳng thức gọn gàng:

Cùng ví dụ tính toán trên, giờ với ma sát thực tế: , , , nên khoản tiết kiệm bề ngoài là 5 bps. Lấy , bps, bps. Vế phải là bps. Làm maker vẫn thắng — với biên độ 0.67 bps, không phải 5. Về mặt kỳ vọng: bps so với chi phí taker là 6.0. Cú tick vào ô chọn chỉ đáng giá 0.4 bps, không phải 5, và một sai số vừa phải trong hoặc có thể đảo ngược dấu.
Tệ hơn nữa, , , và không phải là các biến số độc lập — chúng cùng được chi phối bởi lý do bạn giao dịch. Nếu tín hiệu của bạn tương quan với dòng lệnh ngắn hạn (mọi điểm vào lệnh theo momentum đều như vậy), thì đúng vào những đợt bùng nổ bạn muốn vào lệnh, và bùng nổ: bạn được khớp lệnh ngay lập tức, bởi chính đợt biến động mà bạn đã dự đoán, ở mức giá cũ, ở phía sai của nó. Chiết khấu maker lớn nhất trong bảng phí chính xác dành cho những giao dịch mà nó tiêu cực nhất trong thực tế. Đó là ý nghĩa mà theo đó lựa chọn maker-taker là một giao dịch lựa chọn bất lợi khoác lên mình một bảng phí.
Bảng phí thực tế: các bậc, chiết khấu token, và bẫy phí biên
Các bảng phí tiêu biểu trên các sàn lớn tính đến giữa năm 2026 (bậc cơ bản → bậc công khai cao nhất; hãy kiểm tra trang của sàn, các con số này thay đổi):
| Sàn | Maker / taker cơ bản | Maker / taker bậc cao nhất | Cơ chế chiết khấu |
|---|---|---|---|
| Binance spot | 10 / 10 bps | giảm dần theo VIP 1-9 | trả phí bằng BNB: −25% |
| Binance USDⓈ-M perp | 2 / 5 bps | 0 / 1.7 bps (VIP 9) | BNB: −10%; VIP cần khối lượng + số dư BNB |
| Bybit perp | 2 / 5.5 bps | 0 / 3 bps | chương trình MM xuống tới −1.5 bps maker, kèm nghĩa vụ |
| OKX perp | 2 / 5 bps | khoảng −0.5 / 1.5-2 bps | nắm giữ OKB xác định bậc dành cho khách bán lẻ |
| Hyperliquid perp | 1.5 / 4.5 bps | rebate maker xuống tới −0.3 bps | rebate gắn với tỷ trọng khối lượng maker; chiết khấu khi staking |
| Coinbase Advanced | 40 / 60 bps | 0 / 5 bps | chỉ theo bậc khối lượng |
| Kraken Pro | 25 / 40 bps | 0 / 10 bps | chỉ theo bậc khối lượng |
Ba quan sát mang tính cấu trúc.
Phí maker cho khách bán lẻ dương ở gần như mọi nơi. Mặc định kiểu thị trường cổ phiếu là "maker được trả tiền" đơn giản là không đúng với bạn cho tới khi vào sâu lãnh địa VIP hoặc có thỏa thuận market-maker đã ký. Ở bậc cơ bản, quyết định maker-taker là "trả 2 hay trả 5", không phải "kiếm tiền hay trả tiền".
Chiết khấu token là một vị thế, không phải một mã giảm giá. Trả phí bằng BNB cắt giảm 25% phí Binance spot — 2.5 bps mỗi bên ở bậc cơ bản, tiền thật khi khối lượng lớn. Nhưng chiết khấu đòi hỏi phải nắm giữ một lượng tồn kho token của sàn, vậy nên việc tối ưu phí của bạn được tài trợ bằng việc phơi nhiễm beta vào tài sản giống cổ phiếu của chính sàn giao dịch đó. Một desk trả 30 nghìn đô/tháng tiền phí và tiết kiệm được 7.5 nghìn đô nhờ BNB, trong khi nắm giữ một float BNB trị giá 200 nghìn đô, sẽ mất trắng cả quý tiết kiệm phí chỉ vì một đợt sụt giá BNB 10%. Hãy coi float đó như một vị thế trong sổ: định cỡ nó, phòng hộ nó, hoặc chấp nhận rằng bạn đã bán biến động để mua một khoản chiết khấu. (Một số bậc thang VIP còn biến số dư token thành yêu cầu bắt buộc để đạt bậc, chuyển vị thế đó từ tùy chọn thành cấu trúc.)
Phí biên ≠ phí trung bình. Các bậc được tính trên khối lượng 30 ngày trượt, vậy nên phí hôm nay được xác định bởi khối lượng giao dịch tháng trước — nhưng vượt qua một ngưỡng sẽ định giá lại toàn bộ khối lượng của bạn trong suốt thời gian bạn giữ bậc đó. Điều này tạo ra một điểm gãy (kink) trong chi phí biên của khối lượng. Giả sử bậc tiếp theo ở mức $15 triệu/30 ngày cắt phí taker của bạn từ 5 xuống 4 bps. Với $14 triệu khối lượng hữu cơ, $1 triệu khối lượng nhồi thêm (filler churn) tốn khoảng 1\text{M} \times (s/2 + f_t) \approx \6001,\text{bps} \times $14\text{M} = $1{,}400undefined8 triệu khối lượng hữu cơ, cùng logic đó đòi hỏi $7 triệu khối lượng nhồi thêm tốn $4,200 để tiết kiệm $800 — một canh bạc đòn bẩy đốt spread và phí thật để lấy chiết khấu giả định, tái diễn hàng tháng. Đuổi theo bậc chỉ hợp lý khi ở gần một ngưỡng, và các desk mô hình hóa phí của mình như một số vô hướng duy nhất thậm chí không thể nhìn thấy điểm gãy này.
Rebate mining: sự trỗi dậy, cái chết, và kiếp sau trong crypto
Rebate maker là một phát minh của thị trường cổ phiếu. Island ECN giới thiệu nó năm 1997 để khởi động thanh khoản chống lại các sàn giao dịch đương nhiệm, và nó hoạt động tốt đến mức mô hình này đã chinh phục cấu trúc thị trường cổ phiếu Mỹ; Reg NMS (2005) sau đó áp trần phí truy cập taker ở mức $0.003/cổ phiếu (Rule 610), và mô hình kinh doanh sàn giao dịch chuẩn trở thành: thu của taker khoảng 30 mils, trả rebate cho maker khoảng 20-30 mils, giữ phần chênh lệch.
Phép tính đó ngắn hạn đã tạo ra một chiến lược thuần túy: thu hoạch rebate (rebate capture). Đặt cả hai phía của một cổ phiếu vốn hóa lớn với spread một cent. Một vòng giao dịch scratch — mua và bán ở cùng một mức giá — vẫn thu về hai khoản rebate, khoảng nửa cent mỗi cổ phiếu trên PnL giá bằng không. Thu thêm cả spread một cent thì bạn nhân ba con số đó lên. Vào giữa những năm 2000, đây là một ngành kinh doanh công nghiệp thực thụ.
Nó chết vì ba nguyên nhân, và mỗi nguyên nhân đều là một bài học:
- Rebate là công khai, vậy nên nó bị cạnh tranh vào tận hàng đợi. Một rebate được niêm yết thu hút việc báo giá cho đến khi rebate kỳ vọng của người báo giá biên trừ đi lựa chọn bất lợi bằng không. Trên một cổ phiếu bị ràng buộc bởi tick, giá không thể cải thiện, vậy nên cạnh tranh diễn ra ở mức ưu tiên thời gian — và địa tô chảy về bất kỳ ai đến đầu hàng đợi trước. Rebate đã tài trợ cho cuộc chạy đua vũ trang về tốc độ; colocation và tháp vi sóng đã ăn hết biên lợi nhuận. Những người kiếm được rebate còn sống sót là những công ty vốn dĩ đã báo giá dù có rebate hay không.
- Nơi tick không ràng buộc, rebate thậm chí không hề có thật. Colliard và Foucault (2012), "Trading Fees and Efficiency in Limit Order Markets" (Review of Financial Studies 25), chứng minh kết quả trung lập: với một lưới giá mịn, chỉ tổng phí sàn giao dịch mới quan trọng — bất kỳ cách phân chia nào giữa maker và taker đều bị triệt tiêu bởi việc điều chỉnh báo giá. Cho maker một rebate và họ sẽ báo giá tương ứng chặt hơn, chuyển thẳng nó cho taker qua spread đã tính phí (cum-fee spread). Cách phân chia chỉ có tác dụng khi tick ngăn cản sự điều chỉnh đó — điều này lại đưa bạn quay về nguyên nhân số 1. Rebate bị tiêu tán hoặc qua giá hoặc qua hàng đợi; hãy chọn thuốc độc của bạn. (Foucault, Kadan và Kandel 2013 đưa ra góc nhìn bổ sung: cách phân chia phí là công cụ của sàn giao dịch để cân bằng sự tham gia của maker và taker, không phải một món quà cho bên nào.)
- Các méo mó đã thu hút sự chú ý của cơ quan quản lý. Angel, Harris và Spatt, "Equity Trading in the 21st Century" (2011, và bản cập nhật 2015 trong Quarterly Journal of Finance), đã liệt kê thiệt hại: spread niêm yết ngừng đo lường chi phí thật vì phí và rebate không nằm trong báo giá, các số liệu thống kê best-execution trở thành hư cấu, và các nhà môi giới đối mặt với xung đột lợi ích giữa việc khớp lệnh cho khách hàng và rebate của chính họ. Battalio, Corwin và Jennings (2016, Journal of Finance) chỉ ra rằng xung đột này không phải là giả thuyết: định tuyến lệnh đến các sàn có rebate cao đã làm giảm chất lượng thực thi lệnh giới hạn một cách đo lường được. SEC đã lượn quanh vấn đề này suốt một thập kỷ — Transaction Fee Pilot năm 2018 đã chết trong tòa án — và cuối cùng thông qua các sửa đổi vào tháng 9 năm 2024 cắt trần phí truy cập từ 30 xuống 10 mils (thời hạn tuân thủ đã được đẩy sang tháng 11 năm 2026). Kỷ nguyên rebate béo bở trong thị trường cổ phiếu đang chấm dứt bằng sắc lệnh hành chính.
Điều còn sống sót trong crypto rất đáng chú ý bởi vì nó không phải là một sự hồi sinh. Ba dạng:
- Rebate VIP công khai (bậc maker cao nhất −0.5 bps của OKX và tương tự): chỉ khả dụng ở các mức khối lượng vốn dĩ chọn lọc ra những công ty đã thắng cuộc đua hàng đợi rồi. Tính vòng lặp này lặp lại đúng hồi kết của thị trường cổ phiếu: rebate tồn tại để thu hút maker, và những maker giành được nó là những kẻ vốn dĩ đã báo giá dù có nó hay không.
- Các chương trình market-maker được đàm phán (Bybit quảng cáo xuống tới −1.5 bps): các chương trình này đi kèm với giới hạn spread, kích thước tối thiểu, và nghĩa vụ về thời gian hoạt động (uptime). Đó không phải tiền miễn phí; đó là một hợp đồng dịch vụ trong đó bạn được trả tiền để viết quyền chọn lựa chọn bất lợi một cách liên tục — kể cả trong tin tức, các đợt bán tháo dây chuyền, và những phút mà mọi maker tùy ý khác đã rút báo giá. Rebate là tiền lương cho việc nắm giữ sổ quyền chọn mà không ai muốn.
- Ưu đãi dựa trên công thức (Hyperliquid trả tới −0.3 bps gắn với tỷ trọng của bạn trong tổng khối lượng maker): một giải đấu công khai, ít nhất cũng định giá cuộc đua hàng đợi một cách trung thực.
Thu hoạch rebate thuần túy (pure scratch-for-rebate) hầu như không thể tồn tại trong crypto bởi vì phí maker cho khách bán lẻ là dương: ở mức maker 2 bps, một vòng giao dịch scratch lỗ 4 bps. Chiến lược này chỉ tồn tại bên trong các bậc maker âm, và các bậc đó chính là con hào bảo vệ.
Giá trị hàng đợi: rebate thực sự đáng giá bao nhiêu
Tất cả những gì ở trên nén lại thành một phương trình định giá duy nhất. Giá trị kỳ vọng của một báo giá nằm chờ là:
trong đó là rebate (hoặc trừ đi phí maker), và — chi tiết mang tính then chốt — cả xác suất khớp lệnh lẫn lựa chọn bất lợi có điều kiện đều là hàm số của vị trí hàng đợi của bạn. Chúng di chuyển cùng nhau theo cách tệ nhất có thể. Một lệnh đầu hàng đợi được khớp với dòng lệnh lành tính: các taker nhỏ, nhiễu, các lệnh chạm-rồi-bật (touch-and-bounce). Một lệnh cuối hàng đợi chỉ được khớp khi toàn bộ mức giá bị quét sạch — nói cách khác, chỉ trong những trạng thái thị trường mà giá đang xuyên qua bạn. Các vị trí hàng đợi sâu không chỉ khớp ít hơn; chúng khớp tệ hơn. Hàng đợi là một bộ lọc lựa chọn bất lợi, và vị trí của bạn trong đó quyết định bạn đứng ở phía nào của bộ lọc.

Các con số cụ thể. Mức giá niêm yết bps cách mid, rebate bps, chi phí bỏ lỡ bps:
| Vị trí hàng đợi | (bps) | (bps) | |
|---|---|---|---|
| Thập phân vị đầu | 0.85 | 0.8 | |
| Thập phân vị cuối | 0.35 | 3.5 |
Cùng một sàn, cùng một mức giá, cùng một dòng rebate trong bảng phí — một biến động hai basis point trong giá trị kỳ vọng, kể cả dấu, hoàn toàn do vị trí hàng đợi chi phối. Moallemi và Yuan (2016), "A Model for Queue Position Valuation in a Limit Order Book," lượng hóa kết quả tổng quát: trên các công cụ tick lớn, giá trị của ưu tiên hàng đợi tương đương với nửa spread, tức là cùng độ lớn với toàn bộ lợi thế lý thuyết của một chiến lược báo giá. Việc ước tính bạn thực sự đang ở đâu trong hàng đợi — và việc hủy/đặt lại lệnh làm gì với nó — là cỗ máy được trình bày trong Queue inside the wall; hiệu chỉnh từ chính các lệnh khớp của bạn, phân nhóm theo thập phân vị hàng đợi tại thời điểm khớp lệnh, là một bài tập markout từ bộ công cụ TCA.
Quy tắc vận hành được suy ra trực tiếp: báo giá khi so với phương án thay thế của bạn, và vượt spread khi không đúng như vậy — khi hàng đợi dài, dòng lệnh độc hại, hoặc tín hiệu của bạn cho biết giá đang rời đi. "Khi nào chính xác nên ngừng kiên nhẫn" là một câu hỏi về chiến thuật — nhịp độ pegging, thang leo thang, các yếu tố kích hoạt vượt spread — được trình bày riêng trong Child order execution tactics. Điểm mấu chốt ở đây là đầu vào cho quyết định đó là giá trị có điều kiện theo hàng đợi, không phải bảng phí.
Backtest các bậc phí: lỗi VIP-9
Lỗi phí phổ biến nhất trong backtest đơn giản đến mức đáng xấu hổ: cấu hình ghi maker_fee=0.0, taker_fee=0.00017 bởi vì ai đó đã sao chép hàng trên cùng của bảng VIP của sàn — hoặc bậc trước đây của desk, hoặc bậc mà chiến lược sẽ đạt được "khi mở rộng quy mô" — nhưng chiến lược lại giao dịch thực tế ở mức 2/5. Hãy gọi đây là lỗi VIP-9.
Đây không phải một sai lệch nhỏ. Lấy một chiến lược báo giá với mức thu gộp (spread trừ lựa chọn bất lợi) 2.6 bps mỗi vòng giao dịch, mỗi vòng gồm hai chân lệnh maker:
| Bậc phí | Phí maker | Ròng mỗi vòng giao dịch |
|---|---|---|
| VIP 9 | 0.0 bps | +2.6 bps |
| Bậc giữa | 1.0 bps | +0.6 bps |
| Cơ bản (VIP 0) | 2.0 bps | −1.4 bps |
Cùng một chiến lược giống hệt nhau là máy in tiền ở bậc bạn backtest và là máy nghiền ở bậc bạn giao dịch thực tế. Không có lỗi alpha nào cần tìm, không có tinh vi gì về mô hình khớp lệnh — chỉ là một số vô hướng trong một file cấu hình phân tách đường cong vốn với ảnh phản chiếu của nó. Và bởi vì lợi thế của các chiến lược maker thường xuyên chỉ 1-3 bps mỗi vòng giao dịch, các lỗi bậc phí luôn luôn có cùng độ lớn với chính lợi thế đó.
Làm đúng có nghĩa là nhận ra rằng phí của bạn là một biến trạng thái phụ thuộc đường đi (path-dependent), không phải một hằng số:
from bisect import bisect_right
class FeeEngine:
"""Tiered fees driven by simulated rolling 30d volume. All rates in bps."""
TIERS = [(0e6, 2.0, 5.0), (15e6, 1.6, 4.5), (50e6, 1.2, 4.0),
(100e6, 0.8, 3.5), (600e6, 0.4, 2.5), (4e9, 0.0, 1.7)]
token_discount = 0.90 # e.g. BNB payment: multiply fees by 0.9
def __init__(self):
self.fills = [] # (timestamp, notional)
def _rolling_volume(self, ts):
cutoff = ts - 30 * 86_400
self.fills = [(t, n) for t, n in self.fills if t >= cutoff]
return sum(n for _, n in self.fills)
def fee(self, ts, notional, is_maker):
vol = self._rolling_volume(ts) # tier from PAST volume
i = bisect_right([v for v, _, _ in self.TIERS], vol) - 1
rate = self.TIERS[i][1] if is_maker else self.TIERS[i][2]
self.fills.append((ts, notional)) # this fill counts toward FUTURE tiers
return notional * rate * 1e-4 * self.token_discount
Năm quy tắc giúp việc hạch toán trung thực:
- Phí phát sinh theo từng sự kiện khớp lệnh, theo từng bên, trên giá trị danh nghĩa đã khớp — không phải theo từng lệnh và không phải theo từng vòng giao dịch. Một lệnh khớp một phần chỉ trả phí trên phần đã khớp; sự tương tác giữa khớp một phần, hủy lệnh, và phát sinh phí chính xác là cỗ máy trạng thái từ Fill simulation, cũng chính là nơi cung cấp các xác suất không khớp lệnh mà điểm hòa vốn đã hiệu chỉnh cần đến.
- Bậc phí là nội sinh. Khối lượng mô phỏng của bạn quyết định bậc mô phỏng của bạn; việc mở rộng quy mô chiến lược sẽ thay đổi phí của chính nó. Một backtest mở rộng giá trị danh nghĩa lên 10 lần phải để bậc thang phản ứng theo, theo cả hai hướng.
- Bắt đầu mô phỏng ở bậc mà bạn sẽ thực sự nắm giữ vào ngày đầu tiên — thường là bậc cơ bản. Nếu luận điểm là "có lãi ở VIP 4", hãy chạy bậc thang như các kịch bản và báo cáo bậc hòa vốn. Bậc đó là một yêu cầu ra mắt kèm điều kiện tiên quyết về khối lượng, không phải một chú thích cuối trang.
- Mô hình hóa các chiết khấu tính bằng token như các vị thế. Nếu phí được trả bằng BNB hoặc được chiết khấu bởi staking, giá trị theo thị trường (mark-to-market) của float đó thuộc về PnL của chiến lược, không phải một bảng tính khác.
- Sử dụng cum-fee spread để so sánh sàn giao dịch. Theo Colliard-Foucault và Angel-Harris-Spatt: đại lượng có thể so sánh giữa các sàn là đối với một vòng giao dịch taker (hoặc với cho các chân lệnh maker), không bao giờ là spread niêm yết thô. Một sàn niêm yết rộng 1 bps với taker 5 bps đắt gấp bốn lần khi vượt spread so với một sàn niêm yết rộng 4 bps với taker 1 bps — và các bảng xếp hạng spread trên màn hình sẽ xếp hạng chúng ngược lại.
Quyết định, được diễn giải lại
Lột bỏ lớp vỏ, quyết định maker-taker là một danh sách kiểm tra nhỏ. Biết hàng phí thực tế của bạn — bậc hiện tại, chiết khấu hiện tại, biên chứ không phải kỳ vọng. Tính cum-fee spread cho từng sàn và ngừng tin tưởng vào màn hình hiển thị. Đo markout có điều kiện từ chính các lệnh khớp của bạn, phân nhóm theo vị trí hàng đợi tại thời điểm khớp lệnh, bởi vì không nằm trong tài liệu của bất kỳ ai. Định giá mỗi báo giá nằm chờ bằng và vượt spread không do dự khi nó trở nên âm. Coi rebate như tiền lương cho việc viết quyền chọn và hỏi ai là người đang thực hiện quyền đó. Và trong backtest, hãy biến phí thành một cỗ máy trạng thái, không phải một số vô hướng.
Bảng phí cho bạn biết đối tác trung bình trả gì cho sàn giao dịch để đổi lấy sự tức thời. Markout của bạn cho bạn biết thị trường thực sự trả gì cho bạn để cung cấp nó. Chỉ một trong hai con số đó nói về bạn — hãy giao dịch dựa trên con số đó.
Tác Giả
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.