Trang chủBlogChiến Lược Nâng CaoTái cân bằng theo lịch và tái cân bằng theo ngưỡng khác nhau thế nào?
Tái cân bằng theo lịch và tái cân bằng theo ngưỡng khác nhau thế nào?
Chiến Lược Nâng Cao

Tái cân bằng theo lịch và tái cân bằng theo ngưỡng khác nhau thế nào?

Tái cân bằng theo lịch và tái cân bằng theo ngưỡng

Ngọc Hải LươngNgọc Hải Lương
14/8/2026
14 phút phút đọc
23 lượt xem

Một danh mục được xây với tỷ trọng mục tiêu gần như chắc chắn sẽ không giữ nguyên tỷ trọng đó theo thời gian. Giả sử ban đầu phân bổ 30% vào nhóm ngân hàng, 25% công nghệ, 20% tiêu dùng và 25% tiền mặt. Nếu ngân hàng tăng mạnh trong vài tháng còn những nhóm khác đi ngang, tỷ trọng ngân hàng có thể tự tăng từ 30% lên 38–40% dù không mua thêm cổ phiếu nào. Danh mục lúc này đã khác đáng kể so với thiết kế ban đầu: mức độ phụ thuộc vào một nhóm ngành cao hơn, Beta có thể thay đổi và một nhịp đảo chiều của nhóm dẫn dắt sẽ tác động tới portfolio mạnh hơn trước. Rebalancing là quá trình đưa danh mục trở lại gần với cấu trúc rủi ro mục tiêu. Hai cách phổ biến nhất là tái cân bằng theo lịch — Calendar Rebalancing — và tái cân bằng khi tỷ trọng lệch đủ xa khỏi mục tiêu — Threshold Rebalancing. Khác biệt tưởng nhỏ này có thể tạo ra turnover, transaction cost và hành vi danh mục rất khác nhau.

94291569-6ad2-4285-a88d-106f72483918.png

1. Calendar Rebalancing đơn giản và dễ vận hành, còn Threshold Rebalancing chỉ giao dịch khi danh mục thực sự lệch đủ lớn

Calendar Rebalancing đặt trước thời điểm kiểm tra danh mục, chẳng hạn cuối mỗi tháng, cuối quý hoặc sáu tháng một lần. Đến đúng ngày đó, portfolio được đưa trở về target weights bất kể tỷ trọng hiện tại lệch nhiều hay ít. Giả sử portfolio mục tiêu là:

Ngân hàng      30%
Công nghệ      25%
Tiêu dùng      20%
Tiền mặt       25%

Cuối tháng danh mục trở thành:

Ngân hàng      34%
Công nghệ      24%
Tiêu dùng      19%
Tiền mặt       23%

Nếu rule là monthly rebalance, hệ thống sẽ bán bớt ngân hàng và điều chỉnh các thành phần còn lại để quay về 30/25/20/25. Cách này rất dễ backtest, dễ giải thích cho người vận hành và phù hợp với những strategy mà signal cũng được cập nhật theo chu kỳ cố định, chẳng hạn factor portfolio được ranking lại mỗi tháng hoặc danh mục fundamental được xem xét sau mỗi kỳ báo cáo.

Code mô phỏng rất đơn giản:

rebalance_dates = prices.resample("ME").last().index

for date in rebalance_dates:
    portfolio.rebalance(
        target_weights={
            "BANK": 0.30,
            "TECH": 0.25,
            "CONSUMER": 0.20,
            "CASH": 0.25
        }
    )

Nhưng nhược điểm cũng nằm ngay trong sự đơn giản đó. Nếu danh mục tháng này chỉ lệch 0.5–1% so với target, vẫn phải giao dịch. Một phần turnover không xuất phát từ thay đổi đáng kể về risk mà chỉ do lịch đã đến ngày rebalance. Ngược lại, nếu một nhóm cổ phiếu tăng rất mạnh chỉ vài ngày sau ngày rebalance và tỷ trọng từ 30% lên 40%, portfolio vẫn phải chờ gần một tháng mới được điều chỉnh nếu rule chỉ cho phép rebalance cuối tháng.

