🧠 KHÓA HỌC DEEP REINFORCEMENT LEARNING TRADING (TRADEMASTER) BÀI 4 / 4 (HOÀN THÀNH)
TradeMaster DRL Series • Bài 4 (Cuối)

Khóa Học Deep RL Trading (Phần 4): Tối Ưu Hóa Khớp Lệnh & Tạo Lập Thị Trường (Market Making)

Trong thực tế tại các quỹ phòng hộ (Hedge Funds) và công ty giao dịch định lượng cao tần (Proprietary Trading Firms), việc tìm ra tín hiệu giao dịch Alpha mới chỉ là 50% câu chuyện. Thách thức sống còn còn lại là thực thi lệnh (Execution): Làm sao để bán 10.000.000 cổ phiếu hoặc 5.000 hợp đồng phái sinh trong vòng 2 tiếng mà không làm sập giá thị trường?

Nếu bạn xả toàn bộ lệnh thị trường (Market Order) trong một giây, bạn sẽ phải trả giá bằng một cú trượt giá kinh hoàng (Market Impact & Slippage). Mặt khác, nếu bạn treo lệnh giới hạn (Limit Order) quá chậm chạp, bạn đối mặt với rủi ro giá di chuyển ngược hướng (Timing Risk). Bài viết cuối cùng của chuỗi TradeMaster sẽ khám phá cấp độ vi mô của thị trường tài chính: Thuật toán DRL Tối ưu hóa khớp lệnh (Optimal Execution) và DRL Tạo lập thị trường (Market Making) trên sổ lệnh Limit Order Book (LOB).

1. Bài Toán Tối Ưu Khớp Lệnh & Giới Hạn Của TWAP/VWAP

Bài toán thanh lý danh mục tối ưu (Optimal Liquidation) được phát biểu: Cần bán hết khối lượng $V_0$ cổ phiếu trong khoảng thời gian $T$, chia thành $N$ bước thời gian $t_1, t_2, \dots, t_N$ sao cho tổng chi phí trượt giá và rủi ro biến động là nhỏ nhất:

Giải Pháp Truyền Thống 1
TWAP (Time-Weighted)
Chia đều khối lượng $v_t = V_0 / N$ tại mỗi bước thời gian cố định. Cực kỳ thụ động và dễ bị các bot săn mồi (predatory bots) phát hiện quy luật để kê lệnh ép giá.
Giải Pháp Truyền Thống 2
VWAP (Volume-Weighted)
Phân bổ khối lượng theo hồ sơ thanh khoản lịch sử (U-shape curve). Thất bại khi thị trường xuất hiện tin tức đột xuất khiến đường cong thanh khoản bị méo mó.
Giải Pháp DRL Hiện Đại
DRL Smart Slicing (OPPO)
Đọc cấu trúc sổ lệnh vi mô LOB theo mili-giây, ước tính áp lực mua bán để cắt khối lượng $v_t$ linh hoạt, giảm tới 35-40% chi phí trượt giá so với TWAP.

2. Mô Hình Almgren-Chriss & Sự Nâng Cấp Của TradeMaster DRL

Mô hình toán học kinh điển Almgren-Chriss (2000) giả định tác động thị trường gồm 2 thành phần độc lập:

Tuy nhiên, Almgren-Chriss giả định biến động giá $\sigma$ và hệ số thanh khoản $\eta$ là hằng số — điều hoàn toàn sai lệch trong thực tế. TradeMaster giới thiệu thuật toán OPPO (Order-execution Proximal Policy Optimization) và ETTO (Execution Transformer):

3. DRL Tạo Lập Thị Trường (Market Making) & Quản Trị Rủi Ro Tồn Kho

Nhà tạo lập thị trường (Market Maker) kiếm lợi nhuận từ việc liên tục đặt đồng thời lệnh Mua giới hạn ($Bid$) và Bán giới hạn ($Ask$) để ăn chênh lệch giá (Bid-Ask Spread). Tuy nhiên, rủi ro tử huyệt của Market Maker là:

  1. Lựa chọn bất lợi (Adverse Selection): Bị khớp lệnh bởi các nhà giao dịch nội gián (Informed Traders) ngay trước khi giá lao dốc không phanh.
  2. Rủi ro tồn kho (Inventory Risk): Tích lũy quá nhiều cổ phiếu trong tay khi thị trường bước vào pha giảm mạnh.

Khung nghiên cứu Avellaneda-Stoikov giải quyết bằng việc tính toán mức giá tham chiếu đặt lệnh dựa trên lượng tồn kho $q$:

r(s, q, t) = s - q \cdot \gamma \sigma^2 (T - t)

Trong đó $\gamma$ là mức độ e ngại rủi ro, $\sigma^2$ là phương sai giá. Khi lượng hàng tồn kho $q > 0$ (đang giữ quá nhiều hàng), mức giá tham chiếu $r$ bị kéo xuống dưới giá thị trường $s$, buộc bot phải đặt giá Ask thấp hơn để xả hàng và đặt giá Bid thấp hơn để hạn chế mua thêm.

Trong TradeMaster, DRL Agent học trực tiếp chính sách định giá spread $\delta_a, \delta_b$ dựa trên dòng lệnh vi mô mà không cần giả định phân phối Poisson hay chuyển động Brown hình học.

4. Sơ Đồ Kiến Trúc Luồng Khớp Lệnh Vi Mô LOB Bằng DRL

Dưới đây là sơ đồ xử lý của DRL Execution Engine trong TradeMaster tương tác với Limit Order Book:

