QuantConnect / QuantConnect/Lean
Resolve order into multiple position groups
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 21.7k
- Forks
- 5.3k
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 34
Description
Expected Behavior
Lean can resolve orders into the possible several position groups that would be formed if position groups being held get impacted by the trades.
Actual Behavior
When you are holding options, either as strategies or single, and trading any of those options (again, either in strategies or single), the resulting position groups might be multiple, not just one as returned by SecurityPortfilioManager.TryCreatePositionGroup and OptionStrategyPositionGroupResolver.TryGroup.
For instance, if holding 10 bear call spreads with short option X and long option Y, then buying 5 of the option X, I end up having -5 X and 10 Y, wich would be group into a bear call position group with quantity 5 and a position group for option Y with quantity 5. This would be resolved into a single group, ignoring the others that get formed after the trade.
Potential Solution
Reproducing the Problem
See the Actual Behavior section
System Information
Windows 11
Checklist
- I have completely filled out this template
- I have confirmed that this issue exists on the current
masterbranch - I have confirmed that this is not a duplicate issue by searching issues
- I have provided detailed steps to reproduce the issue
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading Common/Securities/SecurityPortfolioManager.cs at SecurityPortfolioManager.TryCreatePositionGroup and Common/Securities/Positions/OptionStrategyPositionGroupResolver.cs at OptionStrategyPositionGroupResolver.TryGroup. Reproduce the bear call spread example from the issue and trace how positions are grouped after the trade. Done means all resulting position groups are returned, including the residual single-option group.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- fintech-quant
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100