30/11/2025
9 lượt đọc
Nếu bỏ hết “mỹ từ” đi, long–short đơn giản là cách tách phần thị trường chung (beta) ra khỏi phần khác biệt do mô hình (alpha). Thay vì chỉ mua những gì mình thích, ta vừa long thứ mình cho là sẽ chạy “tương đối tốt hơn”, vừa short thứ mình cho là sẽ chạy “tương đối kém hơn”, rồi ghép lại thành một danh mục gần như trung hòa với thị trường.
Về mặt logic:
Ghép hai bên sao cho danh mục ít phụ thuộc vào việc VN-Index hay VN30 tăng / giảm, mà chủ yếu sống bằng chênh lệch giữa “tốt” và “xấu”.
Trong bối cảnh Việt Nam, long–short có vài dạng khả thi:
Về lý thuyết có thể long–short cổ phiếu với nhau, nhưng thực tế bị hạn chế khá nhiều bởi cơ chế short.
Ngay từ đầu, khi nói đến “code và backtest long–short”, QM Capital thường tự hỏi ba câu rất cụ thể:
Mô hình có xếp hạng được tài sản không? Nghĩa là nhóm được chọn vào long có thực sự tốt hơn nhóm short, nếu so trên cùng một giai đoạn và cùng điều kiện thị trường.
Khi biến những xếp hạng đó thành danh mục thực sự (có weight, rebalance, phí giao dịch, slippage), đường vốn nhìn ra sao: PnL, Sharpe, max drawdown, turnover?
Nếu đưa ra thế giới thật – với limit về short, margin, fee, thanh khoản – chiến lược còn sống được không, hay chỉ đẹp trên giấy?
Ví dụ: giả sử QM Capital xây một chiến lược long–short trên rổ 30 cổ phiếu thanh khoản nhất HOSE. Signal rất đơn giản: 60-day momentum. Mỗi tuần, hệ thống chọn top 20% cổ phiếu có momentum cao nhất để long, bottom 20% để short, cân bằng vốn hai bên. Sau 5 năm backtest, ta thấy:
Nhìn vậy là ổn, nhưng phải nhớ: kết quả này chỉ có ý nghĩa nếu ta chắc rằng dữ liệu không bị “nhìn tương lai”, phí giao dịch được tính đúng, và cấu trúc long–short có thể triển khai trong bối cảnh thật (ví dụ dùng VN30F để hedge thay vì short trực tiếp cổ phiếu). Toàn bộ phần còn lại – code và backtest – thực ra chỉ là cách trả lời cẩn thận cho ba câu hỏi đó.
Để không bị lạc trong chi tiết kỹ thuật, có thể chia quy trình thành bốn khối: dữ liệu → signal → danh mục → đánh giá. Mỗi khối nếu làm ẩu một chút thì kết quả cuối cùng sẽ lệch đi khá xa.
(a) Chuẩn bị dữ liệu và universe
Bước đầu tiên thường bị xem nhẹ, nhưng nó quyết định chiến lược có “đứng được” hay không.
Chọn universe: ví dụ top 50 mã thanh khoản nhất HOSE, hoặc rổ VN30 + một số bluechip.
Gom dữ liệu giá dạng OHLCV (open, high, low, close, volume) theo ngày; nếu trade intraday thì là 5-min, 15-min.
Đồng bộ ngày giao dịch, xử lý ngày nghỉ, loại các mã volume quá thấp.
Trong code (Python):
Đưa dữ liệu về dạng ma trận price[date, ticker], volume[date, ticker].
Cẩn thận với survivorship bias: nếu có thể, nên dùng toàn bộ danh sách mã ở từng thời điểm, không chỉ những mã còn sống tới hôm nay.
(b) Xây tín hiệu (signal) và xếp hạng
Long–short thực chất là một bài toán ranking. Với mỗi ngày (hoặc mỗi kỳ rebalance), ta cần một con số score cho mỗi mã.
Ví dụ signal đơn giản:
Momentum: 20-day hoặc 60-day return.
Mean reversion: âm của 5-day return (giảm mạnh có thể bật lại).
Yếu tố cơ bản: kết hợp P/E, P/B, tăng trưởng lợi nhuận, vốn hóa…
Trong code:
Tính signal dạng signal[date, ticker].
Dùng shift(1) để đảm bảo ngày T chỉ dùng thông tin đến T–1, tránh look-ahead bias.
Sau đó:
Loại mã không đủ dữ liệu, thanh khoản kém, bị hạn chế giao dịch.
Xếp hạng theo signal trên từng ngày.
Chọn top X% để long, bottom Y% để short (thường X = Y cho đơn giản).
(c) Từ signal sang portfolio: thiết kế trọng số long–short
Đây là nơi “lý thuyết đẹp” dễ bị vỡ khi gặp thực tế. Ý tưởng căn bản:
Long leg: phân bổ vốn đều cho các mã ở nhóm điểm cao (ví dụ mỗi mã +1/N).
Short leg: phân bổ đều cho các mã ở nhóm điểm thấp (mỗi mã –1/M).
Chuẩn hóa lại để tổng giá trị long ≈ tổng giá trị short → gần dollar-neutral.
Có thể thêm một số ràng buộc:
Giới hạn weight tối đa trên từng mã (ví dụ |weight| ≤ 5% NAV).
Giới hạn theo ngành để tránh một bên full bank, bên kia full thép.
Đặt lịch rebalance: hàng ngày, hàng tuần, hoặc khi tín hiệu thay đổi mạnh.
Nếu dùng VN30F làm công cụ short, cấu trúc sẽ khác một chút: ta long cổ phiếu, sau đó tính beta của rổ long với VN30, rồi short VN30F theo beta đó để giảm bớt rủi ro thị trường.
(d) Backtest: từ weight và return sang PnL
Khi đã có ma trận weight w[date, ticker] và lợi suất r[date, ticker], phần còn lại tương đối thẳng:
Portfolio return ngày T = tổng (w[T–1, ticker] × r[T, ticker]) – phí – slippage.
Cộng dồn để ra equity curve.
Từ đường vốn này, ta tính:
Lợi suất năm hóa, volatility, Sharpe, Sortino.
Max drawdown, thời gian hồi phục, win rate theo ngày / tháng.
Turnover (khối lượng điều chỉnh vị thế mỗi lần rebalance) → từ đó suy ra mức phí thực tế.
Một thói quen tốt là luôn tách long leg và short leg ra xem riêng:
Long leg có alpha dương rõ rệt không?
Short leg có thực sự underperform không, hay chỉ đơn giản là “không làm gì nhiều nhưng tốn phí”?
Ví dụ: trong backtest, QM Capital thấy long leg mang lại +18%/năm, short leg –6%/năm, danh mục long–short khoảng +12%/năm. Nếu sau này môi trường thay đổi, short leg không còn underperform nữa, chiến lược sẽ tụt khá nhanh. Nhìn riêng từng leg giúp thấy rõ rủi ro này.
Khi code xong một chiến lược long–short, nhìn đường equity đẹp là cảm giác rất “phê”. Nhưng trước khi tin, mình nên chủ động đi tìm lỗi – nhất là trong bối cảnh thị trường Việt Nam còn nhiều giới hạn về short, thanh khoản, biên độ.
(a) Những bẫy kỹ thuật dễ mắc
Có vài lỗi “kinh điển” mà QM Capital gần như luôn check lại:
Look-ahead bias: dùng dữ liệu của ngày T để quyết định ngày T – ví dụ dùng giá đóng cửa để quyết định lệnh cùng ngày – là lỗi nặng. Mọi input phải là shift(1).
Survivorship bias: chỉ dùng các mã đang niêm yết hiện tại. Những mã đã hủy niêm yết, delist, hoặc bị kiểm soát thường là mã xấu – loại chúng ra khỏi mẫu làm chiến lược trông khỏe hơn thực tế.
Phí và trượt giá (slippage): long–short thường có turnover cao, đặc biệt nếu rebalance mỗi ngày. Nếu để transaction cost = 0, Sharpe nào cũng đẹp. Thực tế phải giả định spread, phí môi giới, và độ trượt tùy theo thanh khoản từng mã.
Giới hạn short: với cổ phiếu Việt Nam, short trực tiếp là câu chuyện khác xa sách giáo khoa. Nếu backtest chiến lược “short 30 mã yếu nhất” mà không mô hình hóa được cơ chế short, thì kết quả chỉ mang tính tham khảo.
(b) Gợi ý áp dụng trong bối cảnh Việt Nam
Trong điều kiện hiện tại, hai hướng khá thực tế:
Long–short trên phái sinh VN30F
Dùng nhiều chiến lược khác nhau (trend following, mean reversion intraday, basis trading…) để tạo nhiều “mini-signal”, sau đó long–short giữa các chiến lược / các kỳ hạn.
Dữ liệu: 1–5 phút, có volumes, order book nếu có.
Lưu ý biên độ, limit up/down, những ngày basis bị méo do roll hợp đồng hoặc tin vĩ mô.
Long stock / short VN30F
Chiến lược stock-picking (value, quality, momentum…) nằm ở leg long; leg short là VN30F để giảm bớt tác động của thị trường chung.
Ví dụ: long rổ 10 mã bank, chứng, tiêu dùng mà model đánh giá tốt; short VN30F với size sao cho beta danh mục về gần 0.
Backtest phải tính cả: phí giao dịch cổ phiếu, phí hợp đồng tương lai, chi phí margin/ ký quỹ.
(c) Cách “vặn vẹo” chiến lược trước khi tin
Sau khi đã có một backtest nhìn ổn, QM Capital thường làm thêm vài bước kiểm tra:
Chạy chiến lược trên các giai đoạn con:
– Bull market (ví dụ 2017, 2020–2021).
– Sideway, hoặc phân hóa mạnh.
– Giai đoạn xấu (2011–2012, 2022...).
Nếu chiến lược chỉ kiếm được tiền trong một giai đoạn rất hẹp, cần hiểu rõ lý do.
Thử thay đổi nhẹ tham số:
– Window 60-day momentum → 40 hoặc 80 ngày.
– Rebalance hàng ngày → 2–3 ngày/lần.
– Thay top/bottom 20% → 10% hoặc 30%.
Nếu chỉ cần chỉnh nhẹ là PnL sụp, khả năng cao là overfit.
Đặt thêm lớp phí / constraint “xấu hơn”:
– Nhân transaction cost lên 1.5–2 lần.
– Cắt 20–30% khối lượng lệnh ở những ngày thanh khoản thấp.
– Giới hạn không được full position khi volatility bùng nổ (risk cap).
Ví dụ: một chiến lược long–short VN30F intraday có Sharpe 2.0 với phí 0.02%/chiều. Khi tăng phí lên 0.04% và giảm 20% khối lượng lệnh ở phiên ATC, Sharpe rơi xuống 0.7. Điều này cho thấy chiến lược đang sống nhờ việc “suýt sít” vào–ra với chi phí cực thấp – khó triển khai nếu không có hạ tầng tương đương backtest.
Cuối cùng, nếu nhìn long–short dưới góc độ hệ thống, nó chỉ là:
Một cơ chế xếp hạng tài sản (hoặc tín hiệu) nhất quán.
Một engine biến ranking thành trọng số, có kiểm soát risk.
Một bộ câu hỏi khó, dùng backtest để trả lời: chiến lược kiếm tiền từ đâu, và khi điều kiện thị trường thay đổi, nó sẽ “đau” ở đâu trước.
Khi trả lời được ba lớp đó một cách trung thực bằng code và dữ liệu, long–short không còn là câu chuyện “nghe rất hedge fund”, mà trở thành một công cụ rất rõ ràng để kiểm soát rủi ro và đo alpha trên thị trường Việt Nam
0 / 5
Trong lĩnh vực giao dịch tài chính, việc phát hiện sự thay đổi chế độ của thị trường (regime change) đóng vai trò quan trọng trong việc xác định xu hướng và điều chỉnh chiến lược giao dịch. Hai mô hình phổ biến để phát hiện sự thay đổi chế độ là Breakout Model và Crossover Model. Cả hai mô hình này đều được ứng dụng rộng rãi trong các chiến lược giao dịch tự động (quant trading) và có thể được tối ưu hóa để sử dụng hiệu quả tại thị trường Việt Nam. Trong bài viết này, chúng ta sẽ tìm hiểu sâu về hai mô hình này, cách áp dụng chúng, và cách phát hiện sự thay đổi chế độ trong thị trường tài chính Việt Nam.
Để hiểu được lý do tại sao nến Nhật (Japanese Candlestick) lại là công cụ mạnh mẽ trong giao dịch, ta cần bắt đầu từ khái niệm cơ bản. Mỗi cây nến đại diện cho 4 giá trị quan trọng trong một khoảng thời gian nhất định (tùy thuộc vào khung thời gian mà trader chọn: 1 phiên, 1 giờ, v.v.):
Khối lượng giao dịch (trading volume) là một yếu tố quan trọng không thể thiếu trong bất kỳ chiến lược giao dịch nào, đặc biệt là trong lĩnh vực quant trading. Khối lượng giao dịch giúp các nhà đầu tư đánh giá sự quan tâm và hành vi của thị trường đối với một tài sản, từ đó đưa ra quyết định chính xác về thời điểm tham gia và thoái lui. Đặc biệt tại thị trường phái sinh Việt Nam, nơi sự phát triển còn khá mới mẻ nhưng đang có tốc độ tăng trưởng mạnh mẽ, việc hiểu rõ vai trò và tác động của khối lượng giao dịch là yếu tố không thể thiếu đối với các nhà đầu tư áp dụng chiến lược quant.
Swing trading là kiểu giao dịch dựa trên việc tận dụng những nhịp dao động của thị trường, thường kéo dài vài phiên đến vài tuần. Đây không phải câu chuyện “ngồi canh từng phút từng giây”, mà là cách tiếp cận trung hạn, bám nhịp giá và nhịp dòng tiền. Khi áp dụng vào thị trường Việt Nam, swing trading lại càng phù hợp hơn, đơn giản vì VN-Index và nhóm VN30 luôn tồn tại những dao động vừa đủ lớn để trader có thể tận dụng, nhưng không quá nhiễu như các thị trường crypto hay forex.
Mô hình Markowitz, hay còn gọi là Mô hình Trung Bình - Phương Sai (Mean-Variance Model), là nền tảng của lý thuyết danh mục đầu tư hiện đại và đã được phát triển bởi Harry Markowitz vào năm 1952. Mô hình này được xem là một trong những công cụ mạnh mẽ giúp các nhà đầu tư xây dựng danh mục đầu tư tối ưu, kết hợp giữa các tài sản khác nhau sao cho tối đa hóa lợi nhuận kỳ vọng trong khi giảm thiểu rủi ro. Cốt lõi của mô hình là phân tích sự kết hợp giữa các tài sản dựa trên lợi nhuận kỳ vọng và độ biến động (rủi ro) của chúng.
Thống kê Bayes xuất phát từ một nguyên tắc rất tự nhiên nhưng lại có sức mạnh đặc biệt lớn trong các hệ thống phức tạp như thị trường tài chính: niềm tin của chúng ta về một hiện tượng không cố định, mà thay đổi khi có thêm thông tin mới. Trong bối cảnh tài chính, điều này đặc biệt quan trọng vì thị trường không có trạng thái cân bằng lâu dài; thay vào đó, nó liên tục chuyển đổi qua nhiều chế độ (regime), thường xuyên chịu tác động bởi tin tức, dòng tiền, tâm lý nhà đầu tư và các yếu tố bất ngờ khác. Định lý Bayes cho phép chúng ta mô hình hóa sự thay đổi này thông qua ba thành phần cơ bản: “prior” – niềm tin ban đầu, “likelihood” – khả năng bằng chứng xuất hiện nếu giả thuyết đúng, và “posterior” – niềm tin đã được cập nhật.
Được nghiên cứu và phát triển bởi các chuyên gia từ QMTrade và cộng đồng nhà đầu tư chuyên nghiệp.
Truy cập ngay!