Compare commits

..

84 Commits
17153 ... 17296

Author SHA1 Message Date
Roman Yavnikov
75993cd021 Feat: Validation for Market On Open Submission Time (#8969) 2025-09-22 20:40:33 +03:00
JosueNina
f7ce35ae82 Track OHLCV for Current Trading Day (#8922)
* Implement Session class

* Use MarketHourAwareConsolidator inside Session

* Delete SecurityCacheSessionConfig

* Refactor session class

* Solve review comments

* Fix regression algorithms

* Add null check to AvailableDataTypes

* Update session class

* Solve new review comments

* Add new test for futures and update regression test to PEP8

* Add new regression algorithm for Session with futures

* Resolve review comments

* Add local time keeper to SecurityCache

* Scan on consolidator updates and time updates

* Add new regression algorithms and unit tests

* Add unit tests and improve comments

* Fix syntax test

* Solve review comments

* Add regression algorithms

* Resolve review comments

* Make SessionConsolidator implement IDataConsolidator

* Add caching to avoid recreating SessionBar instances on every access

* Solve review comments

* Make SessionConsolidator inherit from MarketHourAwareConsolidator

* Add unit test to verify Session preserves previous day values

* Update regression algorithms

* Solve review comments

* Resolve review comments

* Solve new review comments

* Add unit test for Session class

* Refactor SessionBar properties and Update method

* Use WorkingDataInstance reference instead of _workingData.Clone()

* Use a delegate to get the workingBar instance

* Fix bug in MarketHourAwareConsolidator

* Solve review comments

* Handle OI values

* Add regression algorithms for future contracts and options

* Solve review comments

* Refactor SessionConsolidator to inherit PeriodCountConsolidatorBase

* Prevent overlapping higher resolution data

* Update tests

* Solve review comments

* Minor tweaks
2025-09-19 12:25:24 -05:00
Jhonathan Abreu
36404a6187 Adjust async orders handling in backtesting (#8979)
Submit (and fill in case of market orders) in the same time step even if orders are asynchronous in backtesting since it's data driven instead of real time driven.
2025-09-18 11:53:28 -04:00
Jhonathan Abreu
496f210116 Fix start time calculation for daily requests (#8975)
* Fix start time calculation for daily request

* Minor regression algorithm fix
2025-09-15 18:35:25 -03:00
Jhonathan Abreu
b25d53ed6d Minor config fix (#8974) 2025-09-15 12:48:35 -03:00
Jhonathan Abreu
ee7be1a233 Enable concurrency for live paper brokerage (#8972)
* Enable concurrency for paper brokerage.

Implement PaperBrokerageTransactionHandler to handle concurrency for live paper trading transaction handler

* Remove PaperTradingBrokerageTransaction handler

Favor existing BacktestingTransactionHandler

* Minor fixes and cleanup

* Minor unit tests fix
2025-09-15 09:25:49 -04:00
Jhonathan Abreu
5644520545 Refactor some unit and regression tests for speed improvements (#8970)
* Reduce history unit tests duration

* Unit and regression tests speed improvements

* Minor change

* Fix unit test race condition
2025-09-12 10:15:09 -04:00
Roman Yavnikov
5b465216f9 feat: support StopLimit in CharlesSchwabBrokerageModel (#8968) 2025-09-10 20:15:02 +03:00
Jhonathan Abreu
d82d70dacf Support asynchronous non-market orders (#8946)
* Add 'asynchronous' parameter to trading api

* Add regression algorithms

* More fixes for asynchronous orders

* Fix failing unit tests

* Fix failing unit tests

* Add multiple orders requests in transaction handler

Make each transaction thread handle requests corresponding to the same order

* Refactor order state machine in BrokerageTransactionHandler

Now using a single dictionary to hold orders and their state, either pending for submission, open or closed.

* Revert: remove complete orders from new state machine in BTH

* Add order ticket to new BTH open orders state machine

* Run syn in Backtesting transaction handler for new orders submission

* Remove OpenOrderState.SubmissionPending property

* Add Security to OpenOrderState

* Minor fix

* Cleanup

* Some cleanup in BTH

* Cleanup

* Minor fix

* Minor unit test fix

* Minor fix

* Make Brokerage.ConcurrencyEnable property virtual

* Minor change

* Cleanup

* Add 'asynchronous' parameter to SetHoldings api

* Improve regression algorithms
2025-09-10 08:29:50 -04:00
Roman Yavnikov
23afff13fc Feature: new property AccountType (#8967)
* feat: new prop AccountType

* refactor: change data type use string instead of int for AccountType

* feat: add init of AccountType in ctor
2025-09-09 11:11:16 -03:00
Jhonathan Abreu
d7b4fb002f Make Brokerage.ConcurrencyEnabled virtual (#8966) 2025-09-09 09:39:37 -04:00
Roman Yavnikov
85fe39e31b Fix: prevent use CrossZeroOrder with MOO and MOC (#8959)
* feat: not use CrossZeroOrder for MOO and MOC

* Revert "feat: not use CrossZeroOrder for MOO and MOC"

This reverts commit 1a71c5fe90.

* feat: Not support crossZeroOrderTypes
test:feat: cross zero orders

* Revert "feat: Not support crossZeroOrderTypes"

This reverts commit 16785b5d2f.

* feat: not support CrossZeroOrder in TradeStation

* feat: not allow to place MOO and MOC with CrossZeroOrder

* test:feat: MOO and MOC CrossZeroOrder reject
2025-09-08 22:44:13 +03:00
Martin-Molinero
690eb7fc9f Fix python packages CI tests (#8962)
* Fix python packages CI tests

* Remove failing onnx related tests
2025-09-08 11:57:32 -03:00
Martin-Molinero
e44f8cd498 Minor fix for lean data writer merge policy (#8952)
* Minor fix for lean data writer merge policy

- Fix typo in lean data writer merge policy. Enhancing existing unit
  tests

* Minor unit test fix
2025-09-03 12:25:18 -03:00
Roman Yavnikov
ceb52c1b9b feat: make virtual Subscribe() in DataQueueHandlerSubscriptionManager 2025-08-29 18:36:11 +03:00
Jhonathan Abreu
dea1d2eac3 Update Python syntax check rate script accepted success rate (#8944)
* Update Python syntax check script

* Update python syntax check script accepted success rate
2025-08-27 17:28:46 -04:00
Martin-Molinero
f448ab7372 Update run_syntax_check.py 2025-08-27 10:28:49 -03:00
Martin-Molinero
fd9c29c87c Add US futures market halt (#8943) 2025-08-27 10:27:17 -03:00
Jhonathan Abreu
0b62fefb10 Add CFE futures 2026 holidays to MHDB (#8942)
* Add CFE futures 2026 holidays to MHDB

* Fix typo
2025-08-26 12:51:39 -04:00
Jhonathan Abreu
e13214135a Add support for some CME currencies FOPs (#8939)
* Add support for some CME currencies FOPs

Support ADU (6A), GBU (6B), CAU (6C), EUU (6E), JPU (6J), CHU (6S)

* Cleanup

* Consider holidays in FOPs expiry function
2025-08-25 18:02:07 -04:00
Roman Yavnikov
c2fdfb235a feat: global OrderProperties property in abstract Brokerage class to liquidate positions with specific properties (#8938)
fix: missed OrderStatus in ...OrderTestParameters classes
feat: override ToString() in ...OrderTestParameters classes
2025-08-21 19:13:15 -03:00
Jhonathan Abreu
50f8633e90 More Python syntax checks and improvements (#8937)
* More python syntax checks

* More changes

* More changes

* Make PythonConsolidator derive from IDataConsolidator

* More changes

* More changes

* Update python syntax check accepted rate

* Update Update python syntax check accepted rate

* Cleanup

* Cleanup
2025-08-21 12:47:38 -04:00
Martin-Molinero
a3ad12e7e0 Fix tick resolution continuous contract history request (#8936)
- Fix tick resolution continuous contract history requests. Adding unit
  tests
- Some improvements for OpenInterest explicit request. Adding unit tests
2025-08-19 14:21:49 -03:00
Martin-Molinero
db25a3402e Normalize OutOfSampleMaxEndDate datetime format (#8935)
- Normalize OutOfSampleMaxEndDate datetime format. Adding unit test
2025-08-18 18:44:25 -03:00
Martin-Molinero
06f0da69c3 Improve schedule rules symbol handling (#8930)
- Improve schedule rules non existing symbol handling. Adding regression
  tests
2025-08-15 14:59:11 -03:00
Jhonathan Abreu
838232e696 Update Pythonnet version to 2.0.48 (#8929) 2025-08-15 13:04:02 -04:00
JosueNina
e13f8c10a7 Add tag to RemoveSecurity method (#8928)
* Add tag parameter, update CancelOpenOrders and Liquidate calls

* Resolved commen on the related PR: following the pattern of Liquidate() using Liquidated as default, I think the tag should be Removed

* Add tag parameter to RemoveSecurity and update regression algorithms

* Minor tweaks

---------

Co-authored-by: meysam <poormonfared.azimi@gmail.com>
Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
2025-08-15 10:40:35 -03:00
Jhonathan Abreu
4c3e79b441 Bump Pythonnet version to 2.0.47 (#8927) 2025-08-14 12:09:07 -04:00
Martin-Molinero
cffd20236c Object store dispose hang (#8925) 2025-08-13 18:18:48 -03:00
Martin-Molinero
3f04b6c90a Update readme.md 2025-08-13 15:04:36 -03:00
Martin-Molinero
852c9cd856 Update IB gateway v10.39.1f (#8923) 2025-08-13 14:51:48 -03:00
Martin-Molinero
37237206dd Use ISO for DateTime JsonConverter (#8919)
- Use ISO for DateTime JsonConverter, keeping backwards compatible.
  Adding unit test
2025-08-13 10:27:30 -03:00
Jared
58979872c1 Delete Api/QuantConnect-Platform-2.0.0.yaml (#8924)
YAML is now hosted in the documentation 
https://github.com/QuantConnect/Documentation/blob/master/QuantConnect-Platform-2.0.0.yaml
2025-08-13 09:43:46 -03:00
Jhonathan Abreu
4c4a34007d Python syntax algorithms fixes (#8916)
* Python syntax algorithms fixes

* More fixes

* More fixes

* Minor fix

* Update python syntax check accepted percentage
2025-08-11 10:55:00 -04:00
JosueNina
a7265c8a41 Place orders only when the algorithm is running (#8917)
* Place orders only when the algorithm is running

* Solve review comments

* Split unit test into separate cases

* Move the algorithm assignment
2025-08-11 11:48:17 -03:00
Martin-Molinero
db96e9e8e4 Minor fix for DAX index market (#8918) 2025-08-07 17:12:05 -03:00
Jhonathan Abreu
cc79cab3dc Support new Pythonnet delegates auto conversion (#8913)
* Use new Pythonnet support for automatic delegates conversion

* Update Pythonnet version to 2.0.46

* Cleanup

* Minor fix

* Add unit tests
2025-08-07 09:40:06 -04:00
JosueNina
69dfdcefc5 Fix EndTime for consolidated bars in count-based consolidator (#8911)
* Set consolidated bar EndTime to last input's EndTime in count-based consolidator

* Solve review comments

* Move EndTime assignment to base class

* Update unit tests
2025-08-06 17:17:57 -03:00
JosueNina
f29bcbc9ae Clean up ListLiveAlgorithms method parameters (#8912)
* Remove startTime and endTime parameters from ListLiveAlgorithms method

* Solve review comments
2025-08-05 19:12:48 -03:00
JosueNina
5ba7f611dd Refactor SubscriptionDataConfigTypeFilter method (#8903)
* Refactor SubscriptionDataConfigTypeFilter method

* Solve review comments

* Resolve review comments

* Clarify why Tick type doesn't rely on matchingSubscriptions

* Use subscription attributes to generate Tick history requests

* Solve review comments
2025-08-04 19:16:39 -03:00
Giri
101d382594 Feature 6620 implement td sequential candlestick indicator (#8877)
* initial draft changes

* Saving draft changes for TD Sequential Implementation

* Fixed failing tests

* Refactoring changes

* Additional refactoring to TDSequential

* Added tests

* Incorporated review comments

* reverted changes to older file

* Updated for review comment

* Updated Buy and Sell Setup Perfect functions based on review comment to remove equality operator

* Added SupportPrice and ResistancePrice as read-only public properties to expose the internal _resistance and _support prices

* Changed return value of ComputeNextValue to TomDemarkSequentialPhase instead of the encoded value of Phase.StepCount as per review comment

* Updated initialization to include bullish and bearish flip checks

* Refactored and cleaned up based on review comments
2025-08-01 12:54:58 -03:00
Jhonathan Abreu
3ef41ee2c9 Fix for Python GetEnumString backwards compatibility (#8907) 2025-08-01 09:56:23 -04:00
Martin-Molinero
4e71203b4c Brokerage downloader daily/hour skips extended market hours (#8906)
- Adjust brokerage data downloader daily and hour resolution requests to
  skip requesting extended market hours
- Add missing dispose of brokerage
2025-07-31 20:08:26 -03:00
Jhonathan Abreu
84b991b577 Some fixes for new C# enums handling in Pythonnet (#8898)
* Some fixes for new C# enums handling in Pythonnet

* Minor changes and cleanup

* Update Pythonnet version to 2.0.45

* Minor changes

* Minor fix

* Minor fix

* Minor change

* Minor change

* Minor unit test fix
2025-07-31 16:53:24 -04:00
Martin-Molinero
9f378a1a6d Minor helper method and tests (#8905) 2025-07-31 16:27:00 -03:00
Roman Yavnikov
8df6c77ca8 feat: update bitfinex spd (#8902) 2025-07-31 11:45:07 -03:00
Aibek Minbaev
eac9fa0d69 Log the Number of Active Subscriptions Before and After Warm Up #8779 (#8880)
* Log the Number of Active Subscriptions Before and After Warm Up #8779

* Refactor: Log subscriptions count once before first timeslice

* Resolve review comments

* Minor cleanup

---------

Co-authored-by: Martin Molinero <martin.molinero1@gmail.com>
2025-07-29 10:47:23 -03:00
Roman Yavnikov
435a82b4db feat: update kraken spd (#8899) 2025-07-29 10:03:08 -03:00
JosueNina
2b7b26d512 Add Consolidate method overload with size parameter (#8882)
* Initial Solution

* Add comments and asserts to the regression algorithm

* Solve review comments

* Update regression algorithm

* Solve review comments

* Resolve review comments

* Add python support

* Add consolidators that use maxCount in the constructor

* Solve review comments
2025-07-28 16:16:56 -03:00
Roman Yavnikov
a64f70888d Refactor: shorten execution time for auth tests (#8892)
* refactor: shorten execution time for auth tests

* remove: jsonBody info from exception
fix: validation attempt to retry
2025-07-25 10:34:03 -03:00
Roman Yavnikov
ad1f1c629c Refactor: minor cleanup (#8886)
* feat: Get AccessToken from Lean API

* feat: create TokenCredentials DTO instead of Tuple

* remove: extra unrequired null reference exceptions on argument check

* remove: SendAsync override in TokenHandler

* feat: override SendAsync in TokenHandler to prevent future bugs

* test:feat: SyncAsync in TokenHandler

* refactor: name property of AccessTokenExpires to Expiration in AccessTokenMetaDataResponse

* feat: add retry logic to getAccessToken in TokenHandler
test:feat: TokenHandler with retry logic

* feat: make retry timeout configurable in ctor
2025-07-24 19:25:54 -03:00
Jhonathan Abreu
0d6d2f7c46 Fix custom data history on any symbol (#8890) 2025-07-24 18:18:54 -04:00
Jhonathan Abreu
0282954b57 Fix launcher exit on null job (#8889) 2025-07-24 18:04:31 -04:00
Jhonathan Abreu
2372153eec Exit properly from launcher program (#8888)
Don't leave unhandled exceptions and exit properly from program
2025-07-24 15:37:05 -04:00
Jhonathan Abreu
480790e3f3 Add messaging handler initialize parameter to job queue (#8887) 2025-07-24 09:27:19 -04:00
Jhonathan Abreu
014389a880 Refactor order ticket (#8884)
* Refactor and clean up OrderTicket class

* Reduce locks quantity in OrderTicket

* Cleanup

* Address peer review
2025-07-23 10:14:13 -04:00
Martin-Molinero
d703cc6660 Update readme.md 2025-07-23 09:47:26 -03:00
Martin-Molinero
12be29fcfb Add live tick sale condition (#8883) 2025-07-22 16:17:16 -03:00
Jhonathan Abreu
546afd2a61 Async orders in execution models (#8872)
* Changed default async to true and passed target.Tag

* Make execution models place orders asynchronously if specified

* Add unit tests

* Execution model default to asynchronous orders.

Also, minor fixes for tickets remaining fill quantity potential race conditions

* Add SecurityHolding.UnrealizedQuantity property

It gets the holding quantity the security will have once all open orders are filled.
Added for thread safety reasons when execution models place asynchronous orders and need to calculate the actual quantity needed to reach the target of there are open orders

* Some cleanup

* Adjust projected holdings quantity on splits

* Minor fix

* More changes and cleanup

* Minor fix

* Improvements for thread safety

* Add IOrderProvider.GetProjectedHoldings to get projected holdings atomically

* Minor unit tests fix

* Add ProjectedHoldings DTO class

* Address peer review

---------

Co-authored-by: arthiondaena <arthiondaena@gmail.com>
2025-07-21 13:11:03 -04:00
JosueNina
9f5f93c5a6 Refactor TargetDownsideDeviation Calculation (#8875)
* Update implementation of TargetDownsideDeviation

* Use ROC's rolling window instead of creating a new one
2025-07-18 17:11:51 -03:00
Martin-Molinero
9df9f32827 Update readme.md 2025-07-17 19:21:03 -03:00
JosueNina
7008d17714 Add MaxDrawdownRecovery metric (#8865)
* Implement  a prototype of the maximum recovery time function.

* Add unit test skeletons.

* Add failing test

* Issue #4581: Implement MaxDrawdownRecoveryTime.

* Issue 4581: Add DTO for Drawdown Percentage, Drawdown Enddate, and High Value

* Issue 4581: Fix bgu for when lDrawdowns list is empty.

* Issue 4581: Change names of tests. Change name of file.

* Issue 4581: Make adjustements to flow of adding drawdowns to lDrawdowns.

* Issue 4581: Add multiple unit tests.

* Issue #4581: Change name of unit test

* Issue #4581: Add to PerformanceMetrics

* Issue #4581: Add Maximum Drawdown Recovery to PortolioStatistics class.

* Issue #4581: Add to portolfio statistics class.

* Issue #4581: Add to statistics builder.

* Issue #4581: Add report key.

* Case #4581: Convert to decimal.

* Issue #4581: Correct comment.

* Issue #4581: Correct performance metrics view model string.

* Case #4581: Correct statistics builder view model string..again.

* Issue #4581: Placed DradownDradownDateHighValueDTO at the end of the file for simpler diff.

* Issue #4581: Add 2 new tests.

* Issue #4581: Change algorithm so that when multiple maximum drawdowns occur, the longest of all recoveries is reported.

* Issue #4581: Add unit test.

* Issue #4581: Remove reportkey. Change dto name.

* Issue #4581: Change summary.

* Issue #4581: Change comment.

* Add max drawdown recovery calculation with unit tests

* Update regression algorithms with the new metric

* Solve review comments

* Update regression algorithms

* Add TryGet to safely get the key: MaximumDrawdownRecovery

* Ignore MaximumDrawdownRecovery metric in OptimizationBacktest Json

* Revert changes in Messaging

* Update regression algorithms

* Add test case: TakesLongestRecoveryAmongMultipleDrawdowns

* Use integer days for MaximumDrawdownRecovery

* Add MaximumDrawdownRecoveryReportElement

* Use more explicit names

* Rename files and variables for consistency

* Update regression algorithms

---------

Co-authored-by: Alain Schaerer <aschaerer@pcatg.com>
2025-07-17 16:32:23 -03:00
Jhonathan Abreu
734a99392e Make python syntax check pass if success rate is over accepted threshold (#8873) 2025-07-16 11:22:20 -03:00
JosueNina
3d763cf98d Rename to Momersion and add legacy wrapper for compatibility (#8876) 2025-07-16 11:22:06 -03:00
Martin-Molinero
d639c13d08 Remove unrequired notification rate limiter (#8870) 2025-07-14 11:40:23 -03:00
Jhonathan Abreu
e63217a953 New options/futures universe files format (#8848)
* Use correct sids when reading options/futures universe files

* Introduce new format for options and futures universe files

* Minor change

* Minor data fix

* Minor change

* Fix failing unit tests

* Add options and futures symbols cache

* [HACK] Force use test universe files

* Minor fix for universe symbols cache

* Performance improvements

* Miror change

* Cleanup

* Sort universe files

* Minor regression algorithm fix

AddAndRemoveOptionContractRegressionAlgorithm to not depend on universe file entries ordering
2025-07-11 16:38:14 -04:00
Martin-Molinero
910b50b787 Fix backtest create organization id type (#8868) 2025-07-11 10:09:17 -03:00
JosueNina
f0781413e0 Fill MarketOnClose orders at or after market close (#8858)
* Add time tolerance when checking if asset is within current bar

* Update IsExchangeOpen and add unit tests

* Solve review comments

* Add unit test in ImmediateFillModelTests

* Delete conditional IsExchangeOpen()

* Fill MOC orders when LocalTime is at or after market close
2025-07-10 18:24:38 -04:00
Martin-Molinero
233a357d9d IB fix does not support Combo FOPs (#8867) 2025-07-10 13:17:46 -03:00
Roman Yavnikov
96fcc032b9 feat: new IB config of FAGroup Filter (#8866) 2025-07-10 18:23:05 +03:00
Martin-Molinero
1f23813cf5 Update readme.md 2025-07-09 12:20:24 -03:00
Martin-Molinero
c2e9c16569 Add interactive fix order properties (#8864) 2025-07-09 12:15:11 -03:00
Jhonathan Abreu
2e9cc39c89 Rename Controls.StoragePermission -> Controls.StorageAccess (#8862)
* Refactor Controls.StoragePermissions format for the API

* Minor changes

* Rename Controls.StoragePermission -> Controls.StorageAccess

* Minor fix
2025-07-09 11:11:27 -04:00
JosueNina
ed551458f5 Use EndTime instead of Time for indicator updates (#8860) 2025-07-08 17:47:00 -04:00
JosueNina
4bfd93770c Add intercept parameter in ARIMA method (#8861)
* Add intercep parameter in ARIMA method

* Solve review comments
2025-07-08 17:46:48 -04:00
Jhonathan Abreu
09f0239101 Support concurrent transaction handlers (#8857)
* Allow multiple concurrent transaction handlers

Also support multiple producers in BrokerageConcurrentMessageHandler

* Minor change

* Minor change

* Add new maximum-transaction-threads config to json file

* Minor naming changes

* Address peer review and add unit tests

* Minor fix

* Minor fix and unit tests

* Address peer review
2025-07-07 18:38:09 -04:00
JosueNina
7c62e410b9 Improve IndicatorHistory<T> filtering of indicator properties (#8853)
* Support sub-indicator discovery using IIndicator and exclude PandasIgnore attribute

* WIP: PandasInclude

* Add PandasInclude annotation

* Resolve review comments

* Add a list of ignored properties

* Clean up [PandasIgnore] in IndicatorBase
2025-07-02 09:31:18 -03:00
Martin-Molinero
c69275a5fe Minor brokerage tests fix (#8855) 2025-07-01 17:03:17 -03:00
JosueNina
bc4458d293 Add progress logs to RandomDataGenerator (#8851)
* Add logs to GenerateTicks method

* Solve review comments

* Add unit test

* Resolve review comments
2025-06-26 17:03:44 -03:00
JosueNina
75ccf0199b Filter out default datetime values from the DataFrame (#8845)
* Initial solution: Filter out default datetime values from the DataFrame

* Solve review comments

* Resolve review comments

* Update AlgorithmIndicatorsTests.cs

---------

Co-authored-by: Martin-Molinero <martin.molinero1@gmail.com>
2025-06-25 11:21:03 -03:00
Martin-Molinero
1c82eb6313 Add interactive brokers fix model (#8849)
* Improve brokerage order update tests

* Add interactive brokeras fix model
2025-06-24 18:01:05 -03:00
Roman Yavnikov
45cc12a5c0 Feat: Level One Service (#8838)
* feat: new Level One service
feat: new ctor in Tick
fix: missed SetValue in Tick ctor

* refactor: LevelOneService
feat: Tick Event Args

* feat: use aggregator in LevelOneService explicitly
remove: extra TickEventArgs

* feat: ThreadSafeDataAggregatorWrapper
refactor: use ThreadSafeDataAggregatorWrapper in LevelOneService

* feat: generic LevelOne Market Data Manager
refactor: LevelOneMarketData
remove: ThreadSafeDataAggregatorWrapper

* feat: support OpenInterest in LevelOneMarketData
feat: add EventBasedDataQueueHandlerSubscriptionManager in LevelOneServiceManager
feat: handle OpenInterest

* feat: add missed license in BaseDataEventArgs

* feat: create un-subscribe wrapper in LevelOneServiceManager
refactor: TryGetLevelOneMarketData
feat: validate the same Quote data in LevelOneMarketData

* feat: handle nullable value in levelOneMarketData

* feat: handle nullable value in LevelOneServiceManager

* refactor: change location of LevelOneMarketData Service
test:feat: test of LevelOneMarketData

* feat: add SetIgnoreZeroSizeUpdates

* refactor: use ignoreZeroSizeUpdates internally in TryResolvePriceSize

* refactor: position add symbols in collection in  LevelOneServiceManager

* fix: validation of IgnoreZeroSizeUpdates setting in LevelOneMarketData

* test:feat: validate UpdateLastTrade with IgnoreZeroSizeUpdates setting
test:refactor: use global DateTime in testCases

* fix:test: missed calculation value in QuoteBar
2025-06-24 00:38:11 +03:00
Martin-Molinero
7bca81c4a8 Add TrailingStopOrderTestParameters (#8847) 2025-06-23 10:41:44 -03:00
Sai Revanth
2ca4c0573e Feature : Implements Parabolic SAR Extended (SAREXT) (#8818)
* sarext

* changes
2025-06-23 10:40:05 -03:00
1010 changed files with 75361 additions and 55332 deletions

View File

@@ -28,5 +28,5 @@ jobs:
options: --workdir /__w/Lean/Lean -v /home/runner/work:/__w
shell: bash
run: |
pip install --no-cache-dir quantconnect-stubs types-requests==2.32.* mypy==1.15.0 && \
pip install --no-cache-dir quantconnect-stubs types-requests==2.32.* types-pytz==2025.2.0.* mypy==1.15.0 && \
python run_syntax_check.py

View File

@@ -52,7 +52,7 @@ jobs:
# Run TensorflowProbability
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.TensorflowProbabilityTest" --blame-hang-timeout 120seconds --blame-crash && \
# Run Hvplot Python Package Test
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.HvplotTest" --blame-hang-timeout 120seconds --blame-crash && \
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.HvplotTest|RiskparityportfolioTest" --blame-hang-timeout 120seconds --blame-crash && \
# Run Transformers
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.Transformers" --blame-hang-timeout 120seconds --blame-crash && \
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.XTransformers" --blame-hang-timeout 120seconds --blame-crash && \
@@ -60,5 +60,4 @@ jobs:
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.ShapTest|KerasTest|PyvinecopulibTest" --blame-hang-timeout 120seconds --blame-crash && \
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.Mlforecast" --blame-hang-timeout 120seconds --blame-crash && \
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.MlxtendTest|Thinc" --blame-hang-timeout 120seconds --blame-crash && \
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.ModuleVersionTestExplicit" --blame-hang-timeout 120seconds --blame-crash && \
dotnet test ./Tests/bin/Release/QuantConnect.Tests.dll --filter "FullyQualifiedName=QuantConnect.Tests.Python.PythonPackagesTests.Neuralforecast" --blame-hang-timeout 120seconds --blame-crash

3
.gitignore vendored
View File

@@ -279,4 +279,5 @@ QuantConnect.Lean.sln.DotSettings*
Research/Notebooks
#Docker result files
Results/
Results/
QuantConnect.Lean.sln.DotSettings

View File

@@ -115,6 +115,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$26000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "119.89%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d06c26f557b83d8d42ac808fe2815a1e"}
};
}

View File

@@ -151,6 +151,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$120000000.00"},
{"Lowest Capacity Asset", "IBM R735QTJ8XC9X"},
{"Portfolio Turnover", "41.18%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "713c956deb193bed2290e9f379c0f9f9"}
};
}

View File

@@ -41,9 +41,11 @@ namespace QuantConnect.Algorithm.CSharp
var aapl = QuantConnect.Symbol.Create("AAPL", SecurityType.Equity, Market.USA);
_contract = OptionChain(aapl)
.OrderBy(x => x.ID.Symbol)
.FirstOrDefault(optionContract => optionContract.ID.OptionRight == OptionRight.Call
&& optionContract.ID.OptionStyle == OptionStyle.American);
.OrderBy(symbol => symbol.ID.OptionRight)
.ThenBy(symbol => symbol.ID.StrikePrice)
.ThenBy(symbol => symbol.ID.Date)
.ThenBy(symbol => symbol.ID)
.FirstOrDefault(optionContract => optionContract.ID.OptionRight == OptionRight.Call);
AddOptionContract(_contract);
}
@@ -128,6 +130,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -125,6 +125,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -145,6 +145,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$87000.00"},
{"Lowest Capacity Asset", "BTCUSD 2XR"},
{"Portfolio Turnover", "2.22%"},
{"Drawdown Recovery", "139"},
{"OrderListHash", "9fce77ef8817cf0159897fc64d01f5e9"}
};
}

View File

@@ -145,6 +145,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$35000000.00"},
{"Lowest Capacity Asset", "IBM R735QTJ8XC9X"},
{"Portfolio Turnover", "1.51%"},
{"Drawdown Recovery", "2"},
{"OrderListHash", "1db1ce949db995bba20ed96ea5e2438a"}
};
}

View File

@@ -158,7 +158,8 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$5500000.00"},
{"Lowest Capacity Asset", "ES VMKLFZIH2MTD"},
{"Portfolio Turnover", "66.80%"},
{"OrderListHash", "579e2e83dd7e5e7648c47e9eff132460"}
{"Drawdown Recovery", "0"},
{"OrderListHash", "39f1e15c27212d8fdd58aeb7fb2b93cc"}
};
}
}

View File

@@ -207,6 +207,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$22000000.00"},
{"Lowest Capacity Asset", "ES XFH59UK0MYO1"},
{"Portfolio Turnover", "122.11%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d744fa8beaa60546c84924ed68d945d9"}
};
}

View File

@@ -136,6 +136,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$2600000.00"},
{"Lowest Capacity Asset", "ES 31C3JQS9D84PW|ES XCZJLC9NOB29"},
{"Portfolio Turnover", "495.15%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "85257286f088992d599c1ad0799a6237"}
};
}

View File

@@ -263,6 +263,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$760000.00"},
{"Lowest Capacity Asset", "ES XCZJLDQX2SRO|ES XCZJLC9NOB29"},
{"Portfolio Turnover", "32.31%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "7a04f66a30d793bf187c2695781ad3ee"}
};
}

View File

@@ -124,6 +124,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -160,6 +160,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$5700000.00"},
{"Lowest Capacity Asset", "AOL VRKS95ENLBYE|AOL R735QTJ8XC9X"},
{"Portfolio Turnover", "0.55%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "fc5ab25181a01ca5ce39212f60eb0ecd"}
};
}

View File

@@ -212,7 +212,8 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$2800000.00"},
{"Lowest Capacity Asset", "AOL VRKS95ENLBYE|AOL R735QTJ8XC9X"},
{"Portfolio Turnover", "1.14%"},
{"OrderListHash", "cde7b518b7ad6d86cff6e5e092d9a413"}
{"Drawdown Recovery", "0"},
{"OrderListHash", "90aa4bf345a6ba5ea2b0b14e32d1598f"}
};
}
}

View File

@@ -159,6 +159,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$5000000.00"},
{"Lowest Capacity Asset", "AAPL VXBK4R62CXGM|AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "22.70%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "29fd1b75f6db05dd823a6db7e8bd90a9"}
};
}

View File

@@ -139,6 +139,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -120,6 +120,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -248,7 +248,8 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$4000.00"},
{"Lowest Capacity Asset", "GOOCV 305RBQ2BZBZT2|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "2.58%"},
{"OrderListHash", "09f766c470a8bcf4bb6862da52bf25a7"}
{"Drawdown Recovery", "0"},
{"OrderListHash", "12037c87de17d6e62eadd99c70a0685e"}
};
}
}

View File

@@ -126,6 +126,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$830000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "20.49%"},
{"Drawdown Recovery", "2"},
{"OrderListHash", "6ebe462373e2ecc22de8eb2fe114d704"}
};
}

View File

@@ -153,7 +153,8 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$4700000.00"},
{"Lowest Capacity Asset", "AIG R735QTJ8XC9X"},
{"Portfolio Turnover", "29.88%"},
{"OrderListHash", "6061ecfbb89eb365dff913410d279b7c"}
{"Drawdown Recovery", "2"},
{"OrderListHash", "f04b3521256c7d6740966bc3df34e7b1"}
};
}
}

View File

@@ -105,6 +105,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$38000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "59.74%"},
{"Drawdown Recovery", "3"},
{"OrderListHash", "5d7657ec9954875eca633bed711085d3"}
};
}

View File

@@ -144,6 +144,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$6200000.00"},
{"Lowest Capacity Asset", "AAPL VXBK4QA5EM92|AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "90.27%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "a111609c2c64554268539b5798e5b31f"}
};
}

View File

@@ -124,6 +124,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$980000000.00"},
{"Lowest Capacity Asset", "FB V6OIPNZEM8V9"},
{"Portfolio Turnover", "25.56%"},
{"Drawdown Recovery", "1"},
{"OrderListHash", "5ee20c8556d706ab0a63ae41b6579c62"}
};
}

View File

@@ -135,6 +135,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$680000000.00"},
{"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "7.48%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "2c814c55e7d7c56482411c065b861b33"}
};
}

View File

@@ -199,6 +199,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$42000000.00"},
{"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "99.56%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "60f03c8c589a4f814dc4e8945df23207"}
};
}

View File

@@ -113,6 +113,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -281,6 +281,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$61000000000.00"},
{"Lowest Capacity Asset", "NB R735QTJ8XC9X"},
{"Portfolio Turnover", "3.62%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "0ea806c53bfa2bdca2504ba7155ef130"}
};
}

View File

@@ -119,6 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$16000000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "0.02%"},
{"Drawdown Recovery", "50"},
{"OrderListHash", "685c37df6e4c49b75792c133be189094"}
};
}

View File

@@ -189,6 +189,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$200000000.00"},
{"Lowest Capacity Asset", "ES VMKLFZIH2MTD"},
{"Portfolio Turnover", "351.80%"},
{"Drawdown Recovery", "1"},
{"OrderListHash", "dfd9a280d3c6470b305c03e0b72c234e"}
};
}

View File

@@ -120,6 +120,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -151,6 +151,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$56000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "19.93%"},
{"Drawdown Recovery", "3"},
{"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"}
};
}

View File

@@ -162,6 +162,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -0,0 +1,156 @@
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System.Collections.Generic;
using QuantConnect.Data;
using QuantConnect.Interfaces;
using QuantConnect.Orders;
namespace QuantConnect.Algorithm.CSharp
{
/// <summary>
/// Regression algorithm asserting that in backtesting, orders are submitted in the same time step even when asynchronous
/// </summary>
public class BacktestingAsynchronousOrdersRegressionAlgorithm : QCAlgorithm, IRegressionAlgorithmDefinition
{
private Symbol _symbol;
public override void Initialize()
{
SetStartDate(2013, 10, 07);
SetEndDate(2013, 10, 08);
SetCash(100000);
_symbol = AddEquity("SPY").Symbol;
}
public override void OnData(Slice slice)
{
if (!Portfolio.Invested)
{
var marketOrderTicket = MarketOrder(_symbol, 100, asynchronous: false);
AssertMarketOrderStatus(marketOrderTicket);
var asyncMarketOrderTicket = MarketOrder(_symbol, -100, asynchronous: true);
AssertMarketOrderStatus(asyncMarketOrderTicket);
var limitPrice = Securities[_symbol].Price * 0.95m;
var limitOrderTicket = LimitOrder(_symbol, 100, limitPrice, asynchronous: false);
AssertLimitOrderStatus(limitOrderTicket);
var asyncLimitOrderTicket = LimitOrder(_symbol, -100, limitPrice, asynchronous: true);
AssertLimitOrderStatus(asyncLimitOrderTicket);
}
}
private static void AssertMarketOrderStatus(OrderTicket ticket)
{
// In backtesting the order should be submitted and filled right away.
// Note that OrderSet event will not be fired if there is an error when processing the order submission,
// but this is a happy case
if (!ticket.OrderSet.WaitOne(0))
{
throw new RegressionTestException("Order was not submitted immediately in backtesting mode");
}
if (!ticket.OrderClosed.WaitOne(0))
{
throw new RegressionTestException("Order was not filled immediately in backtesting mode");
}
if (ticket.Status != OrderStatus.Filled)
{
throw new RegressionTestException($"Order status is not filled: {ticket.Status}");
}
}
private static void AssertLimitOrderStatus(OrderTicket ticket)
{
// In backtesting the order should be submitted right away but not filled since price hasn't moved even when asynchronous
// Note that OrderSet event will not be fired if there is an error when processing the order submission,
// but this is a happy case
if (!ticket.OrderSet.WaitOne(0))
{
throw new RegressionTestException("Asynchronous limit order was not submitted immediately in backtesting mode");
}
if (ticket.OrderClosed.WaitOne(0))
{
throw new RegressionTestException("Asynchronous limit order was filled immediately in backtesting mode when it shouldn't");
}
if (ticket.Status != OrderStatus.Submitted)
{
throw new RegressionTestException($"Order status is not submitted: {ticket.Status}");
}
}
/// <summary>
/// This is used by the regression test system to indicate if the open source Lean repository has the required data to run this algorithm.
/// </summary>
public bool CanRunLocally { get; } = true;
/// <summary>
/// This is used by the regression test system to indicate which languages this algorithm is written in.
/// </summary>
public List<Language> Languages { get; } = new() { Language.CSharp };
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1582;
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
/// <summary>
/// Final status of the algorithm
/// </summary>
public AlgorithmStatus AlgorithmStatus => AlgorithmStatus.Completed;
/// <summary>
/// This is used by the regression test system to indicate what the expected statistics are from running the algorithm
/// </summary>
public Dictionary<string, string> ExpectedStatistics => new Dictionary<string, string>
{
{"Total Orders", "4"},
{"Average Win", "0%"},
{"Average Loss", "0%"},
{"Compounding Annual Return", "0%"},
{"Drawdown", "0%"},
{"Expectancy", "0"},
{"Start Equity", "100000"},
{"End Equity", "100168.20"},
{"Net Profit", "0%"},
{"Sharpe Ratio", "0"},
{"Sortino Ratio", "0"},
{"Probabilistic Sharpe Ratio", "0%"},
{"Loss Rate", "0%"},
{"Win Rate", "0%"},
{"Profit-Loss Ratio", "0"},
{"Alpha", "0"},
{"Beta", "0"},
{"Annual Standard Deviation", "0"},
{"Annual Variance", "0"},
{"Information Ratio", "0"},
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$3.00"},
{"Estimated Strategy Capacity", "$22000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "21.72%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "65f010e904a929e5383f0920a3c5b797"}
};
}
}

View File

@@ -339,6 +339,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "17.02%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "a7ce5ff2bbe0fe273cf1631ea5a73fa6"}
};
}

View File

@@ -115,6 +115,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "€85000.00"},
{"Lowest Capacity Asset", "BTCEUR 2XR"},
{"Portfolio Turnover", "107.64%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "6819dc936b86af6e4b89b6017b7d5284"}
};
}

View File

@@ -85,6 +85,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "€85000.00"},
{"Lowest Capacity Asset", "BTCEUR 2XR"},
{"Portfolio Turnover", "107.64%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "3d450fd418a0e845b3eaaac17fcd13fc"}
};
}

View File

@@ -118,6 +118,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$56000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "19.93%"},
{"Drawdown Recovery", "3"},
{"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"}
};
}

View File

@@ -112,6 +112,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$150000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "4.98%"},
{"Drawdown Recovery", "3"},
{"OrderListHash", "8774049eb5141a2b6956d9432426f837"}
};
}

View File

@@ -160,6 +160,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$7100000.00"},
{"Lowest Capacity Asset", "ES VMKLFZIH2MTD"},
{"Portfolio Turnover", "2.33%"},
{"Drawdown Recovery", "37"},
{"OrderListHash", "223735440010fcec5889bb7becacfa82"}
};
}

View File

@@ -166,6 +166,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$890000000.00"},
{"Lowest Capacity Asset", "ES VMKLFZIH2MTD"},
{"Portfolio Turnover", "2.32%"},
{"Drawdown Recovery", "34"},
{"OrderListHash", "1504a8892da8d8c0650018732f315753"}
};
}

View File

@@ -240,6 +240,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "BTCEUR 2XR"},
{"Portfolio Turnover", "118.08%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "26b9a07ace86b6a0e0eb2ff8c168cee0"}
};
}

View File

@@ -276,6 +276,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$500000000.00"},
{"Lowest Capacity Asset", "ADAUSDT 18R"},
{"Portfolio Turnover", "0.16%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "dcc4f964b5549c753123848c32eaee41"}
};
}

View File

@@ -239,6 +239,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$370000000.00"},
{"Lowest Capacity Asset", "ADAUSDT 18R"},
{"Portfolio Turnover", "0.12%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "50a51d06d03a5355248a6bccef1ca521"}
};
}

View File

@@ -109,6 +109,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$1200000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "10.01%"},
{"Drawdown Recovery", "1"},
{"OrderListHash", "70f21e930175a2ec9d465b21edc1b6d9"}
};
}

View File

@@ -233,6 +233,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "€2300000000.00"},
{"Lowest Capacity Asset", "FESX YJHOAMPYKRS5"},
{"Portfolio Turnover", "0.40%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "ac9acc478ba1afe53993cdbb92f8ec6e"}
};
}

View File

@@ -130,6 +130,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$27000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "59.86%"},
{"Drawdown Recovery", "3"},
{"OrderListHash", "f209ed42701b0419858e0100595b40c0"}
};
}

