Commit Graph

309 Commits

Author SHA1 Message Date
Gerardo Salazar 2033c7873b Update outdated DotNetZip dependency in nuspec files 2019-07-02 18:02:23 -07:00
Jared a2a63ae058 Merge pull request #3016 from QuantConnect/feature-3015-add-weight-to-insights
Add Insight optional Weight
2019-06-04 16:52:48 -07:00
Martin Molinero c77a7b9116 Add performance note 2019-06-04 19:05:36 -03:00
Martin Molinero ee4f8fee82 Overall performance improvements
- `TimeSliceFactory` will avoid creating empty collections
- `ExecutionModels` will check target collection count before trying to
enumerate
- Reduce calls to .`TotalPortfolioValue`
- `SecurityValues` will only be created when required
- `TimeKeeper` will use TimeZone unique Id as dictionary key. The
TimeZone hash is expensive.
- `AlgorithmManager` will avoid calling `DateTime.UtcNow`,
`ConvertFromUtc()` and `RoundDownInTimeZone()`
2019-06-03 15:09:02 -03:00
Martin Molinero e294b3c3e2 Fix overflow exception
- Adding new `AlgorithmSettings` Min and Max absolute portfolio target
percentage
- Adding new `PortfolioConstructionModel.FilterInvalidInsightMagnitude()`
helper method that will be used by the `BlackLitterman` and
`MeanVariance` optiomization portfolio construction models to skip
insights with extreme magnitudes that will cause exceptions
- `PortfolioTarget.Percentage()` will now verify requested percent is
withing the settings values
2019-05-23 20:30:44 -03:00
Martin Molinero ac53e2a790 Rebase from master. Adding missing Python algo 2019-04-24 11:05:15 -03:00
Martin Molinero e21a8fec35 Address review, use inheritance
- New InsightWeightingPortfolioConstructionModel will inherit from EqualWeightingPortfolioConstructionModel
2019-04-24 11:05:15 -03:00
Martin Molinero 39ae3c6970 Addressing reviews
- Adding two new unit tests: 0 weight insight and null weight insight
- Fix bug in python `InsightWeightingPortfolioConstructionModel`
2019-04-24 11:05:14 -03:00
Martin Molinero 968adcea32 Adding InsightWeightingPortfolioConstructionModel
- Adding new `InsightWeightingPortfolioConstructionModel` that will
generate percent `Targets` based on the latest active `Insight` `Weight` per
`Symbol`.
   - Will ignore `Insights` that have no `Weight`.
   - 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.
- Adding unit tests
- Adding a new regression test framework algorithm
- Note most of the code, including tests, are reused from the
`EqualWeightingPortfolioConstructionModel`
2019-04-24 11:05:14 -03:00
AlexCatarino c3de660551 Updates pythonnet to 1.0.5.20 2019-04-23 23:15:14 +01:00
AlexCatarino b9f7b8fa52 Fixes StandardDeviationExecutionModel
This model was assuming that the history request used to warm up the indicators contains the 'close' column which is only valid for Equity.

The models were also refactored to update the indicators without a consolidator since the last data point from the history request was not pushed throught the indicators.
2019-04-18 16:38:45 +01:00
HalldorAndersen 13c9f6fd02 Update UncorrelatedUniverseSelectionModel.py 2019-04-11 15:23:03 -07:00
HalldorAndersen 5b8ec0160f Update UncorrelatedUniverseSelectionModel.py 2019-04-10 17:33:59 -07:00
HalldorAndersen 6e5b7ddd1d Update UncorrelatedUniverseSelectionModel.py 2019-04-10 16:31:04 -07:00
HalldorAndersen 682836677f Update UncorrelatedUniverseSelectionModel.py 2019-04-10 15:34:20 -07:00
Martin Molinero 4d108094e5 Implement QCAlgorithm.AddRiskManagement
- Implemention `QCAlgorithm.AddRiskManagement`
- Adding Py/C# regression test algoririthms
- Moving `CompositeRiskManagementModel` from `Framework` to `Algorithm`
project
2019-04-08 10:53:06 -03:00
Martin Molinero 9cabd32d19 Add AddAlphaModel method 2019-04-04 13:36:07 -03:00
Martin Molinero 4bc7ec124c Rebase - Improve exception message 2019-04-03 22:00:27 -03:00
Martin Molinero cfa08a11fb Address reviews
- Removing `using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm`
- Removing `QCAlgorithmFrameworkBridge`
- Removing `IsFrameworkAlgorithm`
- Making `EmitInsightBasedOnFill` private. Adding new
`IOrderEventProvider` exposing an `event` to which `QCAlgorithm` will
subscribe.
- `AccountType.Cash` algorithms will be allowed to manually trade and
emight insights manually or with alpha model.
2019-04-03 21:55:44 -03:00
Martin Molinero 19f1806ddc Address review: readd Framework project 2019-04-03 21:55:43 -03:00
Martin Molinero 32ac3146b4 Merge Framework and Classic Algorithms
- Merging Framework and Bridge algorithms into classic QCAlgorithm
class.
- Removing Framework project, VS17 and VS15
2019-04-03 21:54:32 -03:00
Jared 6dd7a2d50f Merge pull request #3028 from HalldorAndersen/patch-9
New Universe Selection Model: Correlation breakdown
2019-04-03 16:09:45 -07:00
AlexCatarino da6519b9f4 Updates pythonnet to 1.0.5.19
Updates PythonNet to 1.0.5.19
 - Related  https://github.com/QuantConnect/pythonnet/pull/28/
