P.Thai Capital P.Thai Capital Journal

Expectancy là gì? Lợi nhuận kỳ vọng mỗi trade trong backtest

QUANT RISK METRIC · TRADE-LEVEL METRIC Kỳ vọng giao dịch Expectancy · E Loại chỉ số Trade-Level Metric Phân tích Định lượng / Backtest Áp dụng cho VN30 / Quỹ active

Expectancy là lợi nhuận kỳ vọng (expected value) trên mỗi trade. Khác với Win Rate (chỉ % thắng) hay Profit Factor (tỷ lệ tổng), Expectancy cho biết “trung bình mỗi lần vào lệnh, hệ thống kỳ vọng kiếm bao nhiêu”.

Đây là chỉ số toán học chuẩn để đánh giá xem chiến lược có positive edge không: Expectancy > 0 → có edge dương; càng cao càng tốt. Kết hợp với số trade/năm cho biết tiềm năng lợi nhuận annualized.

1. Định nghĩa & công thức

$$ E = WR \cdot \text{AvgWin} - (1 - WR) \cdot |\text{AvgLoss}| $$

Hoặc dạng R-multiple: $$ E = WR \cdot R_{win} - (1 - WR) \cdot R_{loss} $$

Annualized expected return ≈ $E \cdot$ (số trade/năm).

2. Cách tính bằng Python

import numpy as np

def expectancy(trade_pnls):
    """
    trade_pnls: array PnL từng trade (cùng đơn vị: % hoặc R)
    """
    if len(trade_pnls) == 0:
        return np.nan
    return trade_pnls.mean()

def expectancy_breakdown(trade_pnls):
    """Tách thành các thành phần để diagnose."""
    wins = trade_pnls[trade_pnls > 0]
    losses = trade_pnls[trade_pnls < 0]
    wr = len(wins) / len(trade_pnls)
    avg_win = wins.mean() if len(wins) > 0 else 0
    avg_loss = losses.mean() if len(losses) > 0 else 0
    return {
        "expectancy": trade_pnls.mean(),
        "win_rate": wr,
        "avg_win": avg_win,
        "avg_loss": avg_loss,
        "rrr": abs(avg_win / avg_loss) if avg_loss != 0 else np.nan,
    }

Code mẫu trên là khung tham khảo cho việc tự tính Kỳ vọng giao dịch. Khi tích hợp vào hệ thống production, cần thêm: validate input (NaN, length), handle edge cases (zero variance, empty series), unit test cho từng nhánh, và caching khi gọi nhiều lần trên cùng dataset.

3. Khoảng giá trị & cách diễn giải

Expectancy (% per trade) Đánh giá
< 0 Lỗ kỳ vọng — không trade
0 – 0.1% Marginal — phí có thể ăn hết
0.1 – 0.5% Khá — phù hợp chiến lược high-frequency
0.5 – 1.5% Tốt — typical swing trading
1.5 – 3% Rất tốt
> 3% Đáng nghi nếu sample lớn

4. Giá trị điển hình theo loại tài sản / chiến lược

Loại chiến lược Expectancy/trade điển hình
HFT market making 0.05 – 0.15%
Mean reversion daily VN30 0.3 – 0.8%
Swing breakout VN 0.8 – 2%
Trend following multi-month 2 – 5%
Pairs trading 0.5 – 1.5%

Lưu ý: bảng giá trị điển hình mang tính tham khảo, dựa trên quy ước cộng đồng quant và sample lịch sử công khai. Giá trị thực tế phụ thuộc dataset, period, và phương pháp tính cụ thể.

5. Bốn cạm bẫy phổ biến khi sử dụng

  1. Sample size: Expectancy cần ≥ 100 trade để stable. < 30 trade = không có ý nghĩa.

  2. Outlier dominance: 1 trade lãi to inflate Expectancy. Báo cáo cùng median trade.

  3. Không adjust phí: Expectancy gross != Expectancy net of cost.

  4. Không capture variance: Expectancy cùng số trade khác nhau về risk profile (Sharpe khác).

6. Khi nào chỉ số này gây hiểu lầm

Expectancy misleading khi: (1) sample nhỏ; (2) bị outlier dominate; (3) không trừ phí; (4) chiến lược position sizing variable — cần tính theo R-multiple, không phải %.

7. Đặc thù khi áp dụng cho TTCK Việt Nam

Trên VN, phí round-trip ~0.3%. Chiến lược cần Expectancy net ≥ 0.3-0.5%/trade để có ý nghĩa kinh tế. Nếu Expectancy gross 0.5% nhưng phí 0.3% → net chỉ 0.2% — biên an toàn quá mỏng. Tốt nhất build chiến lược target Expectancy gross ≥ 1% để có buffer cho slippage và cost overruns.

8. Các chỉ số liên quan trong cùng hệ thống

Kỳ vọng giao dịch (E) không nên đọc đơn lẻ. Trong báo cáo rủi ro chuyên nghiệp, nó luôn được trình bày cùng các chỉ số bổ sung để cross-check và tránh blindspot. Các chỉ số liên quan đã trình bày trong chuỗi bài này:

9. Tham khảo học thuật

10. Câu hỏi thường gặp

Kỳ vọng giao dịch bao nhiêu là tốt? Tham khảo bảng diễn giải ở mục 3. Không có ngưỡng “tốt tuyệt đối” — phụ thuộc loại chiến lược, sample size, và benchmark tham chiếu.

Làm sao tự tính Kỳ vọng giao dịch trên danh mục cá nhân? Sử dụng code Python mẫu ở mục 2. Input cần thiết: chuỗi returns hàng phiên (daily) của danh mục, tối thiểu 252 phiên (1 năm) để có ý nghĩa thống kê.

Kỳ vọng giao dịch có khác giữa thị trường VN và quốc tế không? Có. Đặc thù VN (biên độ ±7% HOSE, T+2.5, cấm short cơ sở) ảnh hưởng đến cách tính và diễn giải. Chi tiết ở mục 7.


Ghi chú phương pháp: Bài viết tổng hợp định nghĩa, công thức, và quy ước cộng đồng quant cho chỉ số Kỳ vọng giao dịch (E). Các giá trị điển hình mang tính tham khảo, không phải khuyến nghị đầu tư. Người đọc tự kiểm chứng trên dữ liệu của mình trước khi sử dụng cho quyết định vốn thật.


Miễn trừ trách nhiệm: Nội dung mang tính phân tích định lượng, không phải khuyến nghị đầu tư. Nhà đầu tư tự chịu trách nhiệm với quyết định của mình.

Miễn trừ trách nhiệm: Nội dung là phân tích định lượng dựa trên dữ liệu lịch sử, mang tính tham khảo. KHÔNG phải khuyến nghị mua/bán. Giao dịch có rủi ro, kết quả backtest không đảm bảo hiệu suất tương lai. Nhà đầu tư tự chịu trách nhiệm cho quyết định của mình.