Kiểm tra thành công các chiến lược giao dịch thuật toán - Phần II

Tác giả:Tốt, Tạo: 2019-03-21 14:09:21, Cập nhật:

Trong bài viết đầu tiên về backtesting thành công, chúng tôi đã thảo luận về những thiên vị thống kê và hành vi ảnh hưởng đến hiệu suất backtest của chúng tôi. Chúng tôi cũng đã thảo luận về các gói phần mềm để backtest, bao gồm Excel, MATLAB, Python, R và C ++.

Chi phí giao dịch

Một trong những sai lầm phổ biến nhất của người mới bắt đầu khi thực hiện mô hình giao dịch là bỏ qua (hoặc đánh giá thấp) tác động của chi phí giao dịch đối với một chiến lược.

Phí hoa hồng/Phí

Các hình thức chi phí giao dịch trực tiếp nhất mà một chiến lược giao dịch thuật toán phải chịu là hoa hồng và phí. Tất cả các chiến lược đều yêu cầu một số hình thức truy cập vào một sàn giao dịch, trực tiếp hoặc thông qua một trung gian môi giới (the broker).

Các nhà môi giới thường cung cấp nhiều dịch vụ, mặc dù các thuật toán định lượng chỉ thực sự sử dụng cơ sở hạ tầng trao đổi. Do đó, hoa hồng môi giới thường nhỏ trên cơ sở mỗi giao dịch. Các nhà môi giới cũng tính phí, đó là chi phí để thanh toán và giải quyết giao dịch. Ngoài ra còn có thuế do chính phủ khu vực hoặc quốc gia áp đặt. Ví dụ, ở Anh có thuế tem để thanh toán cho các giao dịch chứng khoán.

Sự trượt/đang trễ

Slippage là sự khác biệt về giá đạt được giữa thời điểm một hệ thống giao dịch quyết định giao dịch và thời gian giao dịch thực sự được thực hiện tại một sàn giao dịch. Slippage là một thành phần đáng kể của chi phí giao dịch và có thể tạo ra sự khác biệt giữa một chiến lược rất có lợi nhuận và một chiến lược có hiệu suất kém. Slippage là một chức năng của sự biến động tài sản cơ bản, độ trễ giữa hệ thống giao dịch và sàn giao dịch và loại chiến lược đang được thực hiện.

Một công cụ có độ biến động cao hơn có nhiều khả năng di chuyển và do đó giá giữa tín hiệu và thực thi có thể khác nhau đáng kể. Độ trễ được định nghĩa là sự khác biệt thời gian giữa việc tạo tín hiệu và điểm thực thi. Các chiến lược tần số cao hơn nhạy cảm hơn với các vấn đề về độ trễ và cải thiện tỷ giây trên độ trễ này có thể tạo ra sự khác biệt về lợi nhuận. Loại chiến lược cũng rất quan trọng. Các hệ thống động lực bị trượt nhiều hơn trung bình vì chúng đang cố gắng mua các công cụ đã di chuyển theo hướng dự báo. Điều ngược lại đúng với các chiến lược đảo ngược trung bình vì các chiến lược này đang di chuyển theo hướng đối lập với giao dịch.

Tác động thị trường/Tiền thanh khoản

Tác động thị trường là chi phí mà các nhà giao dịch phải chịu do động lực cung/nhu cầu của sàn giao dịch (và tài sản) mà họ đang cố gắng giao dịch. Một lệnh lớn trên một tài sản tương đối không thanh khoản có thể sẽ di chuyển thị trường đáng kể vì giao dịch sẽ cần phải truy cập một thành phần lớn của nguồn cung hiện tại. Để đối phó với điều này, các giao dịch khối lớn được chia thành các phần nhỏ hơn được giao dịch định kỳ, khi thanh khoản mới đến sàn giao dịch.

Các tài sản không thanh khoản được đặc trưng bởi một mức chênh lệch lớn hơn, đó là sự khác biệt giữa giá thầu hiện tại và giá yêu cầu trên sổ lệnh giới hạn. Mức chênh lệch này là một chi phí giao dịch bổ sung liên quan đến bất kỳ giao dịch nào. Mức chênh lệch là một thành phần rất quan trọng của tổng chi phí giao dịch - như được chứng minh bởi vô số các công ty cá cược chênh lệch của Vương quốc Anh, các chiến dịch quảng cáo của họ thể hiện mức chênh lệch của họ đối với các công cụ giao dịch nhiều.

Mô hình chi phí giao dịch

Để mô hình hóa thành công các chi phí trên trong một hệ thống backtesting, các mức độ mô hình giao dịch phức tạp khác nhau đã được giới thiệu. Chúng dao động từ mô hình hóa phẳng đơn giản đến phương trình cận bậc không tuyến tính. Ở đây chúng tôi sẽ phác thảo các ưu và nhược điểm của mỗi mô hình:

Mô hình chi phí giao dịch cố định

Chi phí giao dịch phẳng là hình thức đơn giản nhất của mô hình hóa chi phí giao dịch. Chúng giả định một chi phí cố định liên quan đến mỗi giao dịch. Do đó, chúng đại diện tốt nhất cho khái niệm về hoa hồng và phí môi giới. Chúng không rất chính xác để mô hình hóa hành vi phức tạp hơn như trượt hoặc tác động thị trường. Trên thực tế, chúng không xem xét sự biến động hoặc thanh khoản của tài sản. Lợi ích chính của chúng là chúng đơn giản tính toán để thực hiện. Tuy nhiên, chúng có khả năng ước tính chi phí giao dịch thấp hơn hoặc cao hơn đáng kể tùy thuộc vào chiến lược được sử dụng. Do đó, chúng hiếm khi được sử dụng trong thực tế.

