Cách mô phỏng giao dịch bằng đòn bẩy?

Những nội dung cơ bản

Tất cả các tập lệnh chiến lược được viết bằng Pine Script™ v4 trở lên đều hỗ trợ mô phỏng giao dịch đòn bẩy, tức là vay từ nhà môi giới để mở các vị thế lớn hơn với số vốn nhỏ hơn.

Với giao dịch đòn bẩy, nhà giao dịch có thể đặt lệnh với quy mô lớn hơn số dư tài khoản của họ cho phép, miễn là tài khoản của nhà giao dịch duy trì mức ký quỹ cần thiết để duy trì khoản vay.

LƯU Ý: Giao dịch đòn bẩy sẽ khuếch đại lợi nhuận và thua lỗ tiềm ẩn. Các nhà giao dịch phải luôn thận trọng và đánh giá kỹ lưỡng mức độ chấp nhận rủi ro của mình trước khi sử dụng đòn bẩy trong giao dịch trực tiếp.

Chiến lược Pine Script™ xác định mức đòn bẩy áp dụng cho các giao dịch mua và bán được mô phỏng thông qua đầu vào "Ký quỹ cho các vị thế mua" và "Ký quỹ cho các vị thế bán" trong tab "Thuộc tính" trong cài đặt của tập lệnh. Những thông tin đầu vào này xác định tỷ lệ phần trăm tối thiểu của giá trị vị thế cần có trong số dư tài khoản cho chiến lược mô phỏng việc mở và duy trì vị thế.

Ví dụ: giá trị "Ký quỹ cho các vị thế mua" là 20% có nghĩa là mô phỏng sẽ yêu cầu 20% của bất kỳ vị thế mua nào được đảm bảo bằng số dư khả dụng của chiến lược, 80% còn lại được chi trả bởi nhà môi giới mô phỏng. Vì bất kỳ vị thế mua nào chỉ yêu cầu 1/5 giá trị được nạp vào tài khoản nên chiến lược có thể mô phỏng các vị thế mua lên tới gấp 5 lần số dư khả dụng. Nói cách khác, mức ký quỹ này (1:5) làm tăng đòn bẩy của chiến lược lên 5:1.

Nếu giao dịch với mức ký quỹ này mất đủ tiền để khiến quỹ của nhà môi giới gặp rủi ro, nhà môi giới được mô phỏng sẽ kích hoạt sự kiện Lệnh gọi ký quỹ và thanh lý một số hoặc toàn bộ vị thế mở để giải phóng vốn. Xem các phần dưới đây để biết thêm thông tin.

LƯU Ý: Lập trình viên có thể xác định các giá trị ký quỹ mặc định trong tập lệnh chiến lược thông qua các tham số `margin_long` và `margin_short` của hàm `strategy()`.

Thông tin chi tiết

Khi nhà giao dịch vay vốn từ nhà môi giới để tăng sức mua, nhà môi giới sẽ yêu cầu nhà giao dịch phải có lượng vốn tối thiểu trong tài khoản để sử dụng làm tài sản thế chấp, hay còn gọi là ký quỹ. Nói cách khác, ký quỹ là phần vị thế mà nhà giao dịch phải đảm bảo bằng vốn tự có của mình để nhà môi giới trang trải phần còn lại.

Số tiền ký quỹ được phân bổ cho một giao dịch là tích của giá trị thị trường của vị thế và tỷ lệ ký quỹ (tức là tỷ lệ nghịch của tỷ lệ đòn bẩy mong muốn).

Giả sử tỷ giá EURUSD hiện tại là 1,05 và chúng tôi muốn mô phỏng việc mua một lô tiêu chuẩn (100.000 đơn vị) mà không cần vay vốn từ nhà môi giới (tức là sử dụng đòn bẩy 1:1). Trong trường hợp này, chúng tôi đặt "Ký quỹ cho các vị thế mua" thành 100%, hướng dẫn chiến lược đặt lệnh chỉ sử dụng số tiền có sẵn của nó. Do đó, tài khoản phải có sẵn ít nhất 105.000 USD (1,05 * 100.000) để thuận tiện cho việc giao dịch.

Bây giờ, giả sử chúng ta muốn mô phỏng giao dịch tương tự với đòn bẩy 20:1. Trong trường hợp này, tỷ lệ ký quỹ là 1:20 (5%). Đặt "Ký quỹ cho các vị thế mua" thành 5% chỉ định rằng số dư tài khoản phải bằng ít nhất 5% giá trị của vị thế để mô phỏng việc nhận 95% còn lại từ nhà môi giới. Số dư tài khoản tối thiểu (ký quỹ) cần có để tạo thuận lợi cho giao dịch này là 5% của 105.000 (5.250 USD).

