Skip to content

The Adaptive Markets Hypothesis (AMH)

Authors: Andrew W. Lo (2004) Source: Journal of Portfolio Management Tag: moi:2026-05-16 #market-efficiency #behavioral #regime #evolutionary

Ý tưởng cốt lõi

Andrew Lo đề xuất Adaptive Markets Hypothesis (AMH) như một sự dung hòa giữa hai phe đối lập: Efficient Market Hypothesis của Fama (thị trường luôn hiệu quả, không thể có alpha bền vững) và Behavioral Finance (con người mắc lỗi nhận thức có hệ thống, do đó thị trường thường xuyên định giá sai). Lo cho rằng cả hai đều đúng một phần — và sai một phần.

Luận điểm trung tâm: thị trường không phải lúc nào cũng hiệu quả; tính hiệu quả là một biến số phụ thuộc vào tỷ lệ thắng-thua của các "loài" trader trong "hệ sinh thái" tài chính. Khi một nhóm market participant thống trị (ví dụ: market maker, value investor, momentum trader), thị trường thể hiện một tập hợp đặc tính riêng. Khi cấu trúc participant thay đổi (vì biến động kinh tế, công nghệ, hay quy định), các pattern cũ biến mất và pattern mới xuất hiện.

Năm tiên đề của AMH:

  1. Con người hành động vì lợi ích cá nhân.
  2. Con người mắc lỗi.
  3. Con người học hỏi và thích nghi.
  4. Cạnh tranh thúc đẩy thích nghi và đổi mới.
  5. Chọn lọc tự nhiên định hình hệ sinh thái thị trường.

Hệ quả thực tế: không có chiến lược nào hoạt động vĩnh viễn. Chiến lược có alpha sẽ thu hút vốn → bị sao chép → alpha tiêu tan → bị bỏ rơi → một thế hệ sau có thể lại có hiệu quả khi cấu trúc thị trường thay đổi. Đây là cơ chế evolutionary cycle.

So với Lo-MacKinlay 1988 (random walk bị bác bỏ), AMH là bước phát triển thứ hai: không chỉ thị trường "có nhớ", mà bản chất của trí nhớ và biến động đó thay đổi theo thời gian.

Ứng dụng giao dịch chính

AMH có 3 hàm ý thực hành rất rõ ràng:

  1. Multi-strategy là bắt buộc: portfolio không nên dựa vào một edge duy nhất (ví dụ chỉ trend-following hoặc chỉ mean-reversion). Tốt nhất là vận hành 3-5 chiến lược ít tương quan, vì khi regime thay đổi sẽ có chiến lược ngấm đòn còn chiến lược khác bùng nổ.

  2. Regime detection thay vì backtest tuyến tính: backtest 20 năm không có ý nghĩa nếu cấu trúc thị trường đã thay đổi (HFT 2010, MIFID II 2018, T+2 settlement, decimal pricing...). Nên đánh giá strategy trên các subsample của các regime khác nhau (high vol vs low vol, trending vs ranging, high correlation vs low correlation) và yêu cầu Sharpe positive trên ÍT NHẤT 4/5 regime.

  3. Decay rate của alpha cần được mô hình hóa: nếu một signal có Sharpe 2.0 backtest 5 năm gần nhất, AMH dự báo Sharpe live sẽ giảm dần — cần plan để rotate strategy khi performance trượt qua threshold (ví dụ rolling Sharpe 6 tháng < 0).

Cụ thể: theo dõi 3 chỉ báo "sức khỏe" của một chiến lược — (a) IR rolling 6 tháng, (b) hit rate so với baseline, (c) tỷ lệ tham gia (số lần signal kích hoạt). Khi cả ba cùng suy giảm trong 3 tháng → strategy đang bước vào pha "fading edge".

Áp dụng đa thị trường

VN30F (Hợp đồng tương lai chỉ số Việt Nam)

  • Sản phẩm trẻ (2017) — microstructure thay đổi liên tục — minh chứng sống động cho AMH.
  • 4 regime: A (low vol + trend), B (low vol + range), C (high vol + trend), D (high vol + range). Classifier dùng ADX(14) + GARCH forecast vol.
  • "Regime shift policy" trên VN: thay đổi margin, T+ rule, ban short — rủi ro regime mà mô hình kỹ thuật không bắt được. Cần dashboard manual theo dõi tin chính sách.
  • Strategy rotation: review weight mỗi quý theo rolling 6m IR; strategy IR < 0 trong 3 quý liên tiếp → tạm tắt.