2019-04-02 17:17:40 +01:00
HalldorAndersen 8509cf9f22 Update UncorrelatedUniverseSelectionModel.py 2019-04-01 10:50:16 -07:00
HalldorAndersen de753e0e43 Update UncorrelatedUniverseSelectionModel.py 2019-04-01 10:28:54 -07:00
HalldorAndersen d117b08c73 Update QuantConnect.Algorithm.Framework.csproj 2019-04-01 10:25:45 -07:00
HalldorAndersen 28fbce4b12 Update QuantConnect.Algorithm.Framework.csproj 2019-04-01 10:06:34 -07:00
HalldorAndersen 3fe468d2d5 Update UncorrelatedUniverseSelectionModel.py 2019-04-01 09:51:58 -07:00
AlexCatarino 6d2460d8ed Updates pythonnet to 1.0.5.18
- Updates PythonNet to 1.0.5.18
  - Cherry picks the memory leak fix from upstream/pythonnet
2019-03-28 00:47:38 +00:00
HalldorAndersen 716652e6fa Rename UncorrelatedToBenchmarkUniverseSelectionModel.py to UncorrelatedUniverseSelectionModel.py 2019-03-26 11:20:29 -07:00
HalldorAndersen ac3667cef9 Rename UncorrelatedToSpyUniverseSelectionModel.py to UncorrelatedToBenchmarkUniverseSelectionModel.py 2019-03-26 10:18:30 -07:00
HalldorAndersen 7477775f8b Update QuantConnect.Algorithm.Framework.csproj 2019-03-26 10:08:49 -07:00
HalldorAndersen fdae6a9f9a Update UncorrelatedToSpyUniverseSelectionModel.py 2019-03-26 10:05:38 -07:00
HalldorAndersen 6e36e55836 Update UncorrelatedToSpyUniverseSelectionModel.py 2019-03-26 09:59:46 -07:00
HalldorAndersen 1194a04678 Update and rename Algorithm.Python/UncorrelatedToSpyUniverseSelectionModel.py to Algorithm.Framework/Selection/UncorrelatedToSpyUniverseSelectionModel.py 2019-03-25 16:40:27 -07:00
AlexCatarino 0d64032dfe Remove logging 2019-03-12 16:36:40 +00:00
AlexCatarino fa179b4659 Fix QC500 bugs and inconsistencies
- ConstituentsQC500GeneratorAlgorithm:
  - Change monthly flag to be consistent with Selection Model that cannot use Schedule events.
  - Use a Dictionary keyed by `Symbol` instead of `string`.
  - Selector functions return `Universe.Unchanged` instead of empty list;
  -Refactoring and more informative logging.
- QC500UniverseSelectionModel
  - SelectFine methods were performing all the logics every day and it should be only once per month
  - Log and return `Universe.Unchanged` before division by zero if universe drops to zero members after filtering before selection by sector.
  - Refactoring
