Kiểm tra ngược là nơi khác biệt nhất giữa giao dịch định lượng và giao dịch truyền thống. Theo dữ liệu thị trường thực tế đã xảy ra trong lịch sử, tín hiệu chiến lược mô phỏng kích hoạt và phù hợp với giao dịch nhanh chóng, và báo cáo hiệu suất và các dữ liệu khác được thu thập trong một khoảng thời gian. Đối với cổ phiếu trong nước và nước ngoài, hợp đồng tương lai hàng hóa, ngoại hối và các thị trường khác, kiểm tra ngược là thành phần quan trọng nhất của phát triển chiến lược.
Trong các chương trước, chúng tôi đã học được những điều cơ bản của ngôn ngữ lập trình chính thống, và dạy bạn cách sử dụng các nền tảng lập trình này để viết một số chiến lược giao dịch đơn giản. Có thể nói rằng con đường đã đi hơn một nửa. Tuy nhiên, một khi một chiến lược được viết, vẫn còn một khoảng cách dài với môi trường thị trường thực tế. Nó cũng đòi hỏi phải kiểm tra hậu trường liên tục
Từ quan điểm của logic giao dịch định lượng, Một chiến lược giao dịch thực sự dựa trên một loạt các nhận thức và giả định của thị trường. Kiểm tra hậu quả có thể xác định xem các giả định này có ổn định hay không. Trong thời kỳ bất ổn lịch sử, nó có thể mang lại loại lỗ nào? cũng như ngăn chặn việc ra quyết định về những lỗ này.
Ngoài ra, từ quan điểm của các hoạt động giao dịch định lượng, kiểm tra ngược có thể giúp phát hiện các lỗi trong logic chiến lược, chẳng hạn như các chức năng tương lai, giá trượt, phù hợp nhiều mức độ, v.v. Cung cấp bằng chứng đáng tin cậy rằng chiến lược có thể được sử dụng cho giao dịch thị trường thực.
Kiểm tra độ chính xác của tín hiệu giao dịch.
Kiểm tra liệu logic giao dịch và ý tưởng của bạn có khả thi không.
Khám phá các khiếm khuyết trong hệ thống giao dịch và cải thiện chiến lược ban đầu.
Vì vậy, ý nghĩa của backtesting là thực hiện một quá trình giao dịch đúng nhất có thể, xác minh tính hợp lệ của dữ liệu lịch sử, tránh những sai lầm tốn kém cho chiến lược sai, giúp chúng ta lọc, cải thiện và tối ưu hóa các chiến lược giao dịch.
Chiến lược giao dịch dựa trên dữ liệu lịch sử tĩnh trong quá trình backtesting, nhưng dữ liệu của giao dịch thực là năng động. Ví dụ: Nếu giá cao nhất lớn hơn giá đóng ngày hôm qua, mở vị trí dài. Điều kiện vị trí mở này trong thị trường thực, nếu đường K chưa hoàn thành, thì giá cao nhất là năng động, tín hiệu giao dịch có khả năng nhấp nháy qua lại. Trong quá trình backtesting, công cụ backtesting dựa trên dữ liệu lịch sử tĩnh có thể mô phỏng và tổng hợp.
Chức năng tương lai sử dụng giá tương lai, có nghĩa là các điều kiện hiện tại có thể được sửa đổi trong tương lai, và cùng một chức năng tương lai cũng có thể làm cho tín hiệu giao dịch không ổn định, chẳng hạn như chỉ số
Như được hiển thị dưới đây: Chức năng chỉ số nhấp nháy chỉ ra điểm chuyển đổi của các đỉnh và đáy. Nó có thể điều chỉnh giá trị của chính nó theo giá thời gian thực mới nhất, nhưng nếu giá hiện tại thay đổi, kết quả của chức năng quay nhấp nháy cũng sẽ thay đổi. Nếu bạn sử dụng chỉ số này với chức năng tương lai như vậy, tín hiệu lệnh hiện tại có thể được thiết lập và đặt, nhưng tín hiệu này có thể không được định lượng sau đó.
Hành vi được gọi là "giá cắp" đề cập đến việc sử dụng giá quá khứ để giao dịch. Ví dụ: Nếu giá cao nhất lớn hơn một mức giá cố định nhất định để mở vị trí bằng cách sử dụng giá mở. Điều kiện vị trí mở này là "giá cắp", bởi vì trên thị trường thực, khi giá cao nhất lớn hơn một mức giá nhất định, giá có thể cao hơn giá mở một khoảng cách nhất định, và sau đó sử dụng giá mở để mở vị trí là không thể. Tuy nhiên, trong môi trường kiểm tra ngược, bạn có thể giả thuyết mở vị trí ở mức giá mở.
Ngoài ra còn có một trường hợp khác, nếu khoảng cách giá vượt quá giá cố định được thiết lập bởi chiến lược, trong môi trường backtesting, tín hiệu giao dịch sẽ xảy ra và có thể được thực hiện; nhưng trong thị trường thực tế, rõ ràng nó không thể được thực hiện.
loại đầu tiên: Trong thị trường thực tế, một số sàn giao dịch có giới hạn hàng ngày của giá tăng tối đa và giảm hạn chế. tuy nhiên, trong môi trường backtesting, nó là có thể để thực hiện các lệnh.
Thứ hai: cơ chế khớp lệnh trao đổi, đó là ưu tiên giá và ưu tiên thời gian. Một số biến thể của chiều sâu lệnh thị trường thường sẽ có một số lượng lớn các lệnh đang chờ thực hiện. Trong thị trường thực, bạn phải chờ lệnh trước khi bạn đặt để thực hiện, đôi khi lệnh của bạn sẽ không bao giờ được thực hiện. Nhưng trong môi trường backtesting, lệnh đang chờ sẽ được thực hiện ở bất kỳ mức giá nào mà không cần chờ đợi.
Thứ ba: Đối với các chiến lược trọng tài, lợi nhuận backtesting thường rất cao, bởi vì mỗi khi hoạt động backtesting được giả định đã nắm bắt tất cả các giá chênh lệch. Trong hoàn cảnh thực tế, hầu hết các giá là không thể thực hiện, hoặc đôi khi chỉ có một hướng hoặc một mục tiêu giao dịch của hành động giao dịch được thực hiện, nói chung, nó gần như chắc chắn là hướng hoặc mục tiêu giao dịch thuận lợi sẽ được thực hiện trước tiên, sau đó bạn phải ngay lập tức cố gắng thực hiện hướng ngược lại hoặc đa dạng các lệnh chiến lược trọng tài. ngay cả với thời gian trì hoãn ngắn như vậy, sự lây lan của cơ hội giao dịch này có thể đã khiến bạn mất nhiều hơn 1 hoặc 2 điểm giá, trong khi toàn bộ chiến lược trọng tài chênh lệch chỉ có rất ít điểm giá lợi nhuận.
Bốn: Sự kiện
Mỗi khi tôi nhìn thấy bức ảnh sau, cả trái tim và tâm trí tôi đều vui vẻ. bức ảnh này cho chúng ta thấy một ý nghĩa chân thật, một mô hình lố bịch, đủ phức tạp, được điều chỉnh hoàn hảo cho bất kỳ dữ liệu nào.
Đối với giao dịch định lượng, backtesting dựa trên dữ liệu lịch sử, nhưng mẫu dữ liệu lịch sử bị hạn chế. Nếu có quá nhiều tham số của chiến lược giao dịch hoặc logic giao dịch quá phức tạp, chiến lược giao dịch sẽ thích nghi quá nhiều với dữ liệu lịch sử.
Quá trình mô hình hóa của chiến lược định lượng về cơ bản là một quá trình tìm kiếm dữ liệu không ngẫu nhiên địa phương từ một số lượng lớn dữ liệu dường như ngẫu nhiên.
Vì vậy, đừng tự lừa dối mình. Nếu bạn tìm thấy một dữ liệu hiệu suất xấu bên ngoài mẫu, không cảm thấy thương hại hoặc không muốn thừa nhận rằng mô hình không hoạt động, và tiếp tục tối ưu hóa nó cho đến khi dữ liệu mẫu bên ngoài cũng hoạt động tốt như bên trong. nó cuối cùng sẽ làm tổn thương tiền thật của bạn.
Phố Wall có một câu đùa phổ biến: Giả sử có 1.000 con khỉ trên thị trường tham gia vào đầu tư. Trong năm đầu tiên, 500 con khỉ đã bị mất vào thị trường. Vào nửa năm thứ hai, có 250 con khỉ còn lại. Đến cuối năm thứ ba, có 125 con khỉ còn lại.
…
Vào năm thứ chín, con khỉ cuối cùng còn lại. Và bạn nhìn vào nó, bạn càng nhìn vào nó, bạn càng cảm thấy khuôn mặt của nó quen thuộc hơn. Cuối cùng, bạn nhìn thấy trang bìa của một tạp chí tài chính và hét lên "Này, đó là Warren Buffett?
Mặc dù đây chỉ là một trò đùa, bạn vẫn có thể lập bản đồ cho tình hình thế giới thực. Ví dụ, nếu có 1000 nhà quản lý quỹ, sau 10 năm, khoảng 10 nhà quản lý quỹ sẽ vượt trội hơn thị trường trong 10 năm liên tiếp. Điều này có thể là do may mắn ngẫu nhiên và các quyết định, kỹ năng của các nhà quản lý quỹ này không liên quan đến nó.
Giống như báo cáo backtest bên dưới, hầu hết các nhà đầu tư sẽ chọn con số ở bên trái, có hiệu suất rất vững chắc mà không có sự khôi phục đáng kể.
nhưng xin vui lòng chờ đợi, như được hiển thị ở bên phải, đó là tình hình thực tế. đường cong ở bên trái chỉ là tốt nhất trong số nhiều backtests. nghĩa là, có nhiều hiệu suất tồi tệ hơn nhiều so với tình hình bên trái.
Trong một môi trường giao dịch thực sự, giá cả luôn biến động. Khi bạn lạc quan về cơ hội giao dịch, giá có thể đã thay đổi tại thời điểm đặt lệnh. Vì vậy, vấn đề trượt, cho dù trong giao dịch chủ quan hoặc trong giao dịch định lượng, là không thể tránh khỏi.
Nhưng backtesting dựa trên dữ liệu tĩnh, rất khó mô phỏng môi trường giao dịch thực tế. Ví dụ: giá lệnh là 1050 để mua, nhưng giá giao dịch thực tế có thể là 1051. Có nhiều tình huống cho hiện tượng này, chẳng hạn như: chân không thanh khoản trong chuyển động giá cực đoan, sự chậm trễ của mạng, sự chậm trễ của hệ thống phần cứng và phần mềm, sự chậm trễ phản hồi của máy chủ, v.v.
Kiểm tra ngược không trượt
Như đã thấy ở trên, là một báo cáo backtest không trượt, đường cong lợi nhuận trông tốt, nhưng có sự khác biệt giữa backtest và giao dịch thực tế trên thị trường thực.
Kiểm tra ngược với trượt
Như đã thấy ở trên, cùng một chiến lược, nếu thêm 2 điểm trượt, kết quả backtesting với và không có trượt rất khác nhau, có nghĩa là chiến lược này cần được cải thiện hoặc từ bỏ.
Một số người có thể hỏi, vì có thể có rất nhiều vấn đề trong giao dịch định lượng, làm thế nào tôi có thể chứng minh rằng chiến lược của tôi là ok? câu trả lời rất đơn giản, chúng ta phải đầu tiên mô phỏng giao dịch bằng chiến lược này một thời gian trước khi sử dụng tiền thật, nếu giá giao dịch và tình huống mô phỏng giao dịch gần như giống nhau với logic chiến lược, thì ít nhất nó chứng minh logic chiến lược không có vấn đề.
Trong bất kỳ trường hợp nào, đối với một nhà phát triển hệ thống giao dịch có kinh nghiệm, backtesting là một điều cần thiết. Bởi vì nó có thể cho bạn biết liệu một ý tưởng chiến lược có thể được xác nhận trong dữ liệu lịch sử hay không. Nhưng nhiều lần backtesting không có nghĩa là tương lai sẽ có lợi nhuận. Bởi vì có quá nhiều hố trong backtesting, sau khi bạn trả
Quá phù hợp là gì và làm thế nào để tránh nó?
Có những ví dụ nào trong cuộc sống thực về "sự thiên vị của người sống sót"?