876 Commits

Author SHA1 Message Date
Martin-Molinero 400a0d42d9 Add internal subscription manager (#4678)
* Add internal subscription manager

- Add InternalSubscriptionManager that will handle internal
  Subscription. Replaces the realtime updates
- Fix thread race condition in the TimeTriggeredUniverseSubscription, we
  have one thread injecting data points, the main algorithm thread, and
  the base exchange is pulling from it
- Fixes for FakeDataQueue
- Adding unit tests

* Address reviews and fixes

- Internal subscription will use extended market hours
- Only sample charts accordingly
- Get api-url once
2020-09-01 21:22:22 -03:00
Colton Sellers b8674731a5 Feature 2456 custom Python consolidator support (#4637)
* DataConsolidator Wrapper for Python Consolidators

* Regression Unit Test

* Refactor Regression test

* Bad test fix

* pre review

* self review

* Add RegisterIndicator for Python Consolidator

* Python base class for consolidators

* Modify regression algo to register indicator

* unit test - attach event

* Test fix

* Fix test python imports

* Add license header file and null check

Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
2020-08-25 17:26:55 -03:00
Martin-Molinero 9cdb4a91c5 Refactor live data feed (#4636)
* Live Coarse universe refactor

- Live trading will source Coarse and Fine fundamental data directly
  from disk. Updating unit tests.

* Adds ILiveDataProvider interface

  * Adds wrapper for IDataQueueHandler implementations

  * Replaces IDataQueueHandler with ILiveDataProvider in
    LiveTradingDataFeed

  * Edits IDataQueueHandler documentation

* Maintains aggregation for current IDQH impls and skips for ILDF impls

  * Note: No unit test was created for this method, go back and TODO

* Protobuf Market data

- Adding protobuf support for Ticks, TradeBars and QuoteBars. Adding
  unit tests.

* Adds unit tests for LiveDataAggregator changes

  * Fixes bug where custom data was not handled as it was before
  * Fixes race condition bug because of variable reuse in class

* Add protobuf extension serialization

* Fixes for protobuf serialization

* Refactor

* Fix OptionChainUniverse

* replace BaseDataExchange pumping ticks with consolidators

* AlpacaBrokerage

* BitfinexBrokerage

* GDAXBrokerage

* OandaBrokerage

* InteractiveBrokers

* TradierBrokerage

* FxcmBrokerage

* PaperBrokerage

* etc

* WIP fixes for existing LTDF unit tests

* Fixes more LTDF unit tests

* make IDataAggregator.Update recieving Generic BaseData rather than Tick

* Change IDataQueueHandler.Subscribe method

* Some fixes after adding new commits

* Adds protobuf (de)serialization support for Dividend and Split

* Serialize protobuf with length prefix

* Fix missing LTDF unit tests

* Adds TiingoNews protobuf definitions

* fix comments

* more fixes on IQFeedDataQueueHandler

* disallow putting ticks into enumerator directly

* ScannableEnumerator tests

* fix OandaBrokerage

* AggregationManager unit tests

* fix AlpacaBrokerage tests

* fix InteractiveBrokers

* fix FxcmBrokerage tests

* call AggregationManager.Remove method on unsubscribe

* fix GDAX existing tests

* Fixes, refactor adding more tests for AggregatorManager

* Adds BenzingaNews protobuf definitions and round trip unit test

* Adds missing TiingoNews unit test to Protobuf round trip tests

* Improve sleep sequence of LiveSynchronizer

* need start aggregating first, and then can subscribe

* More test fixes and refactor

- Refactoring AggregationManager and ScannableEnumerator so the last is
  the one that owns the consolidator
- Adding pulse on the main LiveSynchronizer

* Improve performance of LEquityDataSynchronizingEnu

* Add missing Set job packet method

* Minor performance improvements

* Improvements add test timeout

- Improvements adding test timeout to find blocking test in travis

* Improve aggregationManager performance

* Testing improvements for travis

* Remove test timeouts

* More test fixes

- Adding more missing dispose calls and improving determinism

* fix IEXDataQueueHandler and tests

* Final tweaks to LTDF tests

* more AggregationManager tests

* consume and log ticks

* fix test: couldn't subscribe to Forex tickers

* change Resolution for all bar configs

* Improve RealTimeScheduleEventServiceAccuracy

* refactoring: move common code to base class

* fixed bug; unsubscribe SubscriptionDataConfig

* Small performance improvement

* Minor fixes

* Avoid Symbol serialization

* Fixes coarse selection in live mode

* Fix for live coarse

* Adds protobuf (de)serialization support for Robintrack

  * Adds round-trip unit test

* Minor performance improvements

* More minor performance improvements

* pass LiveNodePacket through to OandaBrokerage

* Fixes empty list becoming null value when deserializing with protobuf

* Reverts BZ live trading exception removal and fixes tests

* Refactor WorkQueue making it abstract

* Add try catch for composer

* Adds optional data batching period to LiveFillForwardEnumerator

* Override data-queue-handler with config

* Improve PeriodCountConsolidator.Scan performance

* Move batching delay to main Synchornizer thread

* Reverts addition of Robintrack protobuf definitions

* Give priority to config history provider if set

* Add Estimize protobuffing

- Add Estimize protobuffing support. Adding unit tests

* Always dispose of data queue handler

Co-authored-by: Gerardo Salazar <gsalaz9800@gmail.com>
Co-authored-by: Adalyat Nazirov <aenazirov@gmail.com>
2020-08-18 20:21:10 -03:00
Gerardo Salazar b866c8b893 Removes Robintrack data source (#4628) 2020-08-14 19:46:30 -03:00
Martin Molinero db1bf686b9 Fix factor files missing file dir check 2020-07-31 10:44:57 -03:00
Juan José D'Ambrosio 211f1144b5 Implement NotSpecified SmartInsiderEventType 2020-07-29 21:08:52 +00:00
JJD e7682cbd37 Add Plan Re-started to SmartInsiderEventType 2020-07-29 11:24:44 -03:00
Martin Molinero c18b1af5ce Address reviews
- Add new comment expanding on the QuoteBar ask and bid fill forward behavior for new bars, which are not a fill forward bar.
2020-06-23 14:50:23 -03:00
Martin Molinero febc4b50ea Fix QuoteBarConsolidator
- TickQuoteBarConsolidator will use previous bar. Updating unit tests
- QuoteBarConsolidator open ask and bid will match previous bar close
  bid and ask. Adding unit tests
2020-06-23 14:42:56 -03:00
Anand Vishnu 79a05ebd27 Quote bar previous close and current open should be same 2020-06-23 14:42:56 -03:00
Martin Molinero b575880739 Coarse tiingo new universe selection algorithm
- Adding an example algorithm of a custom universe selection using
  coarse data and adding tiingo news. If conditions are met will add the
  underlying and trade it
- Adding required UniversePythonWrapper
2020-06-15 20:05:08 -03:00
Martin Molinero bcc67d2457 DataPermissionManager is used by history provider
- DataPermissionManager will be used by the history provider
- Moving interfaces from Engine to Common
2020-06-12 12:51:14 -03:00
Martin Molinero 69194bfbe9 Minor improvements
- Makeing FactorFileRow.Parse private to avoid wrong usages
- Avoid end of stream check while unzipping
2020-06-08 14:33:52 -03:00
Martin-Molinero 34f5e6d427 Merge pull request #4439 from QuantConnect/bug-smartinsider-history-dropped-points
Updates Smart Insider transactions and intentions to use different time index
2020-05-22 11:12:07 -03:00
Gerardo Salazar 9087b0f782 Address review - designate Smart Insider timezone as UTC 2020-05-21 10:01:32 -07:00
Gerardo Salazar f610b3a4fb Updates Smart Insider transactions and intentions to use different time index
* We now use the time at which Smart Insider added a given event to
   their database. Because time indexes for Smart Insider are now
   non-duplicated per symbol, the History request will properly work.
2020-05-20 14:55:28 -07:00
Alexandre Catarino 9de6740438 Fixes Typo OptionContract.Style 2020-05-20 16:57:05 +01:00
Jared 88cb12ae8c Update SmartInsiderEventType.cs 2020-05-19 08:09:47 -07:00
AlexCatarino f668bc4c73 Adds Style Property to OptionContract
The information on option style type was not present in OptionContract object.
2020-05-18 14:09:33 +01:00
Jared c82ad8638a Merge pull request #4399 from gsalaz98/bug-4382-smartinsider-new-eventtypes
Adds missing fields from intentions dataset to SmartInsiderEventType enum
2020-05-15 14:38:25 -07:00
Jared 1403b2370d Update SmartInsiderEventType.cs 2020-05-15 14:38:12 -07:00
Martin Molinero 6009e3ffeb Fix TiingoNews Time
- Fix TiingoNews time for backtesting, converter will store and organize
  data based on the 'QC time' which is crawldate or publish data plus an
  offset
2020-05-12 16:15:26 -03:00
Martin Molinero 269b8ba204 Remove PsychSignal data
- Remove PsychSignal data since it's no longer available
2020-05-11 18:48:13 -03:00
Jared 4fea6128a7 Merge pull request #4390 from gsalaz98/feature-alternative-data-robintrack
Implements Robintrack BaseData and example algorithms
2020-05-11 12:06:53 -07:00
Gerardo Salazar 51cbbf404b Adds missing fields from intentions dataset to SmartInsiderEventType enum 2020-05-11 11:50:59 -07:00
Gerardo Salazar d2eb0482fa Address reviews - refactors portions of code and adds tests 2020-05-08 18:22:16 -07:00
Gerardo Salazar d3a5f52fe9 Implements Robintrack BaseData and example algorithms 2020-05-07 16:26:15 -07:00
Martin Molinero 01689afd31 keep cache option filter unique strike list 2020-05-06 12:04:31 -03:00
Martin Molinero 714b98f832 Performance improvements for Options
- Replace Enum to string operations on Options enums, since it's
  expensive
- Replace Enum IsDefined check since it uses reflection
- Improve OptionFilterUniverse linq operations
- Improve performance of SecurityIdentifier properties to avoid having
  to extract them from properties always
- Avoid calling ToList for already list data collections (it creates a
  copy)
- Avoid iterating over securities for which we have no holdings when
  calculating TPV or MarginUsed
2020-05-05 21:14:12 -03:00
Martin Molinero 3e09d2f3c9 Adding new ReferenceWrapper
- Adding new ReferenceWrapper for structs, value types, to avoid thread
  race conditions while reading and writting. In C# reference type
  assignments are atomic, so it allows us avoid using locks.
2020-04-30 19:56:15 -03:00
Martin Molinero 183aac039d Address reviews 2020-04-28 18:12:26 -03:00
Martin Molinero a8173589c7 Add StreamReader for Tick
- Add StreamReader Reader for Tick data type.
- Adding stream reader GetString extension, adding tests.
- BacktestingBrokerage will not create unnecessary order events
2020-04-28 13:32:40 -03:00
Martin Molinero 8e71e48c07 PythonSlice
- AlgorithmPythonWrapper will directly call base OnFrameworkData()
  implementation skipping going through python and it's overhead
- Small performance improvement for adding Tick data points into a Ticks
  collection
- For python always wrap slice with PythonSlice, so that slice.Get()
  works even when no custom data is present, adding test.
2020-04-27 19:03:03 -03:00
Martin Molinero 47795f1c90 Extend StreamReader for QuoteBars
- Adding performance tests for StreamReader QuoteBars
2020-04-10 15:39:51 -03:00
Martin Molinero 7989d41aa7 Fix SecurityCache OHLC data type
- Fix for Equity SecurityCache OHLC default data type to be used. Will
  ignore QuoteBars
2020-04-08 19:31:37 -03:00
Martin Molinero 4eac5e4142 Add comment in Slice.cs
- Add a comment in Slice.cs about temporary patch until GH issue 4196 is
  fixed
2020-04-07 11:30:41 -03:00
Martin Molinero 5671a3293a Slice dynamic accessors ignore Quote for equities
- Slice dynamic data accessors will ignore QuoteBars and
Ticks TickType.QuoteBars for equities. This is to make slice dynamic
accessors deterministic and avoid breaking backwards compatibility when
adding QuoteBars for equities.
2020-04-06 10:33:02 -03:00
Martin Molinero 499248fe12 Revert "Revert "Adding Support for Equity L1 Quote Data""
This reverts commit 8cd8d206ca.
2020-04-06 10:32:59 -03:00
AlexCatarino 64b78df045 Addresses Peer-Review
- Fixes:
 - `Slice.GetValues`
    Not returning the `Value` but the `KeyValuePair`
 - `ExtendedDictionary.update(PyObject)`
    Paramenter type should be `PyObject` not `PyDict`
- Adds unit test for `update()`
- Fixes `OrderListHash` of `PythonDictionaryFeatureRegressionAlgorithm` test.
2020-04-01 16:15:05 +01:00
AlexCatarino 2c0d7e9ebe Implements Logic in ExtendedDictionary.this[string]
And removes it from chidren implementation.
2020-04-01 16:15:05 +01:00
AlexCatarino 27d31b7846 Renames BaseDictionary to ExtendedDictionary
Changes the return type of `keys()` and `values()` methods to `PyList`. Since `Keys` and `Values` return `ICollection` in some cases, the Python type was not consistently of `list` type.
2020-04-01 16:15:04 +01:00
AlexCatarino a59bd17fb9 Adds BaseDictionary That Implements Python Dict Methods
`BaseDictionary` is an abstract implementation of `IExtendedDictionary` keyed by `Symbol` that implements Python `dict` methods. `Slice`, `DataDictionary`, `SecurityManager`, and `SecurityPortfolioManager` derives from it in order to behave like Python `dict`.
2020-04-01 16:15:04 +01:00
Martin Molinero 07a4285baf Test approach 2020-04-01 16:15:04 +01:00
AlexCatarino c1e18f82bb WIP 2020-04-01 16:15:04 +01:00
Stefano Raggi 9034da2716 Fix EstimizeConsensus.Symbol serialization 2020-03-31 16:36:21 +02:00
Martin Molinero b28f9f501a Refactor and fix Slice bugs
- Fixing Python slice enumeration which would not happen when custom
data was present. Adding unit test
- Fix Slice constructor which would fail to create data collections due
to relying on non-deterministic 'slice._data'. Adding unit test
- Improving custom data retrieval for symbols which have more than 1
data type in a slice. Adding unit test
- First step refactoring slice internally, no behavior changed
2020-03-27 12:44:05 -03:00
Martin Molinero 2a2711d056 IndicatorWarmup fixes
- WarmupIndicator will be able to determine the correct type to use
- Fix bug in `History.GetMatchingSubscriptions()` which would use the
same TZ for exchange and data. Covered by regression algorithm.
- Consolidate will only infer `TickType` from `T` is not abstract
- Adding regression algorithm
- Slice will expose `Get(Type)` to get data by type, adding unit tests
2020-03-25 18:52:48 -03:00
Martin-Molinero 899ea03a1c Merge pull request #4227 from QuantConnect/bug-3861-indicator-warmup
Fix WarmupIndicator duplicate consolidator
2020-03-23 18:49:57 -03:00
Jared f0187cebf3 Merge pull request #4233 from QuantConnect/bug-4231-trading-economics-calendar-serialization-fix
Fix TradingEconomicsCalendar.Symbol serialization
2020-03-20 16:38:57 -07:00
Stefano Raggi acf6f8d6dc Address review - remove Symbol override 2020-03-21 00:23:24 +01:00