This flag indicates whether or not the local regression test system,
via RegressionTests.AlgorithmStatisticsRegression should run a given
IRegressionAlgorithmDefinition
- Moves `PearsonCorrelationPairsTradingAlphaModel` class to its own file in order to make it available as a framework model.
- Follows existing pattern design that alpha models receive a lookback and a `Resolution` object.
- Algorithm implements `IRegressionAlgorithmDefinition`.
- Since it will be used as a base class for other pairs trading models, it was ranamed as BasePairsTradingAlphaModel
- Use a tuple of symbols are key of BasePairsTradingAlphaModel._pairs dictionary.
Instead of using a single, pre-defined, pair set in the class constructor, the pair is defined when securities are changed, therefore depending on the universe selection model.
Some algorithms had dependencies outside of the file that needed
to be copied into each project. The alternative here is to move
the Bitcoin and QuandlFuture type into Common\Data or similar
These two helper methods makes it simpler to select options with a specific right. This selection could be done with a Linq expression, but there is no equivalent for python. It is more user friendly to add those helper than adding a `PyObject` overload to `Contracts` method.
Use `PutsOnly` method in `BasicTemplateOptionsFrameworkAlgorithm`.
It's important that we keep the factor files consistent with respect to
the date that they were generated. This enables us to run the regression
algorithms in the cloud and get the same results by using the factor files
from the correct date.
.net 4.7.2 added this extension method but we're on version 4.5.2,
but it appears that the mono version we run backtests under has the
method as well. This causes an ambiguous method error in the cloud
compiler, so this change removes the ambiguity by using the static
method invocation syntax instead of extension method syntax.
A mechanical refactoring was performed to make algorithms currently used in
regression algorithms to implement IRegressionAlgorithmDefinition, which allows
algorithms to define their own expected statistics and what languages should be
run as part of regression. The type name of the C# type is used to determine the
file/model name for python. This was for simplicity, but if needed, could later be
refactored to expose more information, but for now the convention of keeping names
the same makes sense and just works easily.
There's no good reason to use a finalizer here.
Regression algorithms should use the OnEndOfAlgorithm event to handle
checks/assertions following the algorithm's completion.