Tầm quan trọng và tầm quan trọng của backtesting là không thể nghi ngờ. Khi thực hiện backtesting định lượng, chiến lược nên được đặt trong môi trường lịch sử thực tế và gần như có thể. Nếu một số chi tiết trong môi trường lịch sử bị bỏ qua, toàn bộ backtesting định lượng có thể không hợp lệ. Bài viết này sẽ giải thích cách thực hiện backtesting giao dịch định lượng thích hợp.
Việc kiểm tra lại tương đương với việc phát lại dữ liệu. Bằng cách chơi lại dữ liệu K-line lịch sử và thực hiện các quy tắc giao dịch thị trường thực, chẳng hạn như tỷ lệ Sharpe, tỷ lệ khôi phục tối đa, tỷ lệ lợi nhuận hàng năm và đường cong vốn.github.com, có thể được tùy chỉnh linh hoạt.
FMZ Quant là một phần mềm giao dịch định lượng thương mại, đi kèm với công cụ backtest hiệu suất cao, sử dụng khung backtest for-loop (đánh phiếu), để định lượng tính toán nhanh hơn.
Lấy chiến lược thời gian FMZ Quant
Trong giao diện cấu hình backtest, bạn có thể tùy chỉnh nó theo nhu cầu thực tế của mình. Ví dụ: đặt thời gian backtest, chu kỳ đường K, loại dữ liệu (dữ liệu cấp độ mô phỏng hoặc dữ liệu cấp độ thị trường thực. Ngược lại, tốc độ backtesting dữ liệu cấp độ mô phỏng nhanh hơn, backtesting dữ liệu cấp độ thị trường thực chính xác hơn). Ngoài ra, bạn cũng có thể đặt phí hoa hồng cho backtest và quỹ ban đầu của tài khoản.
Nhấp vào thư viện giao dịch
Sẽ luôn có một sự lệch giữa giá giao dịch thực tế và giá giao dịch dự kiến. Sự thay đổi này thường di chuyển theo hướng không thuận lợi cho nhà giao dịch, dẫn đến tổn thất bổ sung trong giao dịch. Do đó, cần phải thêm trượt để mô phỏng môi trường giao dịch thực tế.
Hãy điền vào
Tùy chọn giao dịch tại chỗ chủ yếu dành cho giao dịch tiền điện tử, khi kiểm tra lại, hãy giữ nó trong cài đặt mặc định sẽ ổn. Nếu bạn muốn, bạn có thể chỉ định tất cả các tham số trong các cài đặt này. Ngoài ra, đối với một số sàn giao dịch tiền điện tử, bạn cũng có thể đặt kích thước đòn bẩy và các cài đặt liên quan khác.
Trước khi kiểm tra lại, xác định chiến lược giao dịch của bạn. Ở đây chúng tôi lấy chiến lược thời gian
// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;
// Define key prices
KOD:=(H+L+C)/3;
// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);
// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);
// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);
// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);
// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;
// Calculate the quit price of the trend market
MA50:=MA(C,50);
// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;
// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;
Trong giao diện backtesting mô phỏng, sau khi cấu hình các cài đặt backtesting, nhấp vào nút Start Backtest, và kết quả backtesting sẽ được hiển thị ngay lập tức sau vài giây. Trong nhật ký backtest, nó sẽ hiển thị bao nhiêu giây được sử dụng cho backtest, nhật ký và tổng số giao dịch. Thông tin tài khoản in kết quả cuối cùng của backtest chiến lược: lợi nhuận và lỗ trung bình, lợi nhuận và lỗ vị trí, biên, phí hoa hồng và lợi nhuận ước tính.
Biên độ trạng thái ghi lại các loại giao dịch, vị trí, giá vị trí, giá mới nhất, các loại tín hiệu giao dịch trước đó, giá cao nhất và thấp nhất của các vị trí, số lượng cập nhật cũng như thông tin vốn và thời gian. Ngoài ra, trong nhãn lợi nhuận và lỗ thay đổi, đường cong quỹ chi tiết của tài khoản được hiển thị, và các chỉ số hiệu suất thường được sử dụng cũng được bao gồm: tỷ lệ lợi nhuận, tỷ lệ lợi nhuận hàng năm, tỷ lệ Sharpe, biến động hàng năm và tỷ lệ khôi phục tối đa, về cơ bản có thể đáp ứng được đa số nhu cầu của người dùng.
Trong số đó, chỉ số hiệu suất quan trọng nhất là: tỷ lệ Sharpe. Nó là trong khi thực hiện chỉ số toàn diện xem xét lợi ích và rủi ro, và nó là một chỉ số quan trọng để đo sản phẩm quỹ. Nói chung, đó là bao nhiêu rủi ro bạn chịu, mỗi khi bạn kiếm được lợi nhuận, vì vậy giá trị tỷ lệ Sharpe cao hơn, tốt hơn.
Sự biến động hàng năm, nói đơn giản, biến đổi hàng năm một con số giả định các quan sát trong một khung thời gian ngắn sẽ tiếp tục trong suốt một năm. Nó là một thước đo rủi ro của quỹ, nhưng chắc chắn không phải là toàn bộ rủi ro. Ví dụ, Chiến lược A có biến động lớn hơn, nhưng nó đã biến động lên, lợi nhuận là tốt; Chiến lược B có biến động nhỏ, nhưng nó đã được di chuyển ổn định (( hầu như không di chuyển ở tất cả). Chúng ta có thể nói rằng Chiến lược B tốt hơn Chiến lược A? Chiến lược A như được hiển thị bên dưới:
Cuối cùng, trong thông tin nhật ký, một bản ghi chi tiết về từng tình huống giao dịch qua môi giới khi kiểm tra ngược, bao gồm thời gian cụ thể của giao dịch, thông tin trao đổi, loại vị trí mở và đóng, cơ chế khớp lệnh công cụ kiểm tra ngược, cũng như số lượng giao dịch và in ra thông tin.
Nhiều lần, và trong hầu hết các trường hợp, kết quả của backtesting sẽ xa với những gì bạn mong đợi.
Nếu kết quả backtest chiến lược của bạn đang mất tiền, đừng nản lòng. Điều này thực sự là khá bình thường. kiểm tra xem liệu logic chiến lược có bị hiểu sai bởi mã, liệu nó có sử dụng một số thông số cực đoan, liệu nó có sử dụng quá nhiều điều kiện vị trí mở, v.v.
Nếu kết quả backtest chiến lược của bạn rất tốt, đường cong tài chính là hoàn hảo, với tỷ lệ Sharpe cao hơn 1. Xin đừng vội vàng, Trong trường hợp này, hầu hết các tình huống đang sử dụng các chức năng tương lai, đánh cắp giá, quá phù hợp, hoặc không có giá trượt thêm, v.v. Bạn có thể sử dụng dữ liệu ngoài mẫu và mô phỏng giao dịch thị trường thực để loại trừ các vấn đề này.
Điều trên là toàn bộ quá trình kiểm tra lại chiến lược giao dịch, có thể nói rằng nó đã được cụ thể trong từng chi tiết. Cần lưu ý rằng kiểm tra lại dữ liệu lịch sử là một môi trường lý tưởng nơi tất cả các rủi ro được biết đến. Do đó, tốt nhất là phải trải qua một vòng thị trường bò và gấu cho thời gian kiểm tra lại chiến lược. Số lượng giao dịch hiệu quả không nên ít hơn 100 lần, để tránh một số thiên vị sống sót.
Thị trường luôn trong quá trình thay đổi và phát triển. Chiến lược backtesting lịch sử không có nghĩa là tương lai sẽ giống nhau. Nó không chỉ để cho chiến lược đối phó với các rủi ro có thể có trong môi trường backtesting, mà còn để đối phó với những rủi ro chưa biết trong tương lai. Do đó, rất cần thiết để tăng khả năng chống rủi ro và tính phổ quát của chiến lược.
Cố gắng sao chép chiến lược trong phần này và kiểm tra lại nó.
Cố gắng cải thiện và tối ưu hóa chiến lược trong phần này dựa trên kinh nghiệm giao dịch của bạn.