View File

@@ -219,6 +219,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "ES VMKLFZIH2MTD"},
{"Portfolio Turnover", "0.13%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "a6ccce3a1a7f549f887d83e84bfa878d"}
};
}

View File

@@ -192,6 +192,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$14000.00"},
{"Lowest Capacity Asset", "GC VOFJUCDY9XNH"},
{"Portfolio Turnover", "9912.69%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "6e0f767a46a54365287801295cf7bb75"}
};
}

View File

@@ -170,6 +170,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "ES VRJST036ZY0X"},
{"Portfolio Turnover", "0.92%"},
{"Drawdown Recovery", "69"},
{"OrderListHash", "ddaa9dd20647fdbc4811d6e64bb30a40"}
};
}

View File

@@ -179,6 +179,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$17000000.00"},
{"Lowest Capacity Asset", "GC VL5E74HP3EE5"},
{"Portfolio Turnover", "43.23%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "c0fc1bcdc3008a8d263521bbc9d7cdbd"}
};
}

View File

@@ -74,6 +74,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$52000000.00"},
{"Lowest Capacity Asset", "GC VL5E74HP3EE5"},
{"Portfolio Turnover", "43.77%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "dcdaafcefa47465962ace2759ed99c91"}
};
}

View File

@@ -183,6 +183,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -90,6 +90,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -69,6 +69,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$8000.00"},
{"Lowest Capacity Asset", "ES VP274HSU1AF5"},
{"Portfolio Turnover", "20.14%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "f6482c8757f82cb9f4c058e3ed6bc494"}
};
}

