06. 09 bước phát triển thuật toán

Đăng lúc 1648569048,619

Xây dựng một thuật toán giao dịch tự vận hành, đồng thời đem lại lợi nhuận và có tính ổn định là thách thức đầu tiên trong giao dịch thuật toán. Sau đây là 09 bước để phát triển một thuật toán giao dịch.

1.  Hình thành giả thuyết thuật toán

Nhà giao dịch bắt đầu phát triển thuật toán theo phương pháp đầu tư quen thuộc hoặc một giả định mà khả năng cao sẽ đem lại lợi nhuận. Trọng tâm của bước này là cụ thể hóa chiến lược giao dịch thành một tập hợp câu lệnh thực thi các logic quyết định giao dịch để ra lệnh mua/bán cụ thể bao gồm nhưng không giới hạn các thông số sau: mua/bán, loại lệnh, giá, khối lượng.

Sau khi hình thành thuật toán giao dịch, hoàn toàn có thể chuyển qua giai đoạn giao dịch thật, tuy nhiên, hướng tiếp cận này đầy rủi ro và phụ thuộc nhiều vào may rủi. Thực hiện đầy đủ các giai đoạn kiểm thử sẽ hạn chế rủi ro khi giao dịch tự động, đặc biệt với khối tài sản lớn.

2.  Thu thập dữ liệu

Trong hầu hết trường hợp, các dữ liệu cơ bản đã đáp ứng được nhu cầu phát triển thuật toán. Tuy nhiên, đối với các dạng thuật toán phức tạp đòi hỏi dữ liệu tick, báo cáo tài chính, chỉ số vĩ mô, hàng hóa, hay các chỉ số ETF thì nhà giao dịch cần thu thập dữ liệu trước khi phát triển thuật toán.

Trên thế giới, thu thập dữ liệu đã tiến xa đến việc dùng hình ảnh vệ tinh để đếm số xe trong bãi đậu xe hoặc số cừu trong một nông trại để dự đoán kết quả kinh doanh, qua đó, phát triển thuật toán tìm kiếm lợi nhuận.

3.  Xử lý dữ liệu

Đây là giai đoạn đòi hỏi nhiều công sức để đảm bảo dữ liệu thu thập được không bị trùng lặp, loại bỏ điểm dữ liệu ngoại lai, lỗi cấu trúc, v.v. nhằm đảm bảo dữ liệu đủ chất lượng để phát triển thuật toán.

Ở Việt Nam, muốn tính toán độ tương quan giữa cổ phiếu PVD và giá dầu (crude oil) thì sau khi thu thập dữ liệu giá dầu, cần đồng bộ thời gian của dữ liệu giá dầu thế giới với Việt Nam (điều chỉnh ngày nghỉ lễ chẳng hạn). Đây là một ví dụ đơn giản của thao tác làm sạch dữ liệu.

4.  Kiểm thử dữ liệu quá khứ trong mẫu

Kiểm thử dữ liệu quá khứ (backtesting) trả lời câu hỏi liệu thuật toán giao dịch có lợi nhuận không? Một phương pháp kiểm thử dữ liệu quá khứ đúng sẽ cho kỳ vọng hợp lý về mức độ hiệu quả và rủi ro của thuật toán trong tương lai.

Để kiểm thử dữ liệu quá khứ cần chia tập dữ liệu thành hai phần. 70% tập dữ liệu đầu gọi là tập dữ liệu quá khứ trong mẫu, 30% dữ liệu còn lại được gọi là tập dữ liệu quá khứ ngoài mẫu.

Tập dữ liệu quá khứ trong mẫu dùng để đánh giá hồ sơ giao dịch của thuật toán trong quá khứ. Các thông số đo lường cơ bản bao gồm: lợi nhuận, maximum drawdown (MDD), và tỷ lệ Sharpe. Lưu ý, một thuật toán cần ít nhất 300 giao dịch để đảm bảo các thông số tìm được có ý nghĩa về mặt thống kê. Đồng thời kiểm thử dữ liệu quá khứ phải bao gồm thuế, phí, trượt giá và tất cả chi phí khác.

