Backtest có lợi nhuận nhưng trade thật lại lỗ, đây là câu trả lời

Backtest có lợi nhuận nhưng trade thật lại lỗ, đây là câu trả lời

Backtest có lợi nhuận nhưng trade thật lại lỗ, đây là câu trả lời

Greymanzz

New Member
3
1

Giới thiệu sách Trading hay
Thực Hành Phân tích Fibonacci

Tác giả sách là cựu trader quản lý quỹ kiêm học giả CMT. Sách đoạt giải và được xuất bản bởi Bloomberg Press. Sách khái quát từ cơ bản đến chuyên sâu về FIbonacci Trading
Câu hỏi được đăng ẩn danh, còn câu trả lời là từ anh @Đinh Toàn đăng trên group facebook Anh Em TraderViet Thiện Lành

Nguồn bài viết tại đâytại đây

***​

Câu hỏi: Nhờ các tư vấn giúp em. E backtest phương pháp giao dịch của mình thì cho lợi nhuận. Nhưng cứ khi giao dịch thật thì lại lỗ. Đó là em rất nhất quán với quy tắc phương pháp rồi. Phải chăng giữa backtest và tk thật có độ lệch sai số gì ko ạ. Nhờ các bác thông não chút ạ

Trả lời:

Trả lời thớt

1, Nhiệm vụ của backtest không phải là để xem hệ thống nó lời hay lỗ, nhất là với các hệ thống giao dịch thuật toán. Cái này là bài học chung cho anh em chạy thuật toán/EA, vì cái khối dữ liệu lịch sử của anh em chỉ là một kịch bản, còn tương lai nó có vô hạn các khả năng có thể diễn ra trong một hình nón phân phối như ảnh ví dụ. Nếu hệ thống giao dịch được curve fit cho một kịch bản duy nhất thì khả năng nó thích ứng với n kịch bản khác là cực thấp. Trường hợp này ta nói nó bị quá khớp (overfit).

Trái ngược với tư tưởng của anh em là test sao thì đánh vậy, vai trò của backtest (đặc biệt với giao dịch thuật toán) thực ra là để xem hệ thống làm ra có lỗi lầm gì ko, chứ ko phải là xem tính sinh lời nó bao nhiêu. Muốn kiểm tra tính sinh lời của hệ thống thì phải xem cái phân phối xác suất của mức returns nó như thế nào. Giả sử nếu returns của anh em tuân theo phân phối Gauss, thì phải xem khoảng từ -2 đến 2 sigma của nó có cho kỳ vọng dương không, nếu có thì mới kết luận được là nó lãi.


2, Muốn backtest thì phải đảm bảo được môi trường backtest là chính xác hoặc ít nhất là tiệm cận với điều kiện trading thực tế. Cái này bao gồm chất lượng dữ liệu phải tốt, độ dài dữ liệu phải đủ lớn, và trong bài test phải bao gồm các yếu tố y hệt như khi đang trading thật, ví dụ slippage, latency, spread, commission... Nếu không phản án được các yếu tố này vào bài test thì kết quả test là không đáng tin cậy.

Một phương pháp để làm việc này mà mình đang áp dụng là mình viết một cái script, ghi lại toàn bộ biến động của cái broker của các bác, từ latency, đến biến động spread, com, trượt giá... cứ mỗi 30 giây nó ghi một bản. Kỹ thuật này gọi là lấy mẫu (sampling). Mình cho nó ghi sample liên tục trong khoảng 1 tháng, rồi xào nó lên và ghi đè lên khối dữ liệu quá khứ, như vậy mình có thể đảm bảo là data 10 15 năm trước vẫn có khả năng dùng được mà không bị lỗi thời với môi trường trading hiện tại. Mình gọi cách làm này là rửa dữ liệu.

2.5, Cái này cho các bác đánh thủ công, ko dùng bot, là các bác cố gắng dành tiền mua được cái phần mềm backtest nào mà nó chạy được cả tick, và mua data ngon cho nó. Cái các bác cần làm không phải là xây dựng hệ thống, mà là luyện tập, vậy nên em nhắc lại, cái các bác cần nhất là một môi trường backtest phản ánh đúng và đủ những gì đang diễn ra trong thực tế. Đừng test theo kiểu nhìn vào chart rồi quăng ba cái công cụ tính RR của tradingview vào rồi coi như xong. Nếu đã test thủ công để luyện tập cảm giác vào lệnh, nhất định phải nhìn vào cái cái chart sống, xem nến nó chạy, tick nó nhảy, indi nó ngọ nguậy. Và hơn hết là phải thành thật với chính mình.

