QuantConnect / QuantConnect/Lean

Resolve order into multiple position groups

Open
#7,309 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug impact-low
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 master branch
  • I have confirmed that this is not a duplicate issue by searching issues
  • I have provided detailed steps to reproduce the issue

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.