KIẾN TRÚC DRL THỰC THI LỆNH THÍCH ỨNG SỔ LỆNH LOB Giảm thiểu chi phí trượt giá qua cơ chế cắt nhỏ lệnh thông minh theo độ sâu thị trường LIMIT ORDER BOOK (LOB) Phe Bán (Ask Levels): Ask 1: $100.20 | Vol: 1,500 Ask 2: $100.25 | Vol: 4,200 Phe Mua (Bid Levels): Bid 1: $100.15 | Vol: 2,800 Bid 2: $100.10 | Vol: 6,000 Đặc trưng trích xuất: • Spread: $0.05 (Hẹp/Rộng) • OBI: (Vol_B - Vol_A) / Total • Volume Synchronized VPIN LOB Feats DRL EXECUTION AGENT (OPPO) Theo Dõi Tồn Kho & Thời Gian Khối lượng còn lại: q_t / V_0 Thời gian còn lại: (T - t) / T Mạng Nơ-ron Chính Sách Tính toán tỷ lệ cắt lệnh a_t Hàm thưởng: - (Chi phí trượt giá) Bộ Phán Đoán Khẩn Cấp Nếu t -> T, tự động tăng tốc đảm bảo thanh lý 100% mục tiêu Cắt Lệnh v_t KẾT QUẢ THỰC THI So Sánh Thực Nghiệm: TWAP Tĩnh: Trượt giá: 14.2 bps VWAP Lịch Sử: Trượt giá: 11.5 bps DRL TradeMaster (OPPO): Trượt giá: 7.8 bps -> Giảm 45% chi phí! Bảo toàn tối đa Alpha cho quỹ

5. Triển Khai Code Mô Phỏng Thực Thi Lệnh LOB Với Gymnasium

Dưới đây là mã nguồn Python mô phỏng môi trường khớp lệnh tối ưu theo mô hình Almgren-Chriss động, nơi Agent nhận phần thưởng âm bằng với chi phí trượt giá sinh ra:

import gymnasium as gym from gymnasium import spaces import numpy as np class OptimalExecutionEnv(gym.Env): """ Môi trường Gymnasium mô phỏng bài toán thanh lý lệnh lô lớn (Optimal Order Liquidation) """ def __init__(self, total_shares: float = 100_000.0, total_steps: int = 60): super().__init__() self.total_shares = total_shares self.total_steps = total_steps # Hành động: Tỷ lệ khối lượng cần bán ở bước hiện tại [0.0 (không bán) đến 1.0 (bán hết tồn dư)] self.action_space = spaces.Box(low=0.0, high=1.0, shape=(1,), dtype=np.float32) # Trạng thái: [Tồn kho còn lại (%), Thời gian còn lại (%), Biến động giá tức thời, Độ mất cân bằng LOB (OBI)] self.observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(4,), dtype=np.float32) self.reset() def reset(self, seed=None, options=None): super().reset(seed=seed) self.current_step = 0 self.remaining_shares = self.total_shares self.mid_price = 100.0 return self._get_obs(), {} def _get_obs(self): inventory_ratio = self.remaining_shares / self.total_shares time_ratio = (self.total_steps - self.current_step) / self.total_steps current_volatility = np.random.normal(loc=0.02, scale=0.005) lob_imbalance = np.random.uniform(-0.5, 0.5) # Order Book Imbalance return np.array([inventory_ratio, time_ratio, current_volatility, lob_imbalance], dtype=np.float32) def step(self, action): action_ratio = float(np.clip(action[0], 0.0, 1.0)) # Nếu ở bước cuối cùng, buộc phải bán hết sạch toàn bộ tồn dư if self.current_step >= self.total_steps - 1: shares_to_sell = self.remaining_shares else: shares_to_sell = self.remaining_shares * action_ratio # Mô hình hóa tác động thị trường (Market Impact) phi tuyến temp_impact = 0.0001 * (shares_to_sell ** 0.6) perm_impact = 0.00005 * shares_to_sell execution_price = self.mid_price - temp_impact slippage_cost = shares_to_sell * (self.mid_price - execution_price) # Cập nhật trạng thái thị trường self.mid_price -= perm_impact + np.random.normal(0, 0.05) self.remaining_shares -= shares_to_sell self.current_step += 1 # Hàm thưởng âm: Phạt trượt giá + Phạt tồn kho quá lớn ở cuối chu kỳ reward = -slippage_cost - (0.1 * (self.remaining_shares / self.total_shares) ** 2) done = (self.current_step >= self.total_steps) or (self.remaining_shares <= 1e-5) return self._get_obs(), float(reward), done, False, {"slippage": slippage_cost}
🏆
CHÚC MỪNG BẠN ĐÃ HOÀN THÀNH KHÓA HỌC TRADEMASTER DRL: Bạn đã đi qua hành trình trọn vẹn từ kiến trúc nền tảng Gymnasium, thuật toán cốt lõi (Rainbow DQN, PPO, SAC), quản trị danh mục đa tài sản (EIIE, SARL) đến cấp độ vi mô khớp lệnh và tạo lập thị trường (Optimal Execution & Market Making). Hãy kết hợp kiến thức này với các khóa học bổ trợ tại Học Viện Giao Dịch để thiết kế các hệ thống giao dịch tự động đẳng cấp quỹ đầu tư!
🧠

Biên Soạn: Học Viện Giao Dịch — Hàng Hóa Plus

Chuỗi bài giảng TradeMaster DRL được phát triển dựa trên nền tảng nghiên cứu học tăng cường sâu của NTU và phòng lab Agent Mediated Intelligence.