Giao dịch thuật toán/định lượng cơ bản

Bài viết này sẽ cung cấp một số khái niệm cơ bản về hệ thống giao dịch định lượng (quantitative trading system). Đối tượng của bài viết này bao gồm hai nhóm. Trước tiên sẽ là những ai đang có mục tiêu trở thành một chuyên viên giao dịch định lượng trong các quỹ đầu tư. Thứ hai là những người muốn cố gắn thiết kế thuật toán giao dịch cho công việc kinh doanh cá nhân.

Giao dịch định lượng (quantitative trading) là gì?

Giao dịch định lượng (giao dịch bằng thuật toán) là một lĩnh vực cực kỳ tinh vi, phức tạp của tài chính định lượng. Nghiên cứu nó có thể cần một khoảng thời gian lớn để nắm bắt những kiến thức cần thiết nhằm vượt qua một cuộc phỏng vấn nghề nghiệp hay xây dựng một chiến lược giao dịch riêng cho bản thân. Không chỉ vậy nó còn đòi hỏi kỹ năng lập trình trên nhiều ngôn ngữ như MATLAB, R hay Python. Khi mà chiến thuật giao dịch tần số cao đang gia tăng thì công nghệ càng ngày quan trọng và có liên quan mật thiết. Do đó việc nắm vững và sử dụng các ngôn ngữ lập trình, đặc biệt là C/C++ là một điều tối quan trọng.

Một hệ thống giao dịch định lượng bao gồm 4 thành phần chính như sau:

1. Xác định chiến lược (Strategy Identification): Tìm một chiến lược, khai thác lợi thế đó và quyết định tần suất giao dịch

2. Kiểm định lại chiến lược (Strategy Backtesting): Khai thác dữ liệu, phân tích hiệu quả của chiến lược và loại bỏ những sai lệch.

3. Thực thi hệ thống (Execution System): Tạo một liên kết tới khu môi giới (broker), tự động hóa các giao dịch và giảm thiểu chi phí giao dịch.

4. Quản trị rủi ro (Risk Management): Phân bổ nguồn vốn tối ưu nhằm giảm thiểu rủi ro.

Xác định chiến lược (Strategy Identification)

Tất cả tiến trình giao dịch định lượng đều bắt đầu với vấn đề nghiên cứu. Quá trình nghiên cứu này bao gồm việc tìm kiếm một chiến lược, xem thử chiến lược có phù hợp với danh mục đầu tư của các chiến lược khác đang thực hiện, thu thập các dữ liệu cần thiết để kiểm tra chiến lược và thử tìm cách tối ưu hóa chiến lược để đạt được lợi nhuận cao hơn và/hoặc rủi ro thấp hơn. Chúng ta sẽ cần tính đến lượng vốn cần thiết nếu thực hiện nếu là một nhà giao dịch cá nhân và sự ảnh hưởng của chi phí giao dịch đến chiến lược.

Trái ngược với quan niệm phổ biến cho rằng sẽ khá dễ để tìm một chiến lược có lợi nhuận qua nhiều nguồn tài nguyên công cộng, việc tìm kiếm một chiến lược khả thi và tin cậy đòi hỏi công sức và nền tảng kiến thức lý thuyết cũng như thực tế để phát triển thuật toán cho chính mình. Các nhà nghiên cứu thường công bố những kết quả giao dịch theo lý thuyết trong khi các blog về tài chính định lượng sẽ thảo luận các chiến lược một cách chi tiết còn các tạp chí giao dịch sẽ tổng hợp các chiến lược được sử dụng của những quỹ đầu tư. Bạn có thể đặt câu hỏi tại sao các cá nhân và tổ chức lại sẵn sàng thảo luận về những chiến lược liên quan đến lợi nhuận của họ, đặc biệt là họ lại biết rất rõ đám đông nhà đầu tư còn lại có thể áp dụng chiến thuật này và làm nó trở nên mất hiệu lực trong dài hạn. Lý do nằm ở chỗ ho sẽ không nói về những thông số và phương pháp điều chỉnh mà họ đã thực hiện. Những tham số được tối ưu hóa mới chính là chìa khóa để biến một chiến lược tầm thường thành một chiến lược có lợi nhuận cao. Do đó trong thực tế một trong những cách tốt nhất để tạo ra một chiến lược độc đáo có lợi nhuận là dựa trên các phương pháp tương tự và sau đó tiến hành các thủ thuật để tối ưu hóa theo cách riêng của mình.

