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

Abierto
#10,086 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
56/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
csharp

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
C#
Estrellas
22.5k
Forks
5.4k
Merge medio
1 d 2 min
PR fusionados (30 d)
71

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de QuantConnect/Lean

Todos los issues de QuantConnect/Lean

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.