Threshold Rebalancing xử lý vấn đề theo cách khác. Thay vì hỏi “hôm nay có phải ngày rebalance không?”, nó hỏi “portfolio đã lệch đủ xa để đáng giao dịch chưa?”

Ví dụ đặt target ngân hàng 30% và band ±5 điểm phần trăm:

Target       30%
Lower Band   25%
Upper Band   35%

Khi tỷ trọng vẫn nằm trong khoảng 25–35%, không làm gì. Chỉ khi:

Bank Weight > 35%

hoặc:

Bank Weight < 25%

thì rebalance mới được kích hoạt.

Có thể viết:

target = 0.30
band = 0.05

if bank_weight > target + band:
    rebalance()

elif bank_weight < target - band:
    rebalance()

Ngoài absolute band còn có relative band. Ví dụ threshold bằng 20% target. Với target 30%:

Lower = 30% × (1 - 20%) = 24%
Upper = 30% × (1 + 20%) = 36%

Relative band thường hợp lý hơn khi portfolio có nhiều vị thế với target weight rất khác nhau. Một band cố định ±5 điểm phần trăm là khá rộng đối với position mục tiêu 10% nhưng tương đối hẹp đối với position mục tiêu 50%.

Điểm đáng chú ý là Threshold Rebalancing thường tạo ra một vùng “không hành động”. Giá có thể dao động mà portfolio không cần liên tục mua bán. Điều này giúp giảm turnover và transaction cost, đặc biệt với danh mục nhiều cổ phiếu hoặc những mã thanh khoản không quá lớn.

Nhưng threshold càng hẹp thì portfolio càng gần target và giao dịch càng nhiều. Threshold càng rộng thì phí giảm nhưng portfolio có thể drift rất xa khỏi risk allocation ban đầu. Vì vậy không tồn tại một mức 5%, 10% hay 20% đúng cho mọi danh mục. Band phải được nhìn cùng với volatility, liquidity, transaction cost và mục tiêu quản trị rủi ro.

Một ví dụ minh họa khá rõ. Giả sử cổ phiếu A được target 20%.

Nếu band ±2 điểm phần trăm:

18% – 22%

một biến động giá tương đối nhỏ đã có thể kích hoạt giao dịch.

Nếu band ±8 điểm:

12% – 28%

turnover sẽ thấp hơn nhiều nhưng đến khi A lên 27%, portfolio đã phụ thuộc vào A lớn hơn đáng kể so với cấu trúc ban đầu.

Calendar Rebalancing vì vậy kiểm soát thời gian, còn Threshold Rebalancing kiểm soát độ lệch của portfolio.

2. Trên thị trường cổ phiếu, hai cơ chế này còn tạo ra exposure khác nhau với Momentum, Mean Reversion và chi phí giao dịch

Điểm thú vị của rebalancing là nó không chỉ là một thao tác quản trị danh mục. Cách rebalance còn âm thầm tạo ra một trading behavior.

Giả sử một cổ phiếu đang tăng liên tục. Target ban đầu là 10%, sau vài tháng cổ phiếu tăng mạnh khiến weight lên 15%. Rebalance về 10% đồng nghĩa bán bớt một tài sản vừa tăng mạnh. Ngược lại, nếu một cổ phiếu giảm từ weight 10% xuống 6%, rebalance sẽ mua thêm để đưa nó trở lại 10%.

Về bản chất, fixed-weight rebalancing chứa một thành phần:

Sell relative winners → Buy relative losers.

Nó có xu hướng gần với mean-reversion.

Nếu thị trường sideway và các asset luân phiên outperform, hành vi này có thể hoạt động khá tốt. Một ngành tăng mạnh được chốt bớt, ngành đang yếu được mua thêm; sau đó leadership đảo chiều và danh mục hưởng lợi từ việc liên tục đưa tỷ trọng trở lại mức cân bằng.

