Chiến lược định lượng dựa trên điểm chặn hồi quy tuyến tính


Ngày tạo: 2023-12-29 11:45:20 sửa đổi lần cuối: 2023-12-29 11:45:20
sao chép: 0 Số nhấp chuột: 569
1
tập trung vào
1623
Người theo dõi

Chiến lược định lượng dựa trên điểm chặn hồi quy tuyến tính

Tổng quan

Chiến lược này sử dụng kỹ thuật quay ngược tuyến tính để tính toán điểm dừng quay ngược tuyến tính và sử dụng nó như một tín hiệu mua và bán để xây dựng chiến lược giao dịch định lượng. Chiến lược này phân tích chuỗi thời gian giá cổ phiếu, hình thành một đường xu hướng quay ngược tuyến tính, sử dụng điểm dừng quay ngược tuyến tính để xác định xem giá có được đánh giá quá cao hay thấp, để tạo ra giao dịch tín hiệu.

Nguyên tắc chiến lược

Điểm chặn quay ngược tuyến tính biểu thị giá trị dự đoán của giá trị Y khi giá trị chuỗi thời gian X là 0, thường là giá. Chiến lược này đặt trước tham số Length, lấy giá đóng cửa làm chuỗi nguồn, tính toán điểm chặn quay ngược tuyến tính của ngày Length gần nhất (xLRI). Khi giá đóng cửa cao hơn xLRI, làm nhiều; Khi giá đóng cửa thấp hơn xLRI, làm trống.

Công thức tính toán cụ thể như sau:

xX = Length *(Length - 1)* 0.5  
xDivisor = xX *xX - Length* Length *(Length - 1) *(2 * Length - 1) / 6
xXY = Σ(i *收盘价[i]),i从0到Length-1  
xSlope = (Length *xXY - xX* Σ(收盘价, Length))/ xDivisor
xLRI = (Σ(收盘价, Length) - xSlope * xX) / Length

Bằng cách tính toán như vậy, có thể có được điểm chặn quay trở lại tuyến tính xLRI gần nhất của Length day. Chiến lược sẽ đánh giá giá cao và thấp, tạo ra tín hiệu giao dịch.

Lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

  1. Sử dụng công nghệ hồi quy tuyến tính, có khả năng dự đoán giá và khả năng đánh giá xu hướng.
  2. Các tham số ít hơn, mô hình đơn giản, dễ hiểu và thực hiện.
  3. Tùy chỉnh tham số Length adaptive Điều chỉnh sự linh hoạt của chính sách.

Rủi ro và giải pháp

Chiến lược này cũng có một số rủi ro:

  1. Phương pháp này chỉ dựa trên dữ liệu lịch sử và có khả năng dự đoán về xu hướng giá trong tương lai.
  2. Nếu cơ sở của công ty thay đổi đáng kể, kết quả của sự phù hợp hồi quy tuyến tính có thể sẽ không có hiệu lực.
  3. Thiết lập tham số Length không chính xác có thể gây ra quá phù hợp.

Phản ứng:

  1. Cắt ngắn tham số Length một cách thích hợp để tránh quá phù hợp.
  2. Theo dõi sự thay đổi cơ bản của công ty, can thiệp bằng tay nếu cần thiết để đóng các vị trí.
  3. Sử dụng tham số thích ứng Length, điều chỉnh động theo tình hình thị trường.

Hướng tối ưu hóa chiến lược

Chính sách này có thể được tối ưu hóa bằng cách:

  1. Tăng các cơ chế ngăn chặn để kiểm soát tổn thất đơn lẻ.
  2. Kết hợp với các chỉ số khác, tạo ra chiến lược kết hợp, tăng sự ổn định.
  3. Thêm tham số để thích ứng với mô-đun tối ưu hóa, để tham số Length thay đổi động.
  4. Thêm mô-đun kiểm soát vị thế để ngăn chặn giao dịch quá mức.

Tóm tắt

Chiến lược này xây dựng một chiến lược giao dịch định lượng đơn giản dựa trên điểm chặn hồi quy tuyến tính. Nhìn chung, chiến lược này có một số giá trị kinh tế, nhưng cũng có một số rủi ro cần lưu ý.

Mã nguồn chiến lược
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/03/2018
// Linear Regression Intercept is one of the indicators calculated by using the 
// Linear Regression technique. Linear regression indicates the value of the Y 
// (generally the price) when the value of X (the time series) is 0. Linear 
// Regression Intercept is used along with the Linear Regression Slope to create 
// the Linear Regression Line. The Linear Regression Intercept along with the Slope 
// creates the Regression line.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Line Regression Intercept Backtest", overlay = true)
Length = input(14, minval=1)
xSeria = input(title="Source", defval=close)
reverse = input(false, title="Trade reverse")
xX = Length * (Length - 1) * 0.5
xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6
xXY = 0
for i = 0 to Length-1
	xXY := xXY + (i * xSeria[i])
xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor
xLRI = (sum(xSeria, Length) - xSlope * xX) / Length
pos = iff(close > xLRI, 1,
       iff(close < xLRI, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLRI, color=blue, title="LRI")