Giao dịch Định lượng (Quant Trading) – Backtesting (Phần 2)

Giao dịch Định lượng (Quant Trading) – Backtesting (Phần 2)

Giao dịch Định lượng (Quant Trading) – Backtesting (Phần 2)

ductoan1898

Active Member
27
139
Chào anh em, đây là phần tiếp theo của phần Backtesting. Ở đây mình sẽ trình bày về các thước đo để đánh giá hiệu suất chiến lược, tối ưu hóa và những điều cần tránh khi thực hiện backtest.

1. Đo lường hiệu suất


Các nhà giao dịch định lượng sử dụng nhiều biện pháp đó lường hiệu suất khác nhau. Việc sử dụng hệ số nào đôi khi là vấn đề sở thích cá nhân, và ngoài những hệ số đã nêu ở bài viết trước, hôm nay mình sẽ bổ sung các hệ số khác để giúp cho việc đo lường, đánh giá và so sánh các chiến lược với nhau.
  • Lợi nhuận hàng năm: % Lãi (hoặc Lỗ) trung bình hàng năm từ chiến lược giao dịch định lượng của chúng ta.
  • Biến động hàng năm: Độ lệch chuẩn của lợi nhuận hàng ngày của mô hình trong một năm. Biến động được sử dụng như một thước đo rủi ro, do đó, biến động cao hơn ngụ ý mô hình rủi ro nhiều hơn.
  • Lợi nhuận ròng: được tính bằng lợi nhuận gộp trừ đi lỗ gộp. Hệ số này cho chúng ta biết và so sánh khả năng sinh lời của các chiến lược với nhau.
  • Tỷ lệ có lời: là tỷ lệ các giao dịch tạo ra lợi nhuận trên tổng số các giao dịch.
  • Lợi nhuận ròng trung bình trên mỗi giao dịch: lợi nhuận ròng có thể bị sai lệch bởi một giao dịch ngoại lệ, một giao dịch duy nhất tạo ra lợi nhuận (hoặc thua lỗ) lớn hơn nhiều lần so với một giao dịch thông thường. Giá trị ngoại lệ có thể được loại bỏ để cho phép đánh giá chính xác hơn. Nếu sự thành công của hệ thống giao dịch trong việc phản hồi phụ thuộc vào một yếu tố ngoại lai, hệ thống cần được hoàn thiện hơn nữa.
  • Giao dịch thua lỗ liên tiếp tối đa: là một hệ số rất quan trọng vì một chuỗi dài các khoản lỗ liên tiếp luôn gây ra một khoản giảm giá lớn và do đó, rủi ro tiềm tàng cao cho hệ thống giao dịch.
  • Thời gian sụt giảm tối đa: được tính là khoản thời gian khi đường cong vốn sụt giảm từ đỉnhvà quay trở lại tối đa.
upload_2021-6-5_10-15-18.png
  • Tỷ lệ Sharpe: là một thước đo phổ biến về lợi nhuận so với rủi ro của một danh mục đầu tư hoặc một hệ thống. Nó được tính bằng tỷ lệ giữa lợi nhuận đã điều chỉnh với lãi suất phi rủi ro và độ lệch chuẩn lợi nhuận (1 thước đo rủi ro). Tuy nhiên rủi ro không chỉ là độ biến động mà còn rủi ro khi mất vốn. Do đó một nhược điểm của tỷ lệ Sharpe không tính đến tỷ lệ rút vốn và không tính đến độ nhọn sai lệch của lợi nhuận.
Trên đây là một số thước đo khác giúp chúng ta đánh giá cũng như có thể so sánh các chiến lược giao dịch với nhau. Việc lựa chọn thước đo nào tùy thuộc vào mỗi cá nhân vì chúng đều có những ưu điểm và nhược điểm khác nhau. Ngoài ra vẫn còn rất nhiều các hệ số khác có thể hỗ trợ công việc này và anh em có thể tham khảo ở các tài liệu bên ngoài.

2. Tối ưu hóa


Tối ưu hóa chỉ đơn giản là thay đổi các thông số của một hệ thống để đạt được kết quả tốt nhất. Lợi ích quan trọng nhất của việc tối ưu hóa là chúng ta có thể tìm thấy các tham số không hoạt động trong bất kỳ trường hợp nào. Nếu các tham số không hoạt động với dữ liệu trong quá khứ, rất có thể chúng sẽ không hoạt động trong tương lai. Do đó, tối ưu hóa có thể loại bỏ các quy tắc và thông số vô ích.

