jvinhit//lab

Search posts

Type to search across journal entries.

navigate open esc close

Đầ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:

  1. Market regime: thị trường đang có xu hướng, đi ngang, yên tĩnh hay hỗn loạn?
  2. 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ụcCâu hỏiThước đo gợi ý
TrendGiá có dịch chuyển bền theo hướng nào?MA slope, breakout structure, directional return
VolatilityBiê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/liquidityCá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ườngVolatility cao/shock
Trend rõTrend play có thể thuận lợi; vẫn kiểm tra breadthGiảm size/tăng chọn lọc; gap và whipsaw cao
Không trendMean-reversion/range play có thể phù hợpRegime 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ẫuChỉ trả lời
Strategic contextWeeklyXu hướng/range lớn, vùng cấu trúc, volatility dài hơn
Setup & riskDailySetup hợp lệ? invalidation và ATR ở đâu?
ExecutionIntraday hoặc next openFill, 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:

StateRisk/tradeHeat capNew trades
Risk-on0,50%2,0%2/ngày
Caution0,25%1,0%1/ngày
Risk-off0% lệnh mớiquản trị giảm rủi ro0
Unknown0–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:

  1. Tự tính trend, volatility, breadth mỗi ngày.
  2. Gắn một trong bốn state và play permission.
  3. Chỉ sau khi khóa nhãn mới mở 5 ngày tiếp theo.
  4. Ghi return index, dispersion, số breakout thành công, MAE/MFE của play.
  5. 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

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ỏ.