Một số website có thể dùng để tìm kiếm chiến lược giao dịch:

·         Social Science Research Network – www.ssrn.com

·         arXiv Quantitative Finance – arxiv.org/archive/q-fin

·         Seeking Alpha – www.seekingalpha.com

·         Elite Trader – www.elitetrader.com

·         Nuclear Phynance – www.nuclearphynance.com

·         Quantivity – quantivity.wordpress.com

Nhiều chiến lược khi bạn xem xét thường rơi vào các nhóm mean-reversion và trend-following/momentum. Chiến lược mean-reverting cố gắng để khai thác vấn đề trung bình trong dài hạn của một chuỗi giá (price series) và những sai lệch trong ngắn hạn này sẽ được điều chỉnh về quy luật của nó trong dài hạn. Chiến lược momentum lại cố gắng khai thác cả tâm lý nhà đầu tư và chiến lược của các quỹ lớn để đi theo xu hướng bằng cách tìm kiếm các đà tăng/giảm của thị trường cho đến khi nó bị đảo ngược.

Một khía cạnh rất quan trọng khác của giao dịch định lượng là tần số của chiến lược giao dịch. Giao dịch tần suất thấp (Low frequency trading – LFT ) thường được dùng để đề cập đến chiến lược nào giữ các tài sản dài hơn một ngày giao dịch. Tương ứng thì giao dịch tần suất cao (High frequency trading – HFT) dùng để đề cập đến các chiến lược chỉ giữ tài sản trong ngày giao dịch và giao dịch tần suất siêu cao (Ultra-high frequency trading – UHFT) là giữ tài sản chỉ trong vài giây hoặc mili giây. Do tính chất rất phức tạp của HFT và UHFT nên bài viết này sẽ không nghiên cứu 2 loại chiến lược này chi tiết.


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 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.


Giao dịch định lượng cơ bản (P3-phần cuối)

Quản trị rủi ro (Risk management)

Công việc cuối cùng phải làm đối với hệ thống giao dịch là tiến trình quản trị rủi ro. Rủi ro ở đây bao gồm tất cả những lệch lạc mà chúng ta đã nói đến các phần trước. Nó bao gồm rủi ro về công nghệ ví dụ như các hệ thống máy chủ (server) ở sàn giao dịch đột nhiên xuất hiện lỗi đĩa cứng; rủi ro về broker như broker bị phá sản (bankrupt)…Tóm lại, những rủi ro này bao gồm gần như tất cả mọi thứ có thể gây trở ngại đến việc thực thi giao dịch của hệ thống và mỗi rủi ro là lại có thể có nhiều nguyên nhân gây ra nó. Hầu hết tất cả các quyển sách nói về chiến lược giao dịch đều đề cập đến quản trị rủi ro một cách chi tiết và đầy đủ, do đó trong phạm vi tính chất bài viết này sẽ không đề cập đầy đủ tất cả những nguyên nhân gây ra rủi ro với hệ thống.

Quản trị rủi ro cũng bao hàm cả khái niệm phân bổ nguồn vốn tối ưu (optimal capital allocation) là một nhánh của lý thuyết danh mục đầu tư. Khái niệm này có nghĩa là bao nhiêu vốn sẽ được phân phối tương ứng cho các chiến lược khác nhau và cho những giao dịch trong những chiến lược đó. Đây là một lĩnh vực phức tạp và nó dựa rất nhiều vào các kỹ thuật toán học để tính toán. Trong thực tế tiêu chuẩn được sử dụng trong việc phân bổ nguồn vốn tối ưu và tỉ lệ đòn bẩy của các chiến lược có liên quan đến khái niệm Tiêu chuẩn Kelly (Kelly criterion). Do bài viết này chỉ mang tính chất giới thiệu nên chúng tôi sẽ không đề cập sâu đến các vấn đề tính toán.

Công thức tiêu chuẩn Kelly: Kelly% = W – [(1-W)/R]

