🧠 KHÓA HỌC DEEP REINFORCEMENT LEARNING TRADING (TRADEMASTER) BÀI 2 / 4
TradeMaster DRL Series • Bài 2

Khóa Học Deep RL Trading (Phần 2): Các Thuật Toán Cốt Lõi Rainbow DQN, PPO & Soft Actor-Critic (SAC)

Trong Phần 1, chúng ta đã nắm vững kiến trúc 4 lớp của TradeMaster và cách thiết kế môi trường gymnasium.Env với hàm thưởng Differential Sharpe Ratio. Tuy nhiên, một môi trường chuẩn xác chỉ là phân nửa bài toán. Nửa còn lại là bộ não quyết định: DRL Agent.

Thị trường tài chính là một môi trường mang tính ngẫu nhiên cực cao (high stochasticity) và phi dừng (non-stationary). Các thuật toán DRL cơ bản như DQN chuẩn hay Vanilla Policy Gradient thường thất bại thảm hại do hiện tượng over-fitting với nhiễu thị trường. Bài viết này sẽ phân tích chi tiết cơ chế toán học và so sánh thực nghiệm 3 thuật toán DRL tiên tiến nhất đang được TradeMaster tích hợp: Rainbow DQN, Proximal Policy Optimization (PPO) và Soft Actor-Critic (SAC).

1. Bản Đồ Phân Loại Thuật Toán DRL Trong Trading

Các thuật toán học tăng cường trong tài chính được chia thành 3 trường phái kiến trúc chính phụ thuộc vào bản chất không gian hành động:

Value-Based (Dựa Trên Giá Trị)
Rainbow DQN
Ước tính hàm giá trị hành động Q(s, a). Phù hợp cho giao dịch cổ phiếu đơn lẻ với hành động rời rạc: [Mua hết, Đứng ngoài, Bán sạch].
On-Policy Actor-Critic
PPO (Clipped Objective)
Đồng thời ước tính chính sách π(a|s) và giá trị V(s). Giới hạn bước cập nhật để tránh sụp đổ chính sách khi thị trường có tin sốc.
Off-Policy Actor-Critic
SAC (Maximum Entropy)
Tối ưu đồng thời lợi nhuận kỳ vọng và độ hỗn loạn (Entropy). Ngăn chặn mô hình bị kẹt ở các bẫy cực tiểu địa phương.
Tiêu Chí So Sánh Rainbow DQN PPO (Proximal Policy) SAC (Soft Actor-Critic)
Không gian hành động Rời rạc (Discrete: 0, 1, 2) Rời rạc hoặc Liên tục ([-1, 1]) Liên tục (Continuous Weight [-1, 1])
Cơ chế lấy mẫu Off-policy (Replay Buffer) On-policy (Rollout Buffer) Off-policy (Replay Buffer)
Tốc độ hội tụ dữ liệu Rất cao (Sample Efficient) Trung bình (Cần nhiều mẫu) Cực cao (Tối ưu entropy liên tục)
Ứng dụng trading thực tế Scalping / Swing đơn lẻ Chiến lược theo xu hướng Trend-following Quản trị danh mục đa tài sản & HFT

2. Rainbow DQN: Đỉnh Cao Cho Không Gian Rời Rạc

DQN nguyên bản của Mnih et al. (2015) gặp phải hiện tượng thổi phồng giá trị (overestimation bias) và cập nhật mẫu kém hiệu quả trên chuỗi nến tài chính. Rainbow DQN tổng hợp 6 đột phá công nghệ vượt trội:

3. PPO (Proximal Policy Optimization): Kiểm Soát Biến Động Chính Sách

Đối với giao dịch phân bổ tỷ trọng liên tục (ví dụ: nắm giữ 45.2% vốn bằng Vàng và 54.8% bằng Tiền mặt), Policy Gradient là bắt buộc. Tuy nhiên, thuật toán REINFORCE hay Policy Gradient thông thường rất dễ bị sụp đổ hiệu năng (catastrophic policy collapse) nếu một bước gradient step quá lớn gặp đúng ngày thị trường "Flash Crash".

TradeMaster sử dụng thuật toán PPO-Clip với hàm mục tiêu đại diện bị cắt cụt (Clipped Surrogate Objective):

L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min\left( r_t(\theta)\hat{A}_t, \, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon)\hat{A}_t \right) \right]

Trong đó:

4. Soft Actor-Critic (SAC): Maximum Entropy RL Thích Ứng Chế Độ

Điểm yếu lớn nhất của các mô hình RL thông thường khi áp dụng vào tài chính là chính sách nhanh chóng bị hội tụ sớm vào một hành lang hẹp (deterministic policy). Khi thị trường chuyển giao trạng thái (Market Regime Shift) từ có xu hướng (Trending) sang đi ngang biến động lớn (High-volatility Sideway), bot lập tức cháy tài khoản.

Soft Actor-Critic (SAC) giải quyết triệt để vấn đề này bằng nguyên lý Maximum Entropy Reinforcement Learning. Hàm mục tiêu của SAC buộc Agent phải tối đa hóa đồng thời cả lợi nhuận và độ đa dạng hành vi (Entropy):

J(\pi) = \sum_{t=0}^T \mathbb{E}_{(s_t, a_t) \sim \rho_\pi} \left[ R(s_t, a_t) + \alpha \, \mathcal{H}(\pi(\cdot|s_t)) \right]

