Giao dịch định lượng cơ bản (P2)

Kiểm định lại chiến lược (Strategy Backtesting)

Mục tiêu của việc kiểm định lại chiến lược là tìm các bằng chứng xác thực khả năng sinh lời của một chiến lược khi ứng dụng vào dữ liệu lịch sử (historical data) và dữ liệu ngoài mẫu(*) (out-of-sample data). Bước kiểm định này dễ tạo ra kỳ vọng rằng sẽ có các chiến lược tạo ra lợi nhuận tốt trên thị trường thực. Tuy nhiên thực sự khâu kiểm định không đảm bảo cho sự thành công vì nhiều lý do. Đây chính là phần nhạy cảm nhất của giao dịch định lượng khi mà nó đòi hỏi phải vô số các sai lệch (bias) phải được xem xét cẩn thận và loại bỏ càng nhiều càng tốt. Chúng ta sẽ bàn đến một số loại sai lệch thông thường bao gồm look-ahead bias, survivorship bias và optimisation bias (hay còn gọi là data-snooping bias). Một số vấn đề quan trọng khác ảnh hưởng đến mô hình là tính khả dụng và độ “trong sạch” của dữ liệu, phân tích các chi phí giao dịch trong thực tế cũng như việc đưa ra quyết định dựa trên nền tảng vững chắc của khâu kiểm định. Chúng ta sẽ nói thêm về chi phí giao dịch trong phần thực thi hệ thống bên dưới.

(*Out-of-sample data: Ví dụ một mô hình được xây dựng dựa trên dữ liệu từ 1970-1979, sau đó người ta thử nghiệm mô hình này với dữ liệu từ 1980-1989 thì dữ liệu này gọi là out-of-sample).

Một khi chiến lược đã được xác định thì phải tiến hành thu thập dữ liệu lịch sử rồi tiến hành thử nghiệm và cải tiến mô hình. Có rất nhiều nhà cung cấp dữ liệu cần thiết cho tất cả các loại tài sản, thông thường chi phí họ yêu cầu tỉ lệ với chất lượng, độ sâu và độ lâu dài của dữ liệu. Cách truyền thống để trở thành một chuyên viên giao dịch quant (ít nhất ở vị trí sales) là sử dụng các bộ dữ liệu miễn phí trên Yahoo Finance.

Những vấn đề chính cần phải quan tâm đối với dữ liệu lịch sử (historical data) bao gồm tính chính xác/trong sạch, survivorship bias và điều chỉnh số liệu lại do những hoạt động của công ty như chia cổ tức và tách cổ phiếu:

Tính chính xác (Accuracy) gắn liền với chất lượng tổng thể của dữ liệu. Một vài lỗi có thể dễ dàng tìm thấy bằng cách sử dụng các bộ lọc các điểm bất thường (spike filter), bộ lọc này sẽ tìm ra các điểm bất thường này trong chuỗi dữ liệu thời gian và chỉnh sửa lại cho phù hợp. Tuy nhiên sẽ có những lỗi rất khó phát hiện, vì vậy cần thiết phải có hai hay nhiều nguồn cung cấp dữ liệu trở lên để kiểm tra lẫn nhau.

Survivorship bias thường là đặc điểm của dữ liệu rẻ hoặc miễn phí. Bộ dữ liệu có survivorship bias nghĩa là nó không có hoặc thiếu dữ liệu về những tài sản đã không còn được giao dịch. Một ví dụ trường hợp loại tài sản vốn như cổ phiếu bị hủy niêm yết, vỡ nợ. Thiên kiến sai lệch này cho thấy bất kỳ chiến lược giao dịch của phiếu kiểm định trên bộ dữ liệu này dễ dẫn đến có kết quả tốt hơn so với kết quả thực giống như người chiến thắng đã được lịch sử lựa chọn trước.

Các hoạt động của công ty (Coporate actions) những hoạt động có tác động đến dữ liệu như giá cổ phiếu cần phải được điều chỉnh cho phù hợp, trường hợp điển hình là điều chỉnh cho việc chia cổ tức và tách cổ phiếu. Quá trình thực hiện các công việc điều chỉnh này gọi là quá trình điều chỉnh (back adjustment process). Một lưu ý khá quan trọng là cần phải phân biệt rõ ràng giữa việc chia tách cổ phiếu và điều chỉnh lại lợi nhuận cho phù hợp vì nhiều giao dịch viên thường không phân biệt rõ ràng sự khác biệt giữa hai khái niệm này.