Không giống như ví dụ không dựa vào quỹ của nhà môi giới, việc mở một vị thế có đòn bẩy 20:1 trong môi trường thực tế sẽ mang lại rủi ro thua lỗ cho chủ tài khoản và nhà môi giới. Nếu vị thế mở thua nhiều hơn số dư tài khoản có thể bù đắp, nhà môi giới sẽ yêu cầu người giao dịch nạp thêm tiền hoặc buộc phải thanh lý một phần/tất cả vị thế mở để bù lỗ. Trình kiểm tra chiến lược thể hiện các kịch bản thanh lý bắt buộc dưới dạng sự kiện "Lệnh gọi ký quỹ".

Trình mô phỏng Nhà môi giới của chúng tôi xử lý các tình huống này trong kết quả chiến lược bằng cách thanh lý gấp bốn lần số tiền cần thiết để bù lỗ trong mô phỏng, ngăn chặn các sự kiện Lệnh gọi ký quỹ liên tục trên các thanh biểu đồ tiếp theo.

LƯU Ý: Các giao dịch bán khống thường đòi hỏi phải vay cổ phiếu, đơn vị, v.v. từ nhà môi giới và bán chúng sau đó với giá khác. Giá trị của vị thế thể hiện chi phí mua một số lượng cổ phiếu, đơn vị, v.v. tương đương để trả lại chúng. Như vậy, giao dịch bán sẽ mất tiền khi giá tăng. Không giống như các vị thế mua, khoản lỗ tiềm ẩn trên một vị thế bán không được giới hạn vì không có giới hạn nhất định về mức độ tăng giá của một công cụ. Do đó, ngay cả với mức ký quỹ 100%, vị thế bán vẫn phải đối mặt với nguy cơ buộc phải thanh lý.

Các chiến lược cũng có thể mô phỏng các yêu cầu ký quỹ độc đáo. Ví dụ: người ta có thể sử dụng giá trị "Ký quỹ cho các vị thế mua" là 200%, nghĩa là tài khoản mô phỏng phải có ít nhất gấp đôi giá trị của vị thế để tạo thuận lợi cho giao dịch và duy trì vị thế. Cài đặt này giới hạn một cách hiệu quả kích thước vị thế tối đa ở mức 50% vốn chủ sở hữu của chiến lược.

Điều quan trọng cần lưu ý là cài đặt ký quỹ của tập lệnh chiến lược cho phép tập lệnh xác thực kích thước vị thế. Khi vô hiệu hóa yêu cầu ký quỹ bằng cách đặt các yêu cầu thành 0%, tập lệnh có thể mô phỏng các vị trí ở bất kỳ quy mô nào, bất kể số vốn thực tế có sẵn trong mô phỏng, điều này có thể tạo ra kết quả sai lệch. Do đó, chúng tôi khuyên bạn không nên đặt giá trị "Ký quỹ cho các vị thế mua" hoặc "Ký quỹ cho các vị thế bán" thành 0%.

Cạn tiền

Lưu ý chính khi sử dụng đòn bẩy giao dịch là làm tăng nguy cơ cạn tiền. Các vị thế bị nhà môi giới buộc đóng sẽ làm giảm đáng kể khả năng phục hồi sau thua lỗ của nhà giao dịch và có thể khiến tài khoản của họ nhanh chóng cạn kiệt. Trình kiểm tra chiến lược thể hiện các vị thế bị đóng bắt buộc dưới dạng sự kiện "Lệnh gọi ký quỹ".

Công thức chi phối thời điểm xảy ra sự kiện Lệnh gọi ký quỹ là:

Vốn chủ sở hữu hiện tại <= Yêu cầu ký quỹ

Giá trị CurrentEquity là số vốn mà chiến lược mô phỏng có tại một thời điểm cụ thể, bao gồm lãi hoặc lỗ từ vị thế mở. Yêu cầu ký quỹ là số vốn mà tài khoản cần để duy trì vị thế. Khi CurrentEquity không đủ để tài trợ cho vị thế mở, sự kiện Lệnh gọi ký quỹ sẽ xảy ra.