View File

@@ -192,6 +192,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$130000.00"},
{"Lowest Capacity Asset", "GC VOFJUCDY9XNH"},
{"Portfolio Turnover", "32523.20%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "0664a72652a19956ea3c4915269cc4b9"}
};
}

View File

@@ -69,6 +69,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "ES VRJST036ZY0X"},
{"Portfolio Turnover", "0.87%"},
{"Drawdown Recovery", "69"},
{"OrderListHash", "741a26424d2210171ad849d92fc75d23"}
};
}

View File

@@ -74,6 +74,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$3000.00"},
{"Lowest Capacity Asset", "ES VP274HSU1AF5"},
{"Portfolio Turnover", "56.73%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "6ce7812de5c98744cc35169a86a24325"}
};
}

View File

@@ -118,6 +118,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$110000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "19.96%"},
{"Drawdown Recovery", "2"},
{"OrderListHash", "60747dce5c2aed393b7dccc258d2c9b5"}
};
}

View File

@@ -170,6 +170,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$3000.00"},
{"Lowest Capacity Asset", "SPX XL80P3GHDZXQ|SPX 31"},
{"Portfolio Turnover", "23.97%"},
{"Drawdown Recovery", "9"},
{"OrderListHash", "51f1bc2ea080df79748dc66c2520b782"}
};
}