Sau khi tính toán thông số, nếu không đạt yêu cầu, cần loại bỏ thuật toán và quay lại bước 01, ngược lại, có thể tiến hành bước tiếp theo.

5.  Tối ưu hóa

Thực hiện điều chỉnh tham số thuật toán để tìm ra tập hợp các giá trị tham số sao cho hiệu quả của thuật toán tinh chỉnh trên thị trường mục tiêu là tối ưu. Ở giai đoạn này, cần kiểm thử hàng trăm bộ tham số khác nhau đến khi tìm được vùng tham số ổn định. Cần tránh tâm lý tìm bộ tham số có lợi nhuận cao nhất vì sẽ gây ra hiện tượng quá khớp (bộ tham số đó khả năng chỉ là một sự kết hợp ngẫu nhiên, có lợi nhuận tốt trong quá khứ nhưng kết quả này sẽ không lặp lại khi giao dịch thật trong tương lai).

Tại Việt Nam, nhiều đối tượng chỉ tập trung tìm bộ tham số với kết quả lợi nhuận vượt trội trong quá khứ nhằm thu hút và bán thuật toán giao dịch cho khách hàng. Các nhà đầu tư mua và thực hiện giao dịch theo các thuật toán này không hề hay biết mình đang tham gia một trò chơi hoàn toàn may rủi.

6.  Kiểm thử dữ liệu quá khứ ngoài mẫu

Sau giai đoạn tối ưu hóa, tiếp tục kiểm thử dữ liệu quá khứ trên tập 30% dữ liệu còn lại ở bước 04. Quá trình này nhằm kiểm định thuật toán sau tối ưu hóa có khả năng tạo ra lợi nhuận ổn định như dự tính hay không. Nếu hồ sơ giao dịch của giai đoạn này tương đồng với bước 05 thì rất có thể đây là một thuật toán tốt. Trong trường hợp kết quả của giai đoạn này khác xa với giai đoạn tối ưu hóa thì nhà đầu tư nên cẩn trọng nếu muốn tiếp tục

7. Kiểm thử giao dịch trên giấy

Đây là giai đoạn thử nghiệm thuật toán trên dữ liệu thị trường hoàn toàn không biết trước (dữ liệu thời gian thực từ hiện tại đến một thời điểm nhất định trong tương lai) nhằm đánh giá khách quan hiệu quả của thuật toán. Nếu hồ sơ giao dịch của giai đoạn này tương đồng với giai đoạn kiểm thử dữ liệu quá khứ ngoài mẫu thì có thể chuyển qua giai đoạn kiểm thử giao dịch trên tài khoản nhỏ.

8.  Kiểm thử giao dịch trên tài khoản nhỏ

Sau khi hoàn thành bảy bước trên, có thể triển khai giao dịch trên một tài khoản nhỏ để kiểm định hiệu quả và giả định của thuật toán khi giao dịch thật, tìm lỗi kỹ thuật (bug) còn tồn đọng của hệ thống, đồng thời so sánh kết quả giai đoạn này với giai đoạn kiểm thử giao dịch trên giấy để quyết định liệu có cần điều chỉnh lại thuật toán.

Giai đoạn này thường kéo dài 02 tháng để có số giao dịch đủ lớn và thời gian đủ lâu nhằm đánh giá đúng hiệu quả và độ ổn định của hệ thống cũng như thuật toán giao dịch. Nếu hồ sơ giao dịch của giai đoạn này vẫn đồng nhất với các giai đoạn kiểm thử trước thì nhà đầu tư đã có đủ cơ sở khoa học và tự tin để thực hiện bước cuối cùng: giao dịch thật.

9.  Giao dịch thật

Tại thời điểm này, nhà đầu tư có thể tự tin để thuật toán hoạt động tối đa công suất, tuy nhiên, trong giai đoạn đầu vẫn cần giám sát hồ sơ vận hành thuật toán, đồng thời sửa các lỗi kỹ thuật phát sinh. Sau 03 tháng, nếu thuật toán vận hành ổn định thì nhà đầu tư đã chính thức khai sinh một thuật toán có thể giao dịch tự động.

Và đừng quên đặt một cái tên thật hay cho thuật toán của mình nhé!