Commit Graph

740 Commits

Author SHA1 Message Date
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
Martin Molinero b35bc31f51 Version bump 1.0.5.26 2019-10-15 18:43:33 -03:00
Jared de19f7e7d8 Merge pull request #3710 from gsalaz98/feature-cboe-vix-basedata
Implement CBOE BaseData class
2019-10-14 18:18:14 -07:00
Martin Molinero 3fe7838f09 Add Sec report perf branchmark
- Add Sec report performance benchmarks C# and Py
- Add missing `using(Py.Gil)`
2019-10-14 16:53:53 -03:00
Gerardo Salazar 7880cdf456 Address review: Make CBOE implementation more consistent with BaseData
* Adds new TryParse methods to the Parse class
2019-10-14 09:36:14 -07:00