Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle insufficient margin for option exercise #7828

Conversation

jhonabreul
Copy link
Collaborator

Description

Handling insufficient margin for automatic option exercise, which was causing the "Duplicated option assignment..." exception mentioned in the related issue #7815.

With these changes, simulated option exercises are handled using the Brokerage.OptionNofication event to create the option exercise order instead of going through the order processor, so that the margin check is bypassed and the order is placed and filled. After this, we expect a margin call like shown in the new regression algorithm InsufficientBuyingPowerForAutomaticExerciseRegressionAlgorithm.

Note: about algorithm's stats change (orders hash): since simulated options exercises are now handled like expired options exercise, without going throught the order processor to place them, some order properties are not populated, like OrderSubmissionData and PriceCurrency, but this should be taclked in a separate PR to keep this clean.

Related Issue

Close #7815

Motivation and Context

Requires Documentation Change

How Has This Been Tested?

Regression algorithm

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • Refactor (non-breaking change which improves implementation)
  • Performance (non-breaking change which improves performance. Please add associated performance test and results)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Non-functional change (xml comments/documentation/etc)

Checklist:

  • My code follows the code style of this project.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • My branch follows the naming convention bug-<issue#>-<description> or feature-<issue#>-<description>

Copy link
Member

@Martin-Molinero Martin-Molinero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! 💪

Common/Brokerages/OptionNotificationEventArgs.cs Outdated Show resolved Hide resolved
@jhonabreul jhonabreul force-pushed the bug-7815-duplicate-option-assignment branch from 852c84c to 42cccc1 Compare March 5, 2024 18:40
Copy link
Member

@Martin-Molinero Martin-Molinero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you 👍

@jhonabreul jhonabreul merged commit f298f6e into QuantConnect:master Mar 5, 2024
7 checks passed
@jhonabreul jhonabreul deleted the bug-7815-duplicate-option-assignment branch March 5, 2024 19:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Expand Duplicate Option Exercise Error Message to Diagnose Issue
2 participants