2019-03-12 10:57:01 +00:00
AlexCatarino 00963aa07d Adds Check for Fundamental data in MaximumSectorExposureRiskModel
`MaximumSectorExposureRiskModel` needs `IndustryTemplateCode` which is only found in Equity data with Fundamental data. Thus, we check whether all active securities have such information.
2019-02-25 22:51:25 +00:00
AlexCatarino d91cad3123 Updates pythonnet to 1.0.5.17
- Updates PythonNet to 1.0.5.17
  -  Improve performance by adding new `interop` `type` cache holding a `bool`, true if its an `exception`. And adding a `setter` and `getter` cache for the `propertyobject`. Closes #2925.
  - Decimal parsing allows numeric string in exponential notation. Closes #2918 #2919.

Closes #2929
2019-02-22 17:46:59 +00:00
Martin Molinero d53a922cf0 PythonNet installation does not require copy pasting
- Requires a new PythonNet 1.0.5.15 package where the different `.dll` are in a
specific folder: `\win` `\linux` and `\osx`
- Removed not present `decimal.py` from `Algorithm.Python` project. It
was moved into `Common`.
- Replace `xbuild` for `msbuild` required for using the `System.Runtime.InteropServices`.
Also note the `xbuild` on travis prints:
> >>>> xbuild tool is deprecated and will be removed in future updates, use msbuild instead <<<<
2019-01-22 19:48:11 -03:00
AlexCatarino ef59fa7ba2 Updates pythonnet package.
In the new package:
- C# decimal conversion will use C# double and python float due to the big performance impact of converting C# decimal to python decimal;
2019-01-18 23:18:35 +00:00
Martin Molinero d9195317e3 C# decimal to Python conversion
- This commit is related to PR 19 in QC/pythonnet
   - C# decimal will be cast to C# double and converted into python
   float
- Adding new `decimal.py` into the python algorithm project. This is
required for backwards compatibility with users performing operations
over expected decimal types (like `Price`)
- Updating two python regression test algorithms using custom python
execution models to be aware and ignore floating point precision errors
when handling order sizing.
2019-01-15 12:13:42 -03:00
AlexCatarino 823bb01438 Updates pythonnet
Includes memory leak fix (https://github.com/QuantConnect/pythonnet/commit/c6db86653e7fa4fa89e1f8404d72e346b67ed857 and https://github.com/QuantConnect/pythonnet/commit/bec9563d2958acc5adf3e8972b23609fe3914402)

- Fix python version to 3.6.6 (avoid updating to 3.7)
- Fix numpy version to 1.14.5 (tensorflow requirement)

- Adds py-earth python package (closes #2399).
2018-12-07 09:36:48 +00:00
Jared d241aa49a0 Merge pull request #2657 from QuantConnect/bug-2656-macd-alpha-model-constainskey-check
Adds ContainsKey check in MacdAlphaModel
2018-11-09 09:06:01 -08:00
Stefano Raggi 57d50c69c4 Fix XML documentation compiler warnings
- Fixed all warnings except for missing XML comments (CS1591)
2018-11-09 11:44:03 +01:00
AlexCatarino 8c853543c0 Adds ContainsKey check in MacdAlphaModel
In `MacdAlphaModel.OnSecuritiesChanged`, a missing `ContainsKey` is not preventing a second key addition to a dictionary.

Closes #2656
2018-11-08 15:03:36 +00:00
AlexCatarino 25baaf179a Implements python version of TrailingStopRiskManagementModel
- Implements python version of `TrailingStopRiskManagementModel`
- Implements python version of `TrailingStopRiskFrameworkAlgorithm`
2018-11-07 15:50:40 +00:00
AlexCatarino 5389f9bf8b Implements python version of MaximumDrawdownPercentPortfolio
- Implements python version of `MaximumDrawdownPercentPortfolio`
- Implements python version of  `MaximumPortfolioDrawdownFrameworkAlgorithm`
2018-11-06 23:52:52 +00:00
AlexCatarino b20716a282 Adds python version CompositeRiskManagementModel
The C# version was supposed to handle python modules, but when they inherit from a C# module, pythonnet send them as C# objects. Consequently, they are not wrapped and cannot be used. The python version of `CompositeRiskManagementModel` solves the issue.

- Implements python version of `MaximumUnrealizedProfitPercentPerSecurity`

- Updates `CompositeRiskManagementModelFrameworkAlgorithm` in order to use python risk model.
2018-11-06 23:22:53 +00:00
AlexCatarino b89bc97d61 - Use ValidateImplementationOf method in RiskManagementModelPythonWrapper
- Use recently implemented `ValidateImplementationOf` extension method in `RiskManagementModelPythonWrapper`
2018-11-06 23:11:21 +00:00