Nhưng trong một bull trend rất mạnh, câu chuyện có thể khác. Giả sử nhóm công nghệ là leadership kéo dài 12 tháng. Calendar Rebalancing hàng tháng liên tục bán bớt nhóm đang dẫn dắt chỉ vì nó tăng nhanh hơn các nhóm khác. Portfolio có thể giảm exposure với đúng nơi đang tạo alpha.

Ví dụ:

Target TECH = 25%

Tháng 1   25%
Tháng 2   29% → bán về 25%
Tháng 3   30% → bán về 25%
Tháng 4   31% → bán về 25%

Nếu trend tiếp tục, strategy đang liên tục trim winner.

Threshold rộng hơn cho phép winner chạy lâu hơn:

Target = 25%
Band   = 20% relative

Range = 20% – 30%

TECH có thể tăng từ 25 lên 27 rồi 29% mà chưa bị bán. Chỉ khi vượt 30% mới kích hoạt rebalance. Vì vậy threshold rebalancing có thể giữ được nhiều momentum exposure hơn calendar rebalancing quá thường xuyên.

Ở thị trường Việt Nam, điểm này đặc biệt thực tế vì leadership có thể tập trung mạnh theo từng giai đoạn: ngân hàng, chứng khoán, bất động sản, thép, công nghệ hoặc một nhóm vốn hóa lớn có thể dẫn dắt thị trường trong nhiều tháng. Nếu portfolio rebalance quá cứng về equal-weight mỗi tuần, strategy có thể liên tục bán những cổ phiếu đang có Relative Strength cao và mua lại những mã đang mất leadership.

Điều đó không đồng nghĩa không nên rebalance. Vấn đề nằm ở việc mục tiêu của portfolio là gì. Nếu chiến lược được thiết kế để duy trì risk parity hoặc sector exposure cố định thì việc trim winner là đúng mandate. Nếu strategy được thiết kế để khai thác momentum, việc kéo mọi position về target quá nhanh có thể triệt tiêu chính alpha mà model đang cố giữ.

Một cách thực tế hơn là kết hợp target weight với signal. Ví dụ target ban đầu được tạo từ momentum score:

target_weight = momentum_score / momentum_score.sum()

Sau đó chỉ rebalance nếu:

abs(current_weight - target_weight) > threshold

Như vậy portfolio không cố giữ một target cố định vĩnh viễn. Target thay đổi theo signal, còn threshold quyết định khi nào sự khác biệt đủ lớn để đáng giao dịch.

Transaction cost cũng làm hai phương pháp khác nhau rõ rệt. Giả sử một portfolio 30 cổ phiếu rebalance hàng tuần. Mỗi tuần nhiều position chỉ thay đổi:

4.8% → 5.0%
5.1% → 5.0%
4.7% → 5.0%

Backtest không có phí sẽ xem đây là những điều chỉnh gần như vô hại. Nhưng ngoài thực tế, mỗi lần rebalance có commission, spread, slippage và market impact. Turnover cao có thể biến một strategy có gross Sharpe tốt thành net Sharpe rất bình thường.

Có thể định nghĩa portfolio turnover:

turnover = (
    target_weights - current_weights
).abs().sum() / 2

Giả sử:

Monthly Rebalance
Annual Turnover = 220%

Threshold Rebalance
Annual Turnover = 95%

Nếu gross return tương đương nhau, phương pháp thứ hai có thể tạo net return tốt hơn đáng kể chỉ nhờ giao dịch ít hơn.

Thanh khoản cũng cần được đưa vào. Việc rebalance một cổ phiếu vốn hóa lớn với turnover cao khác hoàn toàn rebalance một mid-cap có khối lượng giao dịch thấp. Một rule tốt trên paper nhưng cứ đến ngày rebalance phải bán một lượng lớn so với Average Daily Value có thể tạo slippage lớn hơn rất nhiều giả định backtest.

Có thể thêm liquidity constraint:

max_trade_value = 0.05 * average_daily_value

trade_value = min(
    desired_trade_value,
    max_trade_value
)