View File

@@ -149,6 +149,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "SPX XL80P3GHDZXQ|SPX 31"},
{"Portfolio Turnover", "2.42%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "61e8517ac3da6bed414ef23d26736fef"}
};
}

View File

@@ -66,6 +66,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$300000.00"},
{"Lowest Capacity Asset", "SPX XL80P3GHDZXQ|SPX 31"},
{"Portfolio Turnover", "24.63%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "5595ab834c2584c1d124ad575e88cc1a"}
};
}

View File

@@ -110,6 +110,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "SPX XL80P59H5E6M|SPX 31"},
{"Portfolio Turnover", "0.00%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "8340619d603921c1ce261287890b9c1c"}
};
}

View File

@@ -81,6 +81,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "SPX XL80P59H5E6M|SPX 31"},
{"Portfolio Turnover", "0.00%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "1c5f424cfe62777733ee68a20320bb8d"}
};
}

View File

@@ -128,6 +128,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "₹61000000000.00"},
{"Lowest Capacity Asset", "YESBANK UL"},
{"Portfolio Turnover", "0.00%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "06f782c83dd633dac6f228b91273ba26"}
};
}

View File

@@ -152,6 +152,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "₹84000.00"},
{"Lowest Capacity Asset", "JUNIORBEES UL"},
{"Portfolio Turnover", "0.04%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "8790bec8175539e6d92e01608ac57733"}
};
}