Để thực hiện thủ tục kiểm định lại này cần phải sử dụng một phần mềm làm nền tảng. Có thể thực hiện kiểm định bằng phần mềm kiểm định chuyên dụng như Tradestation, phần mềm chuyên tính toán như Excel, MATLAB hoặc sử dụng ngôn ngữ lập trình để tự tạo ra một công cụ kiểm định riêng cho mình ví dụ như Python hay C++. Chúng ta sẽ không quan tâm nhiều đến phương pháp sử dụng các phần mềm có sẵn để kiểm định, thay vào đó là xây dựng các công cụ bằng cách tự lập trình. Một trong những lợi ích của cách làm này là chúng ta có thể tích hợp (liên kết) phần mềm kiểm định và hệ thống thực thi, điều này cho phép tính toán các phép tính thống kê phức tạp hơn trên hệ thống ngay cả khi hệ thống đang giao dịch, đặc biệt đối với các chiến lược HFT.

Công việc kiểm định phải định lượng được hiệu suất của hệ thống tốt đến mức nào. Các tiêu chuẩn để định lượng các chiến lược là maximum drawdown và Sharpe ratio. Maximum drawdown là chỉ số đặc trưng cho mức giảm lớn nhất (từ đỉnh đến đáy) của đường cong tài khoản vốn (account equity curve) trong một khoảng thời gian (thường là một năm). Chỉ số này thường được thể hiện ở tỉ số phần trăm, thông thường chiến lược LFT sẽ có maximum drawdown lớn hơn so với HFT do một số yếu tố khi thống kê. Kiểm định lại lịch sử giao dịch sẽ cho thấy maximum drawdown lớn nhất trong quá khứ từ đó có thể định hướng và kiểm soát các chiến lược có drawdown phù hợp. Chỉ số thứ hai cần phải quan tâm là Sharpe ratio, chỉ số này là trung bình của tỉ suất sinh lợi vượt trội chia cho độ lệch chuẩn của các tỉ suất sinh lợi vượt trội đó. Tỉ suất sinh lợi vượt trội là phần chên lệch giữa lợi nhuận chiến lược tạo ra và một tỉ suất sinh lợi tiêu chuẩn như chỉ số S&P 500 hay trái phiếu kho bạc T-bill kỳ hạn 3 tháng. Một vấn đề nữa là không nên sử dụng lợi nhuận hàng năm để làm thước đo tính hiệu quả của chiến lược hiện tại vì chiến lược có thể được điều chỉnh qua thời gian.

Backtesting bằng phần mềm MATLAB

Backtesting bằng cách sử dụng phần mềm MATLAB

Một khi chiến lược đã được kiểm định và nó hạn chế được các sai lệch càng nhiều càng tốt đồng thời được thử nghiệm và có chỉ số Sharpe tốt cũng như các drawdown nhỏ sẽ được tiến hành bước tiếp theo – xây dựng hệ thống thực thi.

Thực thi hệ thống (Execution Systems)

Thực thi hệ thống là danh sách các lệnh được tạo ra bởi chiến lược sẽ được gửi đến và thực hiện bởi broker. Các hệ thống giao dịch của sàn giao dịch thế hệ mới có thể bán tự động hoặc hoàn toàn tự động và cơ chế thực hiện của hệ thống của chúng ta xây dựng có thể bằng tay, bán tự động (qua 1 click chuột) hay tự động hoàn toàn. Đối với chiến lược LFT thường sử dụng kỹ thuật bằng tay và bán tự động trong khi chiến lược HFT cần phải tạo ra một cơ chế giao dịch tự động hoàn toàn.

Những vấn đề quan trọng khi tạo ra một hệ thống thực thi là quá trình tương tác với broker, tối thiểu hóa chi phí giao dịch (bao gồm hoa hồng, sự trượt giá…) và sự khác biệt của hiệu năng thực tế với hiệu năng trong khâu kiểm định.

