Add flexible settlement date
Description
I created flexible static properties Equity.DefaultSettlementDays, Equity.USASettlementDaysHistory and Equity.InternationalSettlementDaysHistory, as well as their corresponding ones for Option so that the user can freely modify them. I also added a method in Security to compute the settlement days based on a given dictionary of pairs (date, settlement days) and the current time, where the date corresponds to the date the settlement days changed.
Related Issue
Closes #8659
Motivation and Context
With this change users will be able to freely modify the settlement days for both equity and options
Requires Documentation Change
N/A
How Has This Been Tested?
I created a unit test that apply funds to a DefaultBrokerageModel and then asserts the money is settled after the expected settlement days computed by Security.GetSettlementDays()
Types of changes
- [x] 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)
- [x] 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:
- [x] My code follows the code style of this project.
- [x] I have read the CONTRIBUTING document.
- [x] I have added tests to cover my changes.
- [x] All new and existing tests passed.
- [x] My branch follows the naming convention
bug-<issue#>-<description>orfeature-<issue#>-<description>