Chiến lược giao dịch phần cố định

Tác giả:ChaoZhang, Ngày: 2023-09-22 16:51:25
Tags:

Tổng quan

Ý tưởng cốt lõi của chiến lược này là giữ tỷ lệ phần trăm đầu tư của một tài sản trong danh mục đầu tư cố định. Khi giá trị tài sản tăng, nhà đầu tư bán một số để duy trì tỷ lệ phần trăm. Khi giảm, nhà đầu tư mua nhiều hơn để bổ sung tỷ lệ phần trăm. Chiến lược này phù hợp với tài sản tương đối ổn định.

Chiến lược logic

Chiến lược đầu tiên thiết lập tham số tỷ lệ phần trăm đầu tư %_invested, tức tỷ lệ phần trăm tài sản trong danh mục đầu tư.

  1. Khi vị trí là 0, tính toán các hợp đồng mua dựa trên phần trăm đầu tư và vốn ban đầu.

  2. Khi nắm giữ, so sánh tỷ lệ phần trăm đầu tư vào phần trăm vốn chủ sở hữu. Nếu quá thấp, mua nhiều hợp đồng hơn. Nếu quá cao, bán hợp đồng.

  3. Lặp lại bước 2 để giữ tỷ lệ đầu tư cố định.

Ưu điểm

  • Cho phép giữ lâu dài các tài sản ổn định mà không cần giao dịch thường xuyên.

  • Lợi nhuận tái cân bằng định kỳ từ biến động tài sản.

  • Sự đa dạng hóa đầu tư trên các tài sản không liên quan làm giảm rủi ro danh mục đầu tư.

  • Ngăn ngừa tổn thất hoàn toàn bằng cách tránh đầu tư đầy đủ trước khi bong bóng nổ.

Phân tích rủi ro

  • Rủi ro mất mát cao hơn đối với tài sản biến động.

  • Giao dịch thường xuyên có nghĩa là phí cao hơn.

  • Tái cân bằng có thể bị chậm trễ, thiếu các điểm vào / ra tốt nhất.

  • Cài đặt tỷ lệ không chính xác có thể gây ra quá mức giao dịch.

Các rủi ro có thể được giảm bằng cách:

  1. Chọn tài sản cẩn thận để tránh biến động cao.

  2. Tối ưu hóa logic tái cân bằng để giảm tần suất giao dịch.

  3. Thiết lập đơn vị thay đổi vị trí tối thiểu để ngăn chặn giao dịch quá mức.

  4. Tối ưu hóa cài đặt tỷ lệ phần trăm để ngăn ngừa nồng độ quá mức.

Hướng dẫn tối ưu hóa

Chiến lược có thể được cải thiện bằng cách:

  1. Thêm logic dừng lỗ để cắt giảm lỗ ở ngưỡng nhất định.

  2. Thêm xác nhận tín hiệu trước khi cân bằng lại để tránh các điểm không theo xu hướng.

  3. Tùy chỉnh tỷ lệ phần trăm, tỷ lệ dừng lỗ cho mỗi tài sản.

  4. Thêm module tối ưu hóa tham số để tìm các tham số tối ưu.

  5. Hỗ trợ đóng các vị trí để tái đầu tư vào các tài sản khác để phân bổ năng động.

Tóm lại

Chiến lược tỷ lệ phần trăm cố định cung cấp đa dạng hóa và kiểm soát rủi ro. Nhưng nó có những rủi ro như cân bằng lại chậm và tổn thất tài sản biến động.


/*backtest
start: 2022-09-21 00:00:00
end: 2022-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Fixed Fractioning", overlay=true, initial_capital=100000.0)

percent_invested=input(50.0,title="Percent Invested",maxval=100.0,minval=0.0)
fraction_invested=percent_invested/100

from_day=input(1,title="From Day",maxval=31,minval=1)
from_month=input(1,title="From Month",maxval=12,minval=1)
from_year=input(2017,title="From Year",maxval=2018,minval=1900)

to_day=input(1,title="To Day",maxval=31,minval=1)
to_month=input(1,title="To Month",maxval=12,minval=1)
to_year=input(2018,title="To Year",maxval=2018,minval=1900)

// === FUNCTION EXAMPLE === from: https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
start     = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish    = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"
strategy.initial_capital = 50000
if strategy.position_size==0 and window()
    contracts_to_buy=(fraction_invested*strategy.initial_capital)/close
    strategy.entry("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)

invested=(strategy.position_size*close)/strategy.equity
if invested<fraction_invested and window()
    contracts_to_buy=((fraction_invested-invested)*strategy.equity)/close
    strategy.order("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)

else 
    if invested>fraction_invested and window()
        contracts_to_sell=((invested-fraction_invested)*strategy.equity)/close
        strategy.order("sell",long=false,qty=contracts_to_sell,limit=close,when=contracts_to_sell>1)




Thêm nữa