3, Phải đảm bảo số mẫu là đủ lớn. Một bài backtest của mình có cỡ mẫu trung bình khoảng 3000 - 5000 lệnh, khối lượng data khoảng 10 năm. Các bài test kiểu backtest gọi chung là kiểm tra định lượng. Để một bài kiểm tra định lượng có ý nghĩa thì khối mẫu của bác phải đủ lớn, nếu chỉ lác đác vài lệnh thì thà không test nữa cho xong

4, Backtest chỉ là một trong số rất nhiều bài test mà các bác phải làm khi phát triển hệ thống giao dịch, và nó KHÔNG CÓ KHẢ NĂNG thay thế vai trò của các bài test khác.



backtest_traderviet_!.png


backtest_traderviet_2.png
 
"4. ... vai trò của các bài test khác..."

Nhờ ad cho e hỏi là "các bài test khác" ở đây cụ thể là gì, và một vài lưu ý khi test các bài test khác ấy. E cám ơn ạ.
Bạn có thể lên trực tiếp group facebook Anh Em TraderViet Thiện Lành để hỏi tác giả @Đinh Toàn nhé. Cụ ấy chắc ít ghé diễn đàn nên khó trả lời trong này được. Link group đây cụ nhé: https://www.facebook.com/groups/tradervietcom
 
"4. ... vai trò của các bài test khác..."

Nhờ ad cho e hỏi là "các bài test khác" ở đây cụ thể là gì, và một vài lưu ý khi test các bài test khác ấy. E cám ơn ạ.
Xin lỗi các cụ vừa rồi em bận quá. Các bài test khác là tất cả các bài test cần thiết trong khâu phát triển hệ thống, còn test bài gì thì còn tùy xem cụ cần biết thông tin gì, chứ không phải cứ đè ra test thấy đẹp là được.
Em ví dụ cụ thể hai bài test em rất hay làm là Augmented Dickey-Fuller test (ADF) và Anderson-Darling test.
Augmented Dickey-Fuller test (ADF) dùng để kiểm tra tính tĩnh của chuỗi dữ liệu. Tại sao lại làm ADF test là vì em biến đổi dữ liệu giá về thành dạng chuỗi tĩnh, sử dụng bài vở của anh em bên ngành xử lý tín hiệu số (digital signal processing);
Nôm na cái workflow là (data thô) → [Signal processing & data transformations] → {chuỗi dữ liệu mới}
Một trong những đặc tính em cần ở {chuỗi dữ liệu mới} này là tính tĩnh hay chuỗi dừng (stationarity process), tức là các tính chất thống kê như phương sai, độ lệch... của nó không đổi theo thời gian, và ADF là cách để test xem chuỗi dữ liệu có phải chuỗi tĩnh hay không.
Một ví dụ khác là Anderson-Darling (AD) test, dùng để kiểm tra xem chiến thuật có thực sự cho ra lãi không. Nguyên lý là nếu chiến thuật nó nhất quán, thì các tính chất thống kê của mẫu backtest in-sample, out-of-sample và forward test phải giống nhau, và nó phải cùng dương. Cách làm là tìm cách khớp một đường phân phối lý thuyết nào đó vào cái returns của in-sample test, rồi chạy AD test với returns của out-of-sample và forward test (và cả kết quả live nữa) để xem nó có chung một phân phối so với in-sample hay không. Nếu kết quả là có phân phối ấy lệch theo chiều dương (hay positively skewed) và có tham số vị trí dương (positive location parameter) thì mức tự tin cao là chiến thuật nó không phải đồ ăn may.
Đây là 2 bài test tiêu biểu trong số nhiều bài test em làm trong quá trình xây dựng hệ thống giao dịch định lượng. Lưu ý chung khi test là mình phải hiểu bản chất công việc, hiểu tính chất của bài test để tránh bị thiên kiến đánh lừa, và hiểu thông tin mà kết quả test đem lại. Cái này em đã nói ở trên, không phải cứ đè ra test là được, mà mình phải biết mình cần thông tin gì thì lúc đấy mới tìm cách test cho phù hợp được. Thậm chí nhiều quỹ lớn họ còn phải tự bịa ra các bài test cho hệ thống của mình đấy cụ
 

BÌNH LUẬN MỚI NHẤT

  • Mạc An trong Phân tích Forex - Vàng - Hàng hóa 1,019 Xem / 41 Trả lời
  • Nhật Hoài trong Lập trình MQL - Expert Advisor - Indicator 160,853 Xem / 1,108 Trả lời
  • DuongHuy trong Phân tích Forex - Vàng - Hàng hóa 405 Xem / 23 Trả lời
  • haruking trong Kiến thức Trading - Kinh nghiệm Trading 31,623 Xem / 112 Trả lời
  • AdBlock Detected

    We get it, advertisements are annoying!

    Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

    Back
    Bên trên