Đầu tư Cổ phiếu · Phần 25 — Market regime và phân tích đa khung thời gian
Nhận diện trend, range, volatility và breadth; phân vai cho từng timeframe; xây regime dashboard và tránh đổi khung thời gian để hợp thức hóa một lệnh sai.
Cùng một breakout, cùng một trigger và cùng stop distance. Trong thị trường tăng rộng, nó tiếp diễn. Trong range hẹp, nó false break. Sau volatility shock, nó gap xuyên stop. Setup không đổi; môi trường phân phối kết quả đã đổi.
Phần 24 xây một playbook có thể kiểm chứng. Bài này thêm hai lớp mà trader cảm tính thường bỏ qua:
- Market regime: thị trường đang có xu hướng, đi ngang, yên tĩnh hay hỗn loạn?
- Multi-timeframe: khung nào quyết định bối cảnh, khung nào tạo setup, khung nào thực thi?
Đây là công cụ phân loại rủi ro, không phải máy dự báo. Regime chỉ được biết với sai số và thường rõ nhất sau khi đã diễn ra.
Lưu ý
Bài viết phục vụ giáo dục, không phải khuyến nghị giao dịch. Mọi ngưỡng chỉ là ví dụ cần được kiểm chứng. Đừng dùng leverage hoặc tăng size chỉ vì dashboard hiện màu xanh.
1. Regime không chỉ là bull và bear
Một regime hữu dụng phải liên quan đến cách play tạo/làm mất edge. Ta dùng bốn trục độc lập:
| Trục | Câu hỏi | Thước đo gợi ý |
|---|---|---|
| Trend | Giá có dịch chuyển bền theo hướng nào? | MA slope, breakout structure, directional return |
| Volatility | Biên độ bình thường hay shock? | ATR%, realized volatility, gap frequency |
| Breadth | Đà tăng/giảm rộng hay do vài mã kéo? | % cổ phiếu trên MA, advance/decline, new highs/lows |
| Correlation/liquidity | Các mã có đang trở thành một trade? | rolling correlation, dispersion, spread/turnover |
“Index trên MA200” chỉ trả lời một phần trend. Một index tăng do vài cổ phiếu vốn hóa lớn, trong khi breadth giảm và volatility tăng, khác hẳn một xu hướng tăng rộng, yên tĩnh.
Ma trận 2 × 2 tối giản
| Volatility thấp/bình thường | Volatility cao/shock | |
|---|---|---|
| Trend rõ | Trend play có thể thuận lợi; vẫn kiểm tra breadth | Giảm size/tăng chọn lọc; gap và whipsaw cao |
| Không trend | Mean-reversion/range play có thể phù hợp | Regime khó nhất; ưu tiên bảo toàn và no-trade |
Không dùng cùng một play ở cả bốn ô rồi trách “tâm lý”. Hoặc play phải có bằng chứng riêng cho từng ô, hoặc chỉ được bật trong ô đã định.
2. Định nghĩa đo được
Một dashboard nghiên cứu end-of-day có thể dùng:
TREND
index_close > MA200
MA50 > MA200
MA50 hôm nay > MA50 cách đây 20 phiên
VOLATILITY
ATR20 / close
realized_vol_20 = std(daily_return, 20) × sqrt(252)
vol_percentile = percentile rank trong lịch sử rolling 3 năm
BREADTH
pct_above_MA50 = số mã universe có close > MA50 / số mã hợp lệ
pct_new_high_20
advance_decline_ratio
LIQUIDITY/CORRELATION
median value traded 20 ngày
median pairwise correlation hoặc correlation với index
cross-sectional dispersion
Ví dụ state machine
RISK_ON:
trend_score ≥ 2/3
breadth_above_MA50 ≥ 55%
vol_percentile < 80
CAUTION:
trend chưa gãy nhưng breadth < 45%
OR vol_percentile 80–95
RISK_OFF:
index dưới MA200 và MA50 dốc xuống
OR vol_percentile > 95
UNKNOWN:
thiếu dữ liệu hoặc các tín hiệu xung đột vượt quy tắc xử lý
Các ngưỡng 55%, 80 hay 95 không phải chân lý. Điều quan trọng là UNKNOWN tồn tại; nếu mọi ngày đều bị ép thành xanh/đỏ, dashboard đang giả vờ chắc chắn.
Hysteresis chống nhấp nháy
Nếu bật risk-on khi breadth >55% và tắt ngay khi <55%, trạng thái có thể đổi liên tục quanh ngưỡng. Dùng hai ngưỡng:
CAUTION → RISK_ON khi breadth > 60% trong 3 phiên
RISK_ON → CAUTION khi breadth < 50% trong 2 phiên
Hysteresis giảm turnover nhưng tạo độ trễ. Phải test cả hai, không chỉnh cho đẹp một crash lịch sử.
3. Phân vai timeframe
Timeframe là cách lấy mẫu dữ liệu, không phải thế giới độc lập. Daily close được tạo từ intraday; weekly bar được tạo từ daily. Nếu kiểm tra quá nhiều timeframe, bạn dễ đếm cùng thông tin nhiều lần.
Một cấu trúc sạch cho swing trade:
| Vai trò | Khung mẫu | Chỉ trả lời |
|---|---|---|
| Strategic context | Weekly | Xu hướng/range lớn, vùng cấu trúc, volatility dài hơn |
| Setup & risk | Daily | Setup hợp lệ? invalidation và ATR ở đâu? |
| Execution | Intraday hoặc next open | Fill, spread, gap, order handling |
Quy tắc vàng: mỗi timeframe có một job. Weekly không được dùng để né daily stop; intraday không được dùng để phát minh thesis dài hạn.
Top-down đúng cách
1. Weekly: market/stock có nằm trong bối cảnh play cho phép?
2. Daily: setup và trigger có đúng đặc tả?
3. Execution frame: order có khớp trong tolerance?
4. Sau entry: invalidation vẫn thuộc timeframe đã thiết kế.
Lỗi “timeframe tourism”
Bạn long theo daily, giá thủng daily stop. Bạn mở weekly và nói “weekly vẫn đẹp”. Nếu weekly thesis không tồn tại trước entry với size/stop riêng, đây là thay đổi luật sau khi thua.
4. Alignment không có nghĩa mọi timeframe đều xanh
Yêu cầu monthly, weekly, daily, 4H, 1H và 15m cùng bullish thường cho tín hiệu muộn và overfit. Ta cần không xung đột trọng yếu, không cần đồng thanh tuyệt đối.
Ví dụ TPC-01:
Weekly context: close trên MA40 tuần; không ở volatility shock
Daily setup: đúng pullback continuation v0.1
Execution: next-session fill trong max_entry
Weekly chỉ gate; daily tạo tín hiệu. Không lấy weekly indicator làm thêm sáu điểm “xác nhận” nếu chúng đo cùng trend.
5. Dashboard một trang
DATE / DATA AS-OF:
MARKET STATE
Trend: Up / Down / Range / Unknown
Volatility: Low / Normal / High / Shock
Breadth: Broad / Neutral / Narrow / Capitulation
Liquidity: Normal / Thin / Impaired
Correlation: Dispersed / Rising / One-trade market
PLAY PERMISSIONS
TPC-01: ON / REDUCED / OFF
Breakout: ON / REDUCED / OFF
Mean revert: ON / REDUCED / OFF
RISK OVERLAY
Risk/trade cap:
Portfolio heat cap:
New-position cap:
Event restrictions:
EVIDENCE
Exact metrics + timestamp + data source/version
Dashboard chỉ có giá trị nếu playbook nói mỗi state làm gì. “Volatility high” mà không đổi permission, size, stop logic hoặc no-trade thì chỉ là trang trí.
6. Ví dụ vận hành ba ngày
Ngày A — trend rộng
Index > MA50 > MA200; slopes up
Breadth above MA50 = 68%
Vol percentile = 42
Correlation normal
State = RISK_ON
TPC-01 permission = ON; risk/trade cap 0,50%
Ngày B — index vẫn tăng nhưng bên trong suy yếu
Index tạo high mới
Breadth giảm 68% → 43%
New highs giảm; correlation tăng
State = CAUTION
Permission = REDUCED; risk/trade cap 0,25%; max 1 new trade
Ngày C — shock
Gap index -3%; vol percentile 98
Breadth 12%; spread/impact xấu
State = RISK_OFF/LIQUIDITY_IMPAIRED
Permission = OFF; quản lý vị thế theo contingency runbook
Ngày B cho thấy giá index đơn lẻ có thể che breadth deterioration. Ngày C cho thấy stop và correlation lịch sử không phải giới hạn lỗ.
7. Regime transition quan trọng hơn nhãn tĩnh
Một ngày RISK_ON sau sáu tháng tăng khác một ngày vừa chuyển từ shock sang recovery. Lưu cả:
current_state
previous_state
days_in_state
transition_date
confidence/unknown flags
Phân tích performance theo transition:
- Trend → caution.
- Caution → risk-off.
- Shock → recovery.
- Range → trend.
Một play có thể tốt trong steady trend nhưng tệ ở ba ngày đầu recovery dù cả hai đều được gọi “risk-on”.
8. Sizing overlay theo regime
Không tăng size chỉ vì dự báo chắc. Nếu dùng overlay, viết mapping trước:
| State | Risk/trade | Heat cap | New trades |
|---|---|---|---|
| Risk-on | 0,50% | 2,0% | 2/ngày |
| Caution | 0,25% | 1,0% | 1/ngày |
| Risk-off | 0% lệnh mới | quản trị giảm rủi ro | 0 |
| Unknown | 0–0,25% theo policy | ≤1,0% | 0–1 |
Đây chỉ là ví dụ. Backtest phải ghép overlay vào tín hiệu theo timestamp thực, gồm turnover do chuyển regime.
9. Kiểm tra dashboard trước khi dùng
Test logic
- Mọi metric có công thức và nguồn dữ liệu.
- Không dùng thành phần index/universe của tương lai.
- Dữ liệu close chỉ hành động sau khi close có sẵn.
- Corporate action được điều chỉnh nhất quán.
- Missing data không biến thành tín hiệu thuận lợi.
Test kinh tế
- State có thay đổi phân phối return/MAE/MFE của play không?
- Overlay cải thiện net result sau costs hay chỉ giảm thời gian thị trường?
- Số lần chuyển state và turnover có hợp lý?
- Hiệu quả có tồn tại ở ngưỡng lân cận?
- Có giữ được ngoài mẫu và ở thị trường khác?
Test con người
- Hai người từ cùng snapshot cho cùng state?
- Dashboard có thể hoàn thành trong thời gian cố định?
- Khi tín hiệu xung đột, policy rõ hay trader tự chọn thứ mình thích?
10. Lab thực hành
Chọn 120 ngày lịch sử bị che tương lai:
- Tự tính trend, volatility, breadth mỗi ngày.
- Gắn một trong bốn state và play permission.
- Chỉ sau khi khóa nhãn mới mở 5 ngày tiếp theo.
- Ghi return index, dispersion, số breakout thành công, MAE/MFE của play.
- Không đổi ngưỡng trong lab; mọi ý tưởng sửa vào changelog v0.2.
Mastery gate
☐ Có ít nhất 3 trục regime, không chỉ một MA
☐ Có UNKNOWN và hysteresis
☐ Mỗi timeframe chỉ có một vai trò
☐ Invalidation không đổi timeframe sau entry
☐ Dashboard map trực tiếp sang permission/risk
☐ Dùng dữ liệu point-in-time
☐ Lưu transition và days-in-state
☐ Kiểm tra sensitivity, turnover và net costs
Nguồn đọc thêm
- Packham & Woebbeking — Correlation Scenarios and Correlation Stress Testing
- So, Wong & Asai — Stress Testing Correlation Matrices for Risk Management
- CFTC — Checklist Before You Trade
Kết luận
Regime không cho bạn biết chắc ngày mai tăng hay giảm. Nó cho biết play nào được phép, rủi ro nào đang nổi lên và assumption nào có thể không còn đúng. Multi-timeframe không phải đi tìm thêm xác nhận; nó là cách tách bối cảnh, setup và execution.
Phần 26 sẽ đưa TPC-01 và regime overlay vào phòng kiểm nghiệm: dựng backtest có event timeline, bias ledger, out-of-sample, costs và tiêu chí bác bỏ.