Tức một phiên chỉ giao dịch tối đa 5% ADV theo giả định nghiên cứu. Phần còn lại được spread qua nhiều ngày.

Calendar Rebalancing cũng có một rủi ro khá thực tế: mọi giao dịch tập trung vào cùng một ngày. Nếu strategy rebalance cuối tháng, lượng mua bán có thể khá lớn đúng thời điểm thị trường biến động mạnh hoặc liquidity không thuận lợi. Threshold Rebalancing phân tán giao dịch tự nhiên hơn vì từng asset vượt band ở những thời điểm khác nhau.

Ngược lại, threshold có thể tạo ra số lượng trade bất ngờ trong một cú shock thị trường. Khi nhiều position đồng thời vượt lower band, portfolio có thể kích hoạt hàng loạt lệnh mua đúng lúc volatility đang tăng mạnh. Vì vậy threshold không đồng nghĩa tự động an toàn hơn.

Một rule đơn giản như:

if weight < lower_band:
    buy_to_target()

có thể liên tục mua thêm một cổ phiếu đang giảm sâu vì fundamental đã thay đổi. Rebalancing không được phép thay thế signal research. Nếu thesis của cổ phiếu đã mất, việc “mua vì weight giảm” có thể chỉ là averaging down được tự động hóa.

Với portfolio cổ phiếu, có thể tách rõ hai layer:

Layer 1: Alpha / Selection Model
Cổ phiếu nào còn đủ điều kiện nắm giữ?

Layer 2: Rebalancing Engine
Nắm bao nhiêu và khi nào cần điều chỉnh?

Nếu một cổ phiếu không còn qua Layer 1, không nên tiếp tục mua chỉ vì tỷ trọng nằm dưới target.

3. Một cách áp dụng thực tế là Calendar Check + Threshold Trigger thay vì chọn tuyệt đối một trong hai

Trong thực tế không nhất thiết phải chọn Calendar hoặc Threshold một cách tuyệt đối. Một thiết kế khá hiệu quả là kiểm tra theo lịch nhưng chỉ giao dịch khi vượt ngưỡng.

Ví dụ mỗi cuối tuần hoặc cuối tháng tính lại signal và target weight:

Ngày kiểm tra: cuối tháng
Threshold: ±20% so với target

Nếu target FPT là 10% và current weight 10.7%:

Không giao dịch

Nếu current weight lên 13%:

Rebalance

Portfolio vẫn có một lịch vận hành rõ ràng nhưng tránh những trade rất nhỏ.

Pseudo-code:

for date in monthly_dates:

    target_weights = calculate_target_weights(
        data.loc[:date]
    )

    current_weights = get_current_weights()

    for ticker in target_weights.index:

        target = target_weights[ticker]
        current = current_weights[ticker]

        lower = target * 0.80
        upper = target * 1.20

        if current < lower or current > upper:
            execute_rebalance(
                ticker=ticker,
                target_weight=target
            )

Có thể thêm một minimum trade size:

trade_weight = abs(
    target_weight - current_weight
)

if trade_weight < 0.01:
    skip_trade()

Tức chênh lệch nhỏ hơn 1% portfolio thì bỏ qua. Mục tiêu là không tiêu phí transaction cost chỉ để làm portfolio đẹp hơn trên spreadsheet.

Một bước nữa là đặt threshold theo volatility. Một cổ phiếu biến động thấp có thể dùng band hẹp, trong khi cổ phiếu biến động mạnh dùng band rộng hơn:

band = k * volatility

Ví dụ:

Stock A volatility thấp
Band = ±10%

Stock B volatility cao
Band = ±25%

Cách này tránh việc một cổ phiếu biến động cao liên tục vượt band chỉ vì noise thông thường.

Cũng có thể thiết kế threshold dựa trên transaction cost. Rebalance chỉ xảy ra khi lợi ích kỳ vọng từ việc đưa portfolio về target lớn hơn chi phí giao dịch:

Expected Risk Benefit
>
Commission + Spread + Slippage + Market Impact