Có hai thành tố chính trong công thức này cần tính toán khi áp dụng vào việc giao dịch: W: xác suất xảy ra lợi nhuận dương của một giao dịch và R (win/loss): tỉ lệ giữa tổng những giao dịch lời và tổng những giao dịch lỗ.

Thành phần quan trọng khác của quản trị rủi ro là đối mặt với vấn đề tâm lý của bản thân mình. Có nhiều lệch lạc do nhận thức cảm tính của chuyên viên giao dịch, thiết kế hệ thống có thể đan xen vào công việc giao dịch. Có thể thừa nhận rằng các vấn đề về tâm lý sẽ được loại bỏ nếu như các chuyên viên giao dịch để hệ thống tự động thực thi mà không can thiệp. Một lệch lạc thông thường là “cảm giác mất mát” khi mà bạn đang bị thua lỗ nhưng không muốn đóng giao dịch đó lại vì điều đó đồng nghĩa với việc thừa nhận thua lỗ đó. Tương tự như vậy, trong trường hợp có lời thì giao dịch thường sẽ bị đóng quá sớm vì sợ mất lợi nhuận đã đạt được một cách tuyệt vời. Một lệch lạc khác thường được nhắc đến là lệch lạc gần đây (recency bias) có nghĩa là nhà đầu tư đặt quá nhiều trọng tâm vào các giao dịch/sự kiện xảy ra trong thời gian gần đây và không lâu dài, ví dụ như các chuyên viên giao dịch tính toán mức độ sinh lời của chiến lược dựa trên những kết quả giao dịch gần đây mà không phải trong một khoảng thời gian đủ dài, điều đó sẽ dẫn đến đánh giá không chính xác hiệu năng của chiến lược. Và tất nhiên không thể không nhắc đến một cặp lệch lạc cảm xúc truyền thống chính là sợ hãi và tham lam. 2 lệch lạc này thường dẫn đến việc sử dụng đòn bẩy quá thấp hoặc quá cao dẫn đến tình trạng blow-up (tài khoản vốn bị thua lỗ về 0 hoặc tình trạng xấu hơn) hay làm giảm lợi nhuận.

Tổng kết

Có thể thấy rằng giao dịch định lượng cực kỳ phức tạp mặc dù rất thú vị và cũng là một nhánh của tài chính định lượng. Bài viết trên chỉ đề cập đến những khía cạnh bề ngoài của giao dịch định lượng mọt cách đơn giản nhất, có rất nhiều quyển sách, bài nghiên cứu đã được viết ra chỉ dành riêng cho một chủ đề nhỏ đã nhắc đến ở trên. Do đó, bất kỳ ai muốn làm việc cho các quỹ ở vị trí giao dịch thì cần phải sẵn sàng học và nghiên cứu một khối lượng kiến thức lớn. Ít nhất thì các chuyên viên này phải có nền tảng vững ở lĩnh vực thống kê và kinh tế lượng với kinh nghiệm trong việc áp dụng chúng bằng các phần mềm như MATLAB, Python hay R. Đối với các chiến lược tinh vi, phức tạp hơn như giao dịch tần suất cao thì cần thêm các kỹ năng bao gồm lập trình nhân của Linux (Linux kernel), lập trình C/C++ và assembly, tối ưu hóa mạng lưới độ trễ.

Nếu bạn đang muốn thử tạo ra một chiến lược giao dịch cho bản thân, lời khuyên chúng tôi đưa ra là phải có kỹ năng lập trình tốt trước tiên. Tự xây dựng các chương trình thu thập dữ liệu, kiểm định lại chiến lược và hệ thống điều hành cho bản thân càng nhiều càng tốt. Nếu như vốn của bạn đang được giao dịch trên hệ thống, ít nhất bạn có thể ngủ ngon khi biết rằng hệ thống đã được kiểm tra đầy đủ và những rủi ro đã được tính toán trước. Sử dụng phần mềm được gia công bởi các nhà cung cấp khác có thể giúp tiết kiệm thời gian trong ngắn hạn, tuy nhiên trong dài hạn lại có thể rất tốn kém vì khó điều chỉnh lại hệ thống theo mục tiêu của mình cũng như tối ưu hóa các vấn đề khác.


Source: https://www.quantstart.com/articles/Beginners-Guide-to-Quantitative-Trading

Leave a Reply

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