Trong đó $\mathcal{H}(\pi(\cdot|s_t)) = -\log \pi(a_t|s_t)$ là độ đo Entropy Shannon, và hệ số nhiệt độ $\alpha$ được tự động điều chỉnh trong suốt quá trình huấn luyện:

5. Sơ Đồ Kiến Trúc Luồng Học Của Actor-Critic DRL

Dưới đây là sơ đồ kiến trúc tổng quan mô tả vòng lặp tương tác giữa Actor (sinh hành động), Critic (đánh giá giá trị) và bộ lọc an toàn Clipped Surrogate của TradeMaster:

KIẾN TRÚC ACTOR-CRITIC VÀ BỘ LỌC AN TOÀN TRADEMASTER DRL Luồng truyền trạng thái, tính toán hàm Advantage và giới hạn Clipped Surrogate MÔI TRƯỜNG GYMNASIUM Đặc trưng nến & Chỉ báo: • Open, High, Low, Close • Volume & Order Book (LOB) • Vị thế đang nắm giữ: W_t Phản hồi thị trường: • Thưởng Differential Sharpe: R_t • Trừ phí trượt giá & Commission • Trạng thái tiếp theo: S_{t+1} • Cờ kết thúc chu kỳ: Done / Trunc State S_t DRL AGENT BỘ ĐÔI MẠNG NƠ-RON MẠNG ACTOR (Policy π_θ) Xuất phân phối Gauss μ(s), σ(s) Sinh hành động tỷ trọng A_t [-1, 1] Tối ưu hóa bởi Clipped Objective MẠNG CRITIC (Value V_φ hoặc Q) Ước tính hàm giá trị trạng thái V(s) Tính sai số Temporal Difference Xuất tín hiệu Advantage Â_t cho Actor MODULE CLIP & LOSS 1. Tỷ số xác suất r_t(θ): r_t = π_θ(a|s) / π_{old}(a|s) 2. Ngưỡng Clipped [1-ε, 1+ε]: ε = 0.2 (Giới hạn 20%) Chặn đột biến chính sách 3. Mục tiêu cuối cùng: L = L^{CLIP} - c_1 L^{VF} + c_2 H Tăng tốc độ hội tụ ổn định Tránh suy đồi chính sách

6. Triển Khai Code Huấn Luyện PPO Agent Với PyTorch

Dưới đây là đoạn mã nguồn Python hoàn chỉnh xây dựng mạng Actor-Critic PPO với cơ chế Generalized Advantage Estimation (GAE) và kiểm soát hàm mất mát Clipped Loss:

import torch import torch.nn as nn import torch.optim as optim from torch.distributions import Normal import numpy as np class ActorCriticPPO(nn.Module): """ Mạng Actor-Critic đa đầu ra cho giao dịch tài chính liên tục """ def __init__(self, state_dim: int = 6, action_dim: int = 1): super().__init__() # Nhánh Actor: Ước lượng giá trị trung bình hành động tỷ trọng μ(s) self.actor_backbone = nn.Sequential( nn.Linear(state_dim, 128), nn.Tanh(), nn.Linear(128, 64), nn.Tanh(), nn.Linear(64, action_dim), nn.Tanh() # Giới hạn phân bổ [-1.0, 1.0] ) # Độ lệch chuẩn log có thể học được (Learnable log-std) self.log_std = nn.Parameter(torch.zeros(action_dim)) # Nhánh Critic: Ước lượng giá trị trạng thái V(s) self.critic_backbone = nn.Sequential( nn.Linear(state_dim, 128), nn.ReLU(), nn.Linear(128, 64), nn.ReLU(), nn.Linear(64, 1) ) def get_action_and_value(self, state, action=None): mu = self.actor_backbone(state) std = self.log_std.exp().expand_as(mu) dist = Normal(mu, std) if action is None: action = dist.sample() action = torch.clamp(action, -1.0, 1.0) log_prob = dist.log_prob(action).sum(axis=-1) entropy = dist.entropy().sum(axis=-1) value = self.critic_backbone(state) return action, log_prob, entropy, value def compute_ppo_loss(model, states, actions, old_log_probs, returns, advantages, clip_eps=0.2): """ Tính toán hàm mất mát PPO Clipped Surrogate Loss """ _, new_log_probs, entropy, new_values = model.get_action_and_value(states, actions) # Tỷ số xác suất r_t(θ) ratio = torch.exp(new_log_probs - old_log_probs) # Clipped Surrogate Objective surr1 = ratio * advantages surr2 = torch.clamp(ratio, 1.0 - clip_eps, 1.0 + clip_eps) * advantages policy_loss = -torch.min(surr1, surr2).mean() # Giá trị Critic Loss (MSE) value_loss = 0.5 * ((new_values.squeeze() - returns) ** 2).mean() # Tổng Loss với thưởng Entropy để duy trì khả năng khám phá total_loss = policy_loss + (0.5 * value_loss) - (0.01 * entropy.mean()) return total_loss
💡
TỔNG KẾT BÀI HỌC: Lựa chọn đúng thuật toán là chìa khóa thích ứng với độ phức tạp bài toán: Rainbow DQN cho hành động Mua/Bán nhị phân, PPO cho sự ổn định xu hướng, và SAC cho tối đa hóa entropy khám phá. Trong Phần 3 tiếp theo, chúng ta sẽ mở rộng bài toán sang quản trị danh mục đầu tư đa tài sản (Portfolio Management) bằng kiến trúc tích chập EIIE (Ensemble Identical Independent Evaluator) và mô hình nhúng nhận diện chế độ thị trường SARL!
🧠

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.