e709e62b806c98a766bf7ac3fa1b7fd53272a073
7 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
27de93f78f |
Market orders wait for fresh data instead of filling on stale prices (#9535)
Syntax Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Market orders wait for fresh data instead of filling on stale prices A market order would previously fill immediately on the most recent available data even when that data was older than StalePriceTimeSpan (default one hour), only attaching a warning. This is unrealistic for a coarse resolution asset (hour/daily) where the latest bar is the stale previous close when the order is placed mid-bar or via an intraday scheduled event. The default fill models (FillModel, EquityFillModel, FutureFillModel) now wait for fresh data instead of filling on a stale price, but only for hour and daily resolutions; the order fills when the next bar closes. For minute/second/tick subscriptions the previous behavior is kept (fill on the stale price with a warning), since stale data there is a genuine gap rather than a bar still forming. Adds HourResolutionMarketOrderStalePriceRegressionAlgorithm, updates the FillOutsideHours daily expectation, and regenerates statistics for the hour/daily algorithms whose fills change. FutureOptionDaily buys and liquidates a day apart now (a same-day buy + liquidate cannot fill on daily data once stale fills are disabled). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Normalize and correct StalePriceTimeSpan XML docs The interface and class docs now match and reflect the actual behavior: the wait-for-fresh-data only applies to hour/daily resolutions, while minute/second/tick subscriptions still fill on stale data with a warning. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fill resting market orders at the bar open instead of the close A hour/daily market order that was resting before the current bar opened (it predates the bar - placed after the previous close or while waiting for fresh data) now fills at the bar open, the price when trading resumed (like a MarketOnOpen), instead of the bar close. Orders placed during the bar still fill at the current/close price, so intraday mid-bar fills are unchanged. Equity fills are unchanged (resting equity orders are already converted to MarketOnOpen by QCAlgorithm.MarketOrder). Adds the shared FillModel.GetMarketFillPrice helper used by the base FillModel and FutureFillModel, a unit test, and regenerates statistics for the affected daily/hour futures, index and crypto regression algorithms (order counts unchanged, only fill prices). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Add regression algorithm asserting resting market orders fill at the bar open RestingMarketOrderFillsAtBarOpenRegressionAlgorithm buys a daily future on the bar that delivers it (fills at that bar's close) and submits a liquidation while the market is closed (overnight pulse, no fresh bar). The liquidation rests and fills on a later bar at the bar open, not its close - asserting the new GetMarketFillPrice behavior. The in-bar buy is asserted to fill at the close, for contrast. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Carry the bar start time on Prices instead of re-reading the cache Add Prices.Time (the bar start, mirroring BaseData.Time/EndTime), populated from the source bar/tick in every GetPrices path. GetMarketFillPrice now uses prices.Time directly instead of a second asset.Cache.GetData() lookup. Behavior is unchanged (prices.Time equals the previously read cache time). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Add regression algorithm asserting in-session hour orders fill at the latest close HourMarketOrderFillsAtBarCloseRegressionAlgorithm submits an hour resolution market order mid-bar (via an intraday scheduled event) while the market is open, using the default one hour StalePriceTimeSpan. It asserts the order fills immediately at the latest available bar's close - not waiting and not at the bar open - since the latest bar is within the stale window. Guards the resting-order open-fill behavior against affecting ordinary in-session fills. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Regenerate custom fill model algorithm statistics for the open-fill change CustomModelsAlgorithm and CustomPartialFillModelAlgorithm subscribe SPY at hour resolution and their custom fill models delegate to base.MarketFill, so resting orders now fill at the bar open. Regenerate their statistics (C#/Python) and the inline expected statistics of the PEP8StyleCustomModelsWork test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
6916636e8e |
Remove Future expiry date from data & use Bank Holidays For Expirations (#8580)
Regression Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Use Futures Bank Holidays For Expirations * Minor improvements - Futures will be stored by their contract month, not expiry * Delete dairy future products * Minor test fixes |
||
|
|
16c4259342 |
Add QCAlgorithm.OptionChain() method to fetch option chains (#8316)
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add new QCAlgorithm.OptionChain method to get full data option chain * Add extension method to get canonical symbol * Support future options in new OptionChain method * Replace option chain provider with OptionChain method in some regression algorithms * Add new regression algorithms for OptionChain method * Replace option chain provider with OptionChain method in some regression algorithms * Minor * Cleanup * Minor changes in regression algorithms * Minor adjustments |
||
|
|
7879795207 |
Enable daily precise end time by default (#8254)
API Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
* Default daily precise end times - Enable by default daily precise end times. Updating stats - Minor fix for algorithm manager consolidator updates, adding new regression test asserting behavior and updating others - Minor fix for SubscriptionData creator avoid round down on warmup if not appropiate - Adjust consolidators to emit on daily strict end times if requested daily resolution and setting enabled - Updating regression algorithms * Skip daily data on extended market hours * Some cleanup and self review * Revert unrequired change |
||
|
|
4a1f30bd96 |
pep8 conversion of python #7 (#7945)
* pep8 conversion * PEP8 updates/fixes --------- Co-authored-by: Jhonathan Abreu <jdabreu25@gmail.com> |
||
|
|
539011274c |
Support extended market hours for futures (#6522)
Python Virtual Environments / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
* Support extended market hours in AddFuture() * Support extended market hours in AddFutureContract() * Add C# regression algorithm * Add Python regression algorithm * Add regression algorithm for future contracts * Add regression algorithm checking market hour ranges * Fixed future regression algorithms to use extended market hours * Fixed future regression algorithms to use extended market hours * Fixed future regression algorithms to use extended market hours * Fixed AddFutureOptionContractFromFutureChainRegressionAlgorithm to use extended market hours * Update future market hours to include extended in market hours database * Fixed AddFutureOptionContractDataStreamingRegressionAlgorithm to use extended market hours * Fixed AddFutureOptionContractFromFutureChainRegressionAlgorithm to use extended market hours * Fixed AddFutureContractWithContinuousRegressionAlgorithm to use extended market hours * Fixed BasicTemplateContinuousFutureAlgorithm to use extended market hours * Fixed BasicTemplateFuturesAlgorithm to use extended market hours * Fix BasicTemplateFuturesDailyAlgorithm to use extended market hours * Fixed BasicTemplateFuturesFrameworkAlgorithm to use extended market hours * Fixed BasicTemplateFuturesHistoryAlgorithm to use extended market hours * Fixed ContinuousBackMonthRawFutureRegressionAlgorithm to use extended market hours * Fixed ContinuousFutureBackMonthRegressionAlgorithm to use extended market hours * Fixed ContinuousFutureHistoryRegressionAlgorithm to use extended market hours * Fixed ContinuousFutureLimitIfTouchedOrderRegressionAlgorithm to use extended market hours * Fixed ContinuousFutureRegressionAlgorithm to use extended market hours * Fixed DelistedFutureLiquidateRegressionAlgorithm to use extended market hours * Fixed AutomaticIndicatorWarmupDataTypeRegressionAlgorithm to use extended market hours * Fixed ConsolidateRegressionAlgorithm to use extended market hours * Fixed DelistingFutureOptionRegressionAlgorithm to use extended market hours * Fixed EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm to use extended market hours * Fixed FutureContractsExtendedMarketHoursRegressionAlgorithm to use extended market hours * Fixed FutureMarketOpenAndCloseRegressionAlgorithm to use extended market hours * Fixed FutureMarketOpenConsolidatorRegressionAlgorithm to use extended market hours * Fixed FutureOptionBuySellCallIntradayRegressionAlgorithm to use extended market hours * Fixed FutureOptionCallITMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionCallITMGreeksExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionCallOTMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionDailyRegressionAlgorithm to use extended market hours * Fixed FutureOptionHourlyRegressionAlgorithm to use extended market hours * Fixed FutureOptionMultipleContractsInDifferentContractMonthsWithSameUnderlyingFutureRegressionAlgorithm to use extended market hours * Fixed FutureOptionPutITMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionPutOTMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionShortCallITMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionShortCallOTMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionShortPutITMExpiryRegressionAlgorithm to use extended market hours * Fixed FutureOptionShortPutOTMExpiryRegressionAlgorithm to use extended market hours * Fixed FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm to use extended market hours * Fixed FuturesExpiredContractRegression to use extended market hours * Fixed FutureSharingTickerRegressionAlgorithm to use extended market hours * Fixed HistoryWithDifferentContinuousContractDepthOffsetsRegressionAlgorithm to use extended market hours * Fixed HistoryWithDifferentDataMappingModeRegressionAlgorithm to use extended market hours * Fixed HistoryWithDifferentDataNormalizationModeRegressionAlgorithm to use extended market hours * Fixed LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm to use extended market hours * Fixed OpenInterestFuturesRegressionAlgorithm to use extended market hours * Fixed RegisterIndicatorRegressionAlgorithm to use extended market hours * Fixed SetHoldingsFutureRegressionAlgorithm to use extended market hours * Fixed WarmupFutureRegressionAlgorithm to use extended market hours * Fixed AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm to use extended market hours * Fixed AlgorithmHistoryTests to use extended market hours for futures * Fixed AlgorithmTradingTests to use extended market hours for futures * Fixed BrokerageSetupHandlerTests to use extended market hours for futures * Fixed TimeRulesTests to use extended market hours for futures * Fixed FutureOptionMarginBuyingPowerModelTests to use extended market hours for futures * Fixed FutureMarginBuyingPowerModelTests to use extended market hours for futures * Fixed FileSystemDataFeedTests to use extended market hours for futures * Fixed QuantBookHistoryTests to use extended market hours for futures * Split BasicTemplateContinuousFutureAlgorithm to have an extended market version * Fixed FutureMarketOpenAndCloseRegressionAlgorithm to use extended market hours * Split BasicTemplateFuturesAlgorithm to have an extended market version * Split BasicTemplateFuturesAlgorithm to have an extended market version * Split BasicTemplateFuturesFrameworkAlgorithm to have an extended market version * Split BasicTemplateFuturesHistoryAlgorithm to have an extended market version * Revert AddFutureContractWithContinuousRegressionAlgorithm * Revert AddFutureOptionContractDataStreamingRegressionAlgorithm and added data * Revert AddFutureOptionContractFromFutureChainRegressionAlgorithm * Revert AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm * Revert ConsolidateRegressionAlgorithm * Revert Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs * Revert ContinuousFutureBackMonthRegressionAlgorithm * Revert ContinuousFutureHistoryRegressionAlgorithm * Revert ContinuousFutureLimitIfTouchedOrderRegressionAlgorithm * Revert ContinuousFutureRegressionAlgorithm * Revert Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs * Revert EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm * Split FutureMarketOpenAndCloseRegressionAlgorithm to have an extended market version * Split FutureMarketOpenConsolidatorRegressionAlgorithm to have an extended market version * Revert FutureOptionBuySellCallIntradayRegressionAlgorithm * Revert FutureOptionCallITMExpiryRegressionAlgorithm * Revert FutureOptionDailyRegressionAlgorithm * Revert FutureOptionPutITMExpiryRegressionAlgorithm * Revert FutureSharingTickerRegressionAlgorithm * Revert FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm * Revert FuturesExpiredContractRegression * Revert HistoryWithDifferentContinuousContractDepthOffsetsRegressionAlgorithm * Revert HistoryWithDifferentDataMappingModeRegressionAlgorithm * Revert HistoryWithDifferentDataNormalizationModeRegressionAlgorithm * Revert OpenInterestFuturesRegressionAlgorithm * Revert RegisterIndicatorRegressionAlgorithm * Revert SetHoldingsFutureRegressionAlgorithm * Revert WarmupFutureRegressionAlgorithm * Revert AutomaticIndicatorWarmupDataTypeRegressionAlgorithm * Some cleanup * Address changes request * Address changes request * Add more Class III Milk data to fix DelistingFutureOptionDailyRegressionAlgorithm |
||
|
|
1358bd8115 |
Future and FutureOption low res support (#6069)
Regression Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
* Fixes for FutureOptions support in LeanData * Add CreateCanonicalOption() utility function for Symbol.cs * Add aggregated Futures/FuturesOptions data to Lean * Add FutureOptions regressions for daily/hourly data * Allow Futures to be added with low resolution * Add Future regressions using hour/daily data * Nit - Python Class names * Add reviews * Add alias into CreateCanonicalOption |