Mô hình chi phí giao dịch tuyến tính/đơn lẻ

Các mô hình chi phí giao dịch tiên tiến hơn bắt đầu với các mô hình tuyến tính, tiếp tục với các mô hình tuyến tính theo từng phần và kết luận với các mô hình bậc hai. Chúng nằm trên một phổ từ ít nhất đến chính xác nhất, mặc dù với ít nhất đến nỗ lực thực hiện lớn nhất. Vì trượt và tác động thị trường vốn là các hiện tượng không tuyến tính, các hàm bậc hai là chính xác nhất trong việc mô hình hóa các động lực này. Các mô hình chi phí giao dịch bậc hai khó thực hiện hơn nhiều và có thể mất nhiều thời gian để tính toán hơn so với các mô hình phẳng hoặc tuyến tính đơn giản hơn, nhưng chúng thường được sử dụng trong thực tế.

Các nhà giao dịch thuật toán cũng cố gắng sử dụng chi phí giao dịch lịch sử thực tế cho các chiến lược của họ như là đầu vào cho các mô hình giao dịch hiện tại của họ để làm cho chúng chính xác hơn. Đây là một doanh nghiệp khó khăn và thường giáp với các lĩnh vực phức tạp của việc mô hình hóa biến động, trượt và tác động thị trường. Tuy nhiên, nếu chiến lược giao dịch là giao dịch khối lượng lớn trong thời gian ngắn, thì ước tính chính xác chi phí giao dịch phải chịu có thể có tác động đáng kể đến lợi nhuận của chiến lược và vì vậy nó đáng để đầu tư vào nghiên cứu các mô hình này.

Các vấn đề thực hiện chiến lược

Trong khi chi phí giao dịch là một khía cạnh rất quan trọng của việc thực hiện backtesting thành công, có nhiều vấn đề khác có thể ảnh hưởng đến hiệu suất chiến lược.

Các loại lệnh giao dịch

Một lựa chọn mà một nhà giao dịch thuật toán phải thực hiện là làm thế nào và khi nào để sử dụng các lệnh trao đổi khác nhau có sẵn. Sự lựa chọn này thường nằm trong phạm vi của hệ thống thực thi, nhưng chúng tôi sẽ xem xét nó ở đây vì nó có thể ảnh hưởng rất lớn đến hiệu suất backtest chiến lược. Có hai loại lệnh có thể được thực hiện: lệnh thị trường và lệnh giới hạn.

Một lệnh thị trường thực hiện một giao dịch ngay lập tức, bất kể giá cả có sẵn. Do đó, các giao dịch lớn được thực hiện dưới dạng lệnh thị trường thường sẽ có một hỗn hợp giá khi mỗi lệnh giới hạn tiếp theo ở phía đối phương được thực hiện.

Lệnh giới hạn cung cấp một cơ chế cho chiến lược để xác định mức giá tồi tệ nhất mà giao dịch sẽ được thực hiện, với cảnh báo rằng giao dịch có thể không được hoàn thành một phần hoặc hoàn toàn.

Khi kiểm tra ngược, điều cần thiết là mô hình hóa hiệu ứng của việc sử dụng thị trường hoặc lệnh giới hạn một cách chính xác. Đặc biệt đối với các chiến lược tần số cao, kiểm tra ngược có thể vượt trội đáng kể so với giao dịch trực tiếp nếu các hiệu ứng của tác động thị trường và sổ lệnh giới hạn không được mô hình hóa chính xác.

OHLC dữ liệu đặc tính

Có những vấn đề đặc biệt liên quan đến các chiến lược backtesting khi sử dụng dữ liệu hàng ngày dưới dạng Open-High-Low-Close (OHLC), đặc biệt là đối với cổ phiếu.

Các bộ dữ liệu giá rẻ hoặc miễn phí, trong khi bị thiên vị tồn tại (mà chúng tôi đã thảo luận trong Phần I), cũng thường là nguồn cung cấp giá tổng hợp từ nhiều sàn giao dịch. Điều này có nghĩa là các điểm cực đoan (tức là mở, đóng, cao và thấp) của dữ liệu rất dễ bị ảnh hưởng bởi các giá trị outlying do các đơn đặt hàng nhỏ tại các sàn giao dịch khu vực. Hơn nữa, các giá trị này đôi khi cũng có nhiều khả năng là lỗi đánh dấu chưa được loại bỏ khỏi bộ dữ liệu.

Điều này có nghĩa là nếu chiến lược giao dịch của bạn sử dụng rộng rãi bất kỳ điểm OHLC cụ thể nào, hiệu suất backtest có thể khác với hiệu suất trực tiếp vì các lệnh có thể được định tuyến đến các sàn giao dịch khác nhau tùy thuộc vào nhà môi giới và quyền truy cập thanh khoản có sẵn của bạn.

Trong một vài bài viết tiếp theo chúng ta sẽ xem xét đo lường hiệu suất của backtest, cũng như một ví dụ thực tế về thuật toán backtesting, với nhiều hiệu ứng trên được bao gồm.


Thêm nữa