P.Thai Capital P.Thai Capital Journal

R-multiple là gì? Đo lợi nhuận theo bội số rủi ro ban đầu

QUANT RISK METRIC · TRADE-LEVEL METRIC Bội số R R-multiple · R Loại chỉ số Trade-Level Metric Phân tích Định lượng / Backtest Áp dụng cho VN30 / Quỹ active

R-multiple — concept của Van Tharp — đo lợi nhuận của 1 trade theo bội số rủi ro ban đầu (Initial Risk = R). 1R = khoảng cách từ entry đến stop loss × position size. Trade lãi 3R nghĩa kiếm 3 lần khoản risk ban đầu; trade lỗ 1R nghĩa stop-out đúng theo plan.

Ưu điểm: chuẩn hoá performance qua các trade với position size khác nhau. Một trade nhỏ lãi 3R và 1 trade lớn lãi 3R đều “tương đương” về mặt skill — chỉ khác về scale. R-distribution của 1 chiến lược cho biết shape của edge: nhiều R nhỏ (mean reversion) vs ít R lớn (trend following).

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

$$ R_i = \frac{P_i}{|InitialRisk_i|} $$

Với $P_i$ = profit/loss của trade $i$ (cùng đơn vị tiền), $InitialRisk_i$ = stop-loss distance × shares.

Expectancy theo R: $E_R = WR \cdot \text{AvgWinR} - (1-WR) \cdot \text{AvgLossR}$.

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

import numpy as np

def r_multiples(trade_pnls, initial_risks):
    """
    trade_pnls: PnL từng trade (cùng đơn vị, vd VND)
    initial_risks: stop-loss risk ban đầu mỗi trade (cùng đơn vị)
    """
    return np.array(trade_pnls) / np.abs(initial_risks)

def r_expectancy(r_values):
    """Expected R per trade."""
    return np.mean(r_values)

def r_distribution_summary(r_values):
    """Phân bố R."""
    return {
        "mean_r": np.mean(r_values),
        "median_r": np.median(r_values),
        "max_r": np.max(r_values),
        "min_r": np.min(r_values),
        "pct_winners": np.mean(r_values > 0),
    }

Code mẫu trên là khung tham khảo cho việc tự tính Bội số R. 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

R-Expectancy Đánh giá
< 0 Negative edge — bỏ chiến lược
0 – 0.2R Marginal — phí dễ ăn hết
0.2 – 0.5R Acceptable
0.5 – 1R Tốt — typical swing strategy
1 – 2R Rất tốt
> 2R Đá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

Chiến lược R-Expectancy điển hình
Scalping HFT 0.05 – 0.15R
Mean reversion swing 0.3 – 0.6R
Breakout swing 0.5 – 1R
Trend following CTA 0.5 – 1.5R
Long-tail strategies (options) 1 – 3R (low WR)

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. Initial Risk phải define rõ và stick: nếu di chuyển stop loss mid-trade, R bị méo. Quy ước: R = stop ban đầu, không phải stop tại exit.

  2. Position sizing đóng vai trò kép: R-multiple normalize size, nhưng size impact tâm lý và execution khác nhau.

  3. Sample mạnh: cần ≥ 50 trade để R-distribution có ý nghĩa.

  4. Slippage không cố định: R thực tế có thể vượt 1R nếu gap qua stop (limit-down VN).

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

R-multiple misleading khi: (1) chiến lược không có stop loss rõ (DCA, average down) → khó define 1R; (2) gap risk lớn (limit-down) → realized R lỗ vượt -1R; (3) sample nhỏ; (4) so sánh giữa các chiến lược với R-definition khác nhau.

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

Tại VN, biên độ ±7% HOSE limit gap risk trong 1 phiên ở -7%, nhưng multi-day gap (limit-down clusters) có thể tạo loss vượt nhiều lần 1R nếu position lớn. Khi backtest VN30, nên simulate worst-case slippage tại 1.5R cho gap event. Trader retail thường set 1R = 1-2% capital — cần stick với rule này để R-multiple có ý nghĩa.

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

Bội số R (R) 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

Bội số R 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 Bội số R 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ê.

Bội số R 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ố Bội số R (R). 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.