Etoro cash-account targets size against combined crypto inventory rather than per-instrument holdings
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
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 itsCanSubmitOrderchecks 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
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de QuantConnect/Lean
-
PDF report generation can overwrite HTML when the destination extension is not lowercase .htmlAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
QuantConnect/Lean#10082 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
QuantConnect/Lean#10059 ·
Los mantenedores suelen responder en 1 día
-
Library Request: highspyAbiertolibrary-request
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
QuantConnect/Lean#10034 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
QuantConnect/Lean#9965 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
QuantConnect/Lean#9955 ·
Los mantenedores suelen responder en 1 día
Todos los issues de QuantConnect/Lean
Issues similares
-
bug emitter:client:csharp
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
microsoft/typespec#12572 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
needs-area-label
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
AWS Lambda: KeyNotFoundException drops HTTP-triggered transactions when allowAllHeaders is disabledAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
newrelic/newrelic-dotnet-agent#3949 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area-networking
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/aspnetcore#70545 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 87/100
Los mantenedores suelen responder en 1 día