View File

@@ -145,6 +145,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$69000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZERHAOVVQ|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "61.31%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "35d406df401e5b27244e20f5ec57346e"}
};
}

View File

@@ -155,6 +155,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$4000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZFMEBBB2E|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "338.60%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "301c15063f6e269023d144ca69a765da"}
};
}

View File

@@ -152,6 +152,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$1300000.00"},
{"Lowest Capacity Asset", "GOOCV 30AKMEIPOSS1Y|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "10.71%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "8a36462ee0349c04d01d464e592dd347"}
};
}

View File

@@ -145,6 +145,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -165,6 +165,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$72000.00"},
{"Lowest Capacity Asset", "AAPL W78ZEO2985GM|AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "0.02%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "5e20fad3461ac9998afe8d76ad43b25c"}
};
}

View File

@@ -142,6 +142,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "15.08%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "f68f6d64a5721ee148bc3c643f8d1b7f"}
};
}

View File

@@ -182,6 +182,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "13.50%"},
{"Drawdown Recovery", "2"},
{"OrderListHash", "d40c84371facba5dac8a2c919ea75807"}
};
}

View File

@@ -152,6 +152,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$1000.00"},
{"Lowest Capacity Asset", "AAPL 2ZTXYMUAHCIAU|AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "2.28%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "7804b3dcf20d3096a2265a289fa81cd3"}
};
}

