KenKem Journal

Vì Sao Cấu Trúc Thắng Kỷ Luật Trong Trading?

· #trading-psychology #risk-management #systematic-trading #research-method #backtesting

Cấu trúc thắng kỷ luật vì kỷ luật là một nguồn lực mình tiêu hao dần, còn cấu trúc là một quyết định mình chỉ ra một lần. Một ràng buộc đã viết thành code thì không mệt, không muốn gỡ gạc sau một lệnh thua, và không tự thương lượng lại với chính nó vào đúng thời điểm tệ nhất. Phần khó hơn của luận điểm này là: một ràng buộc chỉ có ích nếu nó đã được đo, và nhiều ràng buộc của mình đã bị loại.

Dưới đây là cách mình chuyển quyết định từ khoảnh khắc áp lực về thời điểm thiết kế, cùng những phép phản nghiệm đã dạy mình phân biệt giữa một rule thật sự bảo vệ và một rule chỉ tạo cảm giác được bảo vệ.

Sơ đồ đối chiếu hai con đường đi từ một phiên biến động tới quyết định, một đường đi qua bộ lọc đã viết thành code và một đường đi qua cảm xúc
Cùng một phiên biến động, hai con đường ra quyết định. Hình minh họa mang tính sơ đồ, không phải dữ liệu đo được.

Vì sao cảm xúc luôn lấp vào chỗ mà rule còn mơ hồ?

Bởi vì một rule mơ hồ vẫn đòi hỏi một quyết định, và quyết định đó luôn đến đúng lúc mình ít đủ sức đưa ra nhất.

Khi rule rõ ràng, một phiên biến động sẽ gặp bộ lọc trước. Khi rule mơ hồ, nó gặp cảm giác. Đây không phải là khuyết điểm riêng của những người thiếu kỷ luật. Đó là điều xảy ra với bất kỳ ai phải phân xử dưới áp lực thời gian khi tiền đang nằm trên bàn, và cũng là lý do câu khuyên hãy kỷ luật hơn chưa bao giờ hoạt động như một kế hoạch đối với mình. Nó yêu cầu phiên bản mệt mỏi của mình sửa lỗi cho phiên bản tỉnh táo của mình.

Cái giá phải trả hiếm khi kịch tính. Giao dịch theo cảm xúc rò rỉ theo những cách nhỏ và lặp lại: vào sớm một chút, thoát sớm một chút, nới rủi ro sau một lệnh thua, trả spread cho những lệnh vốn không đáng vào. Từng cái một trông không nghiêm trọng. Cộng dồn qua một năm, chúng chính là loại rò rỉ mà một ràng buộc được viết ra có thể xóa bỏ mà không cần tới ý chí.

Cấu trúc thực sự thay thế điều gì?

Nó thay thế cuộc tranh cãi, chứ không thay thế sự phán đoán.

Sự phán đoán vẫn diễn ra. Nó chỉ diễn ra một lần, ở thời điểm thiết kế, khi mình có dữ liệu nghiên cứu trước mặt và không có vị thế nào đang kéo mình. Trong công việc của mình, giới hạn rủi ro, khung phiên và bộ lọc biến động là một phần của chiến lược, không phải thứ gắn thêm vào sau. Khi chúng đã được viết ra, trong phiên không còn gì để thương lượng nữa, vì hệ thống hoặc có một điều kiện hợp lệ, hoặc không.

Với một người vẫn đang giao dịch thủ công, điều này nghe như mất tự do. Trên thực tế, nó chuyển quyết định về nơi mình đáng tin cậy và lấy nó ra khỏi nơi mình không đáng tin cậy.

Vì sao một ràng buộc phải được đo chứ không phải được cảm nhận?

Bởi vì những ràng buộc tạo cảm giác an toàn nhất lại là những ràng buộc dễ sai nhất, và mình có một loạt kết quả bị loại để chứng minh điều đó.

Các biện pháp bảo vệ theo trực giác đủ đơn giản để viết trong một câu: dừng giao dịch cả ngày sau một khoản lỗ đủ lớn, tắt hệ thống khi drawdown đủ sâu, chốt lời sớm hơn để lợi nhuận không bốc hơi. Mình đã đăng ký trước và kiểm định cả ba trên cấu hình vàng của mình. Cả ba đều bị loại. Mục tiêu lợi nhuận thấp hơn là lần thứ tám một ý tưởng thuộc nhóm chốt sớm hơn bị phản nghiệm trong nghiên cứu của mình, và lần đó nó còn làm drawdown xấu đi thay vì tốt lên.

