01 / Đọc dữ liệu
Đừng để hàng sai thời điểm thành tín hiệu
Cần định nghĩa mỗi hàng là giá đóng cửa của phiên nào, theo UTC hay giờ địa phương, và cột giá đã được điều chỉnh chưa. Dòng trùng và giá thiếu không thể tự động xem là bằng phiên trước. Nếu dùng pandas, pct_change() tính thay đổi tương đối giữa hai hàng; cách sắp xếp và xử lý giá thiếu vẫn do người nghiên cứu quyết định.
Ví dụ dưới đây dùng ba giá đóng cửa đã biết theo UTC. Danh sách được khai báo theo thứ tự để phép kiểm tra báo lỗi nếu dữ liệu đảo chiều; không tự sắp xếp vì sắp xếp âm thầm có thể che khuất lỗi nguồn.
02 / Chạy thử
Ba phiên, hai lợi suất
from datetime import date
rows = [
(date(2026, 1, 1), 100.0),
(date(2026, 1, 2), 102.0),
(date(2026, 1, 3), 99.0),
]
for previous, current in zip(rows, rows[1:]):
previous_day, previous_close = previous
current_day, current_close = current
if current_day <= previous_day or previous_close <= 0 or current_close <= 0:
raise ValueError("Ngày phải tăng và giá phải dương")
daily_return = current_close / previous_close - 1
print(current_day.isoformat(), f"{daily_return:.4%}")
Kết quả: 2026-01-02 2.0000% và 2026-01-03 -2.9412%. Phiên đầu không có lợi suất vì không có giá trước. Giá bằng 0, ngày trùng hoặc đảo thứ tự dừng chương trình. Đoạn mã không ước lượng phân phối hay chạy chiến lược.
03 / Từ phép tính đến kiểm thử
Giữ ranh giới thông tin
Nếu tín hiệu dựa trên close ngày D, không được giả vờ giao dịch ở open ngày D. Một giả lập có thể chọn open đầu tiên sau lúc close D được xác nhận, cộng phí và trượt giá. Khi huấn luyện và kiểm tra mô hình, chia theo thời gian; việc chuẩn hóa trên toàn bộ dữ liệu trước khi chia có thể rò rỉ thông tin của tương lai.
Để học theo thứ tự, xem lộ trình học quant. Cách đọc backtest giải thích vì sao win rate và drawdown không đủ nếu bỏ phí. Trở về quant là gì để đặt bài tập trong quy trình nghiên cứu.
Nguồn chính thức
Tài liệu và giới hạn
- Python datetime: kiểu ngày và định dạng.
- pandas pct_change: thay đổi tương đối, không tự chọn ngày hợp lệ.
- scikit-learn TimeSeriesSplit: chia mẫu theo thời gian.
Ví dụ là phép tính giáo dục trên số giả định, không phải hiệu quả đầu tư.