View File

@@ -146,6 +146,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$580000.00"},
{"Lowest Capacity Asset", "SPXW 31K54PVWHUJHQ|SPX 31"},
{"Portfolio Turnover", "0.40%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "db5e3681c5fa1888262f2370a9b14c11"}
};
}

View File

@@ -152,6 +152,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$13000000.00"},
{"Lowest Capacity Asset", "SPXW XKX6S2GM9PGU|SPX 31"},
{"Portfolio Turnover", "0.28%"},
{"Drawdown Recovery", "2"},
{"OrderListHash", "17764ae9e216d003b1f3ce68d15b68ef"}
};
}

View File

@@ -89,6 +89,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$3000.00"},
{"Lowest Capacity Asset", "SPX XL80P3GHDZXQ|SPX 31"},
{"Portfolio Turnover", "24.03%"},
{"Drawdown Recovery", "9"},
{"OrderListHash", "fcd6fddb0a315e21095c2b35eb633e2b"}
};
}

View File

@@ -84,6 +84,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "₮220000.00"},
{"Lowest Capacity Asset", "BTCUSDT 18N"},
{"Portfolio Turnover", "22.80%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "80711e4c1e3c0da20152da8fafc3fd66"}
};
}

View File

@@ -84,6 +84,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "₮12000000.00"},
{"Lowest Capacity Asset", "BTCUSDT 18N"},
{"Portfolio Turnover", "22.80%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "80711e4c1e3c0da20152da8fafc3fd66"}
};
}

