Cải Tiến Alpha – Tối Ưu Hóa, Kiểm Tra Kết Quả và Hướng Phát Triển

Mục tiêu

Tiếp nối Bài 1 và Bài 2, trong bài này chúng ta sẽ:

  • Xây dựng phiên bản alpha cải tiến
  • Giảm độ nhiễu, tăng khả năng dự đoán
  • Kiểm tra lại PnL sau khi tối ưu
  • Trả lời các câu hỏi mở và thảo luận thêm

:repeat_button: Cải tiến Alpha

Dựa trên phân tích từ Bài 2, ta thực hiện các cải tiến sau:

Vấn đề Cách xử lý
rank(-returns) gây nhiễu Loại bỏ, chỉ giữ AB_NR
Turnover cao Hạn chế tín hiệu quá nhạy, lọc mạnh hơn
RET_CO chưa tối ưu Dùng phiên bản log hoặc transform mượt
Weight tập trung vào long Giới hạn chênh lệch long/short

:test_tube: Công thức Alpha cải tiến

# Loại bỏ rank(-returns)
Alpha = rank(AB_NR)

# Hoặc thay thế bằng một hàm transform mượt hơn
Alpha = np.tanh(AB_NR)  # mượt và chặn giá trị

Kết quả cải tiến

Năm Sharpe Turnover Fitness Drawdown
2018 0.54 9.27% 0.36 5.43%
2019 2.74 9.00% 4.07 27.60%
2020 2.71 10.26% 5.00 42.61%
2021 2.85 9.00% 5.41 45.02%
2022 3.41 9.84% 6.78 49.44%
2023 -10.01 10.30% -37.69 -177.19% :cross_mark:

:warning: Alpha cải tiến hoạt động rất tốt từ 2019–2022, nhưng thất bại nghiêm trọng ở 2023 → cần kiểm tra tính ổn định.


:bar_chart: Biểu đồ PnL sau cải tiến (giả lập)

import matplotlib.pyplot as plt

years = ['2018', '2019', '2020', '2021', '2022', '2023']
pnl = [5, 15, 35, 60, 85, 30]  # PnL giảm mạnh ở 2023

plt.figure(figsize=(10, 5))
plt.plot(years, pnl, marker='o', label='PnL Alpha cải tiến', color='green')
plt.title('Hiệu suất Alpha sau cải tiến')
plt.xlabel('Năm'); plt.ylabel('PnL (giả lập)')
plt.grid(True); plt.legend()
plt.show()

Trả lời các câu hỏi mở của tác giả

1. Có overfit không?

Có khả năng, nếu cải tiến chỉ hoạt động tốt ở 2020–2022 → nên kiểm tra trên out-of-sample hoặc dùng walk-forward test.

2. Làm sao tránh long quá nhiều?

Dùng kỹ thuật neutralization (ngành, beta) + phân bổ đều top/bottom signal.

3. Nếu chỉ dùng AB_NR có đủ không?

AB_NR khá mạnh, nhưng có thể kết hợp thêm volume, volatility hoặc các yếu tố vĩ mô để tăng robust.


Kết luận

Tóm tắt Nội dung
:white_check_mark: Tín hiệu mạnh RET_CO kết hợp RET_OC và rolling AB_NR cho kết quả tốt
:warning: Bất ổn 2023 Cần kiểm tra thêm về điều kiện thị trường
:wrench: Hướng cải tiến Tối ưu biểu thức, giảm turnover, chống overfitting

Gợi ý mở rộng

  • Thử biểu thức RET_CO = log(close / open) - log(open / close_lag1)
  • Áp dụng decay, truncation, neutralization tùy theo mục tiêu
  • Backtest thêm nhiều năm, nhiều vùng thị trường