Commit Graph

296 Commits

Author SHA1 Message Date
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 63076f4a18 Merge branch 'master' into bug-3740-scheduled-universe-selection-model-time-zone 2019-11-08 07:56:41 -08:00
Jared 83c9e78c2c Merge pull request #3782 from QuantConnect/bug-3781-setholdings-market-on-open-orders
SetHoldings will check existing OnMarketOpen orders
2019-11-08 07:49:52 -08: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 9b507bbf34 Fix SetHoldings OnMarketOpen orders
- `SetHoldings` will take `OnMarketOpen` ordes into account when
determining order quantity
- Adding new regression test. Updating existing algorithms which
suffered of the issue
- Adding a performance improvement, will avoid margin and portfolio
calculations for MarketOnOpen orders that wont be able to fill
2019-11-05 21:05:49 -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
Martin Molinero 98ae5cdd4e Fix TimeRules time zone issues
- `ITimeRules` are expected to yield time date in UTC, fixing `Noon`,
`Midnight` and `Every`
- `ScheduledUniverseSelectionModel` will use UTC time zone by default
since that is the default expected time zone `ITimeRule` provides
- Adding regression test
2019-11-04 15:34:57 -03:00
Martin Molinero 62753b5425 Adding Security.NullLeverage
- Adding `Security.NullLeverage` value to determine when the
`SecurityInitializer` leverage should be used or not
- Adding regression algorithm which reproduces the issue
2019-10-30 20:03:37 -03:00
Martin-Molinero aaf81ef467 Merge pull request #3768 from QuantConnect/bug-3763-margin-remaining
Fix maintenance margin calculation
2019-10-30 13:04:24 -03: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
Martin Molinero 6719109ed1 Fix maintenance margin calculation
- Maintenance Margin will be calculated using current securities Value
and not acquisition price.
- Adding unit and regression tests
2019-10-24 20:52:28 -03:00
Martin Molinero 0e7c035329 Adding FreePortfolioValue
- Adding `FreePortfolioValue` to be set after algorithm initialize based
on the `TotalPortfolioValue` and the `FreePortfolioValuePercentage`
- Updating regression tests
- Adding new regression test
- Adding check for minimum order value at `BuyingPowerModel`
2019-10-23 13:56:35 -03:00
Michael Handschuh 09cc78599a Add mechanism for scheduled events to use 'additional time'
We restrict each algorithm time loop to a pre-determined amount of time.
Exceeding this limit will cause the algorithm to immediately terminate.
This quickly becomes an issue when considering users running trainable
models that have a long initialization period that exceeds the time loop
maximum.

This change provides a mechanism through which a long-running scheduled
event is permitted to keep running and is permitted to avoid the time loop
permitted by requesting additional time. Requests for additional time are
limited according to a leaky bucket implementation whose parameters are
set via the job's controls structure. The fundamental time unit for the
algorithm is a single minute.

Here's how it works. If a scheduled event takes longer than one full wall
clock second then a request is made to the leaky bucket for one more minute.
If the scheduled event continues to take more time, it will continue to
request additional minutes. Each requested minute will prevent the algorithm's
time loop check from terminating the algorithm. When the bucket is empty and
no more minutes are available to be requested, a TimeoutException is thrown
causing a cascade that ends in the algorithm's termination and status being
flipped to RuntimeError.

Additionally, this applies equally to ALL scheduled events. While some helpers
were added with the naming of Train and TrainNow to the ScheduleManager, these
methods don't do anything special and the infrastructure doesn't otherwise
flag them as different, so this feature becomes part of the core Scheduled
Event feature set.

Further, the live scheduled events were not touched and are still pending
further discussion regarding the value added by enforcing a time restriction
when simulation time and wall clock time are equivalent.