View File

@@ -83,6 +83,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$2000.00"},
{"Lowest Capacity Asset", "BTCUSD E3"},
{"Portfolio Turnover", "0.28%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "899ef4e299a6cc73c1bd96fb9993db0e"}
};
}

View File

@@ -83,6 +83,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$640000.00"},
{"Lowest Capacity Asset", "BTCUSD E3"},
{"Portfolio Turnover", "0.28%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "899ef4e299a6cc73c1bd96fb9993db0e"}
};
}

View File

@@ -119,6 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$2600000.00"},
{"Lowest Capacity Asset", "AIG R735QTJ8XC9X"},
{"Portfolio Turnover", "69.06%"},
{"Drawdown Recovery", "2"},
{"OrderListHash", "44a85134cd1c91c9720549bc0e007f80"}
};
}

View File

@@ -264,6 +264,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$200000000.00"},
{"Lowest Capacity Asset", "BTCUSDT 2V3"},
{"Portfolio Turnover", "1.08%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "0157a5c7c2c8a8c13e984b72721aa0ca"}
};
}

View File

@@ -173,6 +173,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "₮560000.00"},
{"Lowest Capacity Asset", "BTCUSDT 2UZ"},
{"Portfolio Turnover", "44.04%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "47580e88a8cc54b04f3b2bcb5d501150"}
};
}

