Nếu việc giao dịch một mã cổ phiếu hay hợp đồng tương lai đơn lẻ bằng DRL giống như lái một chiếc xe đua trên đường thẳng, thì quản lý danh mục đầu tư đa tài sản (Portfolio Management) lại giống như việc chỉ huy một dàn nhạc giao hưởng. Agent không chỉ phải quyết định mua hay bán một mã, mà phải liên tục giải bài toán phân bổ động một vector trọng số tài sản $\mathbf{w}_t = [w_{t,0}, w_{t,1}, \dots, w_{t,m}]^T$ thỏa mãn điều kiện:
Trong bài viết thứ 3 của chuỗi TradeMaster, chúng ta sẽ đi sâu vào 2 phát kiến lớn giải quyết bài toán bùng nổ chiều không gian (Curse of Dimensionality) và thay đổi chế độ thị trường (Regime Shift): Mạng nơ-ron tích chập chia sẻ trọng số EIIE và Mô hình học tăng cường tăng cường trạng thái SARL.
1. Thách Thức Khi Đưa DRL Vào Quản Trị Danh Mục Đa Tài Sản
Khi số lượng tài sản trong danh mục tăng lên (từ $m=5$ đến $m=50$ mã), các thuật toán Reinforcement Learning truyền thống đối mặt với 3 rào cản nghiêm trọng:
Rào Cản 1: Bùng Nổ Tham Số
Curse of Dimensionality
Nếu dùng mạng MLP nối tất cả các chuỗi nến của $m$ tài sản vào một vector phẳng, số lượng trọng số bùng nổ theo cấp số nhân, dẫn đến over-fitting nặng và thời gian huấn luyện kéo dài bất tận.
Rào Cản 2: Chi Phí Tái Cân Bằng
Turnover & Slippage Cost
Nếu không được phạt nghiêm ngặt, Agent có xu hướng xáo trộn 100% danh mục tại mỗi cây nến, khiến toàn bộ lợi nhuận lý thuyết bị nuốt chửng bởi phí giao dịch và trượt giá.
Rào Cản 3: Tương Quan Động
Regime Shift & Correlation
Ma trận tương quan giữa các tài sản không đứng yên. Trong các cuộc khủng hoảng thanh khoản, hệ số tương quan giữa các nhóm ngành có thể nhảy vọt từ 0.2 lên 0.9.
Kiến trúc EIIE (được khởi xướng bởi Jiang et al. và chuẩn hóa trong TradeMaster) là đột phá then chốt giúp loại bỏ hiện tượng bùng nổ tham số mạng nơ-ron:
Chia sẻ trọng số song song (Weight Sharing): Thay vì dùng $m$ mạng nơ-ron riêng lẻ cho $m$ tài sản, EIIE sử dụng cùng một mạng tích chập (Convolutional / Recurrent Sub-network) chạy song song trên ma trận giá lịch sử của từng tài sản. Điều này đảm bảo tính đối xứng và giảm 90% số lượng tham số cần học.
Vector điểm số tiềm ẩn (Score Vector): Mạng trích xuất đặc trưng cho mỗi tài sản $i$ một điểm số tiềm ẩn $y_{t,i}$.
Hàm Softmax kết hợp tiền mặt: Toàn bộ điểm số được đưa qua một lớp chuẩn hóa Softmax để tự động đảm bảo tổng trọng số luôn bằng 100%:
Phạt tỷ lệ luân chuyển vốn (Turnover Penalty): Tại mỗi bước $t$, hàm thưởng trừ đi chi phí tái cân bằng:
C_t = c \cdot \sum_{i=1}^m |w_{t,i} - w_{t-1,i}'|
giúp Agent duy trì trạng thái phân bổ bền vững, không xáo trộn danh mục khi biên độ dao động thị trường còn trong biên an toàn.
3. Mô Hình SARL (State-Augmented Reinforcement Learning)
Một điểm yếu cố hữu của DRL là "tầm nhìn đường hầm" (Tunnel Vision): Agent chỉ nhìn vào dữ liệu giá nội tại của từng cổ phiếu mà bỏ qua bức tranh vĩ mô tổng thể. Khi Cục Dự trữ Liên bang (Fed) tăng lãi suất bất ngờ hoặc chỉ số VIX bật tăng 40%, các mô hình RL thông thường sẽ phản ứng rất chậm chạp.
TradeMaster phát triển mô hình SARL (State-Augmented RL) với cơ chế phân tách không gian trạng thái thành 2 phần độc lập:
Trạng thái vi mô nội tại ($s_t^{asset}$): Dữ liệu OHLCV, chỉ báo RSI, MACD, và tỷ trọng hiện tại của từng cổ phiếu trong danh mục.
Trạng thái vĩ mô tăng cường ($s_t^{macro}$): Thông tin về chế độ thị trường (Bull / Bear / High-Vol Sideway), chỉ số sợ hãi VIX, lợi suất trái phiếu chính phủ 10Y, và chỉ số USD Index (DXY).
Mạng nơ-ron của SARL sử dụng một bộ mã hóa tự động (Auto-encoder / Transformer Encoder) để nén thông tin vĩ mô thành một vector biểu diễn chế độ thị trường (Market Regime Latent Vector) $\mathbf{z}_t$, sau đó hòa trộn (concatenate) vào lớp fully-connected của mạng Actor trước khi đưa ra quyết định phân bổ vốn.
4. Học Bắt Chước Nhà Đầu Tư (Investor-Imitator)
Quá trình khởi tạo trọng số ngẫu nhiên ban đầu của DRL thường tạo ra các chính sách phi thực tế (ví dụ: liên tục bán tháo đáy và mua đỉnh trong 100 epoch đầu tiên). TradeMaster tích hợp cơ chế Investor-Imitator:
Giai đoạn 1 — Pre-training bằng Behavior Cloning (Học Bắt Chước): Agent được huấn luyện giám sát (Supervised Learning) trên các quyết định phân bổ lịch sử của các chiến lược định lượng cổ điển thành công (như Risk Parity, Mean-Variance Markowitz, hoặc Momentum Quintile).
Giai đoạn 2 — Fine-tuning bằng DRL: Sau khi đã đạt được nền tảng giao dịch ổn định, Agent bắt đầu chuyển sang chế độ tương tác tự do với môi trường Gymnasium để khám phá những cơ hội Alpha siêu việt mà các quy tắc tĩnh không thể nắm bắt.
5. Sơ Đồ Kiến Trúc Mạng Phân Bổ Danh Mục EIIE
Sơ đồ sau đây minh họa luồng xử lý tensor của kiến trúc EIIE từ ma trận giá lịch sử $m$ tài sản đến vector phân bổ trọng số cuối cùng:
6. Triển Khai Code Mạng EIIE PyTorch Hoàn Chỉnh
Dưới đây là mã nguồn Python triển khai lớp mạng nơ-ron EIIEPortfolioNet với tích chập 1D và chuẩn hóa Softmax theo đúng thông số chuẩn của TradeMaster:
import torch
import torch.nn as nn
import torch.nn.functional as F
classEIIEPortfolioNet(nn.Module):
"""
Mạng nơ-ron Ensemble Identical Independent Evaluator (EIIE) cho danh mục đa tài sản.
Đầu vào: Tensor (Batch, Num_Assets, Features, Window_Size)
Đầu ra: Vector phân bổ tỷ trọng (Batch, Num_Assets + 1) [Gồm cả Tiền mặt]
"""def__init__(self, num_features: int = 5, window_size: int = 50):
super().__init__()
# Lớp tích chập 2D xử lý từng tài sản độc lập nhưng dùng chung trọng số (Shared Weights)
self.conv1 = nn.Conv2d(in_channels=num_features, out_channels=32, kernel_size=(1, 3))
self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=(1, window_size - 2))
# Lớp nén điểm số tiềm ẩn cho mỗi tài sản (kết hợp với trọng số cũ w_{t-1})
self.fc_score = nn.Linear(64 + 1, 1)
# Điểm số thiên vị cho tiền mặt (Cash Bias)
self.cash_bias = nn.Parameter(torch.zeros(1))
defforward(self, x: torch.Tensor, prev_weights: torch.Tensor) -> torch.Tensor:
"""
x shape: (B, M, F, T) -> Hoán vị thành (B, F, M, T)
prev_weights shape: (B, M) [Tỷ trọng cổ phiếu ở bước trước]
"""
B, M, F_dim, T = x.shape
x = x.permute(0, 2, 1, 3) # (B, F, M, T)
h = F.relu(self.conv1(x))
h = F.relu(self.conv2(h)) # Shape: (B, 64, M, 1)
h = h.squeeze(-1).permute(0, 2, 1) # Shape: (B, M, 64)# Nối thêm trọng số cũ của từng tài sản để kiểm soát phí xoay vòng
prev_w_expanded = prev_weights.unsqueeze(-1) # (B, M, 1)
h = torch.cat([h, prev_w_expanded], dim=-1) # (B, M, 65)
asset_scores = self.fc_score(h).squeeze(-1) # (B, M)# Ghép điểm số tiền mặt ở cột đầu tiên: [Cash_Score, Score_1, Score_2, ...]
cash_scores = self.cash_bias.expand(B, 1)
all_scores = torch.cat([cash_scores, asset_scores], dim=-1) # (B, M + 1)# Chuẩn hóa Softmax để đảm bảo tổng tỷ trọng đúng 1.0
portfolio_weights = F.softmax(all_scores, dim=-1)
return portfolio_weights
💡
TỔNG KẾT BÀI HỌC: Quản lý danh mục DRL bằng EIIE cho phép tối ưu hóa đồng thời hàng chục tài sản mà không lo bùng nổ số lượng tham số, trong khi SARL bảo vệ tài khoản khỏi những cú sốc vĩ mô bất ngờ. Trong Phần 4 tiếp theo (bài cuối cùng), chúng ta sẽ bước vào thế giới tần suất cao (High-Frequency Trading) với các thuật toán Tối Ưu Hóa Khớp Lệnh (Optimal Execution) và Tạo Lập Thị Trường DRL (Market Making)!
🧠
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.