Etoro cash-account targets size against combined crypto inventory rather than per-instrument holdings

Đang mở
#10,086 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
56/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
csharp
Lĩnh vực
backend, databases

Hướng nghiên cứu

Read Common/Securities/CashBuyingPowerModel.cs:206-219, EtoroBrokerageModel.cs, and SecurityPortfolioModel.cs:75-79 to trace cash-account sizing and instrument holdings. Start by comparing eToro's sizing model with existing position-based sizing and check how spot exchanges use the generic cash model. Add regression coverage for zero and nonzero targets across two instruments sharing a base currency; done when those targets use each instrument's position and spot-exchange behavior remains unchanged.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

What happens

On EtoroBrokerageModel(AccountType.Cash), crypto target sizing uses the combined base-currency cash balance instead of the holdings of the requested instrument. eToro's order model treats positions as instrument-specific and rejects a market order that crosses zero, so this can either prevent a close or trade in the wrong direction.

Synthetic reproduction against Lean 2d730d56e (no brokerage connection or live trade):

  • USD cash: 10,000.
  • BTC cash: 2, conversion rate 10,000 USD/BTC.
  • EUR cash: 0, conversion rate 1 USD/EUR.
  • BTCUSD and BTCEUR: one BTC held on each, each priced at 10,000 in its quote currency.
  • Both securities use the buying-power and fee models returned by EtoroBrokerageModel(AccountType.Cash); portfolio free-value and minimum-order buffers are zero.
  • Total portfolio value: 30,000 USD.

Actual output:

CalculateOrderQuantity(BTCUSD, 0) = -2
CanSubmitOrder = false (cross-zero rejection; BTCUSD holds only 1)

CalculateOrderQuantity(BTCUSD, 0.5) = -0.4950495
CanSubmitOrder = true

The zero target should close the one BTCUSD unit, not also attempt to sell the BTC represented by BTCEUR. The 50% target should increase BTCUSD from 10,000 toward 15,000 USD, not reduce it.

Source

  • Common/Securities/CashBuyingPowerModel.cs:206-219: the zero target returns -BaseCurrency.Amount; other targets compare against the value of that same combined currency balance.
  • Common/Brokerages/EtoroBrokerageModel.cs: inherits this cash-account buying-power model, but its CanSubmitOrder checks cross-zero against the instrument's holdings.
  • Common/Securities/SecurityPortfolioModel.cs:75-79: ordinary crypto fills already add units to the shared base-currency cash balance, so this can arise in an uninterrupted running algorithm too.

What a fix must achieve

Keep the cash book's combined coin inventory and valuation, while sizing eToro portfolio targets against the requested instrument's position. Cover a zero and a nonzero target with two instruments sharing the same base currency, and leave spot-exchange behavior unchanged.

Suggestion only: evaluate a position-aware buying-power model for eToro, reusing existing position-based sizing where possible rather than changing the generic spot-cash model.

This is distinct from #1860, which addressed initial virtual holdings: here both holdings are populated and the base-currency balance is correct.

Ngôn ngữ chính
C#
Star
22.5k
Fork
5.4k
Merge trung bình
22 giờ 6 phút
Pull request đã merge (30 ngày)
81

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của QuantConnect/Lean

Tất cả issue của QuantConnect/Lean

Issue tương tự

Thêm issue về C#

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.