View File

@@ -185,6 +185,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "₮0"},
{"Lowest Capacity Asset", "BTCUSDT.CustomCryptoData 2US"},
{"Portfolio Turnover", "34.30%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "52ddb7dfcaaf1ea4f70cc614c49f0cd0"}
};
}

View File

@@ -117,6 +117,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$130000000.00"},
{"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "37.56%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "e9e8a07dc58bff7198181f9fafb58834"}
};
}

View File

@@ -168,6 +168,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$370000.00"},
{"Lowest Capacity Asset", "ETHUSD 2XR"},
{"Portfolio Turnover", "104.59%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "5277847166fcd10cde634e3986e1d285"}
};
}

View File

@@ -116,6 +116,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "€670000.00"},
{"Lowest Capacity Asset", "DE30EUR 8I"},
{"Portfolio Turnover", "1062.25%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d5d15485c8fc6d412e5e73d40d9afd60"}
};
}

View File

@@ -158,6 +158,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$2500000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "7.91%"},
{"Drawdown Recovery", "105"},
{"OrderListHash", "2668157409450ab9949a71716a5dbc2e"}
};
}

View File

@@ -49,4 +49,4 @@ namespace QuantConnect.Algorithm.CSharp
SubscriptionManager.AddConsolidator(GoldFuture.Mapped, consolidator);
}
}
}
}

View File

@@ -64,4 +64,4 @@ namespace QuantConnect.Algorithm.CSharp
base.OnEndOfAlgorithm();
}
}
}
}

View File

@@ -152,7 +152,8 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}
}
}

View File

@@ -202,6 +202,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$81000000.00"},
{"Lowest Capacity Asset", "IBM R735QTJ8XC9X"},
{"Portfolio Turnover", "6.65%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "4eaacdd341a5be0d04cb32647d931471"}
};
}

View File

@@ -205,6 +205,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$5000000.00"},
{"Lowest Capacity Asset", "AOL R735QTJ8XC9X"},
{"Portfolio Turnover", "17.64%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "a8605c1f5a9c67f60f1ddc963ec45542"}
};
}

View File

@@ -154,6 +154,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -161,6 +161,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$630000000.00"},
{"Lowest Capacity Asset", "FB V6OIPNZEM8V9"},
{"Portfolio Turnover", "24.59%"},
{"Drawdown Recovery", "6"},
{"OrderListHash", "90b57d40d047eedbff7111d2a73a1290"}
};
}

View File

@@ -135,6 +135,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", ""},
{"Portfolio Turnover", "0%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"}
};
}

View File

@@ -142,6 +142,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$930000000.00"},
{"Lowest Capacity Asset", "SPY R735QTJ8XC9X"},
{"Portfolio Turnover", "12.65%"},
{"Drawdown Recovery", "5"},
{"OrderListHash", "87438e51988f37757a2d7f97389483ea"}
};
}

View File

@@ -142,6 +142,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Estimated Strategy Capacity", "$71000.00"},
{"Lowest Capacity Asset", "BTCUSD 2XR"},
{"Portfolio Turnover", "0.29%"},
{"Drawdown Recovery", "0"},
{"OrderListHash", "a0058926f4ca5b009cfcc9096506a548"}
};
}

Some files were not shown because too many files have changed in this diff Show More