1. Giao dịch Định lượng (Quant Trading) – Backtesting

    Giao dịch Định lượng (Quant Trading) – Backtesting
    03/06/2021
    Chào các anh em, bài viết hôm nay sẽ tiếp tục chuỗi bài về giao dịch định lượng của mình, nối tiếp phần Xác định chiến lược giao dịch. Trong bài viết này, mình sẽ chỉ ra các phần mềm phổ biến có thể được sử dụng để backtest, các nguồn dữ liệu lịch sử hữu ích cho việc backtest, Các thước đo hiệu suất tiêu chuẩn bổ sung thêm cho bài viết trước, những cạm bẫy phổ biến cần tránh, các sàng lọc và cải tiến đơn giản đối với các chiến lược. Một số ví dụ backtesting được phát triển đầy đủ cũng sẽ được trình bày để minh họa các nguyên tắc và kỹ thuật được mô tả.


    1. Backtesting là gì?


    Đây có thể xem là phần khó nhất của việc thiết kế một hệ thống giao dịch định lượng. Quá trình bắt đầu bằng việc đảm bảo rằng dữ liệu được sử dụng trong backtest là “sạch”, đủ lâu trong quá khứ và giống với dữ liệu sẽ được sử dụng sau này khi hệ thống hoạt động. Tiếp theo là thiết lập các quy tắc cho mô hình và tối ưu hóa các biến được chọn. Các quy tắc này bao gồm các tín hiệu vào và thoát lệnh và sẽ có các bộ lọc khác được thêm vào sau này tùy thuộc vào kết quả của lần đầu tiên backtest. Sau khi hệ thống khả thi đã được tối ưu hóa đầy đủ, các tham số kết quả sau đó sẽ được backtest dựa trên dữ liệu ngoài mẫu (out-of-sample data) để xem liệu hệ thống có hoạt động với dữ liệu không xác định và không phải là kết quả của việc điều chỉnh đường cong (curve-fitting) hoặc đào bới dữ liệu (data mining). Hai vấn đề này cũng giống với data-snooping, data mining (đào bới dữ liệu), tức là kết quả có được chỉ là tình cờ chứ không chắc sẽ đúng. Chúng ta càng đào bới quá khứ sâu hơn, càng có khả năng tìm thấy những xu hướng mà mình ưa thích nhưng đó không phải là xu hướng đúng. Sau khi đã backtest trên dữ liệu ngoài mẫu không cho được kết quả tốt thì quá trình này phải làm lại từ đầu.

    Nói một cách dễ hiểu, backtesting là quá trình đưa thuật toán chiến lược cụ thể của bạn vào chuỗi dữ liệu tài chính lịch sử, dẫn đến một tập hợp các tín hiệu giao dịch. Mỗi giao dịch (bao gồm 2 tín hiệu) sẽ tạo ra một khoản lãi hoặc lỗ. Việc tích lũy các khoản lãi/lỗ này trong thời gian backtest lại chiến lược của bạn sẽ dẫn đến tổng lãi và lỗ. Đó là bản chất của việc backtest này.

    Backtesting là một quá trình phức tạp tuy nhiên đem lại rất nhiều lợi ích cho chúng ta, dưới đây là một số lợi ích có được:
    • Chọn lọc: Trong bài viết về Xác định chiến lược giao dịch định lượng, mục tiêu của chúng ta ở giai đoạn ban đầu là xác định một chiến lược và sau đó loại bỏ bất kỳ chiến lược nào không đáp ứng các tiêu chí nhất định. Backtesting cung cấp cho chúng ta một cơ chế chọn lọc khác, có thể loại bỏ các chiến lược không đáp ứng nhu cầu kỹ lưỡng hơn của chúng ta.
    • Lập mô hình: Backtesting cho phép chúng ta kiểm tra các mô hình mới của các hiện tượng nhất định trên thị trường, chẳng hạn như chi phí giao dịch, độ trễ, thanh khoản hoặc các vấn đề về cấu trúc thị trường khác.
    • Tối ưu hóa: Mặc dù tối ưu hóa chiến lược có nhiều sai lệch (điều chỉnh đường cong, đào bới dữ liệu, …) nhưng việc backtest cho phép chúng ta tăng hiệu suất của chiến lược bằng cách sửa đổi số lượng hoặc giá trị của các tham số liên quan đến chiến lược đó và tính toán lại hiệu suất của nó.

    2. Một số phần mềm hỗ trợ backtest


    Có rất nhiều phần mềm thương mại được thiết kế để backtest, với các mức giá trải dài từ thấp đến cao. Tùy vào khả năng lập trình và độ phức tạp của chiến lược giao dịch của anh em mà hãy chọn cho mình một phần mềm phù hợp. Một lời khuyên cho anh em là hãy đi từ các phần mềm đơn giản đến nâng cao.
    • Excel: Đây là công cụ cơ bản nhất và phổ biến nhất cho những người giao dịch định lượng, từ các cá nhân tới tổ chức. Chúng ta cũng có thể nâng cao khả năng của nó hơn nữa nếu anh em có thể viết macro Visual Basic (VBA). Một ưu điểm của excel là khả năng phát hiện được thiên kiến tiên liệu (Look-Ahead Bias) và có thể dễ tiếp cận với đa số mọi người. Nhược điểm của excel là nó chỉ có thể backtest các mô hình đơn giản, không thể chạy quá nhiều số liệu. Đây cũng là phần mềm mình khuyến khích cho những anh em mới bắt đầu.
    • MATLAB: Là một phần mềm lập trình ban đầu được thiết kế cho toán học tính toán, vật lý và kỹ thuật. Đây cũng là một trong những phần mềm được dùng phổ biến ở các tổ chức lớn và phù hợp để thử nghiệm các chiến lược liên quan đến một danh mục lớn gồm nhiều cổ phiếu. Một lợi ích của MATLAB là nó được tích hợp sẵn nhiều phương pháp thống kê và mô hình toán học đã được thử nghiệm. Nhược điểm của nó là giá thành khá cao và yêu cầu một hệ thống thực thi tách biệt.
    • Python: Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho những người lần đầu tiếp xúc với ngôn ngữ lập trình. Ưu điểm của Python là có rất nhiều thư viện hỗ trợ cho các thuật toán và đặc biệt đây là một mã nguồn mở, có thể truy cập miễn phí. Ngoài ra Python còn có liên kết với các nhà môi giới lớn, hỗ trợ cho hệ thống thực thi.
    • R: Đây là môi trường được thiết kế cho các phương pháp thống kê tiên tiến và phân tích chuỗi thời gian, bao gồm một loạt các bộ công cụ thống kê, kinh tế lượng và đồ thị riêng. R có thể sử dụng hiệu quả nhất khi phân tích kinh tế lượng, thống kê hoặc máy học (machine learning). Không những thế, R cũng có liên kết với các nhà môi giới, vì thế một hệ thống giao dịch hoàn toàn có thể được viết bằng phần mềm này. Và cũng như Python, R là mã nguồn mở và anh em có thể sử dụng miễn phí.

    3. Dữ liệu sử dụng trong backtest


    Để đánh giá được một chiến lược giao dịch định lượng thì dữ liệu sử dụng trong backtest phải thật chính xác. Nếu không có được dữ liệu chính xác thì việc backtest là vô ích hoặc có thể gây ra những sai lệch, ảnh hưởng đến khả năng đầu tư của chúng ta trong tương lai. Một dữ liệu phù hợp thì đủ lâu: tạo ra ít nhất 30-50 giao dịch (bao gồm lệnh vào và lệnh thoát) và có đủ các giai đoạn thì trường đi lên, đi xuống và đi ngang. Ngoài ra, dữ liệu còn nên được xem xét một số vấn đề sau đây:
    • Dữ liệu có được điều chỉnh với chia tách cổ phiếu, gộp cổ phiếu hoặc chi trả cố tức không? Với vấn đề này mình khuyến khích các anh em sử dụng các dữ liệu đã được điều chỉnh sẵn, nếu không chúng ta sẽ phải tự điều chỉnh. Còn về cách thức điều chỉnh nếu anh em muốn có thể tìm đọc thêm, mình sẽ không nêu ra trong bài viết này.
    • Với dữ liệu của thị trường tương lai thì nên sử dụng hợp đồng nào? Có nhiều cách để liên kết giá của các hợp đồng tương lai để sử dụng cho các nghiên cứu dài hạn, thường được biết đến là Hợp đồng vĩnh cửu (Perpetual Contract) và Hợp đồng liên tục (Continuous Contract). Còn cách thực hiện việc liên kết này anh em cũng có thể tìm đọc thêm vì nó không nằm trong phạm vi của bài viết này.
    • Dữ liệu có bị ảnh hưởng bởi thiên kiến sống sót (Survivorship Bias) không? Một cách để khắc phục vấn đề này là tự mình thu thập dữ liệu theo thời gian. Nếu anh em lưu giá mỗi ngày của tất cả các cổ phiếu của bạn vào một tệp, thì chúng ta sẽ có một cơ sở dữ liệu không thiên vị về thời điểm hoặc ảnh hưởng bởi thiên kiến sống sót để sử dụng trong tương lai. Một cách khác để giảm bớt tác động của thiên kiến sống sót là kiểm tra lại các chiến lược trên dữ liệu gần đây hơn để kết quả không bị bóp méo khi quá nhiều cổ phiếu bị mất.
    Lời kết: Trong phần sau mình sẽ đề cập đến những vấn đề cụ thể bao gồm những tiêu chí để có thể đánh giá hiệu suất, các vấn đề về tối ưu hóa và những sai lầm cần tránh khi thực hiện backtest.
    Hẹn gặp anh em trong các bài viết sắp tới nhé.
     

    Giới thiệu sách Trading hay
    Đánh Bại Thị Trường Forex - Tư duy khác biệt và các kỹ thuật giao dịch của chuyên gia quản lý quỹ triệu đô

    Sách chia sẻ kiến thức và kinh nghiệm trading từ một chuyên gia quản lý quỹ, cùng các kỹ thuật giao dịch giúp quỹ này đứng trong top nhiều năm
    Last edited by a moderator: 03/06/2021
    Đang tải...
  2. Cám ơn bạn
     
    ductoan1898 bài này.
  3. chà, định viết về in-sample và out-of-sample mà cụ viết trước rồi, thôi bài tới chuyển sang viết về optimization vậy :))))
     
  4. Hóng các bài tiếp a ơi :3 Với bác cho em hỏi liệu retail trader có đủ khả năng để bước chân vào lĩnh vực này không nhỉ ? Vì e nghĩ những cái liên quan đến logarithm trading hoặc machine learning thì những tổ chức lớn với dữ liệu khủng và các nhà toán học pro thì họ có cái edge hơn hẳn mình mất tiu :(((
     
    ductoan1898 bài này.
  5. Con cá nào cũng có thời làm con cá con hết bạn ơi
     
    ductoan1898 bài này.
  6. thì ai bảo bạn đi đánh nhau với mấy tổ chức lớn làm gì, nhiệm vụ của quant chỉ để tập trung khai thác những cái exploitable edge thôi chứ, những cái unexploitable như AI, ML... nằm ngoài sức của mình thì cứ mạnh dạn bỏ qua thôi :)))
     
    ductoan1898 bài này.
  7. đọc xong bài này lại nhớ khoảng thời gian 2 năm viết model cho worldquant. tới năm nay thì thấy người ae quantopian shuttdown nền tảng backtest của họ. Những năm gần đây thật khó khăn cho quant trading nhờ
     
    Đinh Toànductoan1898 bài này.
  8. Mình xin cảm ơn bạn đã quan tâm nhé và mình viết những bài này để phục vụ cho các anh em retail trader đó bạn. Mình nghĩ không cần tới những kiến thức cao siêu của Computer Science mới giúp các anh em đạt được lợi nhuận khi dùng quant đâu nên bạn cứ dùng thứ mình biết là được nhé.
     
  9. em cũng không hiểu sao quantopian dẹp tiệm, mất mát quá lớn cho dân retail quant
     
    hoangvietphap bài này.
  10. Trước h em tưởng em là price action trader.
    Đọc bài này thì hóa ra em là quant trader ah.
    Pp của em là thống kê giao động giá.
     
    anhnguyen14Jewel Nguyen bài này.
  11. Thống kê xong phải trả ra được các thông số định lượng được hiệu quả chiến lược ở mẫu như sharpe, profit factor..... rồi phải chạy tối ưu để fit 50% mẫu, rồi lại chạy tiếp cái thông số tối ưu đó cho 50% mẫu còn lại, rồi xác định parameter ổn định trên 100% mẫu, rồi đem thực chiến, hihi... chứ thống kê không thì chưa quant được.
     
  12. @tradermapmap trade cổ điển thì chia ra nhiều trường phái, chứ quant là gom hết, bất cứ chiến lược nào của FA hay TA (kể cả PA) mà mô hình hóa và backtest tối ưu được thì quant trader đều dùng, FA cũng nhiều chỉ báo để mô hình hóa chiến lược lắm.
     
    tradermapmapĐinh Toàn bài này.
  13. Nhiều người lầm tưởng nghĩ rằng quant phải là gì đó khủng khiếp cao siêu lắm, thực ra nó chỉ là phương pháp mô hình hóa và thực chứng bằng số liệu thôi. Cái này của một bạn làm quant thiết kế, không có tí indicator nào :)))
    [Broken External Image]:https://cdn.discordapp.com/attachments/753544071179665408/859355673687097364/image0.png
     
  14. Em có:
    Thống kê
    profit factor
    tối ưu để fit mẫu
     
    Jewel Nguyenanhnguyen14 bài này.

Bình luận mới nhất

  • SELL_1935_10LOT trong Phân tích Forex - Vàng - Hàng hóa 7,655 Xem / 85 Trả lời
  • BlackBlues trong Kiến thức Trading - Kinh nghiệm Trading 214,295 Xem / 2,647 Trả lời
  • Zactini trong Phân tích Forex - Vàng - Hàng hóa 1,338 Xem / 2 Trả lời
  • Ruby84 trong Phân tích Forex - Vàng - Hàng hóa 4,552 Xem / 29 Trả lời
  • Ruby84 trong Phân tích Bitcoin - Altcoins - Cryptocurrency 2,652 Xem / 12 Trả lời
  • Đang tải...
    Đang tải...
    0