Commit Graph

944 Commits

Author SHA1 Message Date
AlexCatarino 63bd501306 Adds InitialMarginRequirement and MaintenanceMarginRequirement Properties to FutureMarginModel
These properties expose the current margin requirements that can be used to compute the number of contracts manually.
2020-01-20 22:49:03 +00:00
Martin Molinero 8f14f1bdfa Fix failing regression tests
- After https://github.com/QuantConnect/Lean/pull/4000
CoarseFineFundamentalRegressionAlgorithm started using `MarketCap`, but
this value was always 0 in existing data, so it caused undeterministic
results. Adding new data and update expected result.
- `AccumulativeInsightFrameworkAlgorithm` expected statistic were not
correct, updating.
2020-01-17 11:14:09 -03:00
Gerardo Salazar 4102c83e88 Modify and fix select regression algorithms
* OnEndOfDayRegressionAlgorithm - Since the EndTime of the hourly benchmark is during the day,
the OnEndOfDay method gets called one less time than usual. Updates statistics

* CustomUniverseWithBenchmarkRegressionAlgorithm.cs - modified algorithm so
that it works with hourly benchmark. Previously only tested for Daily benchmark

* BasicTemplateAlgorithm.py - Modified resolution to be
Resolution.Minute, just like it is in C#

* CustomDataRegressionAlgorithm.py - Remove warmup call from Initialize

* IndicatorSuiteAlgorithm.py - Adds PythonQuandl import to fix import error
2020-01-16 14:03:55 -08:00
Martin Molinero 14be31d0e5 BacktestingResultHandler orders delta
- BacktestingResultHandler will send a maximum of 50 orders per update
packet and will check `LastFillTime` and `LastUpdateTime` too
- Fix invalid linked file
`AccumulativeInsightPortfolioRegressionAlgorithm`
2020-01-16 17:50:42 -03:00
Jared b95973cf69 Merge pull request #3940 from wardjm/feature-accumulative-model
Feature accumulative model
2020-01-14 13:57:10 -08:00
AlexCatarino 76c70f1ea2 Adds MarketCap Member to FineFundamental Class
Adds `MarketCap` member to `FineFundamental` class that represents the aggregate market value of a company represented in dollar amount.