Fixes #3319
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 0d171a2e70 Add SmartInsider performance benchmark
- Adjust Sec performance benchmark algorithm
2019-10-16 12:15:00 -03: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 e6f0135943 Address reviews - add python algorithm and rename algorithm to
CachedAlterantiveDataAlgorithm
2019-10-11 12:01:45 -07:00
Gerardo Salazar 0c31ff91b6 Implement CBOE BaseData class 2019-10-11 10:53:08 -07:00
Jared e2e796f736 Merge branch 'master' into feature-add-sec-demonstration-algorithm 2019-10-07 14:32:48 -07:00
Jared 38fef12717 Merge branch 'master' into feature-add-smartinsider-demonstration-algorithm 2019-10-07 13:39:30 -07:00
Gerardo Salazar 5d62c03a0f Add SEC demonstration algorithms (C# and Python) 2019-10-07 11:02:21 -07:00
Gerardo Salazar 77ea64bf97 Adds demonstration algorithms for USTreasuryYieldCurveRate (C# and Py) 2019-10-04 17:28:52 -07:00
Gerardo Salazar 7f267ed55b Adds Smart Insider demonstration algorithms (C# and Python) 2019-10-04 17:10:01 -07:00
Jared def14b9a1f Merge pull request #3669 from QuantConnect/feature-3650-etf-basket-modules
Improves ETF Basket Universe Selection Models
2019-10-03 16:06:18 -07:00
AlexCatarino ff00e9e776 Adds Regression Algorithms for InceptionDateUniverseSelectionModel
Adds Regression Algorithms to show `CustomUniverseSelectionModel` and `InceptionDateUniverseSelectionModel` in action.
2019-10-03 23:32:16 +01:00
Gerardo Salazar 48f6372a6a Adds PsychSignal demonstration algorithms 2019-10-03 14:59:14 -07:00
Jared d5050ff6d5 Merge branch 'master' into feature-add-tradingeconomics-data-demo-algorithms 2019-10-03 13:22:14 -07:00
Gerardo Salazar ba21d1e1bb Adds Trading Economics demonstration algorithms 2019-10-03 13:20:07 -07:00
Gerardo Salazar db3f0df01b Self review: Rename Tiingo algorithms from TiingoNLPDemonstrationAlgorithm to
TiingoNewsAlgorithm
2019-10-03 12:06:04 -07:00
Gerardo Salazar b61377cd37 Adds demonstration Tiingo NLP Algorithms
* Adds `AltData` folder to Algorithm.CSharp|Python
2019-10-03 11:35:56 -07:00
Jared baeb8741fc Merge pull request #3654 from Martin-Molinero/bug-3652-tiingo-news-backtesting-time
Add TiingoNews.HistoricalCrawlOffset
2019-10-02 09:50:14 -07:00
Martin Molinero d1abefc1fe Add TiingoNews.HistoricalCrawlOffset - Rename
- Add `TiingoNews.HistoricalCrawlOffset`, timespan to add for
backtesting
- Rename:  remove `Data` from `TiingoNewsData` and rename `TiingoDailyData` to `TiingoPrice`
2019-10-02 13:11:31 -03:00
Martin Molinero 73eaa60785 SetBenchmark will check SymbolCache for ticker 2019-10-01 14:15:58 -03:00
Michael Handschuh 8c1867193b Add Security.Data => DynamicSecurityData
Provides dynamic access to cached security data keyed by the type's name.
For example, `security.Data.GetAll<Tick>()` would yield a list of ticks.
Likewise, using the dynamic accessors, `((dynamic)security.Data).Tick`
would return the same list. In C# you'll need to cast security.Data to
a dynamic. In python, all C# objects are viewed as dynamic, so python can
simply access `security.Data.Tick` directly.

See #3620
2019-09-30 13:31:56 -04:00
Gerardo Salazar 56462f0283 Address reviews from Mike and Martin
* Added better documentation for AddData methods
* Added new regression algorithms for adding in OnSecuritiesChanged
* Changed regression algorithms to add data that exists
* Styling and logging fixes
2019-09-24 10:34:35 -03:00
Gerardo Salazar 4b0ed03b4f Added new regression algorithms
* Deleted regression algorithms because they tested behavior similar to
other existing regression algorithms
* Fixed new bug in regression algorithm due to AddData changes
* Added unit tests for wrapt version and package existence

* Fix issue where data would be set to raw normalization mode
2019-09-24 10:34:35 -03:00
Gerardo Salazar 48e4d3660a Add unit tests for AddData for changes 2019-09-24 10:34:35 -03:00
Martin Molinero e7ca829a0d PythonNet bump 1.0.5.25 2019-09-23 19:45:46 -03:00
Martin Molinero f96cb2a0cf Bump PythonNet to 1.0.5.24 2019-09-10 12:11:42 -03:00
Martin Molinero e396c3ef10 Bump PythonNet to 1.0.5.23 2019-09-05 23:55:30 -03:00
Martin Molinero f00049f709 Bump PythonNet to 1.0.5.22 2019-09-03 16:05:12 -03:00
Gerardo Salazar e6a510d803 Add Mapfile support for custom data sources 2019-08-20 16:56:02 -03:00
Michael Handschuh c7df4e9fb3 Add StringExtensions and Parse utilizing CultureInfo.InvariantCulture
Adds static methods of the form Parse.<TypeName>(string str) that use
CultureInfo.InvariantCulture. These are to be used when parsing strings.
It's still safe (from the CA1304/CA1305 perspective) to use the ToDecimal
extension method for decimals.

Adds string extension methods for common operations that will now require
CultureInfo.InvariantCulture. These are to be used when converting values
to strings, such as ToStringInvariant()/ToStringInvariant(format), but also
useful for searching within strings, StartsWithInvariant, EndsWithInvariant
 and IndexOfInvariant.
2019-08-16 18:08:28 -03:00
Michael Handschuh 703f915182 Configure QuantConnect.ruleset in all projects
The initial ruleset is specifically aimed at addressing #3045. When we'd like
to start addressing other issues available via the FxCopAnalyzers, we can update
the action in QuantConnect.ruleset. A nice way to do it is to first set it to
warning, then go through the solution, project-by-project, fixing each warning.
At the end you can flip it to error and ensure it still builds. Moving forward,
any changes will fail if they violate the rule.

In support of #3045, we'll be configuring the following rules:
> CA1304: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1304-specify-cultureinfo?view=vs-2017
> CA1305: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1305-specify-iformatprovider?view=vs-2017
2019-08-16 18:08:18 -03:00