Kết quả này quan trọng với mình hơn bất kỳ kết quả thắng nào, vì nhìn từ bên trong, ba rule đó không thể phân biệt được với những rule đã hoạt động. Cả hai nhóm đều cho cảm giác thận trọng. Cả hai đều cho cảm giác có trách nhiệm. Chỉ có kiểm định mới tách được chúng ra, và trực giác của mình đã đứng nhầm phía tám lần liên tiếp chỉ với một ý tưởng.

Những ràng buộc nào đã sống sót qua kiểm định?

Có hai, và tác dụng của chúng nằm ở trục rủi ro chứ không phải trục lợi nhuận.

Ràng buộc thứ nhất cho hệ thống đứng ngoài vào những ngày mà chi phí đo được giữa spread và biến động khiến việc giao dịch trở nên quá đắt. Ràng buộc thứ hai giảm khối lượng vị thế khi vốn đang nằm thấp hơn đáng kể so với đỉnh trước đó. Khi kiểm định cùng nhau trên một cửa sổ cố ý chọn khắc nghiệt, chạy từ đầu năm 2024 tới giữa năm 2026, chúng đưa drawdown tối đa từ khoảng 56.7 phần trăm xuống khoảng 22.2 phần trăm và profit factor từ 1.253 lên 1.333. Mọi nửa năm trong bài test đều cải thiện hoặc giữ nguyên, và nửa năm tệ nhất cải thiện đáng kể. Đây là các con số backtest và chạy xác nhận trên MetaTrader 5, không phải một track record thật.

Ràng buộc sống sót thứ ba đến từ một khoản lỗ thật chứ không phải từ một giả thuyết. Một khoảng gap cuối tuần đã lấy của mình 3.72R trên tài khoản prop thật, nên mình kiểm định việc đóng hết vị thế trước cuối tuần thay vì tự nhủ sẽ theo dõi kỹ hơn. Số lệnh giữ qua cuối tuần giảm từ ba mươi xuống còn một, và cả năm fold nửa năm đều cải thiện. Bài học mình rút ra không phải là mình cần cảnh giác hơn vào thứ Sáu. Bài học là sự cảnh giác vốn là công cụ sai cho một rủi ro mang tính cấu trúc.

Vì sao để yên hệ thống cũng là một dạng cấu trúc?

Bởi vì thôi thúc muốn liên tục cải tiến một hệ thống đang chạy tốt chính là thôi thúc muốn can thiệp vào một lệnh đang chạy tốt.

Mình kiểm định trực tiếp điều đó. Một cấu hình cố định giữ nguyên qua mọi fold cho kết quả tốt hơn việc tối ưu lại tham số theo từng fold, với năm trên năm fold dương so với bốn trên năm của phiên bản liên tục thích nghi. Ở một fold out-of-sample riêng biệt, profit factor đạt 1.327 so với 1.203 trong tập huấn luyện, tức là ngược lại với dấu hiệu của một mô hình bị fit quá mức. Sự kiềm chế đo được tốt hơn sự nhanh nhạy.

Ở đây mình giữ một sự căng thẳng có chủ đích. Mình rất chậm khi khóa một cấu hình, vì khóa là một cam kết và khóa sớm sẽ đóng băng một ý tưởng trước khi out-of-sample, chi phí và regime kịp lên tiếng. Nhưng khi đã khóa rồi, mình để yên. Kiên nhẫn trước khi khóa, và tĩnh lặng sau khi khóa.

Mình giữ cái tôi ra khỏi quyết định bằng cách nào?

Bằng cách quyết định trước loại bằng chứng nào được bỏ lá phiếu quyết định, rồi không tự mình đứng ra đếm phiếu.

Mọi ý tưởng đều đi qua cùng một checklist ngắn: edge là gì, chi phí là gì, điểm vô hiệu hóa ở đâu, chất lượng mẫu ra sao, và đây là regime nào. Năm câu hỏi đó cắt qua nhiễu nhanh hơn bất kỳ khoảng thời gian nhìn chart nào, chủ yếu vì không câu nào có thể trả lời bằng cảm nhận của mình về ý tưởng đó.

Phía trên checklist là cổng chống overfit. Deflated Sharpe trên cấu hình đã được chứng nhận đạt 1.000 so với ngưỡng 0.95, và được đưa vào đúng bối cảnh tìm kiếm thật là ba mươi sáu cấu hình, chứ không phải con số một cấu hình cho đẹp. Độ dài track record tối thiểu cho kết quả đó là 192 lệnh, trong khi mẫu của mình là 1,423 lệnh. Ý nghĩa của việc tính các chỉ số này không nằm ở chỗ chúng đẹp. Nó nằm ở chỗ chúng được quy định trước khi mình biết đáp án, nên một kết quả xấu sẽ có tính ràng buộc.