Mối quan tâm chính với tối ưu hóa là xu hướng phù hợp với đường cong. Điều chỉnh đường cong (curve-fitting) xảy ra khi chương trình tối ưu hóa tìm thấy bộ thông số tốt nhất và hoàn hảo. Vấn đề là bằng cách thực hiện tối ưu hóa như vậy, chúng ta chỉ đang điều chỉnh dữ liệu cho một đường cong kết quả và không biết liệu các tham số chúng tôi đã thu được có thực hiện tốt trong tương lai hay không. Bởi vì tương lai là những gì chúng ta đang cố gắng kiểm soát, nên hầu hết việc tối ưu hóa là vô ích và thậm chí nguy hiểm vì nó mang lại cho chúng ta cảm giác tự tin sai lầm. Vì vậy với những anh em mới thì chúng ta có thể bỏ qua bước này vì nó khá khó và dễ mắc phải vấn đề điều chỉnh đường cong.

Dưới đây là một số phương pháp tối ưu, vì chúng đòi hỏi nhiều kiến thức nên mình sẽ chỉ giới thiệu, anh em muốn biết thêm có thể tìm hiểu từ các tài liệu khác nhé.
  • Tối ưu toàn bộ mẫu: Một phương pháp tối ưu hóa là lấy toàn bộ mẫu giá và chạy tối ưu hóa các thông số. Điều này thường không tốt vì nó là gần giống với điều chỉnh đường cong. Để tránh điều chỉnh đường cong, tối ưu hóa chỉ nên tối ưu hóa một phần dữ liệu, được gọi là dữ liệu trong mẫu (IS) và kiểm tra các tham số kết quả trên một phần khác của dữ liệu, được gọi là dữ liệu ngoài mẫu (OOS), để xem liệu kết quả tích cực có tiếp tục trong dữ liệu mà quá trình tối ưu hóa chưa từng thấy trước đó hay không.
  • Tối ưu hóa ngoài mẫu (OOS): Đây là phương pháp thường được sử dụng nhất trong các nghiên cứu hồi quy và mạng nơ-ron.
  • Tối ưu hóa về phía trước (Walk Forward Optimization): cũng là một phương pháp OOS sử dụng gần giống chuỗi dữ liệu giá như đã mô tả trước đó, quy trình phổ biến nhất là tối ưu hóa một phần nhỏ dữ liệu và sau đó kiểm tra nó trên một khoảng thời gian nhỏ của dữ liệu tiếp theo.

3. Những điều cần tránh khi thực hiện backtest


Backtesting là quá trình tạo ra các giao dịch lịch sử dựa trên thông tin lịch sử có sẵn tại thời điểm đó và sau đó tìm hiểu hiệu suất của các giao dịch đó. Quá trình này có vẻ dễ dàng vì các giao dịch được thực hiện bằng thuật toán máy tính, nhưng có nhiều cách mà nó có thể bị sai lệch. Thông thường, một backtest có sai sót sẽ tạo ra một hiệu suất lịch sử tốt hơn những gì chúng ta có được trong giao dịch thực tế. Vì vậy, chúng ta nên luôn coi backtest là giới hạn trên lý tưởng về hiệu suất thực tế của chiến lược. Dưới đây là những vấn đề phổ biến nhất và các cách để chúng ta có thể hạn chế tác động của chúng.

  • Thiên kiến tiên liệu (Look-Ahead Bias):
Lỗi này đề cập đến tình huống khi bạn đang sử dụng thông tin chỉ có sẵn tại thời điểm trước thời điểm giao dịch được thực hiện. Ví dụ: nếu quy tắc mua của chúng ta là: “Mua khi cổ phiếu nằm trong khoảng 1% so với mức thấp nhất trong ngày”, chúng ta đã vô tình đưa mắc phải thiên kiến tiên liệu trong chiến lược của mình, bởi vì chúng ta không thể biết mức thấp nhất trong ngày là bao nhiêu cho đến khi thị trường đóng cửa vào ngày hôm đó.

Để tránh được thiên kiến tiên liệu, có một cách là chúng ta sử dụng dữ liệu lịch sử với độ trễ để tính toán các tín hiệu với mọi giao dịch. Làm trễ một loạt dữ liệu có nghĩa là chúng ta tính toán tất cả các số lượng như đường trung bình động, chỉ dựa trên dữ liệu cho đến khi kết thúc giai đoạn giao dịch trước đó.

Một nhà giao dịch định lượng phải cực kỳ cẩn thận để tránh sự xuất hiện của nó. Đây thường là lý do chính khiến các chiến lược giao dịch hoạt động kém hiệu quả so với giao dịch thực tế.

  • Thiên kiến tối ưu (Optimisation Bias):
Như đã đề cập ở phần tối ưu hóa phía trên, thiên kiến này liên quan đến việc điều chỉnh hoặc bổ sung các thông số cho đến khi hiệu suất trên chiến lược định lượng của chúng ta trở nên tốt hơn. Nó cũng có những tên gọi khác như “điều chỉnh đường cong” (Curve-Fitting) hoặc đào bới dữ liệu (Data-snooping Bias).

