17978
1676 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
35b32b401e |
Add margin-aware option strategy match selection (#9639)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add margin-aware option strategy match selection OptionStrategyMatcher.MatchOnce greedily matched definitions in descending leg-count order, never consulting the objective function hook. Books of overlapping debit spreads were carved into ladders whose uncovered short leg is charged naked option margin, producing phantom margin deltas, inconsistent accept/reject decisions and TotalMarginUsed churn on fully covered, defined-risk books. MatchOnce now evaluates a second candidate solution that deprioritizes definitions leaving a short leg uncovered, and selects the best solution via the objective function. The new default objective function minimizes the quantity of uncovered short contracts, a deterministic proxy for the margin required to hold the positions. Ties preserve the previous grouping, so behavior only changes where the greedy carve left a short uncovered that another grouping of the same positions covers. Fixes #9638 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Cache strategy definition ordering and skip redundant match pass Materialize the definition enumerations once per matcher options instead of re-sorting them on every MatchOnce call, and only evaluate the second candidate solution when some short contract can actually be covered by a long of the same right or by the underlying lots held. A book of naked shorts, by far the most common one reaching that point, now runs a single matching pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Bound credit-side short coverage and add overlapping spreads regression The uncovered short proxy treated any same-right long as covering a short leg. A long on the credit side (higher strike for calls, lower for puts) caps the risk at the strike width, which for a distant long can exceed the naked short margin, so preferring it could raise the margin required instead of lowering it. Coverage from the debit side stays free, while credit-side coverage only counts within 10% of the short strike, the price-free stand-in for the naked short margin floor of the option margin model. Beyond that width the short counts as uncovered, the candidate solutions tie and the previous grouping is preserved, so the selection can only ever lower the margin required to hold the positions. Also adds a regression algorithm for the reported defect: two overlapping bull call debit spreads with interleaved strikes resolve into two margin free spreads instead of a bull call ladder charging naked call margin plus an unmatched long. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Skip provably useless match passes and drop scoring allocations Matching again cannot help once the first solution already leaves no more shorts uncovered than the positions can possibly cover, since a long contract covers at most its own quantity of shorts of the same right, and so does an underlying lot. Checking that bound generalizes the naked shorts precondition it replaces and removes the second pass from books holding fewer longs than shorts, such as a plain ladder, which measured 2.2x slower than a single pass before and is now level with it. The credit side width test also subsumes the debit side one, whose width is never positive, so coverage collapses into a single predicate and one pass over the legs. Strategies with a single short leg, which is every spread, butterfly, condor, backspread and covered call, now take a fast path that needs neither ordering nor allocation, and the remaining ladders and short butterflies sort a small array in place instead of allocating lists, objects and sort closures per score. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Require a covering long to outlive the short it covers The coverage proxy compared strikes only, so a short calendar spread, long the near expiration and short the far one at the same strike, read as fully covered on a zero strike width. The margin models disagree: once the long expires the short is naked for the rest of its life, and short calendar spreads are charged the stand-alone naked short margin while ordinary calendar spreads, whose long outlives the short, require none. Requiring the covering long to expire no earlier than the short makes the proxy mirror that distinction exactly, and leaves same expiry books untouched. The skip added for provably useless second passes reads the score as a quantity of uncovered contracts, which only the default objective function guarantees, so a custom one now always gets both candidates. Also documents that the definition ordering is cached, freezing the first output of a user supplied enumerator, and drops the stale claim that nothing in the options type is consulted by the matcher. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Apply the uncovered short bound to the default objective function only A function deriving from the default one is free to score by different rules, so taking its score for a quantity of uncovered contracts could skip a second candidate it would have preferred. Match the type exactly instead, which leaves derived functions always evaluating both. Also documents that the legacy objective function scores are not bounded above by zero, so configuring it ends candidate evaluation and preserves the single matching pass, and describes the regression algorithm strikes by their order in the chain rather than as the highest ones, which only held for a chain of exactly four strikes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Martin Molinero <martin.molinero1@gmail.com> |
||
|
|
b1733c995b |
feat: add custom configuration support for regression algorithms (#9649)
Co-authored-by: Daniel <vbs100@gmail.com> |
||
|
|
f9104801d9 |
Fix runtime error when an option universe is removed and re-added in the same time step (#9626)
* Fix universe subscription exception when option universe is removed and re-added in the same time step * Remove incorrect issue reference from comments * Use RegressionTestException in regression algorithm * Clean up stale universe members when universe is removed and re-added in the same time step * Convert regression algorithms to C# and centralize universe selection data handling * Simplify fix by parking colliding universe subscription requests and re-issuing them on removal * Restore universe subscription request invariant exception * Report parked universe subscription requests as successfully added |
||
|
|
4249165f99 |
Fix trade statistics for option assignment underlying fills (#9627)
* Fix option assignment trade statistics Resolve the security from each order event when updating TradeBuilder so physically settled underlying fills use the underlying multiplier and conversion rate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 716a0df4-0117-458b-b4ac-7d8aeeb9bf48 * Resolve order event security from the event symbol Option exercises emit the underlying fill under the option's order id, so resolving the security from the order symbol handed the option's contract multiplier and quote currency conversion rate to the underlying fill, inflating closed trade statistics. Extend the option assignment regression algorithm, in both C# and Python, to assert every closed trade's profit and loss against its own security's contract multiplier. --------- Co-authored-by: Kapil Yadav <kapyadav@microsoft.com> Co-authored-by: Jhonathan Abreu <jdabreu25@gmail.com> |
||
|
|
1fee999e4f |
Update QuantConnect.pythonnet to 2.0.64 (#9623)
Python Virtual Environments / 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
Syntax Tests / build (push) Has been cancelled
|
||
|
|
d8b6373e50 |
Update QuantConnect.pythonnet to 2.0.63 (#9614)
Regression Tests / build (push) Has been cancelled
Report Generator 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
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Update QuantConnect.pythonnet to 2.0.62 * Update QuantConnect.pythonnet to 2.0.63 |
||
|
|
c22774e49e |
Fix margin call handling for single-lot option strategy position groups (#9612)
Syntax Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
A margin call requiring a partial reduction of an option strategy position group probes a zero-quantity trial group while solving for the order quantity. The option strategy margin helpers assume at least one leg with non-zero quantity and threw InvalidOperationException, crashing the algorithm. Return zero initial/maintenance margin for zero-quantity groups so the margin call converges on full liquidation. |
||
|
|
c283231d11 |
Improve error messages for unsupported Python objects in user-facing APIs (#9607)
Syntax Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Improve error message when consolidator period Python object is unsupported * Make unsupported consolidator period error message more concise * Apply descriptive Python conversion errors to other user-facing sites and add QuoteBarConsolidator.FromResolution * List available overloads in unsupported Python argument error messages * Update QuantConnect.pythonnet to 2.0.61 * Update overload hint test expectations to Python-typed signatures * Exclude PyObject overloads from error hints and update to Python annotation style * Move PyObject overload filtering from consumers into MethodSignatureFormatter * Update Python alpha model name expectations for Python-style enum rendering |
||
|
|
046fb456f8 |
Allow option filter functions to return None/null (#9608)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Allow Python option filter functions to return None The option filter universe is modified in place by the filter methods (strikes, expiration, etc.), whose return value is only necessary for chaining. A Python filter function that returns None would kill the algorithm with a NullReferenceException. * Allow C# option filter functions to return null and add regression algorithms Adds C#/Python regression algorithms asserting that option filter functions are allowed to mutate the universe in place and return null/None instead of the universe, which is only necessary for chaining. |
||
|
|
b9f616b454 |
Set security cache open interest from chain universe data (#9601)
Syntax Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Report Generator 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
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Set security cache open interest from chain universe data - The option and future security caches now update the open interest cache property from stored chain universe data points (OptionUniverse, FutureUniverse), which the algorithm manager pushes into the security caches - Add index option and future option specific security caches, mapped in the SecurityCacheProvider, which previously fell through to the base SecurityCache - Add regression algorithms asserting the behavior for equity options, index options and futures Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Guard against empty data lists when updating open interest StoreData is public API, add an UpdateOpenInterest overload taking the data list which checks the count before accessing the last data point Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|
|
4e7d7b3221 |
Update QuantConnect.pythonnet to 2.0.60 (#9600)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|
|
e709e62b80 |
Update QuantConnect.pythonnet to 2.0.59 (#9595)
Report Generator Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
Research Regression 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
Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|
|
e3724a4c6d |
Add built-in rolling window to all consolidators (#9366)
* Add built-in rolling window to all consolidators * Minor fix * Add unit tests * Add Current and Previous properties to consolidators * Add WindowBase<T> as single source of truth for rolling window logic * Address review comments on consolidator rolling window * Fix duplicate window in consolidator wrappers * Fix Python consolidator equality * Address review comments * Make ConsolidatorBase implements IDataConsolidator * Add IDataConsolidator<T> generic interface to avoid casting Consolidated output * Revert "Add IDataConsolidator<T> generic interface to avoid casting Consolidated output" This reverts commit f4bf812f4b26aff2789a8129fb07101962557a2a. * Address second review round on consolidator rolling window * Populate consolidator window before firing DataConsolidated events * Move WindowBase to the Indicators namespace * Restore original consolidator event ordering * Recover original Sequential wire-up comment |
||
|
|
047600be8a | Update QuantConnect.pythonnet to 2.0.58 (#9591) | ||
|
|
c88955b91a |
Update QuantConnect.pythonnet to 2.0.57 (#9584)
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
* Update QuantConnect.pythonnet to 2.0.57 * Update NoMethodMatch interpreter tests for pythonnet 2.0.57 snake_case method names pythonnet 2.0.57 renders the method name in the 'No method matches given arguments' TypeError in snake_case (e.g. 'for set_cash:' / 'for rsi:'), matching the name Python callers use. The interpreter extracts it correctly; only the tests' hardcoded PascalCase expectations (SetCash, RSI) were stale. Assert the snake_case names the API now emits. |
||
|
|
33ff836857 |
Compute probabilistic Sharpe ratio on excess returns (#9583)
Regression Tests / build (push) Has been cancelled
Report Generator 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
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Use risk-free rate in probabilistic Sharpe ratio * Extend risk free rate to live report PSR and fix probabilistic sharpe ratio tests * Update regression statistics * Update test regression statistics * Add test asserting Sharpe ratio and PSR consistency * Use excess returns for live report Sharpe and PSR --------- Co-authored-by: Kevin-Li-2025 <2242139@qq.com> |
||
|
|
a4bea040d3 |
Auto-subscribe symbols when registering indicators and consolidators (#9582)
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
Registering an indicator or consolidator for a symbol that had not been subscribed to threw 'Please register to receive data for symbol ...'. Order submission already auto-subscribes the symbol on the user's behalf; this applies the same behavior to indicator/consolidator registration. GetSubscription now adds the security automatically when it has no subscription (guarded by the shared CanAutoAddSecurity check, which is also used by order submission) before falling back to the error. The subscription lookup is exposed via a TryGetSubscription out-parameter helper. |
||
|
|
77caa034e3 |
Add Python version of IndicatorVolatilityModelAlgorithm (#9580)
Port the C# regression algorithm demonstrating IndicatorVolatilityModel usage, including how to reset and warm up the indicator on splits and dividends to avoid volatility jumps from price discontinuities, and enable the Python variant in the regression test suite. Closes #6375 Claude-Session: https://claude.ai/code/session_01R7LGdW3eC9za8WMrtssHGr Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|
|
d0a0ab8935 |
Update QuantConnect.pythonnet to 2.0.56 (#9581)
Report Generator Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
|
||
|
|
d04e46784c |
Revert "Update QuantConnect.pythonnet to 2.0.55 (#9577)" (#9579)
Benchmarks / build (push) Has been cancelled
API Tests / 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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
This reverts commit
|
||
|
|
e5a3ab476d |
Update QuantConnect.pythonnet to 2.0.55 (#9577)
API Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
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
|
||
|
|
eb12c8fa65 |
Seed runtime-added currency conversion rates immediately (#9568)
* Seed runtime-added currency conversion rates immediately Fixes the spurious 'The conversion rate for <currency> is not available' runtime error caused by a two-path seeding asymmetry. The setup path (BaseSetupHandler.SetupCurrencyConversions) wires up a currency's conversion feed AND seeds its rate via history/last-known-price so the rate is non-zero right away. The runtime path (UniverseSelection.EnsureCurrencyDataFeeds, invoked during universe selection / SetCash mid-run) only created the conversion subscription and left the rate at 0 until the first bar of the pair arrived. Any conversion in that gap (classically a midnight scheduled SetHoldings firing before the day's first conversion-pair bar) threw. EnsureCurrencyDataFeeds now seeds newly introduced, still-zero-rate conversion securities and calls cash.Update(), mirroring the setup path. Seeding is gated behind a seedNewCurrencies flag (default true) so the setup caller, which performs its own optionally white-listed seeding, can opt out and not regress white-list semantics. SeedSecurities degrades gracefully when no history/data is available, leaving the rate at 0 as before, so live mode and no-history scenarios are safe. Adds a regression test exercising the runtime path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Make runtime currency seeding robust and fix regression expectation CI failures from the runtime currency-conversion seeding change: 1. AlgorithmWarmupTests.WarmUpInternalSubscriptions threw ArgumentNullException because the new EnsureCurrencyDataFeeds seeding path ran GetLastKnownPrices in a stub where the conversion security lacked SymbolProperties. Pre-seeding is best-effort and must never break the algorithm, so wrap it in try/catch and degrade gracefully (leave the rate at 0, the pre-fix behavior) - matching the documented intent. The first conversion-pair bar still updates the rate. 2. ScheduledUniverseSelectionModelRegressionAlgorithm (C# + Python) asserted AlgorithmHistoryDataPoints == 0. The algorithm runtime-adds Forex pairs (EURGBP -> GBP cash) via scheduled universe selection; the fix now correctly seeds that runtime currency's conversion rate with a last-known-price history request (deterministically 50 points). The old 0 reflected the buggy unseeded behavior, so update the expectation to 50. No other statistics changed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Seed runtime added currency conversion rates * Seed currencies with no new conversion feed and dedup the seeding helper --------- Co-authored-by: Martin-Molinero <Martin-Molinero@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
a565dfa6f0 |
Wait for fresh data before filling market orders on stale data (#9563)
* Wait for first session bar before filling equity market orders at open EquityFillModel.MarketFill could fill a market order placed right after market open using data from the previous trading date, because the first bar of the current session has not been emitted yet. ShouldWaitForFreshData only covered hour/daily resolutions, so minute/second orders filled on stale prices. Add IsWithinFirstResolutionSpanAfterMarketOpen: when the order time is within the lowest subscribed resolution span after the open and the price is stale, wait for the first bar instead of filling on the previous date's price. * Share opening-bar stale-fill wait across fill models Move IsWithinFirstResolutionSpanAfterMarketOpen to the base FillModel and add a ShouldWaitForFreshDataOnStale sibling helper that combines it with the existing coarse-resolution ShouldWaitForFreshData check. The base FillModel, FutureFillModel and EquityFillModel market fills now share this single wait decision at their stale-data guards. ShouldWaitForFreshData is intentionally left untouched at its GetMarketFillPrice call site, which uses it to choose the bar open vs current price and is not gated by staleness, so fill prices for finer resolutions are unchanged. The opening-bar helper is guarded against always-open markets, which have no session open to wait for. * Add regression algorithm for stale fill at market open Reproduces the opening-bar stale fill issue: a market order placed one second after the open while subscribed to minute resolution. Without the fix the order fills on the previous trading date's stale price; the algorithm asserts in OnOrderEvent that a fill never happens within the first minute after the open, so it errors without the fix and passes with it. Uses SPY minute data over 2013-10-07 to 2013-10-11, which is available in the repository Data folder. * Add unit tests for stale fill wait at market open Cover the opening-bar stale fill scenario directly at the fill model level: a market order placed within the first bar after the session open, while only the previous session's stale bar is available, must wait instead of filling on the stale price, and fills once the first session bar arrives. EquityFillModel also asserts the boundary (orders past the first bar still fill on stale data), and FutureFillModel covers the shared base helper from the future path. * Generalize stale market-order fill wait to any time of day Replace the market-open-specific wait with a generic check: a market order that would be filled on stale data waits for fresh data when the latest available data is more than one subscribed resolution bar behind the current time. This no longer considers the market open explicitly; it covers the opening bar (the first session bar has not been emitted yet) and any intraday data gap larger than the resolution. ShouldWaitForFreshDataOnStale now takes the latest data end time and the current time instead of the order time, and is shared by FillModel, FutureFillModel and EquityFillModel. Coarse resolutions (hour/daily) still always wait; tick never waits. Internal configurations are included when sizing the resolution bar. EquityFillModel's best-effort price helpers now report the stale data end time so the gap can be measured. Tests: EquityFillModelTests and FutureFillModelTests cover the market-open and mid-session stale cases (wait then fill on fresh data) plus the within-one-bar boundary (fill on stale). The regression algorithm is generalized to assert no fill happens on data staler than the resolution, with orders at the open and mid-session. Pre-existing plumbing/data-selection tests that used degenerate timestamps were given fresh timestamps so they still exercise their original intent. * Add sample data and adjust regression algorithms for stale-fill wait Add minute/daily sample data so market orders that now wait for fresh data can fill (ES futures gap days, TWX/GOOG equities and options, SPXW weeklies, GC futures/options copy for 2020-01-06). Adjust a few regression algorithms to the deferred-fill behavior: cap orders in the extended-market continuous future test, ignore daily-resolution SPY in the automatic-seed data checks, and refresh OptionAssignmentStatistics expected constants. * Update regression expected statistics for stale-fill wait Regenerate ExpectedStatistics, DataPoints and AlgorithmHistoryDataPoints for the regression algorithms affected by the wait-for-fresh-data fill change and the added sample data: futures/options fill-timing shifts, ES data-point count increases, and GOOG 2015-12-28 outcome changes. * Trim SPXW sample data to expiries within filter window The two SPXW algorithms filter with Expiration(0,7), so contracts expiring more than a week out are never subscribed. Drop those far-dated expiries from the 2021-01-06/08 minute files (760KB->108KB and 776KB->108KB on the quote files). Fills, DataPoints and statistics are unchanged; both regression tests still pass. * Trim ES minute and GOOG option sample data to order-fill minimum The ES minute gap-day files source no order fills (daily-resolution algos fill from es_daily); keep only the front contract used for execution and drop the unused back-month contracts. Trim the GOOG 2015-12-28 option file (no fill depends on it) to the morning chain window. Regenerate the back-month futures statistics affected by the dropped back-month bars. Full CSharp regression suite passes (722/722). * Use SMA gap threshold in BasicTemplateContinuousFuture for C#/Python parity At a fast/slow SMA cross the two averages can coincide to within rounding noise, where the C# (decimal) and Python (double) comparisons disagree, producing different orders between languages. Require a minimum gap before acting on a cross so both languages stay in lockstep, and update the shared expected statistics accordingly. * Mirror order cap in Python algorithm and update future history counts Apply the same pre-2013-11-12/3-order cap to the Python BasicTemplateContinuousFutureWithExtendedMarket algorithm for C#/Python parity, and update the QuantBook future-history expected counts to reflect the added ES sample data. * Use SMA gap threshold in BasicTemplateContinuousFutureWithExtendedMarket for C#/Python parity This algorithm had the same fast/slow SMA cross divergence already fixed in BasicTemplateContinuousFutureAlgorithm (ad8fc33): at the 2013-10-29 cross the two averages coincide to within rounding noise (C# decimal diff -1e-25, Python double diff exactly 0.0), so the raw `_fast > _slow` / `_fast < _slow` comparisons disagree between languages. C# fired a liquidate+rebuild that Python skipped, producing 5 orders in C# vs 3 in Python. Require a minimum 0.001 gap before acting on a cross so both languages stay in lockstep, and regenerate the shared expected statistics (Total Orders 5 -> 3). * Document SMA cross threshold as a C#/Python parity workaround Add a short note before the fast/slow SMA comparisons in both continuous-future template algorithms clarifying that the minimum-gap threshold exists only so the C# and Python versions take the exact same trades on the limited sample data in the repository, where decimal vs double rounding can disagree at a cross. * Fetch subscription configs once per equity market fill MarketFill resolved the subscription configs twice per fill: once via the best-effort price helpers (GetSubscribedTypes) and again via ShouldWaitForFreshDataOnStale. Fetch them once and thread them through both paths via optional parameters, leaving existing callers unchanged. * Measure stale-fill wait against order submission time ShouldWaitForFreshDataOnStale compared the latest data end time against the security current time. Compare against the order submission time instead so the decision to wait for fresh data reflects how stale the data is relative to when the order was placed. Realign the stale-price warning fill test accordingly. * Fix stale market data in SendingNewOrderFromOnOrderEvent test The market price tick was timestamped a day before the order submission time, so under the order-time staleness check the market orders waited for fresh data instead of filling. Use a reference time with the tick one minute before the order so the data is fresh and the orders fill. * Centralize internal-inclusive subscription config lookup in fill models ShouldWaitForFreshDataOnStale re-resolved the subscription configs through the ShouldWaitForFreshData call it makes first, and GetMarketFillPrice did the same. Thread the already-fetched configs through ShouldWaitForFreshData and GetMarketFillPrice so each market fill resolves them at most once. Add a GetSubscriptionDataConfigs(Security) helper on the base FillModel that returns the internal-inclusive configs, and route every fill-model call site through it to remove the duplicated lookup and repeated comment. * Avoid list allocation in ShouldWaitForFreshData Replace the Where(...).ToList() + All(...) with a single foreach over the subscription configs, short-circuiting on the first non-coarse resolution. |
||
|
|
17858bada8 |
Make CustomDataPropertiesRegressionAlgorithm deterministic (#9559)
Syntax Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / 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
Report Generator Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
* Use local data source in CustomDataPropertiesRegressionAlgorithm * Use crypto data source instead of equity |
||
|
|
5f29882b05 |
Assert fill price and fresh hour bar in stale price regression algorithm (#9550)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
HourResolutionMarketOrderStalePriceRegressionAlgorithm now asserts the order fills at the next hour bar's close price (not the stale previous bar nor the open), and that the fill bar is a real, freshly closed 11:00 bar rather than a fill-forwarded repeat. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
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> |
||
|
|
7821b02980 |
Market hours aware intraday consolidation (#9530)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add market-hours aware intraday consolidation to MarketHourAwareConsolidator * Minor fix * Address review comments * Assert consolidated bar size in regression algorithms * Move MarketHourAwareConsolidator to Data.Consolidators namespace * Remove accidentally committed log file * Keep MarketHourAwareConsolidator in Data.Common namespace * Move MarketHourAwareConsolidator to Data.Consolidators namespace |
||
|
|
62d63010ab |
Convert daily resolution market orders to MarketOnClose/MarketOnOpen (#9534)
Python Virtual Environments / 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
Syntax Tests / build (push) Has been cancelled
* Convert daily resolution market orders to MarketOnClose/MarketOnOpen A market order placed intraday (e.g. through a scheduled event) on an asset subscribed only at daily resolution has no fresh intraday price to fill against, so it was filling at the stale previous daily close. This is common when mixing daily resolution assets with minute resolution assets or intraday scheduled events. QCAlgorithm.MarketOrder now converts these orders so they fill at a real daily open/close instead of the stale previous close: - market closed (any resolution): MarketOnOpen, as before - market open, daily-only subscription: MarketOnClose (today's close), or MarketOnOpen (next open) when already within the MarketOnClose submission buffer near the close Assets with intraday data are left untouched, and the conversion is only applied in backtesting; in live trading an open-market market order fills at the real current price. Adds DailyResolutionMarketOrderConversionRegressionAlgorithm covering the MarketOnClose and MarketOnOpen conversion paths plus a minute resolution asset that is correctly left as a regular market order. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Minor fix * Reword conversion warning: "current market price" instead of "real current price" Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Update regression stats affected by daily market order conversion Daily-resolution market orders placed intraday are now converted to MarketOnClose/MarketOnOpen so they fill at a real daily open/close instead of the stale previous close. This shifts the affected fills: - IndexOptionCall{ITM,OTM}ExpiryDaily: the SPX option entry, placed one minute after the open, now fills at the daily close. Same economics, one extra data point and a new order list hash. - AllShortableSymbols (C# + Python): an intraday order's type changed from Market to a converted order; identical End Equity, new hash. - ResolutionSwitchingAlgorithm sampling test: the RemoveSecurity liquidation (fired at 15:50) previously filled at the stale previous close; it now converts, shifting the equity/performance samples. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Revert expected data point count change --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|
|
affb275758 |
Revert "Market-hours aware intraday consolidation (#9516)" (#9528)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
This reverts commit
|
||
|
|
9b89c166ff |
Market-hours aware intraday consolidation (#9516)
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Python Virtual Environments / 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
Syntax Tests / build (push) Has been cancelled
* Add market-hours aware intraday consolidation to MarketHourAwareConsolidator * Minor fix * Address review comments * Assert consolidated bar size in regression algorithms * Move MarketHourAwareConsolidator to Data.Consolidators namespace * Remove accidentally committed log file * Keep MarketHourAwareConsolidator in Data.Common namespace |
||
|
|
a2537513bd |
Fix ScheduledUniverse emitting triggers past end time (#9490)
Benchmarks / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Fix ScheduledUniverse emitting triggers past end time * Minor fix |
||
|
|
9046162f77 |
Fix OnWarmupFinished algorithm time alignment (#9445)
* Align OnWarmupFinished time to StartDate when ScheduledUniverse skips midnight * Align algorithm time to StartDate before OnWarmupFinished fires * Apply warmup time alignment fix to LiveSynchronizer * Minor fix * Skip warmup pulse if algorithm not locked * Fix OnWarmupFinished timing in live trading |
||
|
|
0df0e67cd1 |
Add deterministic counter to universe symbol ticker for stable sort order (#9487)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
|
||
|
|
3806e81388 |
Add Count property to MemoizingEnumerable (#9468)
Python Virtual Environments / 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
Syntax Tests / build (push) Has been cancelled
* Add Count property to MemoizingEnumerable * Update Pythonnet version to 2.0.54 |
||
|
|
421d3c3448 |
Fix RollingWindow element order corruption on resize (#9449)
Benchmarks / 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
Build & Test Lean / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
* Fix RollingWindow resize * Fix MarketImpactSlippageModel * Reorder RollingWindow list in place |
||
|
|
7602c5bde0 |
Fix DataManager creating invalid data type subscriptions (#9379)
API Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Fix DataManager skipping invalid data type subscriptions * Update regression algorithms * Use effective resolution when looking up subscription data types |
||
|
|
9b2a793709 |
fix: support BNFCR alternative collateral in CryptoFutureMarginModel for Binance (#9373)
* fix: support BNFCR alternative collateral in CryptoFutureMarginModel for Binance (#9339) * refactor: use classic switch in BinanceFuturesBrokerageModel.GetBuyingPowerModel * fix: CryptoFutureMarginModel in BinanceCoinFuturesBrokerageModel * refactor: simplify BinanceCryptoFutureMarginModel collateral conversion * fix: restore IsCryptoCoinFuture guard in BinanceCryptoFutureMarginModel * refactor: simplify BinanceCryptoFutureMarginModel to direct BNFCR lookup Replace IsStableCoinWithoutPair foreach loop with a single TryGetValue check for BNFCR. BNFCR is EU/EEA-only (MiCA Credits Trading Mode) so the lookup is a no-op for all other users. Amount reflects availableBalance from the Binance API — the total cross-margin pool already aggregated by Binance — making the > 0 guard correct and avoiding CashBook iteration. * feat: add regression algorithm for BNFCR as sole collateral on Binance USDⓈ-M futures Asserts end-to-end that EU/MiCA accounts with zero USDT and BNFCR as the only collateral can open ADAUSDT positions. Verifies buying power, holdings AbsoluteHoldingsCost, TotalSaleVolume, TotalMarginUsed, maintenance margin consistency and TotalUnrealizedProfit accuracy. * refactor: BNFCR presence gate with CashBook iteration for supplementary collateral Replace IsStableCoinWithoutPair and hardcoded asset list with CashBook iteration gated by BNFCR presence. Binance controls which assets are in the account — all with non-zero walletBalance are valid collateral. Add tests for BNFCR zero balance and BTC collateral conversion. * refactor: aggregate all collateral without reference equality check * fix: shared collateral deduction across quote currencies for EU/MiCA BNFCR mode - Extract virtual SharesCollateral in CryptoFutureMarginModel - Override in BinanceCryptoFutureMarginModel: BNFCR present → all USDⓈ-M share pool - Add BNFCRCurrency const - Add SharedCollateralDeductsMaintenanceMarginAcrossQuoteCurrencies unit test - Refactor regression algorithm to assert shared collateral across ADAUSDT/ETHUSDC * refactor: remove dead IsCryptoCoinFuture guard from BinanceCryptoFutureMarginModel - Remove IsCryptoCoinFuture() check (coin futures use BinanceCoinFuturesBrokerageModel, not this model) - Call base.GetTotalCollateralAmount() instead of duplicating primaryCollateral.Amount - Remove CoinFutureDoesNotIncludeBnfcrAsCollateral test (tested wrong margin model) * refactor: make GetCollateralCash private in CryptoFutureMarginModel - No longer accessed by subclasses after removing direct collateral checks from BinanceCryptoFutureMarginModel |
||
|
|
9ccdbec8ee |
Add ContractMultiplier setter to Cfd via CfdSymbolProperties (#9328)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add ContractMultiplier setter to Cfd via CfdSymbolProperties * Fix regression tests * Solve review comments * Address new review comments * Fix regression tests * Use ContractSymbolProperties as base class * Minor fix * Address review comment |
||
|
|
cefa6341f4 |
Source option price model data from securities instead of slice (#9315)
API Tests / build (push) Has been cancelled
Build & Test Lean / build (push) Has been cancelled
Benchmarks / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Source option price model data from securities instead of slice * Remove symbols caching and cleanup * Cleanup |
||
|
|
04993e2e2a |
Add securities when trading non added securities (#9312)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add securities when trading non added securities * Minor tests fixes * Minor test fix * Minor test fixes * Minor fixes * Minor test fix * Minor fix |
||
|
|
9573eea52e |
Use universe settings when adding derivatives (#9309)
* Use universe settings when adding derivatives Use resolution, fill forward and extended market hours settings from universe settings when adding derivative securities (options, index options, futures and future options) * Minor python syntax check fix * Minor change * Default resolution from universe settings for common lean types securities * Minor test fix * Cleanup |
||
|
|
150dac5086 |
Update Pythonnet version to 2.0.53 (#9303)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Update Pythonnet version to 2.0.53 * Minor python syntax fix |
||
|
|
7333dd3505 |
Ensure AdvanceTime() runs only after full algorithm initialization (#9284)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Initial solution * Add regression algorithm * Solve review comments * Fix failing unit tests * Improve comments * Solve review comments * Update regression algo * Minor fix |
||
|
|
e68ee853db |
Implement indicator-based option price model (#9237)
API Tests / build (push) Has been cancelled
Benchmarks / 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
Regression Tests / build (push) Has been cancelled
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
* Implement indicator-based option price model This model uses IV and Greeks indicators to implement Lean's own option pricing model * Minor fixes * Address peer review * Minor tests fixes * Make the indicator based price model the default for options * Address peer review * Cleanup and minor changes * Support indicators configuration for new pricing model * Some cleanup * Add QL option price model example algorithm * Return lean models from static helpers * Minor tests fixes * Minor test fixes * Address peer review * Cleanup * Fix unit tests * Move QL models to OptionPriceModels.QuantLib.* * Add forward tree helper method |
||
|
|
a25e041793 |
Follow up: Fix weights calculation in VBaseSignalExport (#9281)
* Fix weights calculation in VBaseSignalExport * fix empty portfolio handling * Refactored signal export to compute and export weights for all portfolio positions, not just update targets. * Update BuildCsv XML doc to clarify CSV output details * Clarify comments on portfolio value and empty weights * Stamp targets as is; we expect that users send all the weights they want to stamp. Extended the demo algorithm to use two positions to better demonstrate the intended usage of the VBaseSignalExport class. * Minor changes to address PR review comments. * Minor fix --------- Co-authored-by: vb-vlb <volodymyr@vbase.com> Co-authored-by: Volodymyr <vb-vlb@users.noreply.github.com> |
||
|
|
63209a3fd3 |
Add Python overload for OptionPriceModelResult (#9277)
Report Generator Tests / build (push) Has been cancelled
Research Regression Tests / build (push) Has been cancelled
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / 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
* Add python overload for OptionPriceModelResult constructor * Solve review comments * Update regression algorithms |
||
|
|
76e01bbc42 |
Adds support for custom option pricing models (#9270)
* Initial solution * Made Greeks a non-abstract class * Add regression algorithms * Solve review comments * Minor fix * Minor fix * Remove unnecessary imports * Fix issues with regression algorithms * Solve review comments |
||
|
|
2d64537711 | Minor regression algorithm fix (#9265) | ||
|
|
2504ddbb87 |
Add one time warning for daily consolidation (#9254)
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
Syntax Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
* Add warning for DailyConsolidationUseExtendedMarketHours mismatch * Solve review comments |
||
|
|
c6c4c1edec |
Fix fundamental security direct access timestamp (#9255)
Report Generator Tests / build (push) Has been cancelled
Syntax 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
Research Regression Tests / build (push) Has been cancelled
Python Virtual Environments / build (push) Has been cancelled
API Tests / build (push) Has been cancelled
- Fix the date used by fundamental data accessed directly through security. Updating regression algorithm asserting behavior |