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)
📅 Cập nhật: 17/10/2026
⏱️ Thời lượng đọc: 18 phút
🏷️ Deep RL, PPO, SAC, Rainbow DQN, PyTorch
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:
Double DQN: Tách biệt việc chọn hành động tốt nhất (bởi Online Network) và đánh giá giá trị của hành động đó (bởi Target Network), triệt tiêu hoàn toàn khuynh hướng lạc quan quá mức khi giá tăng sốc.
Prioritized Experience Replay (PER): Lấy mẫu các giao dịch thua lỗ bất thường hoặc cú bứt phá đột ngột (những bước có sai số TD Error lớn) thường xuyên hơn để Agent học bài học đau đớn nhanh hơn.
Dueling Networks: Tách mạng nơ-ron thành 2 nhánh: Nhánh đánh giá giá trị thị trường tổng thể $V(s)$ và nhánh đánh giá lợi thế của từng hành động $A(s, a)$. Trong một thị trường downtrend, mọi hành động Mua đều tệ, nhưng đứng ngoài (Hold) có lợi thế vượt trội.
Multi-step Learning: Cập nhật hàm mục tiêu sau $n$-bước nến thay vì chỉ 1 bước nến tiếp theo ($R_{t:t+n}$), giúp tín hiệu thưởng lan truyền nhanh về các bước vào lệnh trước đó.
Distributional RL (C51): Thay vì dự đoán một giá trị kỳ vọng duy nhất $\mathbb{E}[Q(s, a)]$, mạng dự đoán toàn bộ phân phối xác suất của lợi nhuận tương lai với 51 mốc phân vị (atoms). Điều này giúp bot nhận thức được rủi ro "đuôi béo" (Fat-tail Risk).
Noisy Nets: Thêm nhiễu Gaussian trực tiếp vào các trọng số tuyến tính của mạng nơ-ron để tự động khám phá chiến lược mới mà không cần tham số $\epsilon$-greedy thủ công.
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):
$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$ là tỷ số xác suất giữa chính sách mới và chính sách cũ.
$\hat{A}_t$ là ước lượng lợi thế (Advantage Estimation) tính theo kỹ thuật Generalized Advantage Estimation (GAE).
Hàm $\text{clip}$ chặn tỷ số $r_t(\theta)$ trong khoảng $[1 - \epsilon, 1 + \epsilon]$ (thường đặt $\epsilon = 0.2$), đảm bảo chính sách mới không được phép thay đổi quá 20% so với chính sách cũ trong một lần lặp.
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):
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:
Khi thị trường có tín hiệu xu hướng cực mạnh và rõ ràng, hàm thưởng $R$ áp đảo, bot giao dịch quyết liệt theo xu hướng.
Khi thị trường rơi vào giai đoạn nhiễu mù mờ vô hướng, thành phần Entropy thúc đẩy bot thử nghiệm các tỷ trọng cân bằng, linh hoạt chuyển dịch vốn thay vì "cược tất tay" vào một phía.
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:
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
classActorCriticPPO(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)
)
defget_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 isNone:
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
defcompute_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.