Đây là cách nhìn thực tế hơn nhiều so với việc cố giữ weight chính xác đến hai chữ số thập phân.

Khi backtest hai cơ chế, không nên chỉ so CAGR và Sharpe. Ít nhất nên nhìn đồng thời:

CAGR
Sharpe
Max Drawdown
Annual Turnover
Transaction Cost
Tracking Error với Target
Average Weight Drift
Number of Rebalances
Worst Concentration

Giả sử kết quả minh họa:

                         Monthly       Threshold
CAGR                      16.2%          16.0%
Sharpe                     1.18           1.25
Max Drawdown             -19.4%         -18.7%
Annual Turnover           210%            92%
Avg Weight Drift           1.2%           2.8%
Rebalances/year             12              5

Nếu chỉ nhìn CAGR, Monthly tốt hơn 0.2%. Nhưng sau transaction cost, Threshold có thể vượt lên vì turnover thấp hơn hơn một nửa. Đổi lại, portfolio chấp nhận drift khỏi target lớn hơn.

Đó mới là trade-off thật sự của rebalancing: precision versus cost.

Backtest cũng nên kiểm tra nhiều market regime. Một rule có thể hoạt động khác nhau trong trend và sideway:

Bull Trend
Sideway
Bear Market
High Volatility
Low Volatility

Ví dụ monthly equal-weight rebalancing có thể tốt trong sideway vì liên tục chốt winner và mua loser, nhưng underperform trong một trend kéo dài. Threshold rộng có thể giữ momentum tốt hơn trong bull market nhưng lại cho concentration cao hơn trước khi bear market xuất hiện.

Có thể chia performance:

results.groupby("regime")[
    ["return", "turnover", "drawdown"]
].mean()

Nếu một cơ chế chỉ tốt trong một regime, portfolio manager cần biết điều đó trước khi live.

Một thiết kế thực tế cho danh mục cổ phiếu định lượng có thể là:

Hàng ngày
→ Update price, risk, position

Hàng tuần
→ Kiểm tra threshold và risk limit

Hàng tháng
→ Tính lại factor score / target weights

Nếu drift nhỏ
→ Không giao dịch

Nếu drift vượt threshold
→ Rebalance

Nếu signal mất
→ Exit bất kể threshold

Như vậy rebalancing không còn là một rule độc lập mà nằm trong toàn bộ portfolio process.

Một ví dụ: strategy chọn 15 cổ phiếu có Momentum + Quality cao nhất. Mỗi đầu tháng tính ranking mới và target equal-weight khoảng 6.7% mỗi mã. Trong tháng, nếu một mã tăng mạnh khiến weight lên 8% nhưng vẫn còn signal tốt, có thể chưa cần bán. Nếu lên 10%, vượt concentration band, mới trim. Nếu Momentum và Quality score rơi khỏi universe, position được loại ở lần review tiếp theo hoặc sớm hơn tùy rule.

Thiết kế như vậy giữ được ba thứ cùng lúc: alpha signal, transaction-cost control và portfolio risk.

Calendar Rebalancing mạnh ở sự đơn giản, khả năng kiểm soát quy trình và phù hợp với strategy cập nhật định kỳ. Threshold Rebalancing mạnh ở việc giảm những giao dịch không cần thiết và phản ứng trực tiếp với portfolio drift. Calendar quá thường xuyên có thể tạo turnover lớn và liên tục bán winner. Threshold quá rộng có thể để concentration tăng quá mức hoặc vô tình mua thêm loser.

Vì vậy câu hỏi không nên chỉ là “rebalance hàng tháng hay khi lệch 5%?”. Câu hỏi đáng kiểm tra hơn là:

Portfolio được phép lệch khỏi target bao nhiêu trước khi rủi ro của việc không giao dịch lớn hơn chi phí của việc giao dịch?

Khi đưa transaction cost, liquidity, momentum, volatility và concentration vào cùng một bài toán, rebalancing mới thực sự trở thành một phần của Quant Portfolio Management thay vì chỉ là thao tác đưa các con số về đúng tỷ lệ ban đầu.