Changes `CoarseFineFundamentalRegressionAlgorithm` (C# and Python) to select securities based in its market capitalization. Same result as selecting by P/E ratio.
2020-01-04 00:33:29 +00:00
Jeffrey Ward a296d346a4 Pull request fixes. 2019-12-20 18:01:35 -05:00
Jeffrey Ward a796f30458 Added AccumulativeInsightPortfolioConstructionModel. 2019-12-20 18:01:35 -05:00
AlexCatarino f615a14155 Fix Consolidators Python timedelta
In `PeriodCountConsolidatorBase`, differentiate the type of the `PyObject` and create an `IPeriodSpecification` accordingly. If the `PyObject` is a C# `Func<DateTime, CalendarInfo>` or a convertable Python method, we create a `FuncPeriodSpecification` with it as a parameter. If the `PyObject` is a `datetime.timedelta`, we create a `TimeSpanPeriodSpecification` with it as a parameter after a conversion to `TimeSpan`.

- Adds example in `DataConsolidationAlgorithm`
- Adds unit test for `timedelta` overload.
2019-12-04 17:59:31 +00:00
AlexCatarino 9e6e2f9b22 Use Universe.Unchanged in Alpha Example Algorithm
In the Coarse Universe Selection of the following algorithms
- ContingentClaimsAnalysisDefaultPredictionAlpha
- GreenblattMagicFormulaAlpha
- PriceGapMeanReversionAlpha
- SykesShortMicroCapAlpha
Universe.Unchanged is now used when the universe is not changed instead of saving a list of symbol and returning it.

Other minor refactoring.
2019-11-30 11:50:01 +00:00
Jared ec4f714799 Merge pull request #3862 from gsalaz98/feature-3775-add-benzinga-custom-data
Implements Benzinga Custom Data
2019-11-27 15:39:22 -08:00
Gerardo Salazar 8c16ffde8d Address review - Fixes bug where tags were not being deserialized
* Write files by `UpdatedAt` date instead of the `CreatedAt` date
* Added ability to append to compressed files if file does not exist
* Cleaned up code as per review
* misc. documentation changes
2019-11-25 14:32:45 -08:00
Jared 6e9c5495ff Update readme.md 2019-11-24 16:29:21 -08:00
Martin Molinero d34a6f4a67 Add Constituent basic template algorithm 2019-11-22 11:39:03 -03:00
Gerardo Salazar a3c96059f7 Address review - Remove RSS converter and only parse API responses
* RSS converter now lives at: https://gist.github.com/gsalaz98/b87992cd5a5a214d01c63dbbefbbf12c
* Removed BenzingaNewsFactory as it is no longer needed
* Cleaned up code as per review to make this more maintainable
* Included new documentation
* Filter articles with no Symbols from being written
* General code improvements (duplication reduction, etc.)
2019-11-20 14:47:32 -08:00
Martin Molinero 70358482d4 Add ConstituentsUniverseDataGenerator algorithm
- Fix `ToString` implementation of the `SecurityIdentifier.None`. Adding
unit test
2019-11-20 17:22:27 -03:00
Martin Molinero e2c129a311 Improved version
- Renaming `PreSelected` to `Constituents`
- Adding base `ConstituentsUniverse`
- Adding Py and C# regression algorithm
- Fixing bug in `UniverseSelection`, it wasn't removing pending to be
removed securities unless the universe selection changed
- Adding test data
2019-11-20 17:16:44 -03:00
Gerardo Salazar e4789e0b23 Implement Benzinga News Downloader
* Make Benzinga News Converter more efficient (and cleaner!)
* Implement JSON converter for serialization/deserialization process
* Fix bug where duplicate symbols would be added to news.Symbols
* Modify algorithm strategies
2019-11-19 10:28:48 -08:00
Gerardo Salazar e6a9a3a4d1 Address review Mike's review and Fix timezone issues in BenzingaNews
* Cleaned up code inside BenzingaDataConverter
* Added more documentation to potentially confusing bits around the code

Previously, we would be storing Benzinga time in local time (i.e. with
about a 7hr offset from UTC since I'm in Pacific Time). But now, we
instruct Json.NET to serialize and deserialize dates as UTC.

Additionally, because the data resolution was not set to `Second`,
EndTime would be rounded down with `Time` to the closest minute. We
fixed that by specifying that the data is in `Second` resolution.
2019-11-19 10:28:48 -08:00
Gerardo Salazar bc1f608dce Address review - Code cleanup
* Makes BenzingaNewsAlgorithm throw a hard error if the Symbol is not
found inside the BenzingaNews object in OnData
2019-11-13 13:38:37 -08:00
Gerardo Salazar 4a95c36a96 Address Jared's review: Update example algorithms and property types 2019-11-13 13:38:36 -08:00
Gerardo Salazar 629de49b10 Implement Benzinga custom data as ToolBox application and BaseData class 2019-11-13 13:38:36 -08:00
Martin Molinero ec7a8fa906 Bump PythonNet to 1.0.5.29 2019-11-13 17:33:32 -03:00
Martin Molinero c6ab54f6d2 Bump PythonNet to 1.0.5.28 2019-11-12 16:06:55 -03:00
Jared bd0613f8cb Merge pull request #3804 from Martin-Molinero/bug-3327-invalid-initial-symbol-changed-event
Fix invalid initial SymbolChanged event
2019-11-08 08:07:34 -08:00
AlexCatarino 3fca51e314 Addresses Peer-Review 2019-11-07 22:26:46 +00:00
AlexCatarino fb76003048 Adds New Static Members to LiquidETFUniverse
New members represent the different ETF categories. Each one has a `List<Symbol>` for Long and Inverse ETFs.
2019-11-07 17:01:15 +00:00
Martin Molinero 86ffbcb3f9 Fix invalid initial SymbolChanged event
- EventProvider will receive start date during initialization, this will
be used by the `MappingEventProvider` to correctly set current mapped
symbol
- Adding unit test, updating existing regression test
2019-11-06 14:41:12 -03:00
Martin Molinero 2f9814f2f9 Add SetHoldings for collection of targets
- Adding `SetHoldings` implemenetation for a collection of portfolio
targets
- Adding regression test
- Some performance improvements
2019-11-05 13:47:42 -03:00
Martin Molinero 68ad2f51b6 Address reviews
- Replacing `BaseData.AdjustResolution` for `DefaultResolution` and
`SupportedResolutions`
- Making `Resolution` nullable for `Algorithm.AddData` methods
- The `ISubscriptionDataConfigService` will set the default resolution
if none was provided and assert it is supported
- Fix bug with `PythonData` `IsSparseData` and `RequiresMapping`
resolution
2019-11-04 20:42:30 -03:00
Martin Molinero 1d43dcd601 Add BaseData.AdjustResolution
- Adding `BaseData.AdjustResolution()` that should return a valid
resolution for the given data and security type.
This allows us to set a limitation which is useful to avoid invalid data
requests or unnecessary fill forward situations. The user will be
notified through a console message.
- Adding unit and regression test
- Updating example algorithms custom data resolution
- Some performance improvements. Wont change console color if
`SelectedOptimization` is defined
2019-11-04 20:38:26 -03:00
AlexCatarino 49701657fb Use Train Helper Method Instead of Schedule.TrainingNow 2019-10-28 18:13:59 +00:00
AlexCatarino 5bb28b44a8 Adds Examples for Train Feature
- Adds Python version of `TrainingInitializeRegressionAlgorithm`;
- Adds C# version of `TrainingExampleAlgorithm`;
- Removes `TrainingScheduledRegressionAlgorithm`.
2019-10-28 17:49:53 +00:00
Jared ee07baa0c8 Merge pull request #3758 from AlexCatarino/feature-3757-ewpcm-refresh
Extends EWPCM Rebalancing Options
2019-10-23 17:45:22 -07:00
AlexCatarino 725889198c Adds EWPCM Usage Examples in BasicTemplateFrameworkAlgorithm 2019-10-24 01:19:35 +01:00
Gerardo Salazar 3aadf5635b Convert FRED properties to fields
* Add example FRED usage
2019-10-23 16:59:37 -07:00
Jared 811aae81f9 Merge pull request #3753 from QuantConnect/bug-3721-custom-data-on-securities-changed-events
Filter custom securities from SecurityChanges
2019-10-22 07:33:01 -07:00
Martin Molinero 8966a3884f Filter custom securities from SecurityChanges
- Will filter out custom securities from `SecurityChanges` for user
code, note that by default it will not filter
- Adding unit tests
2019-10-21 18:03:13 -03:00
AlexCatarino c37b450a2e Adds Python Support
- Adds PyObject overload to `ScheduleManager.TrainingNow` and `ScheduleManager.Training`
- Adds `QCAlgorithm.Train` helper method
- Adds Python algorithm showing how to use the helper method.
2019-10-19 14:52:34 -04:00
AlexCatarino a18bd953ac Implements ConfidenceWeightedPortfolioConstructionModel
- Adding new `ConfidenceWeightedPortfolioConstructionModel` (C# / Py) that will
generate percent `Targets` based on the latest active `Insight` `Confidence` per
`Symbol`.
   - Will ignore `Insights` that have no `Confidence`.(unit tested)
   - If the sum of all the last active `Insight` per `Symbol` is bigger than 1, it
will factor down each target percent holdings proportionally so the sum is 1. (unit tested)
   - Adding unit tests
   - Adding a new regression test framework algorithm (C#/Py)
   -**Note**: `ConfidenceWeightedPortfolioConstructionModel` inherits from the `InsightWeightingPortfolioConstructionModel`. Protect method `GetValue` was implemented in `IWPCM` to enable the choice of `Insight` member.
2019-10-18 20:47:06 +01:00
Martin Molinero 9ec1a41235 Performance improvements
- `PortfolioTargetCollection` avoid calling `Count` on
ConcurrentDictionary directly -> has to take all locks
- `SecurityChanges` change Union for Concat since constructor will call
HashSet
- Make `DynamicSecurityData` hold lazy data objects
- `RegisteredSecurityDataTypesProvider` avoid looping over all
registered types, adding `TryGetType`
- `Security.Update()` will no call group by on data since this data is
already grouped by type. Adding `ContainsFillForwardData` will allows to
be lazy and not re loop through the data unless necessary
- `DefaultAlphaHandler` will use the `static`
`Enumerable.Empty<Insight>` instance when possible
- `SubscriptionSynchronizer` will be lazy to construct the
`universeData` dictionary which is not used in most of the times. Will
use `Count` vs `Any` -> `Count` is known by the dictionary
- For python algorithms `JobQueue` will respect `AlgorithmLocation`, was
using unexisting `"algorithm-path-python"`
2019-10-17 10:26:37 -03:00
Jared 7ac11ae47d Merge pull request #3736 from gsalaz98/feature-add-history-requests-to-demo-altdata-algorithms
Implement History request in demo AltData algorithms
2019-10-16 15:11:27 -07:00
Jared 70875a345e Merge pull request #3720 from Martin-Molinero/performance-3715-smartinsider-benchmark-algorithms
Add SmartInsider performance benchmark
2019-10-16 14:53:43 -07:00
Gerardo Salazar 0aadd2b9ae Implement history requests in demo AltData algorithms 2019-10-16 10:16:17 -07:00
Gerardo Salazar d43ef3e68e Address review: remove link to cache for CBOE in CachedAlternativeDataAlgorithm 2019-10-16 10:02:21 -07:00
Gerardo Salazar 7232693a71 Address review: Include ticker definitions in partial USEnergy class instead of USEnergyCategory 2019-10-16 09:36:19 -07:00
Martin Molinero cce87c992d Address review
- Increase time lenght of SmartInsider benchmarks. Adding history
requests
2019-10-16 13:35:05 -03:00
Martin Molinero 0d171a2e70 Add SmartInsider performance benchmark
- Adjust Sec performance benchmark algorithm
2019-10-16 12:15:00 -03:00
Gerardo Salazar 07d6f41f9b Implement U.S. Energy (EIA) cached data source
* Rename USEnergyInformation to USEnergyAPI
2019-10-15 16:06:37 -07:00
Jared 7160be5974 Merge pull request #3723 from QuantConnect/bug-3722-python-applysplit-call
Python ApplySplit - PythonNet update
2019-10-15 15:23:11 -07:00