Có nhiều cách để tương tác với broker. Từ việc đơn giản như gọi điện trực tiếp đến các broker qua điện thoại tới sử dụng các chương trình ứng dụng tương tác (API – Application Programming Interface) hoàn toàn tự động. Lý tưởng nhất chính là tự động hóa các công việc điều hành giao dịch càng nhiều càng tốt. Điều này sẽ giải phóng chúng ta khỏi các tác vụ này và tập trung sâu hơn vào khâu nghiên cứu cũng như thử nghiệm nhiều chiến lược giao dịch khác nhau cùng lúc, thậm chí là chiến lược tần suất cao HFT (trong thực tế, chiến lược HFT không thể thực hiện mà không sử dụng phương pháp tự động). Các phần mềm kiểm định đã được nói ở trên như MATLAB, Excel và Tradestation thì phù hợp với các chiến lược đơn giản, tần suất thấp. Tuy nhiên, cần thiết phải xây dựng một hệt thống thực thi được viết trên một ngôn ngữ lập trình có hiệu năng cao như C++ nhằm thực thi những chiến lược HFT bởi vì các ngôn ngữ mạnh như C/C++ cho phép chúng ta xử lý dữ liệu với tần suất là phút, giây hay tới mili giây và micro giây – một đặc tính lý tưởng với HFT.

Các quỹ lớn thông thường không phải là nơi phù hợp với những chuyên gia giao dịch định lượng để tối ưu hóa các hoạt động đầu tư của họ. Tuy nhiên trong những quỹ nhỏ hơn hay các công ty HFT, các chuyên gia giao dịch cũng là những nhà điều hành do đó cần thiết kỹ năng chuyên môn rộng hơn. Nếu bạn vẫn muốn làm cho một quỹ đầu tư lớn, kỹ năng lập trình vẫn quan trọng không kém kỹ năng về thống kê và kinh tế lượng.

Một vấn đề chính trong khâu thực thi là giảm thiểu chi phí giao dịch. Thông thường có ba loại chi phí giao dịch: hoa hồng (hoặc thuế) được trả cho các broker hay chi phí giao dịch cho SEC (Ủy ban chứng khoán Hoa Kỳ) hoặc cơ quan đại diện tương đương; sự trượt giá là sự thay đổi giữa giá được đặt mua và giá thực sự mua được; sự chênh lệch (spread) về giá bid/ask (mua/bán) của cổ phiếu được giao dịch. Sự chênh lệch về giá mua/bán không cố định và phụ thuộc vào tính thanh khoản hiện tại trên thị trường.

Các chi phí giao dịch có thể tạo ra sự khác biệt giữa một chiến lược cực kỳ lợi nhuận với tỉ số Sharpe tốt và một chiến lược không có lợi nhuận với tỉ số Sharpe không tốt. Tuy nhiên dự đoán chi phí giao dịch chính xác ở khâu kiểm định chiến lược là một điều khá khó khăn. Dựa vào tần suất của chiến lược, chúng ta cần tiếp cận với các dữ liệu giao dịch trong quá khứ bao gồm cả dữ liệu của giá bid/ask.

Vấn đề chính cuối cùng đối với hệ thống thực thi là sự khác biệt giữa hiệu năng chiến lược trên thực tế với hiệu năng ở khâu kiểm định, điều này xảy ra do nhiều nguyên nhân đã được nói đến ở trên như các sai lệch (look-ahead bias, optimisatoin bias) khi xem xét ở khâu kiểm định. Tuy nhiên vẫn có một số chiến lược không dễ kiểm tra những sai lệch này trước khi triển khai thực hiện. Điều này thường xảy ra đối với các chiến lược HFT, UHFT như có thể xuất hiện các lỗi trong hệ thống thực thi cũng như lỗi trong chiến lược giao dịch mà không xuất hiện khi kiểm định mà chỉ xuất hiện khi giao dịch thực tế. Ngoài ra, thị trường hoàn toàn có thể thay đổi sau khi triển khai các chiến lược giao dịch như môi trường pháp lý thay đổi, tâm lý nhà đầu tư thay đổi và các hiện tượng kinh tế vĩ mô dẫn đến thị trường sẽ có những hành vi khác dự tính ảnh hưởng đến lợi nhuận của chiến lược.

Phần mềm điều hành hoạt động tradingPhần mềm điều hành hoạt động giao dịch tích hợp backtesting

 

BINH LUAN

Leave a Reply

Your email address will not be published. Required fields are marked *