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

Aperta
#10,086 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
56/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
backend, databases

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
C#
Stelle
22.5k
Fork
5.4k
Merge medio
22h 6m
PR unite (30g)
81

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di QuantConnect/Lean

Tutte le issue di QuantConnect/Lean

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.