US equity futures (ES, NQ, RTY)

  • US equity là dataset chứng minh AMH rõ nhất: mỗi thập kỷ một regime cấu trúc khác.
    • 1990s: stock pickers thắng (low correlation).
    • 2000-2010: macro hedge fund thống trị (post-dotcom, GFC).
    • 2010-2020: passive index + factor tilt + risk parity.
    • 2020+: vol selling, options-heavy retail, 0DTE dominance.
  • Hệ quả: backtest 30-year mean-reversion strategy có Sharpe 1.5 in-sample thường live ra 0.3 vì cấu trúc đã thay đổi. Phải subsample test theo decade.
  • 0DTE effect 2023-2025: là regime shift gần nhất — intraday vol pattern khác hẳn pre-2022. Bất kỳ strategy intraday US equity nào fit từ data pre-2022 cần re-validate.

Crypto spot

  • Crypto là thị trường AMH nhanh nhất — regime shift xảy ra mỗi 12-18 tháng:
    • 2017: ICO bubble.
    • 2020-2021: DeFi summer + retail FOMO.
    • 2022: FTX collapse + structural deleveraging.
    • 2023-2024: ETF approval + institutional inflow.
  • Strategy decay rate cực nhanh: meme coin momentum 2021 hoàn toàn chết 2022; basis trade BTC-CME 2020 funding > 50% APR → 2023 chỉ còn 5-10%.
  • Implementation: review entire strategy pool mỗi quý; allocate 20-25% capital cho thí nghiệm (cao hơn equity vì regime mới đến nhanh).

Crypto perpetual futures

  • Perp market thậm chí thay đổi nhanh hơn spot — funding rate dynamics phụ thuộc cấu trúc trader.
  • 2021: retail leverage cao → funding luôn positive → carry short perp / long spot là printer.
  • 2023+: structure cân bằng hơn (prop trader nhiều), funding mean-revert, basis trade Sharpe giảm từ 3 xuống ~ 1.
  • AMH approach: theo dõi average funding rate cycle 90d + leverage ratio (OI/marketcap) — khi cả hai chạm extreme thì regime sắp đổi.

Cân nhắc cross-market chung

  • Diversify across "regime decay rates": equity macro regime ~ 10 năm, FX/bond ~ 5 năm, crypto ~ 1-2 năm. Portfolio nên có exposure các horizon decay khác nhau.
  • Reserve thí nghiệm tăng dần theo decay rate: 5% cho equity strategy, 15% cho crypto.
  • Kill switch quantitative: rolling Sharpe 6m < 0 + hit rate < 50% + participation giảm 50% → freeze strategy. Đừng "average down" trên strategy đã decay.

Minh họa Python

python
import numpy as np
import pandas as pd

def adaptive_regime_classifier(price: pd.Series,
                               returns: pd.Series,
                               adx_window: int = 14,
                               vol_window: int = 20,
                               vol_threshold_pct: float = 0.70) -> pd.Series:
    """
    Phân loại regime cho VN30F theo khung AMH:
    A = low vol, trend
    B = low vol, range
    C = high vol, trend
    D = high vol, range
    """
    # ADX simplified — directional movement strength
    high = price.rolling(2).max()
    low = price.rolling(2).min()
    tr = (high - low).abs()
    atr = tr.rolling(adx_window).mean()
    # Trend strength = lợi suất tuyệt đối tích lũy / range tích lũy
    cumret = returns.rolling(adx_window).sum().abs()
    cumrange = atr.rolling(adx_window).sum() / price
    trend_strength = cumret / cumrange.replace(0, np.nan)

    # Volatility realized 20 phiên
    rv = returns.rolling(vol_window).std() * np.sqrt(252)
    vol_high_threshold = rv.expanding(min_periods=252).quantile(vol_threshold_pct)
    trend_high_threshold = trend_strength.expanding(min_periods=252).quantile(vol_threshold_pct)

    high_vol = rv > vol_high_threshold
    trending = trend_strength > trend_high_threshold

    regime = pd.Series(index=price.index, dtype='object')
    regime[(~high_vol) & trending] = 'A_lowvol_trend'
    regime[(~high_vol) & (~trending)] = 'B_lowvol_range'
    regime[high_vol & trending] = 'C_highvol_trend'
    regime[high_vol & (~trending)] = 'D_highvol_range'
    return regime


def strategy_health_check(strategy_pnl: pd.Series,
                          window_days: int = 126) -> pd.DataFrame:
    """
    Theo dõi 'sức khỏe' chiến lược theo tinh thần AMH.
    """
    rolling_sharpe = (strategy_pnl.rolling(window_days).mean() /
                      strategy_pnl.rolling(window_days).std() * np.sqrt(252))
    hit_rate = (strategy_pnl > 0).rolling(window_days).mean()
    participation = (strategy_pnl != 0).rolling(window_days).mean()

    health = pd.DataFrame({
        'rolling_sharpe_6m': rolling_sharpe,
        'hit_rate_6m': hit_rate,
        'participation_6m': participation
    })
    # Cảnh báo: cả 3 giảm trong 3 tháng cuối
    health['warning'] = ((health.diff(63) < 0).all(axis=1)).astype(int)
    return health

Powered by dautu.tech