Công thức cho CurrentEquity là PriceChange * Direction* PointValue * AbsPositionSize + InitialCapital + NetProfit, trong đó:

  • PriceChange là chênh lệch giữa giá hiện tại và giá vào lệnh của vị thế mở.
  • Direction là 1 nếu vị thế dài hoặc -1 nếu vị thế ngắn.
  • PointValue là số tiền mà một sự dịch chuyển giá theo số nguyên biểu thị. Đối với hầu hết các ký hiệu, giá trị là 1, ngoại trừ chính là hợp đồng tương lai, trong đó thay đổi từ 100 thành 101 có thể có nghĩa là giá trị đã thay đổi 50 USD thay vì 1 USD, trong trường hợp đó PointValue sẽ là 50.
  • AbsPositionSize là kích thước của vị trí hiện tại. Giá trị này luôn dương, mặc dù các kịch bản chiến lược thể hiện các giao dịch bán với số âm trên biểu đồ.
  • InitialCapital + NetProfit là tổng số vốn sở hữu của chiến lược trước khi mở vị thế hiện tại.

Công thức cho MarginRequired là LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100), trong đó LastPrice là giá biểu đồ để tính toán và (Phần trăm ký quỹ / 100) là hệ số chúng tôi nhân với để có được phần vị thế mở bắt buộc của chủ tài khoản.

Để chứng minh những tính toán này, hãy tưởng tượng rằng chúng tôi mô phỏng chiến lược với 1.000 USD làm "Vốn ban đầu" và giá trị "Ký quỹ cho các vị thế mua" là 20% (đòn bẩy 5:1) để mua 40 cổ phiếu NASDAQ:GOOG với giá 100 USD.

Nếu giá cổ phiếu giảm xuống 95 USD thì CurrentEquity là PriceChange * Direction * PointValue * AbsPositionSize + InitialCapital + NetProfit = (95 - 100) * 1 * 1 * 40 + 1000 + 0 = 800 và MarginRequired là LastPrice * PointValue * AbsPositionSize * (MarginPercent / 100) = 95 * 1 * 40 * 0,2 = 760. Chiến lược vẫn có thể duy trì vị thế mở ở mức giá này nên không có sự kiện Lệnh gọi ký quỹ nào xảy ra.

Sau đó, giả sử giá giảm hơn nữa đến giá trị 90 USD. Giá trị CurrentEquity mới là (90 - 100) * 1 * 1 * 40 + 1000 + 0 = 600 và MarginRequired hiện là 90 * 1 * 40 * 0,2 = 720. Vì CurrentEquity không còn đủ để đáp ứng MarginRequired, chiến lược tạo ra một sự kiện Lệnh gọi ký quỹ và buộc phải thanh lý một phần vị thế.

Trực quan hóa giá ký quỹ

Cách dễ nhất để hình dung mức giá mà sự kiện Lệnh gọi ký quỹ có thể xảy ra là sử dụng biến tích hợp `strategy.margin_liquidation_price` trong mã nguồn Pine Script™ của chiến lược. Việc thêm dòng mã này vào bất kỳ chiến lược Pine Script™ v5 nào sẽ hiển thị giá thanh lý dưới dạng đường màu xanh lam trên biểu đồ:

plot(strategy.margin_liquidation_price)
Generic

Nếu cần tính giá theo cách thủ công, người ta có thể chuyển đổi phương trình từ phần trước thành công thức sau:

MarginLiquidationPriceRaw = ((InitialCapital + NetPofit) / (PointValue * AbsPositionSize) - Direction * Giá đầu vào) / (MarginPercent / 100 - Direction)

Giá trị MarginLiquidationPriceRaw thu được sau đó được làm tròn lên (đối với các vị thế bán) hoặc xuống (đối với các vị thế mua) đến mức giá gần nhất chia hết cho giá trị đánh dấu tối thiểu của ký hiệu.

Lưu ý cách chia toàn bộ biểu thức cho (MarginPercent / 100 - Direction). Nếu hướng là Long và MarginLong% là 100 thì số chia sẽ là 0 và kết quả là MarginLiquidationPriceRaw sẽ không thể đạt được do chia cho 0. Hành vi này phù hợp với quan điểm cho rằng nhà môi giới không thể buộc phải thanh lý một vị thế Mua với biên độ 100%.

Với chiến lược giả định được mô tả ở phần trước, phép tính này sẽ cho kết quả: ((1000 + 0) / (1 * 40) - 100) / (20/100 - 1) = 93,75, đây là mức giá đầu tiên đảm bảo một cuộc gọi ký quỹ. Vì 93,75 chia hết cho kích thước đánh dấu của GOOG là 0,01 nên việc làm tròn dựa trên đánh dấu tối thiểu không có hiệu lực trong trường hợp này.