Vì sao một rule cần có lý do cơ học phía sau?

Bởi vì một tương quan không có nguyên nhân thì không có lý do gì để tiếp tục đúng, và mình không thể nhìn bằng mắt mà phân biệt được.

Volume Profile là nền tảng của sản phẩm chủ lực của mình đúng vì lý do này. Nó mô tả nơi một phiên đấu giá thực sự dành thời gian và khối lượng, tức là một cơ chế thị trường, không phải một mẫu hình tình cờ khớp với dữ liệu. Điều đó không làm nó đúng. Điều đó làm nó có thể phản nghiệm được, theo cách mà một tương quan tình cờ không có được.

Phản ví dụ cũng nằm trong ghi chú của mình. Mình đã kiểm định Kaufman Efficiency Ratio như một bộ lọc điểm vào, nó không tạo ra cải thiện nào ngoài mẫu, và nó không có mặt trong chiến lược. Một cơ chế nghe hợp lý là lý do để kiểm định một thứ, không bao giờ là lý do để giữ lại nó.

Cấu trúc của chính mình còn thiếu sót ở đâu?

Ở bốn chỗ mà mình muốn tự nói ra hơn là để người khác phát hiện.

Bộ đứng ngoài ngày đắt đỏ phụ thuộc vào broker. Ngưỡng của nó được suy ra trên một nguồn dữ liệu, và trên những nguồn có spread rộng hơn thì nó bật vĩnh viễn, tức là sẽ bịt miệng hệ thống một cách âm thầm, nên ở đó nó được ship với trạng thái tắt mặc định và chỉ giữ phần đo đạc chạy như telemetry. Một ràng buộc sinh ra để xử lý tính điều kiện thì bản thân nó lại có điều kiện, điều đó vừa khiêm tốn vừa đúng.

Mô hình chi phí của mình vẫn còn ưu ái mình. Spread được tính cho mọi lệnh, nhưng slippage, độ trễ và swap thì chưa được mô hình hóa, nên kết quả thật cần được kỳ vọng là mỏng hơn backtest. Mức độ tập trung bên trong chiến lược cũng là thật: nhánh breakout chiếm khoảng 96 phần trăm số lệnh và gần như toàn bộ kết quả ròng, trong khi nhánh mean reversion mới chỉ có 51 lệnh, thấp hơn nhiều so với ngưỡng 192 mà mình mới dám gọi là có ý nghĩa thống kê.

Thay đổi phần thoát lệnh tạo ra những cải thiện nêu trên có deflated Sharpe đạt 0.948 so với ngưỡng 0.95 trên chính cửa sổ của nó, sau khi tính đủ 588 lần thử. Đó là một cảnh báo, không phải một lần pass. Mình coi nó là một cải thiện trên cùng mặt bằng chứ không phải một kết quả đã chứng nhận, và một phiên forward demo vẫn còn nợ trước khi mình dám gọi nó là gì hơn thế.

Và mình chưa có track record thật. Toàn bộ nội dung trên là nghiên cứu trên khoảng 160 triệu tick thật từ broker, với parity từng byte giữa research engine của mình và đoạn code được ship, cộng thêm các lần chạy xác nhận trên MetaTrader 5. Đó là một giả thuyết có bằng chứng đi kèm, không phải một kết quả.

Điều rút ra trung thực là gì?

Cấu trúc không đồng nghĩa với sự thận trọng, và đó là phần mà phần lớn lời khuyên hiểu sai.

Ba rule nghe rất thận trọng đã trượt kiểm định của mình, còn hai rule không hào nhoáng thì sống sót. Nếu mình ship dựa trên cảm giác của từng rule, mình đã ship đúng ba rule sai. Giá trị của việc viết ràng buộc ra giấy không nằm ở chỗ rule viết ra thì khôn ngoan hơn trực giác. Nó nằm ở chỗ rule viết ra có thể kiểm định được, còn trực giác thì không.

Vậy nên thứ kỷ luật mình thực sự dựa vào không phải là kỷ luật tuân theo rule của mình trong khoảnh khắc. Đó là kỷ luật để một rule mình thích bị loại bỏ.

Câu hỏi thường gặp

Vì sao cấu trúc hiệu quả hơn kỷ luật trong trading? Bởi vì cấu trúc giải quyết quyết định một lần, ở thời điểm thiết kế, còn kỷ luật đòi hỏi giải quyết lại quyết định đó dưới áp lực trong từng phiên. Một ràng buộc đã viết thành code hành xử y hệt nhau sau một tuần thắng và một tuần thua, đúng vào lúc hành vi con người thay đổi nhiều nhất. Tác động thực tế nằm ở những rò rỉ nhỏ lặp lại, vào sớm, thoát sớm, nới rủi ro sau lệnh thua, chứ không nằm ở một quyết định kịch tính nào.

