* Add DualSymbolIndicator unit tests
* Introduce MultiSymbolIndicator for indicators working on multiple symbols
Use the new class as base for DualSymbolIndicator and OptionIndicatorBase.
The OptionIndicatorBase can now detect when ready even if underlying and options market close is different when resolution is daily.
* Accept any BaseData for options indicators
* Improve indicator conversion from python on registration
Also minor fixes
* Cleanup and simplification
* Fix ImpliedVolatility IsReady flag
* Update regression algorithm history count
AutomaticIndicatorWarmupOptionIndicatorsMirrorContractsRegressionAlgorithm history count decreased because options indicators period is now 1 instead of 2
* Address peer review
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Initial solution
* Update regression test
* Update assertions
* Resolve PR comments
* Add more order types to regression test
* Update regression algorithm name
* Update old regression algorithm
* Refactor validation to check buying power only for non-ComboLeg update orders
* Update ValidateSufficientBuyingPowerForOrders
* Update regression algorithm
* Resolve review comments
* Use try out pattern
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
* Refactor SetHoldings to return a List<OrderTicket>
* Add expectedQuantities to the testCases
* Update regression tests
* Update name of regressionAlgorithm
* Address review comments
* Update unit test
* Fix symbol changed events emission time
Ensure the symbol changed events are emitted after the securities are processes by the main loop in the AlgorithmManager. This way the algorithm has access to the new symbol security since it would be added by the securities processing logic.
Also, allow all securities to be properly updated, including prices and cash, before emitting the event, so that the any logic (like placing orders) done by the algorithm on the handler has the correct data.
* Minor fix
* Minor change
* Minor change
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Create regression tests and refactor liquidation logic
- Implemented regression tests for order creation and liquidation
scenarios
- Removed LiquidateExistingHoldings method
- Replaced LiquidateExistingHoldings with the general Liquidate method
* Addressed review comments
* Addressed new comments review
* Update default value for 'tag'
* Update ExpectedStatistics
* Identify and liquidate portfolio symbols not included in targets
* Create a new regression test
* Fix minor comments
* Move regression tests to the correct folder
The delisting time is handled by the DateChangeTimeKeeper now, so there is no need for the SubscriptionDataReader to do any special logic for it.
This was preventing the new tradable date events to be emitted after the delisting date in some cases, like when the day after delisting is not tradable
Co-authored-by: Jhonathan Abreu <jdabreu25@gmail.com>
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Inicial solution
* Use InitialMargin instead of MaintenanceMargin
* Addressed review comments
* Update unit test
* Refactor GenerateOptionTicker method to handle IndexOption
* Addressed PR comments
* Update unit test
* WIP: Refactor Correlation Indicator
* Simplified comparison logic and improved abstraction
* Refactor Correlation and Beta indicators
- Created a base class to handle indicators with dual-symbol
functionality.
- Refactored the Beta and Correlation indicators to inherit from the new
base class.
- Updated unit tests.
- Added a new regression test to validate the latest computed value.
* Addressed review comments
* Update regression test
* Add new unit test to CommonIndicatorTests
* Addressed new review comments
* Fix bug in beta calculation
- Beta is fill-forwarded
- A correct pair considered when they have different symbols and the
same date
- Processing occurs when there are at least period+1 correct pairs
* Address review comments
* Add time zone handling and resolution-based truncation
* Fix regression test for Beta indicator
* Handle resolution for beta indicator
- Remove effectiveResolution and Beta constructor parameter for
resolution.
- Streamlined resolution handling logic for Beta indicator.
- Fixed issues with regression test for Beta.
* Fix issue with period and WarmUpPeriod
* Update unit tests for Alpha indicator
* Fixing minor issues
* Add a variable to track if the previous symbol is the target
* Add regression test for Beta calculation between BTCUSD and SPY
* Add an extra period if the TZ are different
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
* Add helper method to calculate options expiration date time
This allows to compute accurate time till expiry for greek indicators to be able to calculate on the actual expiration date before market close
* Update tolerance in greek indicators tests
* Minor fix
* Modify helper method to calculate settlement time instead of expiration time
* Cache option expiration date time
* Minor changes
* Minor changes
* Fix for daily options open interest data to be added to contracts
* Cleanup
* Update regression algorithms stats
* Minor fix and cleanup
* Minor fix
* Minor fix
* Update regression algorithms data point count
* Address peer review
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
* First draft of the solution
* Add regression tests
* Improve solution and add unit test
* Address suggestions
* Improve unit tests
* Nit changes
* Fix regression algorithms
* Default Data to null for ETFConstituentUniverses.
The data collection will be assigned only if needed. This allows data column to be filtered from dataframes since it will always be null for all constituents.
* Make base data collection aggregator reader fall back to BaseDataCollection
After instatiating the collection type, fall back to the base BaseDataCollection to aggregate data if the type is not a base data collection.
* Minor change
* Minor change
* Update pythonnet to 2.0.41
* Ignore data column for every flattened universe dataframe
* Filter empty collections columns in data frames
* Allow snake case named attributes in PythonSlice
* Remove PythonSlice Data Python class
Pythonnet handles dynamic objects behavior
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
* Adjust lower-resolution fill-forwarded daily bars when strict end times is enabled
This allows to get fill-forwarded bars with unchanged time stamps
* Minor fixes
* Minor test data changes
* Fixes and comments
* Address peer review and add some fixes
* Minor fix and add regression algorithm
* Minor fix
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Normalize universe data frames
Universe and (generically BaseDataCollection) data frames are not normalize and unpacked into a data frame, instead of just creating data frames with the universe lists within it
* Fix unit tests and algorithms to expecte new universe dataframe format
* Fixes
* Add PandasConverter.DataFrameGenerator class
* Pandas data frame generator class fixes
* Add comments
* Housekeeping
* Add attributes to mark classes and properties for pandas processing
* Improve pandas properties expanding
Allow and handle duplicate names
* Use PandasData generalization for Lean common data types
* Add points time as column when converting base data collections to data frames
* Cleanup and minor changes
* Minor change
* Pandas data to get type members on demand
* Move Pandas helper classes to their own files
* Minor changes
* Add flatten argument to python history api
This allows users to decide whether they want fully expanded dataframes for universe and other collection data types. Else, master behavior is kept
* Adding missing changes to last commit
* Update Pythonnet version to 2.0.40
* Add flattent argument to algorithm's OptionChain api
* Minor changes
* Housekeeping
* Minor changes
* Bug fix skipping data collection data points
* Add comment
* Set correct exchange time to OptionUniverse instances
* Address peer review and cleanup
* Cleanup
* Minor changes
- Addressed bug causing mismatch between types of correlations.
- Updated C method to include CorrelationType.
- Created regression test to ensure proper validation.
* Let delistings through for internal subscriptions
Without it, previously mapped continuous future contracts for which a position is open never received a delisting event for them to be liquidated and marked as non-tradable
* Update regression algorithm stats
* Revert/remove transaction handler initialization parameters DTO class
* Cleanup
Build & Test Lean / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
* Fix option universe
Set right time using exchange time zone when reading.
Remove OptionUniverse market hours hack in GetEntry extension method.
* Minor change
* Test
* Fix price shift on continuous future rollover
* Keep track of both data and exchange time in subscription data reader
* Fix for daily and hourly resolutions.
Add daily and hour algorithms
* Fixes for emitting new exchange dates at the beginning and end when data is not available
* Cleanup
* Minor fix
* Minor fix: detect mapping in data reader after advancing time keeper
* Minor fix
* More fixes
* More fixes
* Fixes for universe files
* More fixes for daily resolution data
* Separate DateChangeTimeKeeper to its own file
* Add DateChangeTimeKeeper unit tests
* Minor fix
* Add more DateChangeTimeKeeper unit tests
* Address peer review
* Address peer review
* Address peer review
* Detect mappings using the config NewSymbol event
* DateChangeTimeKeeper performance improvement for time zone conversions
* Clean up date change time keeper
* Cleanup
* Minor regression algo update
* Cleanup
* Cleanup
* Fix perform universe selection on sundays for continuous futures with extended market hours
* Cleanup
* Address peer review
* More cleanup
* More cleanup
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Fix ConsolidateRegressionAlgorithm
- Fix Bitcoin custom data time range. Historical data goes from April 2014
- Fix expected consolidated bar counts
- Fix python Consolidate implementations to respect daily strict times for Daily resolution
* Housekeeping
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* feat: sort property in SubscriptionDataSource
* refactor: read lines (with sort opportunity) in TextSubscriptionDataSourceReader
* refactor: xml description of Sort property in SubscriptionDataSource
* revet: TextSubscriptionDataSourceReader changes
* feat: develop UnsortedTextSubscriptionDataSourceReader
* remove: UnsortedTextSubscriptionDataSourceReader
* feat: develop SortEnumerator
feat: use SortEnumerator in SubscriptionDataReader
* revert: TextSubscriptionDataSourceReader changes
* feat: use sort Enumerator in LiveCustomDataSubscriptionEnumeratorFactory
* test:feat: Unsorted Live Data Feed with using Object Store
* test:feat: history CustomData request with unsorted data
* refactor: develop TryWrapper on SortEnumerator
* remove: extra spacing
* refactor: Sort in SubscriptionDataSource
* feat: add RegressionAlgorithms when source return data in Descending format
* refactor: xml description of prop Sort in SubscriptionDataSource
* refactor: SortEnumerator
* test:refactor access modifier in ExampleCustomDataWithSort
* test:refactor: increase performance LiveDataFeedSourcesDataFromObjectStore
* feat: add xml comment of regression algorithm
* test:revert: access modifier to public in internal test class
* test:refactor: use while instead of timer
* Revert "test:refactor: use while instead of timer"
This reverts commit 4fe43da8094df366f7ae4b361c97a4a14b815c32.
* Fix pandas converter to handle list of data with different symbols
* Properly convert list of data into dataframe
Take into consideration data for multiple symbols in the same list
* Cleanup
* Index dataframes by symbol object instead of SID string
* Add symbol equality operator to compare against object
* Exclude "ID" from option chain dataframe
* Minor fix
* Add greeks columns directly in option chain dataframe.
Also add pass-through properties for greek values in OptionUniverse
* Some cleanup
* Minor fix
* Add new QCAlgorithm.OptionChains() method
- Use OptionChains as output
- Add DataFrame to OptionChain and OptionChains
- Rename Greeks classes
- Add ISymbolProvider for classes that have a symbol (IBaseData, OptionContract)
* Unify QCAlgorithmOptionChain API
Also refactor OptionContract to handle: (1) Actual market data and option price model data, and (2) OptionUniverse data
* Pass symbol properties to OptionUniverse option chain from algorithm
* Format OptionContract for dataframe
* Minor fix
* Add multiple option chains api regression algorithms and other minor changes
* Address peer review
Add NullGreeks class: keep ModeledGreeks as internal as possible
* Minor fix and add PandasConverter unit tests
* Peer review: Non-thread-safe Lazy for Python
* Handle Greeks unwrapping by PandasData
* PandasData cleanup
* Add data and other minor changes
* Unit test fix
* Update Pythonnet to 2.0.39
* Cleanup
* PandasData handling children class members
Address peer review
* Fix: indexing symbol conversion in pandas mapper
* Fix pandas mapper to convert string keys to symbol only when necessary
* Cleanup
* Cleanup
* Add PandasColumn python class to handle proper indexing
This allows propery hash and equality between Symbols, C# strings and Python strings
* Minor fixes
* Symbol cache improvements
* Minor fix for cache miss
* Revert PandasMapper reserved names and improvements
* Minor fix
* Revert reserved names
* Minor fix for Symbol equality operators
---------
Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Enhance command support
- Enhance command support, adding link helper methods. Adding and
expanding new tests
- Minor improvement for command str representation
* Minor test fix
Build & Test Lean / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
* Option universe improvements
- Improvement for resolution handling of option universes, affecting
performance in live mode. Adding regression algorithm
* Minor fix for research test
Build & Test Lean / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Fix: adjust option expiry reference date
* Add universe files
* Update data and other minor changes
* Minor changes
* Add regression algorithm summary
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
* EUREX data
EUREX data model and sample data
* Add EUREX futures expiry function and sample algorithms
* Add EuroStoxx50 futures map and factor files
* Reduce eurex data for repo
* Map eurex market to primary exchange
* Update Euro Stoxx 50 (FESX) map and factol files
* Update Euro Stoxx 50 (FESX) minute data
* Added EURSD data
* Added 2 basic FESX futures algorithms in CSharp and Python (#2)
* Add regression algorithms
* Update regression algorithms and data
* Minor change
* Cleanup
---------
Co-authored-by: paulius-an <118921953+paulius-an@users.noreply.github.com>
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add new QCAlgorithm.OptionChain method to get full data option chain
* Add extension method to get canonical symbol
* Support future options in new OptionChain method
* Replace option chain provider with OptionChain method in some regression algorithms
* Add new regression algorithms for OptionChain method
* Replace option chain provider with OptionChain method in some regression algorithms
* Minor
* Cleanup
* Minor changes in regression algorithms
* Minor adjustments
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Initial options universe with greeks implementation
* Options universe improvements
* Address peer review
* File based options universe fixes and improvements.
- Adjust OptionUniverse start-end times and period.
- Adapt unit tests and some algorithms to pass with new options universe selection.
* Updated options regression algorithms stats for new universe data
* Updated options regression algorithms stats for new universe data
* Updated options regression algorithms stats for new universe data
* Updated options regression algorithms stats for new universe data
* Updated options regression algorithms stats for new universe data
* Option chain provider with new options universe
* Allow canonical option history requests
* Address peer review
* Address peer review
* Fix symbols parsing in OptionUniverse
* Fix universe selection subscriptions start time to not include extended market hours
* Minor changes
* Minor changes
* Peer recommended changes and fixes
* Update regression algorithm stats
* Update regression algorithms stats and minor fixes
* Fix option chain provider history request
* Round option indicators values
* Added option universe csv header property
* Update regression algorithms stats
* Update regression algorithms stats
* Data fixes and regression algos stats update
* Unit test fixes
* Minor changes
* Option chain handling in live trading data feed
* Minor changes
* Added processed data provider
* Fix thread-safety violation in Slice class
* Minor change
* Update options filter universe API to use OptionUniverse data
Add new filter methods for greeks, IV and open interest
* Option filter universe api updates
* Add OptionUniverse history regression algorithms
* Add regression algorithms for new options filter universe api methods
* Added options greeks data and updated regression algorithms
* Address peer review
* Address peer review
* Add more assertions to new options filter api regression algorithms
* Minor performance improvement.
Reduce greeks binomial model steps to 140
* Minor tests updates
* Greeks numerical models performance improvements
* Greeks numerical models performance improvements
* Revert array pool change for option pricing numerical models
* Update default dividend yield provider depending on option type
* [TEST]
* Add helper method con calculate time till expiration
* Use double in price option numerical models
* Implied volatility calculation improvements
- Adjust root finding method accuracy as a factor of the option price
- Use BSM to get a first guess
* Cleanup
* Some regression algorithms and unit tests cleanup
* Regression tests updates after rebasing from master
* Add universe files
* Self review and cleanup
* Minor regression tests updates after rebase
* Fix: set data time zone to same as exchange tz for options universes
* Minor change
* Minor change
* Fix for live trading options universe selection
* Keep underlying when aggregating collections in BaseDataCollectionAggregatorEnumerator
* Update index options regression algorithms stats
* Minor change
* Address peer review
* Memory usage improvements
* Minor build fix
* Minor changes and test fixes
* Cache symbols in OptionUniverse
* Cleanup
* Fix index option creation in OptionUniverse
* Use cached underlying SID when parsing from string
* Abstract symbols cache to BaseDataCollection
* Return actual underlying symbol when mapping decomposing ICO ticker
* Address peer review
* Minor performance improvements reduce garbage
* Limit Symbols and SIDs cache size to help with memory usage
* Minor fix in symbols and sid cache cleanup
* Build fix
* Lazily parse greeks on individual access
* Cleanup and tests
* Address peer review
* Minor greeks fix
---------
Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
* Adds Overload to AddIndexOption
Simplify usage. We don't need to create/add the underlying explicitly, see AddIndexOption(string, Resolution, string, bool) overload.
* Addresses Peer-Review
- Default market is `null` instead of `Market.USA` allowing for `BrokerageModel` setup.
- `AddIndexOption` and `AddIndexOptionContract` methods now return `indexOption` objects.
* Fixes Logic Bug
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Minor indicator history fix
- Take into account warmup period when used, the last bar of the warmup
period is counted as a data point.
- Fix bug where in some cases the last data point could of been missed
and the indicator not updated with it
* Minor tweak
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Fix dividend yield calculation
* Get security price as input for dividend yield provider
* Account for splits in dividend yield provider
* Fix split adjustment for dividend yield calculation
* Use right dividend yield in options indicators