Xây dựng chiến lược giao dịch định lượng đầu tiên bằng Python
2025-06-11 — Admin
Bạn muốn bắt đầu với trading định lượng nhưng chưa biết bắt đầu từ đâu? Bài viết này sẽ hướng dẫn bạn từng bước xây dựng chiến lược giao dịch đầu tiên bằng Python, từ setup môi trường, lấy dữ liệu, xử lý, backtest đến đánh giá kết quả.
1. Setup môi trường Python cho trading định lượng
Cài đặt các thư viện cần thiết:
pip install pandas numpy yfinance matplotlib
- pandas: Xử lý dữ liệu dạng bảng
- numpy: Tính toán số học hiệu suất cao
- yfinance: Lấy dữ liệu tài chính miễn phí
- matplotlib: Vẽ biểu đồ
2. Lấy dữ liệu và xử lý với pandas, yfinance
Ví dụ lấy dữ liệu giá cổ phiếu Apple (AAPL):
import yfinance as yf
import pandas as pd
data = yf.download('AAPL', start='2022-01-01', end='2023-01-01')
print(data.head())
Tính toán đường trung bình động (Moving Average):
data['MA20'] = data['Close'].rolling(window=20).mean()
data['MA50'] = data['Close'].rolling(window=50).mean()
3. Backtest chiến lược Moving Average
Quy tắc đơn giản:
- Mua khi MA20 cắt lên MA50
- Bán khi MA20 cắt xuống MA50
import numpy as np
data['Signal'] = 0
# Tín hiệu mua
data['Signal'][20:] = np.where(data['MA20'][20:] > data['MA50'][20:], 1, 0)
# Tín hiệu giao dịch (mua/bán)
data['Position'] = data['Signal'].diff()
# Vẽ biểu đồ
import matplotlib.pyplot as plt
plt.figure(figsize=(14,7))
plt.plot(data['Close'], label='Giá đóng cửa')
plt.plot(data['MA20'], label='MA20')
plt.plot(data['MA50'], label='MA50')
plt.plot(data[data['Position'] == 1].index, data['MA20'][data['Position'] == 1], '^', markersize=10, color='g', label='Buy')
plt.plot(data[data['Position'] == -1].index, data['MA20'][data['Position'] == -1], 'v', markersize=10, color='r', label='Sell')
plt.legend()
plt.title('Backtest chiến lược MA20/MA50')
plt.show()
4. Đánh giá kết quả backtest
- Tổng lợi nhuận: So sánh giá trị tài khoản đầu và cuối kỳ
- Số lần giao dịch: Đếm số lần mua/bán
- Tỷ lệ thắng/thua: Số lệnh thắng chia tổng số lệnh
- Drawdown: Mức giảm tối đa của tài khoản
Lưu ý: Kết quả backtest chỉ mang tính tham khảo, cần kiểm tra thêm với dữ liệu khác và thực tế thị trường.
5. Kết luận
- Đã biết cách setup môi trường, lấy dữ liệu, xử lý, backtest chiến lược đơn giản bằng Python
- Đánh giá kết quả dựa trên lợi nhuận, số lệnh, drawdown
- Có thể mở rộng sang các chiến lược phức tạp hơn, thêm quản lý vốn, phí giao dịch...
Chúc bạn thành công trên hành trình trading định lượng!