Rule dừng giao dịch cả ngày có thực sự hiệu quả không? Trong kiểm định đăng ký trước của mình, ngưỡng cắt lỗ theo ngày đã bị loại, cùng với việc tắt cứng hệ thống theo drawdown và mục tiêu lợi nhuận thấp hơn. Đó là kết quả trên một cấu hình vàng và không phải một khẳng định phổ quát, nhưng đủ để mình thôi tin vào cả nhóm rule này chỉ bằng trực giác. Những rule cho cảm giác bảo vệ nhất lại là những rule đáng kiểm định nhất trước khi ship.

Giảm rủi ro trong lúc drawdown có cải thiện kết quả không? Trong kiểm định của mình thì có, khác với các rule cứng rắn hơn là tắt hẳn hệ thống. Việc giảm khối lượng khi vốn nằm thấp hơn đáng kể so với đỉnh trước, kết hợp với việc đứng ngoài vào những ngày đắt đỏ đo được, đã đưa drawdown tối đa từ khoảng 56.7 phần trăm xuống khoảng 22.2 phần trăm trên cửa sổ khắc nghiệt 2024 tới 2026. Đó là các con số backtest và chạy xác nhận, không phải kết quả thật.

Mình có nên tiếp tục tối ưu một chiến lược đang chạy tốt không? Bằng chứng của mình nói là không. Một cấu hình cố định giữ nguyên qua mọi fold cho năm trên năm fold dương, trong khi tối ưu lại theo từng fold chỉ cho bốn trên năm. Bản năng muốn liên tục cải tiến một hệ thống đang chạy tốt có họ hàng rất gần với bản năng muốn can thiệp vào một lệnh đang chạy tốt.

Làm sao biết một bộ lọc trong hệ thống của mình là thật? Hãy gỡ nó ra và đo xem chuyện gì xảy ra. Một bộ lọc sống sót qua phép kiểm định bằng cách xóa bỏ là một đòn bẩy edge đo được, còn bộ lọc không sống sót chỉ là thói quen thừa kế đang khoác áo quản trị rủi ro. Đây là phương pháp duy nhất mình tìm được mà không phụ thuộc vào ý kiến của chính mình về bộ lọc đó.

Deflated Sharpe ratio là gì và vì sao nó quan trọng? Nó điều chỉnh chỉ số Sharpe theo số lượng cấu hình đã được tìm kiếm trước khi kết quả đó xuất hiện, và chính điều đó cho phép nó bắt được may mắn đang cải trang thành edge. Cấu hình đã chứng nhận của mình đạt 1.000 so với ngưỡng 0.95 với ba mươi sáu cấu hình được đếm trung thực. Một thay đổi phần thoát lệnh gần đây đạt 0.948 với 588 lần thử được đếm, và mình báo cáo nó như một cảnh báo thay vì làm tròn lên.

Một trader hệ thống nên chuẩn bị cho mức drawdown bao nhiêu? Hãy lấy phân vị không dễ chịu chứ đừng lấy mức trung bình. Phân phối mô hình hóa của mình đặt trung vị quanh 24 phần trăm và phân vị 95 quanh 38 phần trăm, còn một lần chạy xác nhận trong năm khắc nghiệt chạm 74.2 phần trăm. Lập kế hoạch quanh mức trung vị nghĩa là lập kế hoạch để bị bất ngờ vào đúng thời điểm tệ nhất.

Master Volume Profile đã có track record thật chưa? Chưa, và mình sẽ không ám chỉ điều ngược lại. Mọi con số ở đây là backtest hoặc chạy xác nhận trên MetaTrader 5 với dữ liệu tick lịch sử, spread được mô hình hóa nhưng slippage, độ trễ và swap thì chưa, và kết quả thật cần được kỳ vọng là mỏng hơn nghiên cứu. Giao dịch luôn có rủi ro, bao gồm rủi ro mất vốn.


Viết bởi KenKem, một kỹ sư phần mềm và nhà sáng lập với hai mươi năm kinh nghiệm, đang học giao dịch định lượng một cách công khai và công bố cả quá trình, bao gồm cả những ý tưởng bị loại.

Bài viết này được tổng hợp từ chuỗi nhật ký xây dựng của KenKem. Chỉ nhằm mục đích giáo dục. Không phải lời khuyên đầu tư. Mọi con số được trích dẫn là kết quả backtest hoặc chạy xác nhận, không phải track record thật. Hiệu suất quá khứ không đảm bảo kết quả tương lai.

← All journal articles

Chat