Chi phí giao dịch cổ phiếu thực tế là bao nhiêu
Phí hoa hồng có thể bằng không nhưng bạn vẫn phải trả bid-ask spread. Xem cách đo lường chi phí giao dịch theo basis points cho mười hai mã cổ phiếu và ETF.
Chi phí giao dịch cổ phiếu không giảm về mức bằng không ngay cả khi phí hoa hồng giảm. Mọi lệnh giao dịch có khả năng khớp đều phải trả bid-ask spread — khoảng cách giữa mức giá mua cao nhất và mức giá bán thấp nhất — với một nửa chi phí nằm ở phía mua và một nửa ở phía bán. Trang này đo lường mức phí đó theo đơn vị basis points cho mười hai cổ phiếu và ETF phổ biến, dựa trên dữ liệu báo giá ở cấp độ tick, kèm theo mã SQL chính xác cho mỗi con số.
Phí hoa hồng về không — nhưng spread thì không
Một cổ phiếu không bao giờ chỉ có một mức giá; nó luôn có hai. Bid là mức giá chào mua tốt nhất; ask là mức giá chào bán tốt nhất. Giao dịch tại thời điểm này nghĩa là lấp đầy khoảng cách đó: một lệnh mua market sẽ khớp ở mức ask, một lệnh bán market sẽ khớp ở mức bid, và phần chênh lệch thuộc về bên đưa ra báo giá — thường là một market maker chuyên nghiệp chào cả hai phía trong suốt phiên. Giải thích về bid-ask spread sẽ trình bày chi tiết về cơ chế này; trang này sẽ định giá chúng.
Một ví dụ giả định sẽ giúp việc tính toán trở nên rõ ràng. Một cổ phiếu được báo giá $20.00 bid / $20.05 ask có midpoint là $20.025 — mức tham chiếu thông thường cho giá trị hợp lý của nó tại thời điểm đó. Một lệnh mua market phải trả $20.05, cao hơn mức midpoint 2.5 cent: tương đương một nửa độ rộng báo giá. Một lệnh bán market sẽ nhận được $20.00, mất đi một nửa còn lại. Nếu thực hiện cả hai — một vòng giao dịch — thì toàn bộ năm cent sẽ bị mất trên mỗi cổ phiếu, dù không có dòng phí hoa hồng nào xuất hiện.
Đơn vị chuyên nghiệp để đo lường chi phí này là basis point (bp) — một phần một trăm của một phần trăm. Việc tính spread dựa trên tỷ lệ của midpoint giúp đưa một ETF có giá vài đô la và một ETF có giá vài trăm đô la về cùng một thang đo, và sự khác biệt mà nó tiết lộ lớn hơn so với kỳ vọng của hầu hết các nhà giao dịch không mất phí hoa hồng.
Bảng xếp hạng chi phí giao dịch: mười hai mã, được đo lường
Dưới đây là mười hai cổ phiếu và ETF phổ biến, được xếp hạng theo mức spread trung vị (median) tính theo tỷ lệ phần trăm của mức giá trung tâm (midpoint). Dữ liệu được cập nhật theo NBBO — mức giá mua và bán tốt nhất hợp nhất trên tất cả các sàn giao dịch tại Mỹ, là mức giá hiển thị trên các ứng dụng môi giới — được tính trong một khung giờ cố định (13:30–19:59 UTC), tương ứng với phiên giao dịch thường nhật từ 9:30 sáng đến 4:00 chiều giờ miền Đông trong các tháng có giờ mùa hè — đây là trạng thái của mọi khung giờ mà trang này đã đo lường từ trước đến nay. Khung giờ này bao gồm các phiên đã hoàn tất gần nhất trong dữ liệu của chúng tôi và được chủ ý dừng lại trước ngày hiện tại vài ngày, nhằm loại bỏ các ngày chưa được xử lý dữ liệu hoàn tất khỏi các giá trị trung vị. Các cập nhật thiếu một phía giá, hoặc có giá ask bằng hoặc thấp hơn giá bid, sẽ bị loại khỏi các giá trị trung vị và được tính vào cột cuối cùng thay vì bị bỏ qua.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT ticker,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS typical_spread_bps,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price > bid_price) * 100, 1) AS typical_spread_cents,
round(count() / 1e6, 1) AS quote_updates_m,
round(100 * countIf(bid_price <= 0 OR ask_price <= 0 OR ask_price <= bid_price) / count(), 2) AS pct_updates_excluded
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMD', 'TSLA', 'KO', 'DIS', 'F', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
ORDER BY typical_spread_bpsĐứng đầu danh sách là SPY với 0.27 bps — một phần của một basis point — mức trung vị dựa trên 14.9 triệu cập nhật báo giá. Ở bậc thứ tư, báo giá của NVDA là 0.99 bps. Bậc cuối cùng, SOXS, đo được 23.17 bps — và cột cent của nó là bài học thầm lặng cho toàn bộ bảng: khoảng cách báo giá là 1¢, một khoảng cách ở quy mô cent đi kèm với chi phí phần trăm lớn nhất trên bảng. Đơn vị cent làm phẳng các cổ phiếu rẻ; basis point phản ánh giá trị của chúng một cách trung thực.
Một basis point tương đương một đô la cho mỗi 10.000 đô la
Cột bps quy đổi ra tiền mặt theo phép tính cố định: với một lệnh 10.000 đô la, một basis point bằng một đô la (10.000 × 0,0001 = 1). Hãy xem thang giá này như một danh sách giá khứ hồi cho mỗi 10.000 đô la giao dịch: bậc cao nhất là 0.27 bps tương đương khoảng $0.27; bậc thấp nhất là 23.17 bps tương đương khoảng $23.17. Một giao dịch đơn — chỉ mua hoặc chỉ bán — sẽ tốn một nửa con số tương ứng.
Tần suất giao dịch sẽ làm tăng chi phí. Giả sử một spread 20 bp được giao dịch khứ hồi một lần mỗi tuần trên cùng một khối lượng 10.000 đô la, tổng chi phí sẽ là khoảng 1.040 đô la sau 52 tuần (20 × $1 × 52) — tương đương khoảng một phần trăm tài khoản nếu không có phí hoa hồng. Với cùng thói quen đó nhưng áp dụng cho spread 1 bp giả định, tổng chi phí là khoảng 52 đô la một năm. Vị trí của một mã chứng khoán trên thang giá quan trọng hơn bất kỳ khoản phí hoa hồng nào.
Một cổ phiếu vốn hóa siêu lớn so với một ETF inverse đòn bẩy
Cổ phiếu ở bậc thấp nhất của thang đo cần một cái tên, và một cổ phiếu vốn hóa siêu lớn ở nhóm một phần ba dẫn đầu cũng vậy. NVIDIA (NVDA) là một cổ phiếu bán dẫn vốn hóa siêu lớn. SOXS là Direxion Daily Semiconductor Bear 3X shares — một ETF inverse đòn bẩy được thiết kế để biến động ngược hướng gấp ba lần so với chỉ số bán dẫn mỗi ngày, với mức reset hàng ngày. Cả hai được đo lường trong cùng một khoảng thời gian và cùng một cách thức:
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH per_day AS (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS et_date,
quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'NVDA' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS nvda_bps,
quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'SOXS' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS soxs_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('NVDA', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY et_date
),
whole AS (
SELECT quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'NVDA' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS nvda_bps,
quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'SOXS' AND bid_price > 0 AND ask_price > bid_price) * 10000 AS soxs_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('NVDA', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
)
SELECT round((SELECT nvda_bps FROM whole), 2) AS nvda_spread_bps,
round((SELECT soxs_bps FROM whole), 2) AS soxs_spread_bps,
round((SELECT soxs_bps FROM whole) / (SELECT nvda_bps FROM whole), 1) AS times_wider,
(SELECT count() FROM per_day) AS sessions_measured,
round((SELECT min(soxs_bps / nvda_bps) FROM per_day), 1) AS smallest_daily_gap_xMức spread trung vị của NVDA là 0.99 bps. SOXS là 23.17 bps — rộng hơn 23.3 lần. Trong tất cả 5 phiên trong khoảng thời gian này, khoảng cách giữa các phiên không bao giờ nén xuống dưới mức 14.1 lần. Cặp cổ phiếu này cũng nằm ở các thái cực của sự đứt gãy ngành bán dẫn ngày 7 tháng 7 — một phiên đã đo lường chính xác sự tương phản này qua từng tick tại mức thấp nhất vào buổi sáng.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT et_date,
nvda_spread_bps,
soxs_spread_bps,
round(soxs_spread_bps / nvda_spread_bps, 1) AS times_wider
FROM (
SELECT toDate(toTimeZone(sip_timestamp, 'America/New_York')) AS et_date,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'NVDA' AND bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS nvda_spread_bps,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), ticker = 'SOXS' AND bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS soxs_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('NVDA', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY et_date
)
ORDER BY et_dateVào 2026-07-08, phiên đầu tiên của khoảng thời gian này, mức quote trung vị của NVDA là 1.52 bps so với 21.48 bps của SOXS — gấp 14.1 lần về chi phí. Thứ tự này không bao giờ thay đổi giữa các phiên: cổ phiếu rẻ vẫn rẻ, cổ phiếu đắt vẫn đắt. Vị trí của một cổ phiếu trên thang đo chi phí là một đặc tính cố định, không phải là biến động nhất thời trong ngày.
Tại sao cổ phiếu giá rẻ lại có chi phí giao dịch cao hơn cổ phiếu giá đắt
Một phần nguyên nhân nằm ở cấu trúc vận hành của thị trường. Các cổ phiếu và ETF tại Mỹ có giá trên 1 USD sẽ được niêm yết theo bước giá một cent, và một cent là khoảng cách nhỏ nhất mà một mức giá có thể hiển thị. Một cent cố định sẽ chiếm tỷ trọng khác nhau tùy vào giá cổ phiếu: gần như không đáng kể đối với một ETF giá 700 USD, nhưng lại rất lớn đối với một cổ phiếu giá 4 USD. Bảng dưới đây đo lường mức độ ảnh hưởng của ngưỡng giá tối thiểu này — tỷ lệ các cập nhật giá của mỗi mã nằm chính xác ở mức một cent, giá trị của một cent tính theo bps tại mức giá đó, và khoảng cách từ mức spread trung vị so với ngưỡng tối thiểu.
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT ticker,
typical_share_price,
pct_quotes_at_one_cent,
round(100 / typical_share_price, 2) AS one_cent_in_bps,
typical_spread_bps,
round(abs(typical_spread_bps - 100 / typical_share_price), 2) AS dist_from_floor_bps
FROM (
SELECT ticker,
round(quantileExactIf(0.5)((toFloat64(ask_price) + toFloat64(bid_price)) / 2, bid_price > 0 AND ask_price > bid_price), 2) AS typical_share_price,
round(100 * countIf(bid_price > 0 AND ask_price > bid_price AND abs(toFloat64(ask_price - bid_price) - 0.01) < 0.001) / countIf(bid_price > 0 AND ask_price > bid_price), 1) AS pct_quotes_at_one_cent,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS typical_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO', 'F', 'SOXS')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
)
ORDER BY typical_share_price DESCSPY, giao dịch quanh mức 750.32 một cổ phiếu, có 23.4% số lần cập nhật giá chỉ rộng đúng một cent — và đối với cổ phiếu đắt nhất trong danh sách, một cent chỉ tương đương 0.13 bps. Ở mức trung bình, KO quanh mức 83.82 nằm ở ngưỡng tối thiểu trong 65.4% số lần cập nhật. Sau đó, ngưỡng tối thiểu này chiếm ưu thế hoàn toàn: F quanh mức 13.86 có biên độ một cent trong 99% số lần cập nhật, và SOXS quanh mức 4.31 trong 100% — với các mức spread trung vị nằm trong khoảng 0 và 0.03 bps so với ngưỡng một cent. Đối với các cổ phiếu rẻ nhất, tỷ lệ chi phí giao dịch thực chất là do giá cổ phiếu đang ở một đơn vị khác: mức giá không thể hẹp hơn một cent.
Giảm thiểu chi phí giao dịch
- Lệnh giới hạn (limit orders) xác định mức giá cụ thể. Lệnh thị trường (market order) chấp nhận bất kỳ mức giá nào đang hiển thị; lệnh giới hạn sẽ khớp tại mức giá đã nêu hoặc tốt hơn. Một lệnh mua treo tại mức giá bid sẽ thu về phần spread thay vì phải trả nó khi có người bán khớp lệnh — đánh đổi lại là lệnh đó có thể không bao giờ được khớp.
- Thời điểm rất quan trọng. Spread niêm yết thường rộng nhất trước giờ mở cửa, quanh giờ đóng cửa và trong các phiên giao dịch ngoài giờ, và hẹp nhất trong khoảng thời gian thanh khoản cao ở giữa phiên giao dịch chính thức — biểu đồ trong ngày trong hướng dẫn về bid-ask spread của chúng tôi cho thấy hình chữ U dựa trên dữ liệu thực tế.
- Hãy đọc theo basis points, đừng đọc theo cent. Cùng một cent đó là 0.13 bps trên SPY và 23.2 bps trên SOXS. Một mức giá "chặt" chênh lệch một cent có thể là mức đắt nhất trên bảng điện.
- Hãy tính theo số vòng giao dịch (round trips). Mỗi vòng giao dịch phải trả toàn bộ độ rộng spread niêm yết một lần, và chi phí này tăng dần theo khối lượng giao dịch, không phụ thuộc vào quy mô tài khoản hay mục đích giao dịch. Các chỉ số hoạt động như relative volume giúp đo lường khi một mã đang giao dịch cao hơn nhiều so với mức bình thường của chính nó — thói quen giao dịch với khối lượng lớn là nơi chi phí spread âm thầm tích tụ.
FAQ
Chi phí giao dịch cổ phiếu không mất phí hoa hồng là bao nhiêu?
Chi phí này bằng một nửa mức spread bid-ask khi mua và một nửa khi bán. Dựa trên thang đo mười hai mã của chúng tôi, tổng chi phí khứ hồi dao động từ 0.27 bps giá trị giao dịch (SPY) đến 23.17 bps (SOXS) — tương đương khoảng $0.27 đến $23.17 cho mỗi $10,000 giao dịch.
Một basis point tương đương bao nhiêu đô la?
Một basis point bằng một phần một trăm của một phần trăm: $1 trên $10,000, hoặc $10 trên $100,000. Một mức spread được niêm yết bằng bps sẽ gấp đôi khi tính theo giá khứ hồi trên mỗi $10,000 — ví dụ mức spread giả định là 20 bp sẽ tốn khoảng $20.
Tại sao các ETF đòn bẩy lại có mức spread tính theo phần trăm lớn như vậy?
Do giá cổ phiếu thấp gặp phải mức bước giá tối thiểu là một cent. Mã rẻ nhất trong danh sách của chúng tôi, SOXS, giao dịch ở mức gần $4.31 với 100% các mức giá chỉ rộng đúng một cent — và một cent trên mức giá đó tương đương 23.2 bps cho mỗi giao dịch.
Spread bid-ask có quan trọng đối với các nhà đầu tư dài hạn không?
Ít quan trọng hơn so với các nhà giao dịch lướt sóng. Một giao dịch khứ hồi duy nhất ở bậc cao nhất của thang đo đo được 0.27 bps — khoảng $0.27 trên mỗi $10,000 — và việc trả mức phí này một lần trong mỗi thập kỷ là không đáng kể. Chi phí này tỉ lệ thuận với tần suất giao dịch, không phải với thời gian nắm giữ.
Spread có phải là chi phí giao dịch duy nhất còn lại không?
Đây là chi phí cho mỗi giao dịch mà mọi lệnh có thể khớp đều phải trả, và cũng là nội dung mà trang này đo lường. Có các loại chi phí khác: các lệnh lớn có thể làm biến động giá trước khi khớp hết, các quỹ tính phí expense ratio theo thời gian, và margin sẽ phát sinh lãi suất. Không có chi phí nào trong số đó thay thế cho spread; chúng cộng dồn vào spread.
Mỗi bảng trên đều đi kèm với mã SQL chính xác đã tạo ra nó — bạn có thể mở một bảng, thay thế bằng các ticker mà bạn thực sự giao dịch, và tự tính toán thang đo chi phí giao dịch của riêng mình trên terminal Strasmore.