upload_2021-6-5_10-17-45.png

Thiên kiến tối ưu khó có thể bị loại bỏ vì các chiến lược định lượng thường liên quan đến nhiều tham số. "Tham số" trong trường hợp này có thể là các ngưỡng vào/thoát giao dịch, khoảng thời gian nhìn lại (với MA(20) thì 20 ngày chính là khoảng thời gian nhìn lại), thời gian nắm giữ hoặc độ biến động (volatility). Có thể giảm thiểu sai lệch tối ưu hóa bằng cách giữ số lượng tham số ở mức tối thiểu và tăng số lượng điểm dữ liệu trong tập huấn luyện (tăng thời gian backtest trong dữ liệu).
Một cách khác giúp giảm thiểu vấn đề này là sử dụng phân tích độ nhạy (Sensitivity Analysis). Phương pháp phân tích độ nhạy là việc xem xét sự thay đổi của các chỉ tiêu hiệu quả tài chính khi các yếu tố có liên quan đến chỉ tiêu đó thay đổi. Khi chúng ta đã tối ưu hóa các tham số của mình cũng như các tính năng khác nhau của mô hình và đã xác minh rằng hiệu suất của nó trên một tập dữ liệu thử nghiệm vẫn hợp lý, thay đổi các thông số này hoặc thực hiện một số thay đổi nhỏ trong các tính năng của mô hình và xem hiệu suất thay đổi như thế nào trong cả dữ liệu trong mẫu và dữ liệu ngoài mẫu. Nếu sự sụt giảm nghiêm trọng đến mức không thể chấp nhận được bất kỳ bộ tham số nào khác ngoài bộ tham số tối ưu, thì mô hình rất có thể bị thiên kiến tối ưu.

Lời kết: Ở phần cuối, mình sẽ trình bày thêm về một phần nhỏ nữa về chi phí giao dịch và tổng hợp lại cho em vì phần này nó hơi dài dòng một chút. Cảm ơn các anh em đã đọc và ủng hộ.
 

Giới thiệu sách Trading hay
Phương Pháp Thực Chiến Hiệu Suất Cao Của Nhà Quán Quân Giao Dịch Tài Chính

Sách hướng dẫn phương pháp giao dịch hiệu suất cao của tác giả Robert Miner, người đã từng nhiều lần vô địch và đạt thứ hạng cao tại các cuộc thi trading toàn thế giới
Chỉnh sửa lần cuối bởi người điều hành:
Bài viết cho em thêm một số góc nhìn và kiến thức khi backtest.
Em cũng thỉnh thoảng nghi ngờ liệu mình có dính vào thiên kiến trong khi backtest.
Ví dụ như em có từng đi tiền như sau:
Các lệnh xảy ra lúc thị trường biến động mạnh (khoảng cắt lỗ >4% theo giá tính từ điểm vào) thì giảm 1/2 size lệnh
Các lệnh lúc biến động thấp (khoảng cắt lỗ <4% theo giá tính từ điểm vào) thì tăng 1/2 size lệnh.
Không biết liệu vậy có tính là thiên kiến không ạ?
 
Bác có phần mềm backtest free nào ko cho ae xin vs, e thấy trong nhóm pp giao dịch nhiều, nhưng phần mềm backtest thì lại ko có
 
Bác có phần mềm backtest free nào ko cho ae xin vs, e thấy trong nhóm pp giao dịch nhiều, nhưng phần mềm backtest thì lại ko có
Mình có nói ở bài trước đó bạn, đơn giản nhất có thể dùng Excel hoặc nếu anh em biết về code có thể dùng Python hoặc R đều free nhé.
 
Bài viết cho em thêm một số góc nhìn và kiến thức khi backtest.
Em cũng thỉnh thoảng nghi ngờ liệu mình có dính vào thiên kiến trong khi backtest.
Ví dụ như em có từng đi tiền như sau:
Các lệnh xảy ra lúc thị trường biến động mạnh (khoảng cắt lỗ >4% theo giá tính từ điểm vào) thì giảm 1/2 size lệnh
Các lệnh lúc biến động thấp (khoảng cắt lỗ <4% theo giá tính từ điểm vào) thì tăng 1/2 size lệnh.
Không biết liệu vậy có tính là thiên kiến không ạ?
Mình xin cảm ơn bạn nhé.
Về vấn đề bạn tăng size hay giảm size lệnh mình nó không phải thiên kiến mà thiên về cách quản lý vốn và rủi ro bạn nhé.
 

BÌNH LUẬN MỚI NHẤT

  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 689 Xem / 34 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 210 Xem / 18 Trả lời
  • Quíc Óp trong Phân tích Forex - Vàng - Hàng hóa 158 Xem / 5 Trả lời
  • AdBlock Detected

    We get it, advertisements are annoying!

    Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

    Back
    Bên trên