Lưu ý rằng sự kiện Lệnh gọi ký quỹ không được đảm bảo sẽ kích hoạt ở mức giá được tính toán này trong quá trình mô phỏng.

Tính toán quy mô thanh lý

Số tiền chính xác của một vị thế được thanh lý bởi sự kiện Lệnh gọi ký quỹ phụ thuộc vào giá xảy ra. Như đã lưu ý ở trên, trình mô phỏng nhà môi giới thanh lý gấp bốn lần số tiền cần thiết để bù lỗ, cung cấp một khoản đệm để đảm bảo những sự kiện này không xảy ra liên tiếp. Chúng tôi sử dụng thuật toán sau để tính số tiền thanh lý:

1. Tính toán số tiền đã chi tiêu, tức là số vốn đã chi để mở vị thế.

Kích thước vị thế * Giá vào lệnh

2. Tính giá trị thị trường của chứng khoán (MVS).

Kích thước vị thế * Giá hiện tại

3. Tính lợi nhuận mở. Nếu hướng giao dịch ngắn và Lợi nhuận mở là số dương thì kết quả vẫn âm, do đó chúng tôi nhân giá trị tuyệt đối của phép tính với -1.

ABS(MVS - Số tiền đã chi tiêu) * -1

4. Tính Vốn chủ sở hữu, tức là số vốn có sẵn trong mô phỏng.

Vốn ban đầu + Lợi nhuận ròng + Lợi nhuận mở

5. Chuyển đổi phần trăm ký quỹ thành tỷ lệ ký quỹ.

Phần trăm ký quỹ / 100

6. Tính Số tiền ký quỹ, tức là số tiền cần thiết trong tài khoản để chi trả cho phần vị thế mở của nhà giao dịch.

MVS * Tỷ lệ ký quỹ

7. Tính toán số tiền khả dụng, tức là số tiền bị mất mà nhà giao dịch không thể trang trải bằng vốn chủ sở hữu hiện tại của họ.

Vốn chủ sở hữu - Ký quỹ

8. Tính tổng số tiền mà nhà giao dịch đã thua.

Số tiền khả dụng/Tỷ lệ ký quỹ.

9. Tính toán số lượng cổ phiếu, đơn vị, v.v. mà chiến lược sẽ cần thanh lý để bù lỗ. Chúng tôi cắt bớt giá trị đến cùng dấu thập phân với kích thước hợp đồng tối thiểu cho ký hiệu hiện tại.

TRUNCATE(Bước #8 / Giá hiện tại)

10. Tính toán số lượng cổ phiếu, đơn vị, v.v. mà nhà môi giới sẽ thanh lý để bù lỗ. Nhà môi giới mô phỏng của chúng tôi bán gấp bốn lần số tiền cần thiết để đảm bảo sự kiện Lệnh gọi ký quỹ không được kích hoạt liên tục nếu thua lỗ tiếp tục. Giá trị này sẽ dương đối với các giao dịch bán vì nhà môi giới mua các đơn vị để bù lỗ thay vì bán.

Bước #9 * 4

Để kiểm tra tính toán này một cách chi tiết, hãy thêm Chiến lược Supertrend tích hợp vào biểu đồ NASDAQ:TSLA trên khung thời gian "1D" và đặt "Kích thước lệnh" thành 300% vốn chủ sở hữu và "Ký quỹ cho các vị thế mua" thành 25% :

Lệnh đầu tiên xảy ra ở mức giá mở cửa của thanh vào ngày 16 tháng 9 năm 2010. Chiến lược này đã mua 682.438 cổ phiếu (Quy mô vị thế) ở mức 4,43 USD (Giá vào lệnh). Sau đó, vào ngày 23 tháng 9 năm 2010, khi giá giảm xuống 3,9 (Giá hiện tại), trình mô phỏng đã buộc phải thanh lý 111.052 cổ phiếu thông qua sự kiện Lệnh gọi ký quỹ.

1. Số tiền đã chi: 682438 * 4,43 = 3023200,34

2. MVS: 682438 * 3,9 = 2661508,2

3. Lợi nhuận mở: −361692,14

4. Vốn chủ sở hữu: 1000000 + 0 − 361692,14 = 638307,86

5. Tỷ lệ ký quỹ: 25/100 = 0,25

6. Ký quỹ: 2661508,2 * 0,25 = 665377,05

7. Số tiền khả dụng: 638307,86 - 665377,05 = -27069,19

8. Số tiền bị mất: -27069,19 / 0,25 = -108276,76

9. Cổ phiếu bù lỗ: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763

10. Kích thước lệnh gọi ký quỹ: -27763 * 4 = - 111052