From 9d229ef977cbb5f0eb8abf48ae0ce8a5e9b092c5 Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Thu, 26 Mar 2026 16:02:34 -0500 Subject: [PATCH 01/11] Use High/Low for drawdown calculation instead of close only prices --- Common/Statistics/AlgorithmPerformance.cs | 6 +- Common/Statistics/PortfolioStatistics.cs | 8 +- Common/Statistics/Statistics.cs | 90 +++++++++++++++++++++++ Common/Statistics/StatisticsBuilder.cs | 13 +++- 4 files changed, 109 insertions(+), 8 deletions(-) diff --git a/Common/Statistics/AlgorithmPerformance.cs b/Common/Statistics/AlgorithmPerformance.cs index 5b94c81b710d..06eaf1e7d55d 100644 --- a/Common/Statistics/AlgorithmPerformance.cs +++ b/Common/Statistics/AlgorithmPerformance.cs @@ -53,6 +53,7 @@ public class AlgorithmPerformance /// Number of losing transactions /// The risk free interest rate model to use /// The number of trading days per year + /// The OHLC equity series points used for drawdown calculation public AlgorithmPerformance( List trades, SortedDictionary profitLoss, @@ -64,12 +65,13 @@ public AlgorithmPerformance( int winningTransactions, int losingTransactions, IRiskFreeInterestRateModel riskFreeInterestRateModel, - int tradingDaysPerYear) + int tradingDaysPerYear, + List equityPoints = null) { TradeStatistics = new TradeStatistics(trades); PortfolioStatistics = new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, startingCapital, - riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions); + riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions, equityPoints); ClosedTrades = trades; } diff --git a/Common/Statistics/PortfolioStatistics.cs b/Common/Statistics/PortfolioStatistics.cs index 5f8ab2a807dd..a42b40eaa247 100644 --- a/Common/Statistics/PortfolioStatistics.cs +++ b/Common/Statistics/PortfolioStatistics.cs @@ -208,6 +208,7 @@ public class PortfolioStatistics /// If this and are null, they will be calculated from /// /// The number of losses + /// The OHLC equity series points used for drawdown calculation public PortfolioStatistics( SortedDictionary profitLoss, SortedDictionary equity, @@ -218,7 +219,8 @@ public PortfolioStatistics( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear, int? winCount = null, - int? lossCount = null) + int? lossCount = null, + List equityPoints = null) { StartEquity = startingCapital; EndEquity = equity.LastOrDefault().Value; @@ -314,7 +316,9 @@ public PortfolioStatistics( ValueAtRisk99 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.99d); ValueAtRisk95 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.95d); - var drawdownMetrics = Statistics.CalculateDrawdownMetrics(equity, 3); + var drawdownMetrics = equityPoints != null + ? Statistics.CalculateDrawdownMetrics(equityPoints, 3) + : Statistics.CalculateDrawdownMetrics(equity, 3); Drawdown = drawdownMetrics.Drawdown; DrawdownRecovery = drawdownMetrics.DrawdownRecovery; } diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index da5813eb04f4..58dcaec33dbd 100644 --- a/Common/Statistics/Statistics.cs +++ b/Common/Statistics/Statistics.cs @@ -312,6 +312,96 @@ public static DrawdownMetrics CalculateDrawdownMetrics(SortedDictionary + /// Calculates the maximum drawdown and recovery time using OHLC equity series points. + /// Uses High for peak tracking and Low for drawdown measurement. + /// + /// Time series of equity OHLC data points + /// Number of decimals to round the results to + /// A object containing MaxDrawdown (percentage) and MaxRecoveryTime (in days) + public static DrawdownMetrics CalculateDrawdownMetrics(IEnumerable equityPoints, int rounding = 2) + { + decimal maxDrawdown = 0m; + decimal maxRecoveryTime = 0m; + + try + { + var pointsList = equityPoints?.ToList(); + if (pointsList == null || pointsList.Count < 2) return new DrawdownMetrics(0m, 0); + + var peakEquity = GetHigh(pointsList[0]); + var peakDate = pointsList[0].Time; + DateTime? drawdownStartDate = null; + + foreach (var point in pointsList) + { + var high = GetHigh(point); + var low = GetLow(point); + + // Update peak equity using the high price + if (high >= peakEquity) + { + // If we were in a drawdown, calculate recovery time + if (drawdownStartDate.HasValue) + { + var recoveryDays = (decimal)(point.Time - drawdownStartDate.Value).TotalDays; + maxRecoveryTime = Math.Max(maxRecoveryTime, recoveryDays); + drawdownStartDate = null; + } + peakEquity = high; + peakDate = point.Time; + } + + // Calculate current drawdown from peak using the low price + var currentDrawdown = (low / peakEquity) - 1; + if (currentDrawdown < 0) + { + maxDrawdown = Math.Min(maxDrawdown, currentDrawdown); + + // Mark the start of the drawdown period + if (!drawdownStartDate.HasValue) + { + drawdownStartDate = peakDate; + } + } + } + + // Return absolute drawdown percentage and max recovery time in days + return new DrawdownMetrics(Math.Round(Math.Abs(maxDrawdown), rounding), (int)maxRecoveryTime); + } + catch (Exception err) + { + Log.Error(err); + return new DrawdownMetrics(0m, 0); + } + } + + private static decimal GetHigh(ISeriesPoint point) + { + if (point is Candlestick candlestick) + { + return candlestick.High ?? candlestick.Close ?? 0m; + } + if (point is ChartPoint chartPoint) + { + return chartPoint.y ?? 0m; + } + return 0m; + } + + private static decimal GetLow(ISeriesPoint point) + { + if (point is Candlestick candlestick) + { + return candlestick.Low ?? candlestick.Close ?? 0m; + } + if (point is ChartPoint chartPoint) + { + return chartPoint.y ?? 0m; + } + return 0m; + } } // End of Statistics } // End of Namespace diff --git a/Common/Statistics/StatisticsBuilder.cs b/Common/Statistics/StatisticsBuilder.cs index 7fd403b6e0ef..97aa33a6fc2d 100644 --- a/Common/Statistics/StatisticsBuilder.cs +++ b/Common/Statistics/StatisticsBuilder.cs @@ -69,9 +69,9 @@ public static StatisticsResults Generate( var firstDate = equity.Keys.FirstOrDefault().Date; var lastDate = equity.Keys.LastOrDefault().Date; - var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, + var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equity, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); - var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, + var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equity, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); var summary = GetSummary(totalPerformance, estimatedStrategyCapacity, totalFees, totalOrders, accountCurrencySymbol); @@ -86,6 +86,7 @@ public static StatisticsResults Generate( /// The list of closed trades /// Trade record of profits and losses /// The list of daily equity values + /// The list of OHLC equity series points used for drawdown calculation /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -102,6 +103,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( List trades, SortedDictionary profitLoss, SortedDictionary equity, + List pointsEquity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -118,6 +120,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( return new AlgorithmPerformance(); } + var periodEquityPoints = pointsEquity?.Where(x => x.Time.Date >= fromDate && x.Time.Date < toDate.AddDays(1)).ToList(); var periodTrades = trades.Where(x => x.ExitTime.Date >= fromDate && x.ExitTime < toDate.AddDays(1)).ToList(); var periodProfitLoss = new SortedDictionary(profitLoss.Where(x => x.Key >= fromDate && x.Key.Date < toDate.AddDays(1)).ToDictionary(x => x.Key, y => y.Value)); var periodWinCount = transactions.WinningTransactions.Count(x => x.Key >= fromDate && x.Key.Date < toDate.AddDays(1)); @@ -145,7 +148,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( var runningCapital = equity.Count == periodEquity.Count ? startingCapital : periodEquity.Values.FirstOrDefault(); return new AlgorithmPerformance(periodTrades, periodProfitLoss, periodEquity, portfolioTurnover, listPerformance, listBenchmark, - runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear); + runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear, periodEquityPoints); } /// @@ -156,6 +159,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( /// The list of closed trades /// Trade record of profits and losses /// The list of daily equity values + /// The list of OHLC equity series points used for drawdown calculation /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -172,6 +176,7 @@ private static Dictionary GetRollingPerformances( List trades, SortedDictionary profitLoss, SortedDictionary equity, + List pointsEquity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -190,7 +195,7 @@ private static Dictionary GetRollingPerformances( foreach (var period in ranges) { var key = $"M{monthPeriod}_{period.EndDate.ToStringInvariant("yyyyMMdd")}"; - var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, equity, pointsPerformance, + var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, equity, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); rollingPerformances[key] = periodPerformance; } From 83551bab8d597a69d91441b1116361c8fb9962e6 Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 27 Mar 2026 12:02:08 -0500 Subject: [PATCH 02/11] Unify drawdown calculation --- Common/Statistics/PortfolioStatistics.cs | 5 +- Common/Statistics/Statistics.cs | 62 ------------------- .../MaxDrawdownRecoveryReportElement.cs | 5 +- .../MaxDrawdownReportElement.cs | 5 +- .../Statistics/DrawdownRecoveryTests.cs | 43 +++++++++++-- 5 files changed, 47 insertions(+), 73 deletions(-) diff --git a/Common/Statistics/PortfolioStatistics.cs b/Common/Statistics/PortfolioStatistics.cs index a42b40eaa247..fb94f183df07 100644 --- a/Common/Statistics/PortfolioStatistics.cs +++ b/Common/Statistics/PortfolioStatistics.cs @@ -316,9 +316,8 @@ public PortfolioStatistics( ValueAtRisk99 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.99d); ValueAtRisk95 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.95d); - var drawdownMetrics = equityPoints != null - ? Statistics.CalculateDrawdownMetrics(equityPoints, 3) - : Statistics.CalculateDrawdownMetrics(equity, 3); + var points = equityPoints ?? equity.Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, kvp.Value)).ToList(); + var drawdownMetrics = Statistics.CalculateDrawdownMetrics(points, 3); Drawdown = drawdownMetrics.Drawdown; DrawdownRecovery = drawdownMetrics.DrawdownRecovery; } diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index 58dcaec33dbd..dd2324cfb0f6 100644 --- a/Common/Statistics/Statistics.cs +++ b/Common/Statistics/Statistics.cs @@ -251,68 +251,6 @@ public static decimal DrawdownPercent(decimal current, decimal high, int roundin return Math.Round(drawdownPercentage, roundingDecimals); } - /// - /// Calculates the maximum drawdown percentage and the maximum recovery time (in days) - /// from a historical equity time series. - /// - /// Time series of equity values indexed by date - /// Number of decimals to round the results to - /// A object containing MaxDrawdown (percentage) and MaxRecoveryTime (in days) - public static DrawdownMetrics CalculateDrawdownMetrics(SortedDictionary equityOverTime, int rounding = 2) - { - decimal maxDrawdown = 0m; - decimal maxRecoveryTime = 0m; - - try - { - if (equityOverTime.Count < 2) return new DrawdownMetrics(0m, 0); - - var equityList = equityOverTime.ToList(); - - var peakEquity = equityList[0].Value; - var peakDate = equityList[0].Key; - DateTime? drawdownStartDate = null; - - foreach (var point in equityList) - { - // Update peak equity if a new high is reached (or matched) - if (point.Value >= peakEquity) - { - // If we were in a drawdown, calculate recovery time - if (drawdownStartDate.HasValue) - { - var recoveryDays = (decimal)(point.Key - drawdownStartDate.Value).TotalDays; - maxRecoveryTime = Math.Max(maxRecoveryTime, recoveryDays); - drawdownStartDate = null; - } - peakEquity = point.Value; - peakDate = point.Key; - } - - // Calculate current drawdown from peak - var currentDrawdown = (point.Value / peakEquity) - 1; - if (currentDrawdown < 0) - { - maxDrawdown = Math.Min(maxDrawdown, currentDrawdown); - - // Mark the start of the drawdown period - if (!drawdownStartDate.HasValue) - { - drawdownStartDate = peakDate; - } - } - } - - // Return absolute drawdown percentage and max recovery time in days - return new DrawdownMetrics(Math.Round(Math.Abs(maxDrawdown), rounding), (int)maxRecoveryTime); - } - catch (Exception err) - { - Log.Error(err); - return new DrawdownMetrics(0m, 0); - } - } - /// /// Calculates the maximum drawdown and recovery time using OHLC equity series points. /// Uses High for peak tracking and Low for drawdown measurement. diff --git a/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs b/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs index 95590fa2be91..06617a2097c6 100644 --- a/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs +++ b/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs @@ -51,9 +51,10 @@ public override string Render() Result = backtestDrawdownRecovery; return backtestDrawdownRecovery?.ToStringInvariant() ?? "-"; } - var equityCurve = new SortedDictionary(DrawdownCollection.NormalizeResults(_backtestResult, _liveResult) + var equityCurve = DrawdownCollection.NormalizeResults(_backtestResult, _liveResult) .Observations - .ToDictionary(kvp => kvp.Key, kvp => (decimal)kvp.Value)); + .Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, (decimal)kvp.Value)) + .ToList(); var maxDrawdownRecovery = Statistics.Statistics.CalculateDrawdownMetrics(equityCurve).DrawdownRecovery; Result = maxDrawdownRecovery; diff --git a/Report/ReportElements/MaxDrawdownReportElement.cs b/Report/ReportElements/MaxDrawdownReportElement.cs index 9661e22aa465..8b7e2def8c9a 100644 --- a/Report/ReportElements/MaxDrawdownReportElement.cs +++ b/Report/ReportElements/MaxDrawdownReportElement.cs @@ -53,9 +53,10 @@ public override string Render() return backtestDrawdown?.ToString("P1") ?? "-"; } - var equityCurve = new SortedDictionary(DrawdownCollection.NormalizeResults(_backtest, _live) + var equityCurve = DrawdownCollection.NormalizeResults(_backtest, _live) .Observations - .ToDictionary(kvp => kvp.Key, kvp => (decimal)kvp.Value)); + .Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, (decimal)kvp.Value)) + .ToList(); var maxDrawdown = Statistics.Statistics.CalculateDrawdownMetrics(equityCurve).Drawdown; Result = maxDrawdown; diff --git a/Tests/Common/Statistics/DrawdownRecoveryTests.cs b/Tests/Common/Statistics/DrawdownRecoveryTests.cs index 792a29ee1967..0e125474167d 100644 --- a/Tests/Common/Statistics/DrawdownRecoveryTests.cs +++ b/Tests/Common/Statistics/DrawdownRecoveryTests.cs @@ -26,18 +26,53 @@ internal class DrawdownRecoveryTests public void DrawdownMetricsMaximumRecoveryTimeTests(List data, decimal expectedRecoveryTime) { var startDate = new DateTime(2025, 1, 1); - var equity = new SortedDictionary(); + var points = new List(); for (int i = 0; i < data.Count; i++) { - var value = data[i]; - equity[startDate.AddDays(i)] = value; + points.Add(new ChartPoint(startDate.AddDays(i), data[i])); } - var result = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(equity).DrawdownRecovery; + var result = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(points).DrawdownRecovery; Assert.AreEqual(expectedRecoveryTime, result); } + [Test] + public void CandlestickUsesHighForPeakAndLowForDrawdown() + { + // Day 2 High=105 sets the peak: Low=80 -> drawdown = (80/105) - 1 --> 0.24 + var startDate = new DateTime(2025, 1, 1); + + var points = new List + { + new Candlestick(startDate, 100m, 100m, 100m, 100m), + new Candlestick(startDate.AddDays(1), 95m, 105m, 80m, 95m), + new Candlestick(startDate.AddDays(2), 95m, 106m, 100m, 100m), + }; + + var metrics = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(points); + + Assert.AreEqual(0.24m, metrics.Drawdown); + } + + [Test] + public void CandlestickWithNullHighLowFallsBackToClose() + { + // When High/Low are null, Close is used for both peak and drawdown + var startDate = new DateTime(2025, 1, 1); + var points = new List + { + new Candlestick(startDate, null, null, null, 100m), + new Candlestick(startDate.AddDays(1), null, null, null, 90m), + new Candlestick(startDate.AddDays(2), null, null, null, 100m), + }; + + var metrics = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(points); + + Assert.AreEqual(0.1m, metrics.Drawdown); + Assert.AreEqual(2, metrics.DrawdownRecovery); + } + private static IEnumerable TestCases() { yield return new TestCaseData(new List { 100, 90, 100 }, 2m).SetName("RecoveryAfterOneDip2Days"); From 3fb6885121e7e70f11dfc52aa442c1c5da0366c3 Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 27 Mar 2026 13:01:26 -0500 Subject: [PATCH 03/11] Update regression algorithms --- .../AddBetaIndicatorNewAssetsRegressionAlgorithm.cs | 2 +- ...AddFutureOptionContractDataStreamingRegressionAlgorithm.cs | 2 +- ...dFutureOptionContractFromFutureChainRegressionAlgorithm.cs | 2 +- ...eOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/AddRiskManagementAlgorithm.cs | 2 +- .../AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs | 2 +- .../AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs | 2 +- .../AutomaticIndicatorWarmupRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs | 4 ++-- Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs | 2 +- ...asicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs | 4 ++-- ...asicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs | 4 ++-- .../BasicTemplateOptionsFilterUniverseAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs | 4 ++-- .../BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs | 2 +- .../Collective2PortfolioSignalExportDemonstrationAlgorithm.cs | 2 +- .../Collective2SignalExportDemonstrationAlgorithm.cs | 2 +- Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs | 2 +- Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs | 2 +- .../CompositeRiskManagementModelFrameworkAlgorithm.cs | 4 ++-- Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs | 2 +- Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs | 2 +- .../ContinuousBackMonthRawFutureRegressionAlgorithm.cs | 2 +- .../ContinuousFutureBackMonthRegressionAlgorithm.cs | 4 ++-- ...eOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs | 2 +- Algorithm.CSharp/CustomBenchmarkAlgorithm.cs | 2 +- .../CustomOptionExerciseModelRegressionAlgorithm.cs | 2 +- .../CustomPortfolioOptimizerRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs | 2 +- ...solidationExtendedMarketHoursWarningRegressionAlgorithm.cs | 2 +- ...FromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs | 2 +- ...utureLiquidateFromChainAndContinuousRegressionAlgorithm.cs | 2 +- .../DelistedFutureLiquidateRegressionAlgorithm.cs | 2 +- ...tingPortfolioConstructionModelFutureRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/EquityMarginCallAlgorithm.cs | 2 +- .../EquitySplitHoldingsMinuteRegressionAlgorithm.cs | 2 +- .../ExecutionModelOrderEventsRegressionAlgorithm.cs | 4 ++-- .../ExtendedMarketHoursHistoryRegressionAlgorithm.cs | 2 +- .../FutureChainInternalSubscriptionsRegressionAlgorithm.cs | 2 +- .../FutureOptionCallITMExpiryRegressionAlgorithm.cs | 2 +- .../FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs | 2 +- .../FutureOptionCallOTMExpiryRegressionAlgorithm.cs | 2 +- .../FutureOptionShortCallITMExpiryRegressionAlgorithm.cs | 2 +- .../FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs | 2 +- .../FutureOptionShortPutITMExpiryRegressionAlgorithm.cs | 2 +- .../FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs | 2 +- ...turesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs | 2 +- .../IndexOptionCallITMExpiryRegressionAlgorithm.cs | 2 +- .../IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs | 2 +- .../IndexOptionPutITMExpiryRegressionAlgorithm.cs | 2 +- .../IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs | 2 +- .../IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs | 4 ++-- Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs | 2 +- Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs | 4 ++-- Algorithm.CSharp/LimitFillRegressionAlgorithm.cs | 2 +- ...tOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs | 2 +- ...ualContinuousFuturesPositionRolloverRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs | 2 +- ...reSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs | 4 ++-- Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs | 2 +- .../NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs | 2 +- ...onExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs | 2 +- .../OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs | 4 ++-- Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs | 2 +- ...idateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/TimeInForceAlgorithm.cs | 2 +- Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs | 2 +- Tests/Common/ExtendedDictionaryTests.cs | 2 +- Tests/Python/PythonSliceGetByTypeTest.cs | 2 +- 90 files changed, 101 insertions(+), 101 deletions(-) diff --git a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs index 213ab2824913..6e68e180150f 100644 --- a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs @@ -145,7 +145,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$87000.00"}, {"Lowest Capacity Asset", "BTCUSD 2XR"}, {"Portfolio Turnover", "2.22%"}, - {"Drawdown Recovery", "139"}, + {"Drawdown Recovery", "138"}, {"OrderListHash", "896ecc92440d51ed26644aac5b8706e4"} }; } diff --git a/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs index 74193476069f..012ab35400da 100644 --- a/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs @@ -185,7 +185,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "5512.811%"}, - {"Drawdown", "1.000%"}, + {"Drawdown", "1.300%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "105332.8"}, diff --git a/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs index 68c7554e0b68..bdc29e328d2b 100644 --- a/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs @@ -114,7 +114,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "88398927.578%"}, - {"Drawdown", "5.200%"}, + {"Drawdown", "5.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "111911.55"}, diff --git a/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs index feae130a33c6..7c0ee3b74ba4 100644 --- a/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs @@ -241,7 +241,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "430.834%"}, - {"Drawdown", "4.200%"}, + {"Drawdown", "4.300%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "102313.03"}, diff --git a/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs b/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs index 673e7081c3f5..ce160d49a96a 100644 --- a/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs @@ -104,7 +104,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0.00%"}, {"Compounding Annual Return", "271.720%"}, - {"Drawdown", "2.500%"}, + {"Drawdown", "2.600%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101753.84"}, diff --git a/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs b/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs index ecb9cbd519b1..897ecb373c36 100644 --- a/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs @@ -131,7 +131,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0.46%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "296.356%"}, - {"Drawdown", "1.400%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101776.32"}, diff --git a/Algorithm.CSharp/AddRiskManagementAlgorithm.cs b/Algorithm.CSharp/AddRiskManagementAlgorithm.cs index d7aec7762d1d..66ad558ac917 100644 --- a/Algorithm.CSharp/AddRiskManagementAlgorithm.cs +++ b/Algorithm.CSharp/AddRiskManagementAlgorithm.cs @@ -105,7 +105,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$38000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.74%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "5d7657ec9954875eca633bed711085d3"} }; } diff --git a/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs b/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs index 275788988b89..69bf88639e40 100644 --- a/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs @@ -259,7 +259,7 @@ public Dictionary AllShortableSymbols(DateTime localTime) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "11.027%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "0.100%"}, {"Expectancy", "0"}, {"Start Equity", "10000000"}, {"End Equity", "10011469.88"}, diff --git a/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs b/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs index f6633f164a02..88985e2dd91a 100644 --- a/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs @@ -167,7 +167,7 @@ protected override decimal ComputeNextValue(QuoteBar input) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "733913.744%"}, - {"Drawdown", "15.900%"}, + {"Drawdown", "16.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "106827.7"}, diff --git a/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs b/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs index 47ff2f23905b..bac301eeb6cf 100644 --- a/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs @@ -151,7 +151,7 @@ protected override decimal ComputeNextValue(IReadOnlyWindow {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/BasicTemplateAlgorithm.cs b/Algorithm.CSharp/BasicTemplateAlgorithm.cs index 6829d12819ec..460137d0f222 100644 --- a/Algorithm.CSharp/BasicTemplateAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateAlgorithm.cs @@ -118,7 +118,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs b/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs index 1d46a1dfb256..108f5023c195 100644 --- a/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs @@ -90,7 +90,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "39.143%"}, - {"Drawdown", "0.500%"}, + {"Drawdown", "0.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100423.24"}, @@ -112,7 +112,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.98%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "8774049eb5141a2b6956d9432426f837"} }; } diff --git a/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs b/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs index 4791436519bf..b6cd7cc6d810 100644 --- a/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs @@ -138,7 +138,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "2.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "11.325%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "105549.6"}, diff --git a/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs index e606c0e79ce0..77594e111aeb 100644 --- a/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs @@ -144,7 +144,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "2.86%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "12.959%"}, - {"Drawdown", "1.100%"}, + {"Drawdown", "4.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "106337.1"}, diff --git a/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs index 968f8b3d7bcb..c8a25c036fc8 100644 --- a/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs @@ -108,7 +108,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -130,7 +130,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs index e0e3ecb90843..ff640196afe8 100644 --- a/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs @@ -52,7 +52,7 @@ public class BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm : BasicTem {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-92.667%"}, - {"Drawdown", "5.000%"}, + {"Drawdown", "5.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96685.76"}, diff --git a/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs b/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs index debaeb04cf9c..7e2a6137968c 100644 --- a/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs @@ -148,7 +148,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.08%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "603.355%"}, - {"Drawdown", "3.400%"}, + {"Drawdown", "3.600%"}, {"Expectancy", "0"}, {"Start Equity", "1000000"}, {"End Equity", "1064395"}, @@ -170,7 +170,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$3000.00"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "23.97%"}, - {"Drawdown Recovery", "9"}, + {"Drawdown Recovery", "0"}, {"OrderListHash", "4b560d2a8cfae510c3c8dc92603470fc"} }; } diff --git a/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs b/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs index 4950cff1c710..8de9eb4b0f60 100644 --- a/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs @@ -120,7 +120,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "-0.40%"}, {"Compounding Annual Return", "-20.338%"}, - {"Drawdown", "0.300%"}, + {"Drawdown", "0.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "99689"}, diff --git a/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs b/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs index fd2b14693819..2eda99e2426e 100644 --- a/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs @@ -67,7 +67,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.08%"}, {"Average Loss", "-0.01%"}, {"Compounding Annual Return", "602.278%"}, - {"Drawdown", "3.400%"}, + {"Drawdown", "3.600%"}, {"Expectancy", "677.669"}, {"Start Equity", "1000000"}, {"End Equity", "1064342.82"}, @@ -89,7 +89,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$3000.00"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "24.03%"}, - {"Drawdown Recovery", "9"}, + {"Drawdown Recovery", "0"}, {"OrderListHash", "691cf4990024b856a0a70255c9fd2545"} }; } diff --git a/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs b/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs index a61ceccf738e..91847e987450 100644 --- a/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs @@ -97,7 +97,7 @@ public IEnumerable CoarseSelector(IEnumerable coarse) {"Average Win", "0.00%"}, {"Average Loss", "-0.14%"}, {"Compounding Annual Return", "71.152%"}, - {"Drawdown", "1.100%"}, + {"Drawdown", "1.200%"}, {"Expectancy", "-0.797"}, {"Start Equity", "100000"}, {"End Equity", "100738.86"}, diff --git a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs index 7e4a1ab222be..cc519e57b8d3 100644 --- a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$260000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.00%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "006af1a065fca33ac1f1e9cd6bd02c11"} }; } diff --git a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs index 3db21ab2f84c..4a46427b52f5 100644 --- a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs @@ -214,7 +214,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$260000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.00%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "006af1a065fca33ac1f1e9cd6bd02c11"} }; } diff --git a/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs b/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs index 4eb147b0e9b4..27ca17ceb01e 100644 --- a/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs +++ b/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs @@ -200,7 +200,7 @@ private static void UpdateOrderTag(OrderTicket ticket, string tag, string errorM {"Estimated Strategy Capacity", "$210000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.89%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "8fba4f724843997ef421cf26ccabe51b"} }; } diff --git a/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs b/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs index b94aad588898..07e2aa85aec8 100644 --- a/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs @@ -90,7 +90,7 @@ public override void Initialize() {"Average Win", "0.01%"}, {"Average Loss", "-0.18%"}, {"Compounding Annual Return", "-35.728%"}, - {"Drawdown", "1.700%"}, + {"Drawdown", "1.800%"}, {"Expectancy", "-0.690"}, {"Start Equity", "100000"}, {"End Equity", "99436.42"}, diff --git a/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs b/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs index d4bdb22eba18..0ed906c78f5a 100644 --- a/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs @@ -84,7 +84,7 @@ public override void Initialize() {"Average Win", "1.05%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "227.385%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "0.361"}, {"Start Equity", "100000"}, {"End Equity", "101527.86"}, @@ -106,7 +106,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$23000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "139.03%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "fa7c51aaf284cdc29cb4c0ac8ebd5356"} }; } diff --git a/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs b/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs index d283378101e7..7e92bb7cf3cd 100644 --- a/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$45000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "ae4986890fe7ab09ddb93059888f34c0"} }; } diff --git a/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs b/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs index 297c560ebada..f6be9f9c9426 100644 --- a/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs @@ -210,7 +210,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "665.524%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "2.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109332.4"}, diff --git a/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs index 4801a5f69f24..fd9a14d65a79 100644 --- a/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs @@ -160,7 +160,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "2.968%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101483.2"}, diff --git a/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs index 0b2eeba0bc96..7addae3bedc5 100644 --- a/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs @@ -176,7 +176,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "4.603%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "102291.4"}, @@ -198,7 +198,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$230000000.00"}, {"Lowest Capacity Asset", "ES VP274HSU1AF5"}, {"Portfolio Turnover", "1.39%"}, - {"Drawdown Recovery", "16"}, + {"Drawdown Recovery", "51"}, {"OrderListHash", "6a5b2e6b3f140e9bb7f32c07cbf5f36c"} }; } diff --git a/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs index d4cfacd2674b..9ef273dbca46 100644 --- a/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs @@ -209,7 +209,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.800%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs index 6a9a7e210449..37d4d339904d 100644 --- a/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs @@ -194,7 +194,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.84%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "3.380%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101687.3"}, diff --git a/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs b/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs index edda49ed114a..3f5881a0881f 100644 --- a/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs @@ -171,7 +171,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$1400000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.23%"}, - {"Drawdown Recovery", "943"}, + {"Drawdown Recovery", "942"}, {"OrderListHash", "0422632afa17df1379757085f951de7b"} }; } diff --git a/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs b/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs index 2423bbc0972f..89672269ec1c 100644 --- a/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs +++ b/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs @@ -98,7 +98,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "272.157%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101694.38"}, diff --git a/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs b/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs index cb57aea29042..e97a6b25e048 100644 --- a/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs @@ -71,7 +71,7 @@ public override IEnumerable OptionExercise(Option option, OptionExer {"Average Win", "6.14%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "26116903817855100000000000000%"}, - {"Drawdown", "0.500%"}, + {"Drawdown", "16.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "257114"}, diff --git a/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs b/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs index 27adcaa4288e..b9b70336a9e9 100644 --- a/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs @@ -50,7 +50,7 @@ public double[] Optimize(double[,] historicalReturns, double[] expectedReturns = {"Average Win", "0%"}, {"Average Loss", "-0.14%"}, {"Compounding Annual Return", "773.203%"}, - {"Drawdown", "3.300%"}, + {"Drawdown", "3.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "103012.99"}, diff --git a/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs b/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs index 37fd51e4498f..85cbf9166c4a 100644 --- a/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs +++ b/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs @@ -209,7 +209,7 @@ public CSMAWithWarmUp(string name, int period) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "272.157%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101694.38"}, diff --git a/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs b/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs index 1c1e7e0e8798..13dee2075be3 100644 --- a/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs @@ -128,4 +128,4 @@ public override void OnEndOfAlgorithm() {"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"} }; } -} \ No newline at end of file +} diff --git a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs index cb08750a51df..bcf8a1f72a94 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs @@ -47,7 +47,7 @@ public class DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressi {"Average Win", "0%"}, {"Average Loss", "-5.18%"}, {"Compounding Annual Return", "-20.700%"}, - {"Drawdown", "6.400%"}, + {"Drawdown", "6.700%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "94817.53"}, diff --git a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs index 873f7a015838..2a22b8afe67b 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs @@ -167,7 +167,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.800%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs index f1294c24de1f..57532a018430 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs @@ -128,7 +128,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.800%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs b/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs index 5d48aea0079e..c3fa7e93e44b 100644 --- a/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs @@ -151,7 +151,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0.69%"}, {"Average Loss", "-2.47%"}, {"Compounding Annual Return", "-99.946%"}, - {"Drawdown", "28.600%"}, + {"Drawdown", "29.900%"}, {"Expectancy", "-0.680"}, {"Start Equity", "100000"}, {"End Equity", "90213.76"}, diff --git a/Algorithm.CSharp/EquityMarginCallAlgorithm.cs b/Algorithm.CSharp/EquityMarginCallAlgorithm.cs index 68fb3e00a8a7..3bb3d87324ca 100644 --- a/Algorithm.CSharp/EquityMarginCallAlgorithm.cs +++ b/Algorithm.CSharp/EquityMarginCallAlgorithm.cs @@ -127,7 +127,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-6.17%"}, {"Compounding Annual Return", "-100.000%"}, - {"Drawdown", "72.300%"}, + {"Drawdown", "73.000%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "50554.98"}, diff --git a/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs b/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs index 240ba4ee46c0..09fc907dbf75 100644 --- a/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs @@ -178,7 +178,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$41000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, {"Portfolio Turnover", "14.24%"}, - {"Drawdown Recovery", "4"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "5d7b0658b66b331ba8159011aa2ec5b4"} }; } diff --git a/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs b/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs index 4b3d550c0a6a..8859d9992974 100644 --- a/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs @@ -169,7 +169,7 @@ public override void OnOrderEvent(QCAlgorithm algorithm, OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -191,7 +191,7 @@ public override void OnOrderEvent(QCAlgorithm algorithm, OrderEvent orderEvent) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs b/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs index c8ba5c13d70c..b58dd06dd82b 100644 --- a/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs @@ -146,7 +146,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0.00%"}, {"Compounding Annual Return", "-73.997%"}, - {"Drawdown", "2.500%"}, + {"Drawdown", "2.600%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "98959.88"}, diff --git a/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs b/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs index cebfead3f25d..7fd4f77da720 100644 --- a/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs @@ -121,7 +121,7 @@ select futuresContract {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-98.880%"}, - {"Drawdown", "4.400%"}, + {"Drawdown", "4.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96375.06"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs index f569f7d2140e..862212b74f27 100644 --- a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs @@ -221,7 +221,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "2.28%"}, {"Average Loss", "-6.80%"}, {"Compounding Annual Return", "-9.373%"}, - {"Drawdown", "5.300%"}, + {"Drawdown", "5.500%"}, {"Expectancy", "-0.332"}, {"Start Equity", "100000"}, {"End Equity", "95323.58"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs index 0e680bf9f80d..a9e2754c9623 100644 --- a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -186,7 +186,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "16.44%"}, {"Average Loss", "-35.38%"}, {"Compounding Annual Return", "-44.262%"}, - {"Drawdown", "26.200%"}, + {"Drawdown", "26.800%"}, {"Expectancy", "-0.268"}, {"Start Equity", "100000"}, {"End Equity", "75242.9"}, diff --git a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs index 2225385ab1c4..a4706b8fb0c2 100644 --- a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs @@ -197,7 +197,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-3.85%"}, {"Compounding Annual Return", "-7.754%"}, - {"Drawdown", "4.300%"}, + {"Drawdown", "4.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "96148.58"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs index daf89dbb3b41..c12c9e8efc50 100644 --- a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.24%"}, {"Average Loss", "-6.46%"}, {"Compounding Annual Return", "6.498%"}, - {"Drawdown", "0.900%"}, + {"Drawdown", "3.900%"}, {"Expectancy", "0.292"}, {"Start Equity", "100000"}, {"End Equity", "103111.08"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs index d1e49db4e09d..bcf71170c074 100644 --- a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -189,7 +189,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.74%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "3.600%"}, - {"Drawdown", "0.300%"}, + {"Drawdown", "2.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101736.08"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs index 99a75a59b56e..b1921cc3b9e9 100644 --- a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs @@ -203,7 +203,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.89%"}, {"Average Loss", "-7.10%"}, {"Compounding Annual Return", "6.286%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0.267"}, {"Start Equity", "100000"}, {"End Equity", "103011.08"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs index 7fb1e141f109..4d32ae6158b4 100644 --- a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs @@ -188,7 +188,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "3.42%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "7.162%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "2.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "103423.58"}, diff --git a/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs b/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs index c2a0cecf9c1d..3357afa94d27 100644 --- a/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs @@ -101,7 +101,7 @@ select futuresContract {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-99.356%"}, - {"Drawdown", "4.500%"}, + {"Drawdown", "4.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96325.06"}, diff --git a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs index ab85a2583e82..b1c38f070935 100644 --- a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs @@ -199,7 +199,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.36%"}, {"Average Loss", "-10.99%"}, {"Compounding Annual Return", "-1.942%"}, - {"Drawdown", "2.000%"}, + {"Drawdown", "2.100%"}, {"Expectancy", "-0.028"}, {"Start Equity", "100000"}, {"End Equity", "98233.93"}, diff --git a/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs index 252e96ff0d3f..8a676e203b46 100644 --- a/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-4.59%"}, {"Compounding Annual Return", "-100.000%"}, - {"Drawdown", "33.200%"}, + {"Drawdown", "33.500%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "79014"}, diff --git a/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs index dd29a2052f9f..697bdb1e1c93 100644 --- a/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "9.07%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "243.722%"}, - {"Drawdown", "2.500%"}, + {"Drawdown", "2.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109074"}, diff --git a/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs index 680cc1108da2..9f9afc17d54f 100644 --- a/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -172,7 +172,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "4.97%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "99.378%"}, - {"Drawdown", "7.600%"}, + {"Drawdown", "7.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "104974"}, diff --git a/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs index c3ac8a75e13c..8c2da0a29ac1 100644 --- a/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-9.85%"}, {"Compounding Annual Return", "-77.114%"}, - {"Drawdown", "12.500%"}, + {"Drawdown", "12.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "90146"}, diff --git a/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs index b439ff57964b..7ef0bbf30de0 100644 --- a/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -184,7 +184,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.01%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "0.142%"}, - {"Drawdown", "0%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100010"}, diff --git a/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs index 76d7e117ecc3..07d5de8400a2 100644 --- a/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs @@ -183,7 +183,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.34%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "4.943%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "0.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100340"}, diff --git a/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs b/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs index af3fff18e5e1..76e05062f757 100644 --- a/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs +++ b/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs @@ -151,7 +151,7 @@ public void Score(InsightManager insightManager, DateTime utcTime) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -173,7 +173,7 @@ public void Score(InsightManager insightManager, DateTime utcTime) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs b/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs index 1dfbe9379159..615908a8d400 100644 --- a/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$45000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "ae4986890fe7ab09ddb93059888f34c0"} }; } diff --git a/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs b/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs index 3d0c40e319b8..264b3860a5c2 100644 --- a/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs @@ -101,7 +101,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "-0.12%"}, {"Compounding Annual Return", "239.838%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101576.33"}, @@ -123,7 +123,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$5600000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "379.43%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "b339a5e17142fe5496d80ee26079d8d0"} }; diff --git a/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs b/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs index 14b7da9f78e1..f75509112332 100644 --- a/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs @@ -121,7 +121,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "9.86%"}, - {"Drawdown Recovery", "0"}, + {"Drawdown Recovery", "1"}, {"OrderListHash", "b25621656830fb81b093f3c315830ea3"} }; } diff --git a/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs b/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs index a6473ce5c98e..bb2035b9a0b7 100644 --- a/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs @@ -134,7 +134,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-9.298%"}, - {"Drawdown", "2.500%"}, + {"Drawdown", "2.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "99866.4"}, diff --git a/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs b/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs index 278346447aff..f14a86a0f9d2 100644 --- a/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs @@ -125,7 +125,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.01%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "15.617%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107578.9"}, diff --git a/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs b/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs index 0ea745265122..5e9e966182df 100644 --- a/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs @@ -134,7 +134,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.39%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "1750.998%"}, - {"Drawdown", "5.500%"}, + {"Drawdown", "5.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "103801.65"}, diff --git a/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs b/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs index 125046779e53..167c338a9c02 100644 --- a/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs @@ -111,7 +111,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-0.626%"}, - {"Drawdown", "2.400%"}, + {"Drawdown", "2.800%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "99991.4"}, diff --git a/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs b/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs index 87d281eeccaa..450e7f1b828c 100644 --- a/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs @@ -42,7 +42,7 @@ public override void Initialize() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "39.100%"}, - {"Drawdown", "0.500%"}, + {"Drawdown", "0.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100422.84"}, @@ -64,7 +64,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.98%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "8774049eb5141a2b6956d9432426f837"} }; } diff --git a/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs b/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs index a3fd26998691..7c47273d5169 100644 --- a/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs @@ -120,7 +120,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "2.45%"}, {"Average Loss", "-1.97%"}, {"Compounding Annual Return", "9636.014%"}, - {"Drawdown", "9.800%"}, + {"Drawdown", "10.100%"}, {"Expectancy", "0.346"}, {"Start Equity", "100000"}, {"End Equity", "106028.40"}, diff --git a/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs b/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs index 014d53e53587..8a3c609c2adc 100644 --- a/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs @@ -107,7 +107,7 @@ public override void OnMarginCall(List requests) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-93.216%"}, - {"Drawdown", "7.100%"}, + {"Drawdown", "7.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96499.74"}, diff --git a/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs b/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs index ca64300ba9b4..a4b88df0f486 100644 --- a/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs @@ -102,7 +102,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$63000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "72d5203e9911bad556de371750fe0278"} }; } diff --git a/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs b/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs index ce3d2c31cb9a..a3970d0ea128 100644 --- a/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs +++ b/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs @@ -185,7 +185,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs b/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs index d4867599a759..bb6d49c97664 100644 --- a/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs @@ -133,7 +133,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.58%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "31.165%"}, - {"Drawdown", "0.300%"}, + {"Drawdown", "0.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101172"}, diff --git a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs index 4a0c6a701dfb..99db1b020912 100644 --- a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs @@ -181,7 +181,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-3.85%"}, {"Compounding Annual Return", "-7.754%"}, - {"Drawdown", "4.300%"}, + {"Drawdown", "4.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "96148.58"}, diff --git a/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs b/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs index 5fb54088b678..8442abac4bac 100644 --- a/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs @@ -102,7 +102,7 @@ private void PlaceTrade(string ticker) {"Average Win", "0.83%"}, {"Average Loss", "-0.90%"}, {"Compounding Annual Return", "273.871%"}, - {"Drawdown", "3.200%"}, + {"Drawdown", "3.300%"}, {"Expectancy", "0.203"}, {"Start Equity", "100000.00"}, {"End Equity", "101715.67"}, diff --git a/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs b/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs index 025f2876e038..e5462881f60b 100644 --- a/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs @@ -154,7 +154,7 @@ public override void Execute(QCAlgorithm algorithm, IPortfolioTarget[] targets) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -176,7 +176,7 @@ public override void Execute(QCAlgorithm algorithm, IPortfolioTarget[] targets) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "059f940ee51f03f94eb0f13ae4b93134"} }; } diff --git a/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs b/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs index e972576ae513..9b2edbb54636 100644 --- a/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs +++ b/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs @@ -181,7 +181,7 @@ protected override decimal ComputeNextValue(QuoteBar input) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "22662.692%"}, - {"Drawdown", "1.700%"}, + {"Drawdown", "2.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109332.4"}, diff --git a/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs b/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs index 555ab326fc74..a61f1e430ba7 100644 --- a/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs @@ -117,7 +117,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "45.475%"}, - {"Drawdown", "0.800%"}, + {"Drawdown", "1.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100497.59"}, diff --git a/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs index 431232cc467a..fa4bbfedd31b 100644 --- a/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs @@ -197,7 +197,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs b/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs index 6c604d4cf698..d494c9c5d557 100644 --- a/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs @@ -106,7 +106,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "307.471%"}, - {"Drawdown", "1.700%"}, + {"Drawdown", "1.800%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101031.62"}, diff --git a/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs b/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs index e693e8216605..52651ff55f3c 100644 --- a/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs @@ -98,7 +98,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs b/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs index 213f5dd97702..b65cda3392a4 100644 --- a/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs @@ -45,7 +45,7 @@ public override void OnData(Slice data) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "300.863%"}, - {"Drawdown", "2.100%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101791.04"}, diff --git a/Algorithm.CSharp/TimeInForceAlgorithm.cs b/Algorithm.CSharp/TimeInForceAlgorithm.cs index 6f18f8ca9fb7..198fd27945a6 100644 --- a/Algorithm.CSharp/TimeInForceAlgorithm.cs +++ b/Algorithm.CSharp/TimeInForceAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$44000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "0.87%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "a0588650916ed396fb5793375118e7b3"} }; } diff --git a/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs b/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs index b16825482d0d..33dcd30c2713 100644 --- a/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs +++ b/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs @@ -155,7 +155,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$410000.00"}, {"Lowest Capacity Asset", "BNO UN3IMQ2JU1YD"}, {"Portfolio Turnover", "601.23%"}, - {"Drawdown Recovery", "237"}, + {"Drawdown Recovery", "236"}, {"OrderListHash", "7e35def0ca91b89579b42cf23ef941e2"} }; } diff --git a/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs b/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs index 332015def485..7b4d2429b893 100644 --- a/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs +++ b/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs @@ -173,7 +173,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "1.833%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "0.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100023.22"}, diff --git a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs index 9f7dfd84badd..74555b0aa951 100644 --- a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs @@ -158,7 +158,7 @@ protected void AssertDataTime(DateTime start, DateTime end, List times {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "112.304%"}, - {"Drawdown", "1.400%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100620.7"}, diff --git a/Tests/Common/ExtendedDictionaryTests.cs b/Tests/Common/ExtendedDictionaryTests.cs index d494227181c7..80e87d40f6f6 100644 --- a/Tests/Common/ExtendedDictionaryTests.cs +++ b/Tests/Common/ExtendedDictionaryTests.cs @@ -34,7 +34,7 @@ public void RunPythonDictionaryFeatureRegressionAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "349.409%"}, - {"Drawdown", "2.600%"}, + {"Drawdown", "2.700%"}, {"Expectancy", "0"}, {"Net Profit", "1.940%"}, {"Sharpe Ratio", "10.771"}, diff --git a/Tests/Python/PythonSliceGetByTypeTest.cs b/Tests/Python/PythonSliceGetByTypeTest.cs index 3bfa68b4e560..76af25ebfb2b 100644 --- a/Tests/Python/PythonSliceGetByTypeTest.cs +++ b/Tests/Python/PythonSliceGetByTypeTest.cs @@ -31,7 +31,7 @@ public void RunPythonSliceGetByTypeRegressionAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "284.284%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.300%"}, {"Expectancy", "0"}, {"Net Profit", "1.736%"}, {"Sharpe Ratio", "8.86"}, From 46c725da506c985ba0bf4cd928f8b7c89308e5f6 Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 27 Mar 2026 14:59:15 -0500 Subject: [PATCH 04/11] Address review comments --- Common/Statistics/AlgorithmPerformance.cs | 9 ++---- Common/Statistics/PortfolioStatistics.cs | 24 +++++++-------- Common/Statistics/Statistics.cs | 13 ++++++++ Common/Statistics/StatisticsBuilder.cs | 30 +++++++------------ Research/QuantBook.cs | 4 +-- .../Statistics/PortfolioStatisticsTests.cs | 4 +-- 6 files changed, 43 insertions(+), 41 deletions(-) diff --git a/Common/Statistics/AlgorithmPerformance.cs b/Common/Statistics/AlgorithmPerformance.cs index 06eaf1e7d55d..4ddda40ee19f 100644 --- a/Common/Statistics/AlgorithmPerformance.cs +++ b/Common/Statistics/AlgorithmPerformance.cs @@ -44,7 +44,6 @@ public class AlgorithmPerformance /// /// The list of closed trades /// Trade record of profits and losses - /// The list of daily equity values /// The algorithm portfolio turnover /// The list of algorithm performance values /// The list of benchmark values @@ -53,11 +52,10 @@ public class AlgorithmPerformance /// Number of losing transactions /// The risk free interest rate model to use /// The number of trading days per year - /// The OHLC equity series points used for drawdown calculation + /// The equity curve series points public AlgorithmPerformance( List trades, SortedDictionary profitLoss, - SortedDictionary equity, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -68,10 +66,9 @@ public AlgorithmPerformance( int tradingDaysPerYear, List equityPoints = null) { - TradeStatistics = new TradeStatistics(trades); - PortfolioStatistics = new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, startingCapital, - riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions, equityPoints); + PortfolioStatistics = new PortfolioStatistics(profitLoss, equityPoints, portfolioTurnover, listPerformance, listBenchmark, startingCapital, + riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions); ClosedTrades = trades; } diff --git a/Common/Statistics/PortfolioStatistics.cs b/Common/Statistics/PortfolioStatistics.cs index fb94f183df07..ff8031661ee4 100644 --- a/Common/Statistics/PortfolioStatistics.cs +++ b/Common/Statistics/PortfolioStatistics.cs @@ -196,7 +196,7 @@ public class PortfolioStatistics /// Initializes a new instance of the class /// /// Trade record of profits and losses - /// The list of daily equity values + /// The equity curve series points /// The algorithm portfolio turnover /// The list of algorithm performance values /// The list of benchmark values @@ -208,10 +208,9 @@ public class PortfolioStatistics /// If this and are null, they will be calculated from /// /// The number of losses - /// The OHLC equity series points used for drawdown calculation public PortfolioStatistics( SortedDictionary profitLoss, - SortedDictionary equity, + List equityPoints, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -219,11 +218,10 @@ public PortfolioStatistics( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear, int? winCount = null, - int? lossCount = null, - List equityPoints = null) + int? lossCount = null) { StartEquity = startingCapital; - EndEquity = equity.LastOrDefault().Value; + EndEquity = Statistics.GetClose(equityPoints.LastOrDefault()); if (portfolioTurnover.Count > 0) { @@ -278,13 +276,16 @@ public PortfolioStatistics( LossRate = totalTrades == 0 ? 0 : (decimal)totalLosses / totalTrades; Expectancy = WinRate * ProfitLossRatio - LossRate; + var lastEquityValue = Statistics.GetClose(equityPoints.LastOrDefault()); if (startingCapital != 0) { - TotalNetProfit = equity.Values.LastOrDefault() / startingCapital - 1; + TotalNetProfit = lastEquityValue / startingCapital - 1; } - var fractionOfYears = (decimal)(equity.Keys.LastOrDefault() - equity.Keys.FirstOrDefault()).TotalDays / 365; - CompoundingAnnualReturn = Statistics.CompoundingAnnualPerformance(startingCapital, equity.Values.LastOrDefault(), fractionOfYears); + var lastTime = equityPoints.LastOrDefault()?.Time ?? default; + var firstTime = equityPoints.FirstOrDefault()?.Time ?? default; + var fractionOfYears = (decimal)(lastTime - firstTime).TotalDays / 365; + CompoundingAnnualReturn = Statistics.CompoundingAnnualPerformance(startingCapital, lastEquityValue, fractionOfYears); AnnualVariance = Statistics.AnnualVariance(listPerformance, tradingDaysPerYear).SafeDecimalCast(); AnnualStandardDeviation = (decimal)Math.Sqrt((double)AnnualVariance); @@ -292,7 +293,7 @@ public PortfolioStatistics( var benchmarkAnnualPerformance = GetAnnualPerformance(listBenchmark, tradingDaysPerYear); var annualPerformance = GetAnnualPerformance(listPerformance, tradingDaysPerYear); - var riskFreeRate = riskFreeInterestRateModel.GetAverageRiskFreeRate(equity.Select(x => x.Key)); + var riskFreeRate = riskFreeInterestRateModel.GetAverageRiskFreeRate(equityPoints.Select(x => x.Time)); SharpeRatio = AnnualStandardDeviation == 0 ? 0 : Statistics.SharpeRatio(annualPerformance, AnnualStandardDeviation, riskFreeRate); var annualDownsideDeviation = Statistics.AnnualDownsideStandardDeviation(listPerformance, tradingDaysPerYear).SafeDecimalCast(); @@ -316,8 +317,7 @@ public PortfolioStatistics( ValueAtRisk99 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.99d); ValueAtRisk95 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.95d); - var points = equityPoints ?? equity.Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, kvp.Value)).ToList(); - var drawdownMetrics = Statistics.CalculateDrawdownMetrics(points, 3); + var drawdownMetrics = Statistics.CalculateDrawdownMetrics(equityPoints, 3); Drawdown = drawdownMetrics.Drawdown; DrawdownRecovery = drawdownMetrics.DrawdownRecovery; } diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index dd2324cfb0f6..b6da85d1dcf8 100644 --- a/Common/Statistics/Statistics.cs +++ b/Common/Statistics/Statistics.cs @@ -315,6 +315,19 @@ public static DrawdownMetrics CalculateDrawdownMetrics(IEnumerable } } + internal static decimal GetClose(ISeriesPoint point) + { + if (point is Candlestick candlestick) + { + return candlestick.Close ?? 0m; + } + if (point is ChartPoint chartPoint) + { + return chartPoint.y ?? 0m; + } + return 0m; + } + private static decimal GetHigh(ISeriesPoint point) { if (point is Candlestick candlestick) diff --git a/Common/Statistics/StatisticsBuilder.cs b/Common/Statistics/StatisticsBuilder.cs index 97aa33a6fc2d..badf59b61ee1 100644 --- a/Common/Statistics/StatisticsBuilder.cs +++ b/Common/Statistics/StatisticsBuilder.cs @@ -64,14 +64,12 @@ public static StatisticsResults Generate( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { - var equity = ChartPointToDictionary(pointsEquity); + var firstDate = pointsEquity.FirstOrDefault()?.Time.Date ?? default; + var lastDate = pointsEquity.LastOrDefault()?.Time.Date ?? default; - var firstDate = equity.Keys.FirstOrDefault().Date; - var lastDate = equity.Keys.LastOrDefault().Date; - - var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equity, pointsEquity, pointsPerformance, pointsBenchmark, + var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); - var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equity, pointsEquity, pointsPerformance, pointsBenchmark, + var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); var summary = GetSummary(totalPerformance, estimatedStrategyCapacity, totalFees, totalOrders, accountCurrencySymbol); @@ -85,8 +83,7 @@ public static StatisticsResults Generate( /// The final date of the range /// The list of closed trades /// Trade record of profits and losses - /// The list of daily equity values - /// The list of OHLC equity series points used for drawdown calculation + /// The equity curve series points /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -102,7 +99,6 @@ private static AlgorithmPerformance GetAlgorithmPerformance( DateTime toDate, List trades, SortedDictionary profitLoss, - SortedDictionary equity, List pointsEquity, List pointsPerformance, List pointsBenchmark, @@ -112,15 +108,13 @@ private static AlgorithmPerformance GetAlgorithmPerformance( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { - var periodEquity = new SortedDictionary(equity.Where(x => x.Key.Date >= fromDate && x.Key.Date < toDate.AddDays(1)).ToDictionary(x => x.Key, y => y.Value)); + var periodEquityPoints = pointsEquity?.Where(x => x.Time.Date >= fromDate && x.Time.Date < toDate.AddDays(1)).ToList(); // No portfolio equity for the period means that there is no performance to be computed - if (periodEquity.IsNullOrEmpty()) + if (periodEquityPoints.IsNullOrEmpty()) { return new AlgorithmPerformance(); } - - var periodEquityPoints = pointsEquity?.Where(x => x.Time.Date >= fromDate && x.Time.Date < toDate.AddDays(1)).ToList(); var periodTrades = trades.Where(x => x.ExitTime.Date >= fromDate && x.ExitTime < toDate.AddDays(1)).ToList(); var periodProfitLoss = new SortedDictionary(profitLoss.Where(x => x.Key >= fromDate && x.Key.Date < toDate.AddDays(1)).ToDictionary(x => x.Key, y => y.Value)); var periodWinCount = transactions.WinningTransactions.Count(x => x.Key >= fromDate && x.Key.Date < toDate.AddDays(1)); @@ -145,9 +139,9 @@ private static AlgorithmPerformance GetAlgorithmPerformance( var listBenchmark = benchmarkEnumerable.Select(x => x.Value).ToList(); var listPerformance = PreprocessPerformanceValues(performance).Select(x => x.Value).ToList(); - var runningCapital = equity.Count == periodEquity.Count ? startingCapital : periodEquity.Values.FirstOrDefault(); + var runningCapital = pointsEquity.Count == periodEquityPoints.Count ? startingCapital : Statistics.GetClose(periodEquityPoints.FirstOrDefault()); - return new AlgorithmPerformance(periodTrades, periodProfitLoss, periodEquity, portfolioTurnover, listPerformance, listBenchmark, + return new AlgorithmPerformance(periodTrades, periodProfitLoss, portfolioTurnover, listPerformance, listBenchmark, runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear, periodEquityPoints); } @@ -158,8 +152,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( /// The last date of the total period /// The list of closed trades /// Trade record of profits and losses - /// The list of daily equity values - /// The list of OHLC equity series points used for drawdown calculation + /// The equity curve series points /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -175,7 +168,6 @@ private static Dictionary GetRollingPerformances( DateTime lastDate, List trades, SortedDictionary profitLoss, - SortedDictionary equity, List pointsEquity, List pointsPerformance, List pointsBenchmark, @@ -195,7 +187,7 @@ private static Dictionary GetRollingPerformances( foreach (var period in ranges) { var key = $"M{monthPeriod}_{period.EndDate.ToStringInvariant("yyyyMMdd")}"; - var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, equity, pointsEquity, pointsPerformance, + var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); rollingPerformances[key] = periodPerformance; } diff --git a/Research/QuantBook.cs b/Research/QuantBook.cs index c3266e4a7533..01cd6b5f4fa8 100644 --- a/Research/QuantBook.cs +++ b/Research/QuantBook.cs @@ -821,7 +821,7 @@ public PyDict GetPortfolioStatistics(PyObject dataFrame) } // Convert the double into decimal - var equity = new SortedDictionary(dictEquity.ToDictionary(kvp => kvp.Key, kvp => (decimal)kvp.Value)); + var equityPoints = dictEquity.Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, (decimal)kvp.Value)).ToList(); var profitLoss = new SortedDictionary(dictPL.ToDictionary(kvp => kvp.Key, kvp => double.IsNaN(kvp.Value) ? 0 : (decimal)kvp.Value)); // Gets the last value of the day of the benchmark and equity @@ -835,7 +835,7 @@ public PyDict GetPortfolioStatistics(PyObject dataFrame) BaseSetupHandler.SetBrokerageTradingDayPerYear(algorithm: this); // Compute portfolio statistics - var stats = new PortfolioStatistics(profitLoss, equity, new(), listPerformance, listBenchmark, startingCapital, RiskFreeInterestRateModel, + var stats = new PortfolioStatistics(profitLoss, equityPoints, new(), listPerformance, listBenchmark, startingCapital, RiskFreeInterestRateModel, Settings.TradingDaysPerYear.Value); result.SetItem("Average Win (%)", Convert.ToDouble(stats.AverageWinRate * 100).ToPython()); diff --git a/Tests/Common/Statistics/PortfolioStatisticsTests.cs b/Tests/Common/Statistics/PortfolioStatisticsTests.cs index c3288b19f228..59708b792c91 100644 --- a/Tests/Common/Statistics/PortfolioStatisticsTests.cs +++ b/Tests/Common/Statistics/PortfolioStatisticsTests.cs @@ -148,7 +148,7 @@ public void PortfolioStatisticsDoesNotFailWhenAnnualPerformanceIsLarge() var riskFreeInterestRateModel = new InterestRateProvider(); var tradingDaysPerYear = 252; - Assert.DoesNotThrow(() => new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, startingCapital, riskFreeInterestRateModel, tradingDaysPerYear)); + Assert.DoesNotThrow(() => new PortfolioStatistics(profitLoss, new List(), portfolioTurnover, listPerformance, listBenchmark, startingCapital, riskFreeInterestRateModel, tradingDaysPerYear)); } /// @@ -165,7 +165,7 @@ private PortfolioStatistics GetPortfolioStatistics(bool win, int tradingDaysPerY var profitLoss = new SortedDictionary(trades.ToDictionary(x => x.ExitTime, x => x.ProfitLoss)); var winCount = trades.Count(x => x.IsWin); var lossCount = trades.Count - winCount; - return new PortfolioStatistics(profitLoss, new SortedDictionary(), + return new PortfolioStatistics(profitLoss, new List(), new SortedDictionary(), listPerformance, listBenchmark, 100000, new InterestRateProvider(), tradingDaysPerYear, winCount, lossCount); } From 0b255ae130d75430e80d249ac83ada781513d0aa Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Mon, 30 Mar 2026 17:34:29 -0500 Subject: [PATCH 05/11] Address additional review comments --- Common/Statistics/AlgorithmPerformance.cs | 6 ++--- Common/Statistics/PortfolioStatistics.cs | 14 ++++++----- Common/Statistics/Statistics.cs | 11 ++++----- Common/Statistics/StatisticsBuilder.cs | 30 +++++++++++------------ 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/Common/Statistics/AlgorithmPerformance.cs b/Common/Statistics/AlgorithmPerformance.cs index 4ddda40ee19f..5d42a61c7175 100644 --- a/Common/Statistics/AlgorithmPerformance.cs +++ b/Common/Statistics/AlgorithmPerformance.cs @@ -44,6 +44,7 @@ public class AlgorithmPerformance /// /// The list of closed trades /// Trade record of profits and losses + /// The equity curve series points /// The algorithm portfolio turnover /// The list of algorithm performance values /// The list of benchmark values @@ -52,10 +53,10 @@ public class AlgorithmPerformance /// Number of losing transactions /// The risk free interest rate model to use /// The number of trading days per year - /// The equity curve series points public AlgorithmPerformance( List trades, SortedDictionary profitLoss, + List equityPoints, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -63,8 +64,7 @@ public AlgorithmPerformance( int winningTransactions, int losingTransactions, IRiskFreeInterestRateModel riskFreeInterestRateModel, - int tradingDaysPerYear, - List equityPoints = null) + int tradingDaysPerYear) { TradeStatistics = new TradeStatistics(trades); PortfolioStatistics = new PortfolioStatistics(profitLoss, equityPoints, portfolioTurnover, listPerformance, listBenchmark, startingCapital, diff --git a/Common/Statistics/PortfolioStatistics.cs b/Common/Statistics/PortfolioStatistics.cs index ff8031661ee4..a8934d46ee44 100644 --- a/Common/Statistics/PortfolioStatistics.cs +++ b/Common/Statistics/PortfolioStatistics.cs @@ -276,16 +276,18 @@ public PortfolioStatistics( LossRate = totalTrades == 0 ? 0 : (decimal)totalLosses / totalTrades; Expectancy = WinRate * ProfitLossRatio - LossRate; - var lastEquityValue = Statistics.GetClose(equityPoints.LastOrDefault()); if (startingCapital != 0) { - TotalNetProfit = lastEquityValue / startingCapital - 1; + TotalNetProfit = EndEquity / startingCapital - 1; } - var lastTime = equityPoints.LastOrDefault()?.Time ?? default; - var firstTime = equityPoints.FirstOrDefault()?.Time ?? default; - var fractionOfYears = (decimal)(lastTime - firstTime).TotalDays / 365; - CompoundingAnnualReturn = Statistics.CompoundingAnnualPerformance(startingCapital, lastEquityValue, fractionOfYears); + if (equityPoints.Count >= 2) + { + var lastTime = equityPoints.Last().Time; + var firstTime = equityPoints.First().Time; + var fractionOfYears = (decimal)(lastTime - firstTime).TotalDays / 365; + CompoundingAnnualReturn = Statistics.CompoundingAnnualPerformance(startingCapital, EndEquity, fractionOfYears); + } AnnualVariance = Statistics.AnnualVariance(listPerformance, tradingDaysPerYear).SafeDecimalCast(); AnnualStandardDeviation = (decimal)Math.Sqrt((double)AnnualVariance); diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index b6da85d1dcf8..01944e2e3534 100644 --- a/Common/Statistics/Statistics.cs +++ b/Common/Statistics/Statistics.cs @@ -258,21 +258,20 @@ public static decimal DrawdownPercent(decimal current, decimal high, int roundin /// Time series of equity OHLC data points /// Number of decimals to round the results to /// A object containing MaxDrawdown (percentage) and MaxRecoveryTime (in days) - public static DrawdownMetrics CalculateDrawdownMetrics(IEnumerable equityPoints, int rounding = 2) + public static DrawdownMetrics CalculateDrawdownMetrics(List equityPoints, int rounding = 2) { decimal maxDrawdown = 0m; decimal maxRecoveryTime = 0m; try { - var pointsList = equityPoints?.ToList(); - if (pointsList == null || pointsList.Count < 2) return new DrawdownMetrics(0m, 0); + if (equityPoints == null || equityPoints.Count < 2) return new DrawdownMetrics(0m, 0); - var peakEquity = GetHigh(pointsList[0]); - var peakDate = pointsList[0].Time; + var peakEquity = GetHigh(equityPoints[0]); + var peakDate = equityPoints[0].Time; DateTime? drawdownStartDate = null; - foreach (var point in pointsList) + foreach (var point in equityPoints) { var high = GetHigh(point); var low = GetLow(point); diff --git a/Common/Statistics/StatisticsBuilder.cs b/Common/Statistics/StatisticsBuilder.cs index badf59b61ee1..7e57e954a556 100644 --- a/Common/Statistics/StatisticsBuilder.cs +++ b/Common/Statistics/StatisticsBuilder.cs @@ -33,7 +33,7 @@ public static class StatisticsBuilder /// /// The list of closed trades /// Trade record of profits and losses - /// The list of daily equity values + /// The equity curve series points /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -51,7 +51,7 @@ public static class StatisticsBuilder public static StatisticsResults Generate( List trades, SortedDictionary profitLoss, - List pointsEquity, + List equityPoints, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -64,12 +64,12 @@ public static StatisticsResults Generate( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { - var firstDate = pointsEquity.FirstOrDefault()?.Time.Date ?? default; - var lastDate = pointsEquity.LastOrDefault()?.Time.Date ?? default; + var firstDate = equityPoints.Count > 0 ? equityPoints.First().Time.Date : default; + var lastDate = equityPoints.Count > 0 ? equityPoints.Last().Time.Date : default; - var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, pointsEquity, pointsPerformance, pointsBenchmark, + var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equityPoints, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); - var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, pointsEquity, pointsPerformance, pointsBenchmark, + var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equityPoints, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); var summary = GetSummary(totalPerformance, estimatedStrategyCapacity, totalFees, totalOrders, accountCurrencySymbol); @@ -83,7 +83,7 @@ public static StatisticsResults Generate( /// The final date of the range /// The list of closed trades /// Trade record of profits and losses - /// The equity curve series points + /// The equity curve series points /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -99,7 +99,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( DateTime toDate, List trades, SortedDictionary profitLoss, - List pointsEquity, + List equityPoints, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -108,7 +108,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { - var periodEquityPoints = pointsEquity?.Where(x => x.Time.Date >= fromDate && x.Time.Date < toDate.AddDays(1)).ToList(); + var periodEquityPoints = equityPoints?.Where(x => x.Time.Date >= fromDate && x.Time.Date < toDate.AddDays(1)).ToList(); // No portfolio equity for the period means that there is no performance to be computed if (periodEquityPoints.IsNullOrEmpty()) @@ -139,10 +139,10 @@ private static AlgorithmPerformance GetAlgorithmPerformance( var listBenchmark = benchmarkEnumerable.Select(x => x.Value).ToList(); var listPerformance = PreprocessPerformanceValues(performance).Select(x => x.Value).ToList(); - var runningCapital = pointsEquity.Count == periodEquityPoints.Count ? startingCapital : Statistics.GetClose(periodEquityPoints.FirstOrDefault()); + var runningCapital = equityPoints.Count == periodEquityPoints.Count ? startingCapital : Statistics.GetClose(periodEquityPoints.First()); - return new AlgorithmPerformance(periodTrades, periodProfitLoss, portfolioTurnover, listPerformance, listBenchmark, - runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear, periodEquityPoints); + return new AlgorithmPerformance(periodTrades, periodProfitLoss, periodEquityPoints, portfolioTurnover, listPerformance, listBenchmark, + runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear); } /// @@ -152,7 +152,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( /// The last date of the total period /// The list of closed trades /// Trade record of profits and losses - /// The equity curve series points + /// The equity curve series points /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -168,7 +168,7 @@ private static Dictionary GetRollingPerformances( DateTime lastDate, List trades, SortedDictionary profitLoss, - List pointsEquity, + List equityPoints, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -187,7 +187,7 @@ private static Dictionary GetRollingPerformances( foreach (var period in ranges) { var key = $"M{monthPeriod}_{period.EndDate.ToStringInvariant("yyyyMMdd")}"; - var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, pointsEquity, pointsPerformance, + var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, equityPoints, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); rollingPerformances[key] = periodPerformance; } From c4172acf0ed897e7f495178d88c351a65a9bfeb4 Mon Sep 17 00:00:00 2001 From: aiSynergy37 Date: Sat, 28 Mar 2026 13:44:54 +0530 Subject: [PATCH 06/11] Optimize-drawdown-metrics-iteration-for-benchmark-stability --- Common/Statistics/Statistics.cs | 52 ++++++++++++++++----------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index 01944e2e3534..71c3d854efcc 100644 --- a/Common/Statistics/Statistics.cs +++ b/Common/Statistics/Statistics.cs @@ -16,6 +16,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.CompilerServices; using MathNet.Numerics.Distributions; using MathNet.Numerics.Statistics; using QuantConnect.Logging; @@ -267,14 +268,14 @@ public static DrawdownMetrics CalculateDrawdownMetrics(List equity { if (equityPoints == null || equityPoints.Count < 2) return new DrawdownMetrics(0m, 0); - var peakEquity = GetHigh(equityPoints[0]); + GetHighLow(equityPoints[0], out var peakEquity, out _); var peakDate = equityPoints[0].Time; DateTime? drawdownStartDate = null; - foreach (var point in equityPoints) + for (var i = 0; i < equityPoints.Count; i++) { - var high = GetHigh(point); - var low = GetLow(point); + var point = equityPoints[i]; + GetHighLow(point, out var high, out var low); // Update peak equity using the high price if (high >= peakEquity) @@ -314,43 +315,40 @@ public static DrawdownMetrics CalculateDrawdownMetrics(List equity } } + [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static decimal GetClose(ISeriesPoint point) { - if (point is Candlestick candlestick) - { - return candlestick.Close ?? 0m; - } - if (point is ChartPoint chartPoint) + switch (point) { - return chartPoint.y ?? 0m; + case Candlestick candlestick: + return candlestick.Close ?? 0m; + case ChartPoint chartPoint: + return chartPoint.y ?? 0m; + default: + return 0m; } - return 0m; } - private static decimal GetHigh(ISeriesPoint point) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static void GetHighLow(ISeriesPoint point, out decimal high, out decimal low) { if (point is Candlestick candlestick) { - return candlestick.High ?? candlestick.Close ?? 0m; + var close = candlestick.Close ?? 0m; + high = candlestick.High ?? close; + low = candlestick.Low ?? close; + return; } if (point is ChartPoint chartPoint) { - return chartPoint.y ?? 0m; + var value = chartPoint.y ?? 0m; + high = value; + low = value; + return; } - return 0m; - } - private static decimal GetLow(ISeriesPoint point) - { - if (point is Candlestick candlestick) - { - return candlestick.Low ?? candlestick.Close ?? 0m; - } - if (point is ChartPoint chartPoint) - { - return chartPoint.y ?? 0m; - } - return 0m; + high = 0m; + low = 0m; } } // End of Statistics From 656a570513f638f35b2dc8c821d303021a4a0e3f Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 17 Apr 2026 01:25:57 -0500 Subject: [PATCH 07/11] Revert drawdown OHLC changes back to master --- ...taIndicatorNewAssetsRegressionAlgorithm.cs | 2 +- ...ontractDataStreamingRegressionAlgorithm.cs | 2 +- ...tractFromFutureChainRegressionAlgorithm.cs | 2 +- ...ctedInUniverseFilterRegressionAlgorithm.cs | 2 +- ...dRemoveSecurityCacheRegressionAlgorithm.cs | 2 +- .../AddRemoveSecurityRegressionAlgorithm.cs | 2 +- .../AddRiskManagementAlgorithm.cs | 2 +- ...mbolsCoarseSelectionRegressionAlgorithm.cs | 2 +- ...icatorWarmupDataTypeRegressionAlgorithm.cs | 2 +- ...maticIndicatorWarmupRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateAlgorithm.cs | 2 +- .../BasicTemplateAxosAlgorithm.cs | 4 +- .../BasicTemplateContinuousFutureAlgorithm.cs | 2 +- ...inuousFutureWithExtendedMarketAlgorithm.cs | 2 +- .../BasicTemplateFrameworkAlgorithm.cs | 4 +- ...resFrameworkWithExtendedMarketAlgorithm.cs | 2 +- .../BasicTemplateIndexAlgorithm.cs | 4 +- ...cTemplateOptionsFilterUniverseAlgorithm.cs | 2 +- .../BasicTemplateTradableIndexAlgorithm.cs | 4 +- ...PortfolioOptimizationFrameworkAlgorithm.cs | 2 +- ...folioSignalExportDemonstrationAlgorithm.cs | 2 +- ...tive2SignalExportDemonstrationAlgorithm.cs | 2 +- .../CompleteOrderTagUpdateAlgorithm.cs | 2 +- .../CompositeAlphaModelFrameworkAlgorithm.cs | 2 +- ...teRiskManagementModelFrameworkAlgorithm.cs | 4 +- .../ConfidenceWeightedFrameworkAlgorithm.cs | 2 +- .../ConsolidateRegressionAlgorithm.cs | 2 +- ...usBackMonthRawFutureRegressionAlgorithm.cs | 2 +- ...nuousFutureBackMonthRegressionAlgorithm.cs | 4 +- ...quidationOnDelistingRegressionAlgorithm.cs | 2 +- .../ContinuousFutureRegressionAlgorithm.cs | 2 +- .../ConvertToFrameworkAlgorithm.cs | 2 +- Algorithm.CSharp/CustomBenchmarkAlgorithm.cs | 2 +- ...mOptionExerciseModelRegressionAlgorithm.cs | 2 +- ...omPortfolioOptimizerRegressionAlgorithm.cs | 2 +- .../CustomWarmUpPeriodIndicatorAlgorithm.cs | 2 +- ...edMarketHoursWarningRegressionAlgorithm.cs | 2 +- ...inuousMidnightExpiryRegressionAlgorithm.cs | 2 +- ...omChainAndContinuousRegressionAlgorithm.cs | 2 +- ...istedFutureLiquidateRegressionAlgorithm.cs | 2 +- ...structionModelFutureRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/EquityMarginCallAlgorithm.cs | 2 +- ...ySplitHoldingsMinuteRegressionAlgorithm.cs | 2 +- ...tionModelOrderEventsRegressionAlgorithm.cs | 4 +- ...edMarketHoursHistoryRegressionAlgorithm.cs | 2 +- ...nternalSubscriptionsRegressionAlgorithm.cs | 2 +- ...eOptionCallITMExpiryRegressionAlgorithm.cs | 2 +- ...nCallITMGreeksExpiryRegressionAlgorithm.cs | 2 +- ...eOptionCallOTMExpiryRegressionAlgorithm.cs | 2 +- ...onShortCallITMExpiryRegressionAlgorithm.cs | 2 +- ...onShortCallOTMExpiryRegressionAlgorithm.cs | 2 +- ...ionShortPutITMExpiryRegressionAlgorithm.cs | 2 +- ...ionShortPutOTMExpiryRegressionAlgorithm.cs | 2 +- .../FutureSharingTickerRegressionAlgorithm.cs | 2 +- ...ryTimeAndLiquidationRegressionAlgorithm.cs | 2 +- .../FuturesFrameworkRegressionAlgorithm.cs | 2 +- ...xOptionCallITMExpiryRegressionAlgorithm.cs | 2 +- ...nCallITMGreeksExpiryRegressionAlgorithm.cs | 2 +- ...exOptionPutITMExpiryRegressionAlgorithm.cs | 2 +- ...onShortCallOTMExpiryRegressionAlgorithm.cs | 2 +- ...ionShortPutOTMExpiryRegressionAlgorithm.cs | 2 +- .../InsightScoringRegressionAlgorithm.cs | 4 +- .../InsightWeightingFrameworkAlgorithm.cs | 2 +- .../LeveragePrecedenceRegressionAlgorithm.cs | 4 +- .../LimitFillRegressionAlgorithm.cs | 2 +- ...AfterHoursForFuturesRegressionAlgorithm.cs | 2 +- ...uresPositionRolloverRegressionAlgorithm.cs | 2 +- ...rginCallClosedMarketRegressionAlgorithm.cs | 2 +- ...endedHoursForFuturesRegressionAlgorithm.cs | 2 +- .../MinimumOrderMarginRegressionAlgorithm.cs | 4 +- ...NoMarginCallExpectedRegressionAlgorithm.cs | 2 +- ...lOutsideRegularHoursRegressionAlgorithm.cs | 2 +- ...NoMinimumOrderMarginRegressionAlgorithm.cs | 2 +- .../ObjectStoreExampleAlgorithm.cs | 2 +- ...ryAndNonTradableDateRegressionAlgorithm.cs | 2 +- ...iryOrderHasZeroPriceRegressionAlgorithm.cs | 2 +- .../OrderSubmissionDataRegressionAlgorithm.cs | 2 +- .../PortfolioTargetTagsRegressionAlgorithm.cs | 4 +- .../RegisterIndicatorRegressionAlgorithm.cs | 2 +- ...caledFillForwardDataRegressionAlgorithm.cs | 2 +- ...ScheduledEventsOrderRegressionAlgorithm.cs | 2 +- .../SecuritySeederRegressionAlgorithm.cs | 2 +- .../SecurityToSymbolRegressionAlgorithm.cs | 2 +- ...dingsMultipleTargetsRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/TimeInForceAlgorithm.cs | 2 +- .../TotalPortfolioValueRegressionAlgorithm.cs | 2 +- .../TrailingStopOrderRegressionAlgorithm.cs | 2 +- .../WarmupFutureRegressionAlgorithm.cs | 2 +- Common/Statistics/AlgorithmPerformance.cs | 7 +- Common/Statistics/PortfolioStatistics.cs | 21 +++--- Common/Statistics/Statistics.cs | 72 +++++-------------- Common/Statistics/StatisticsBuilder.cs | 33 +++++---- .../MaxDrawdownRecoveryReportElement.cs | 5 +- .../MaxDrawdownReportElement.cs | 5 +- Research/QuantBook.cs | 4 +- Tests/Common/ExtendedDictionaryTests.cs | 2 +- .../Statistics/DrawdownRecoveryTests.cs | 43 ++--------- .../Statistics/PortfolioStatisticsTests.cs | 4 +- Tests/Python/PythonSliceGetByTypeTest.cs | 2 +- 99 files changed, 160 insertions(+), 236 deletions(-) diff --git a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs index 6e68e180150f..213ab2824913 100644 --- a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs @@ -145,7 +145,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$87000.00"}, {"Lowest Capacity Asset", "BTCUSD 2XR"}, {"Portfolio Turnover", "2.22%"}, - {"Drawdown Recovery", "138"}, + {"Drawdown Recovery", "139"}, {"OrderListHash", "896ecc92440d51ed26644aac5b8706e4"} }; } diff --git a/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs index 012ab35400da..74193476069f 100644 --- a/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionContractDataStreamingRegressionAlgorithm.cs @@ -185,7 +185,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "5512.811%"}, - {"Drawdown", "1.300%"}, + {"Drawdown", "1.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "105332.8"}, diff --git a/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs index bdc29e328d2b..68c7554e0b68 100644 --- a/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs @@ -114,7 +114,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "88398927.578%"}, - {"Drawdown", "5.700%"}, + {"Drawdown", "5.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "111911.55"}, diff --git a/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs index 7c0ee3b74ba4..feae130a33c6 100644 --- a/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionSingleOptionChainSelectedInUniverseFilterRegressionAlgorithm.cs @@ -241,7 +241,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "430.834%"}, - {"Drawdown", "4.300%"}, + {"Drawdown", "4.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "102313.03"}, diff --git a/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs b/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs index ce160d49a96a..673e7081c3f5 100644 --- a/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs @@ -104,7 +104,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0.00%"}, {"Compounding Annual Return", "271.720%"}, - {"Drawdown", "2.600%"}, + {"Drawdown", "2.500%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101753.84"}, diff --git a/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs b/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs index 897ecb373c36..ecb9cbd519b1 100644 --- a/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddRemoveSecurityRegressionAlgorithm.cs @@ -131,7 +131,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0.46%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "296.356%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101776.32"}, diff --git a/Algorithm.CSharp/AddRiskManagementAlgorithm.cs b/Algorithm.CSharp/AddRiskManagementAlgorithm.cs index 66ad558ac917..d7aec7762d1d 100644 --- a/Algorithm.CSharp/AddRiskManagementAlgorithm.cs +++ b/Algorithm.CSharp/AddRiskManagementAlgorithm.cs @@ -105,7 +105,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$38000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.74%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "5d7657ec9954875eca633bed711085d3"} }; } diff --git a/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs b/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs index 69bf88639e40..275788988b89 100644 --- a/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AllShortableSymbolsCoarseSelectionRegressionAlgorithm.cs @@ -259,7 +259,7 @@ public Dictionary AllShortableSymbols(DateTime localTime) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "11.027%"}, - {"Drawdown", "0.100%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0"}, {"Start Equity", "10000000"}, {"End Equity", "10011469.88"}, diff --git a/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs b/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs index 88985e2dd91a..f6633f164a02 100644 --- a/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs @@ -167,7 +167,7 @@ protected override decimal ComputeNextValue(QuoteBar input) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "733913.744%"}, - {"Drawdown", "16.500%"}, + {"Drawdown", "15.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "106827.7"}, diff --git a/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs b/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs index bac301eeb6cf..47ff2f23905b 100644 --- a/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs @@ -151,7 +151,7 @@ protected override decimal ComputeNextValue(IReadOnlyWindow {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/BasicTemplateAlgorithm.cs b/Algorithm.CSharp/BasicTemplateAlgorithm.cs index 460137d0f222..6829d12819ec 100644 --- a/Algorithm.CSharp/BasicTemplateAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateAlgorithm.cs @@ -118,7 +118,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs b/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs index 108f5023c195..1d46a1dfb256 100644 --- a/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs @@ -90,7 +90,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "39.143%"}, - {"Drawdown", "0.600%"}, + {"Drawdown", "0.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100423.24"}, @@ -112,7 +112,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.98%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "8774049eb5141a2b6956d9432426f837"} }; } diff --git a/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs b/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs index b6cd7cc6d810..4791436519bf 100644 --- a/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs @@ -138,7 +138,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "2.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "11.325%"}, - {"Drawdown", "1.900%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "105549.6"}, diff --git a/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs index 77594e111aeb..e606c0e79ce0 100644 --- a/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs @@ -144,7 +144,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "2.86%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "12.959%"}, - {"Drawdown", "4.500%"}, + {"Drawdown", "1.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "106337.1"}, diff --git a/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs index c8a25c036fc8..968f8b3d7bcb 100644 --- a/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs @@ -108,7 +108,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -130,7 +130,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs index ff640196afe8..e0e3ecb90843 100644 --- a/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs @@ -52,7 +52,7 @@ public class BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm : BasicTem {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-92.667%"}, - {"Drawdown", "5.100%"}, + {"Drawdown", "5.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96685.76"}, diff --git a/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs b/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs index 7e2a6137968c..debaeb04cf9c 100644 --- a/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs @@ -148,7 +148,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.08%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "603.355%"}, - {"Drawdown", "3.600%"}, + {"Drawdown", "3.400%"}, {"Expectancy", "0"}, {"Start Equity", "1000000"}, {"End Equity", "1064395"}, @@ -170,7 +170,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$3000.00"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "23.97%"}, - {"Drawdown Recovery", "0"}, + {"Drawdown Recovery", "9"}, {"OrderListHash", "4b560d2a8cfae510c3c8dc92603470fc"} }; } diff --git a/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs b/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs index 8de9eb4b0f60..4950cff1c710 100644 --- a/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateOptionsFilterUniverseAlgorithm.cs @@ -120,7 +120,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "-0.40%"}, {"Compounding Annual Return", "-20.338%"}, - {"Drawdown", "0.400%"}, + {"Drawdown", "0.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "99689"}, diff --git a/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs b/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs index 2eda99e2426e..fd2b14693819 100644 --- a/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs @@ -67,7 +67,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.08%"}, {"Average Loss", "-0.01%"}, {"Compounding Annual Return", "602.278%"}, - {"Drawdown", "3.600%"}, + {"Drawdown", "3.400%"}, {"Expectancy", "677.669"}, {"Start Equity", "1000000"}, {"End Equity", "1064342.82"}, @@ -89,7 +89,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$3000.00"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "24.03%"}, - {"Drawdown Recovery", "0"}, + {"Drawdown Recovery", "9"}, {"OrderListHash", "691cf4990024b856a0a70255c9fd2545"} }; } diff --git a/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs b/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs index 91847e987450..a61ceccf738e 100644 --- a/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs @@ -97,7 +97,7 @@ public IEnumerable CoarseSelector(IEnumerable coarse) {"Average Win", "0.00%"}, {"Average Loss", "-0.14%"}, {"Compounding Annual Return", "71.152%"}, - {"Drawdown", "1.200%"}, + {"Drawdown", "1.100%"}, {"Expectancy", "-0.797"}, {"Start Equity", "100000"}, {"End Equity", "100738.86"}, diff --git a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs index cc519e57b8d3..7e4a1ab222be 100644 --- a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$260000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.00%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "006af1a065fca33ac1f1e9cd6bd02c11"} }; } diff --git a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs index 4a46427b52f5..3db21ab2f84c 100644 --- a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs @@ -214,7 +214,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$260000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.00%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "006af1a065fca33ac1f1e9cd6bd02c11"} }; } diff --git a/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs b/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs index 27ca17ceb01e..4eb147b0e9b4 100644 --- a/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs +++ b/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs @@ -200,7 +200,7 @@ private static void UpdateOrderTag(OrderTicket ticket, string tag, string errorM {"Estimated Strategy Capacity", "$210000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.89%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "8fba4f724843997ef421cf26ccabe51b"} }; } diff --git a/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs b/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs index 07e2aa85aec8..b94aad588898 100644 --- a/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/CompositeAlphaModelFrameworkAlgorithm.cs @@ -90,7 +90,7 @@ public override void Initialize() {"Average Win", "0.01%"}, {"Average Loss", "-0.18%"}, {"Compounding Annual Return", "-35.728%"}, - {"Drawdown", "1.800%"}, + {"Drawdown", "1.700%"}, {"Expectancy", "-0.690"}, {"Start Equity", "100000"}, {"End Equity", "99436.42"}, diff --git a/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs b/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs index 0ed906c78f5a..d4bdb22eba18 100644 --- a/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs @@ -84,7 +84,7 @@ public override void Initialize() {"Average Win", "1.05%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "227.385%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "0.361"}, {"Start Equity", "100000"}, {"End Equity", "101527.86"}, @@ -106,7 +106,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$23000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "139.03%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "fa7c51aaf284cdc29cb4c0ac8ebd5356"} }; } diff --git a/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs b/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs index 7e92bb7cf3cd..d283378101e7 100644 --- a/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$45000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "ae4986890fe7ab09ddb93059888f34c0"} }; } diff --git a/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs b/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs index f6be9f9c9426..297c560ebada 100644 --- a/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs @@ -210,7 +210,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "665.524%"}, - {"Drawdown", "2.100%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109332.4"}, diff --git a/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs index fd9a14d65a79..4801a5f69f24 100644 --- a/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs @@ -160,7 +160,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "2.968%"}, - {"Drawdown", "1.900%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101483.2"}, diff --git a/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs index 7addae3bedc5..0b2eeba0bc96 100644 --- a/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs @@ -176,7 +176,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "4.603%"}, - {"Drawdown", "1.900%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "102291.4"}, @@ -198,7 +198,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$230000000.00"}, {"Lowest Capacity Asset", "ES VP274HSU1AF5"}, {"Portfolio Turnover", "1.39%"}, - {"Drawdown Recovery", "51"}, + {"Drawdown Recovery", "16"}, {"OrderListHash", "6a5b2e6b3f140e9bb7f32c07cbf5f36c"} }; } diff --git a/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs index 9ef273dbca46..d4cfacd2674b 100644 --- a/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs @@ -209,7 +209,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.800%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs index 37d4d339904d..6a9a7e210449 100644 --- a/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs @@ -194,7 +194,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.84%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "3.380%"}, - {"Drawdown", "1.900%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101687.3"}, diff --git a/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs b/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs index 3f5881a0881f..edda49ed114a 100644 --- a/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/ConvertToFrameworkAlgorithm.cs @@ -171,7 +171,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$1400000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.23%"}, - {"Drawdown Recovery", "942"}, + {"Drawdown Recovery", "943"}, {"OrderListHash", "0422632afa17df1379757085f951de7b"} }; } diff --git a/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs b/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs index 89672269ec1c..2423bbc0972f 100644 --- a/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs +++ b/Algorithm.CSharp/CustomBenchmarkAlgorithm.cs @@ -98,7 +98,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "272.157%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101694.38"}, diff --git a/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs b/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs index e97a6b25e048..cb57aea29042 100644 --- a/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomOptionExerciseModelRegressionAlgorithm.cs @@ -71,7 +71,7 @@ public override IEnumerable OptionExercise(Option option, OptionExer {"Average Win", "6.14%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "26116903817855100000000000000%"}, - {"Drawdown", "16.500%"}, + {"Drawdown", "0.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "257114"}, diff --git a/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs b/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs index b9b70336a9e9..27adcaa4288e 100644 --- a/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs @@ -50,7 +50,7 @@ public double[] Optimize(double[,] historicalReturns, double[] expectedReturns = {"Average Win", "0%"}, {"Average Loss", "-0.14%"}, {"Compounding Annual Return", "773.203%"}, - {"Drawdown", "3.400%"}, + {"Drawdown", "3.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "103012.99"}, diff --git a/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs b/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs index 85cbf9166c4a..37fd51e4498f 100644 --- a/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs +++ b/Algorithm.CSharp/CustomWarmUpPeriodIndicatorAlgorithm.cs @@ -209,7 +209,7 @@ public CSMAWithWarmUp(string name, int period) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "272.157%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101694.38"}, diff --git a/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs b/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs index 13dee2075be3..1c1e7e0e8798 100644 --- a/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs @@ -128,4 +128,4 @@ public override void OnEndOfAlgorithm() {"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"} }; } -} +} \ No newline at end of file diff --git a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs index bcf8a1f72a94..cb08750a51df 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressionAlgorithm.cs @@ -47,7 +47,7 @@ public class DelistedFutureLiquidateFromChainAndContinuousMidnightExpiryRegressi {"Average Win", "0%"}, {"Average Loss", "-5.18%"}, {"Compounding Annual Return", "-20.700%"}, - {"Drawdown", "6.700%"}, + {"Drawdown", "6.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "94817.53"}, diff --git a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs index 2a22b8afe67b..873f7a015838 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs @@ -167,7 +167,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.800%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs index 57532a018430..f1294c24de1f 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs @@ -128,7 +128,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.800%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs b/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs index c3fa7e93e44b..5d48aea0079e 100644 --- a/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs @@ -151,7 +151,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0.69%"}, {"Average Loss", "-2.47%"}, {"Compounding Annual Return", "-99.946%"}, - {"Drawdown", "29.900%"}, + {"Drawdown", "28.600%"}, {"Expectancy", "-0.680"}, {"Start Equity", "100000"}, {"End Equity", "90213.76"}, diff --git a/Algorithm.CSharp/EquityMarginCallAlgorithm.cs b/Algorithm.CSharp/EquityMarginCallAlgorithm.cs index 3bb3d87324ca..68fb3e00a8a7 100644 --- a/Algorithm.CSharp/EquityMarginCallAlgorithm.cs +++ b/Algorithm.CSharp/EquityMarginCallAlgorithm.cs @@ -127,7 +127,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-6.17%"}, {"Compounding Annual Return", "-100.000%"}, - {"Drawdown", "73.000%"}, + {"Drawdown", "72.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "50554.98"}, diff --git a/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs b/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs index 09fc907dbf75..240ba4ee46c0 100644 --- a/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs @@ -178,7 +178,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$41000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, {"Portfolio Turnover", "14.24%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "4"}, {"OrderListHash", "5d7b0658b66b331ba8159011aa2ec5b4"} }; } diff --git a/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs b/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs index 8859d9992974..4b3d550c0a6a 100644 --- a/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs @@ -169,7 +169,7 @@ public override void OnOrderEvent(QCAlgorithm algorithm, OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -191,7 +191,7 @@ public override void OnOrderEvent(QCAlgorithm algorithm, OrderEvent orderEvent) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs b/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs index b58dd06dd82b..c8ba5c13d70c 100644 --- a/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ExtendedMarketHoursHistoryRegressionAlgorithm.cs @@ -146,7 +146,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0.00%"}, {"Compounding Annual Return", "-73.997%"}, - {"Drawdown", "2.600%"}, + {"Drawdown", "2.500%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "98959.88"}, diff --git a/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs b/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs index 7fd4f77da720..cebfead3f25d 100644 --- a/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureChainInternalSubscriptionsRegressionAlgorithm.cs @@ -121,7 +121,7 @@ select futuresContract {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-98.880%"}, - {"Drawdown", "4.600%"}, + {"Drawdown", "4.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96375.06"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs index 862212b74f27..f569f7d2140e 100644 --- a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs @@ -221,7 +221,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "2.28%"}, {"Average Loss", "-6.80%"}, {"Compounding Annual Return", "-9.373%"}, - {"Drawdown", "5.500%"}, + {"Drawdown", "5.300%"}, {"Expectancy", "-0.332"}, {"Start Equity", "100000"}, {"End Equity", "95323.58"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs index a9e2754c9623..0e680bf9f80d 100644 --- a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -186,7 +186,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "16.44%"}, {"Average Loss", "-35.38%"}, {"Compounding Annual Return", "-44.262%"}, - {"Drawdown", "26.800%"}, + {"Drawdown", "26.200%"}, {"Expectancy", "-0.268"}, {"Start Equity", "100000"}, {"End Equity", "75242.9"}, diff --git a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs index a4706b8fb0c2..2225385ab1c4 100644 --- a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs @@ -197,7 +197,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-3.85%"}, {"Compounding Annual Return", "-7.754%"}, - {"Drawdown", "4.400%"}, + {"Drawdown", "4.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "96148.58"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs index c12c9e8efc50..daf89dbb3b41 100644 --- a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.24%"}, {"Average Loss", "-6.46%"}, {"Compounding Annual Return", "6.498%"}, - {"Drawdown", "3.900%"}, + {"Drawdown", "0.900%"}, {"Expectancy", "0.292"}, {"Start Equity", "100000"}, {"End Equity", "103111.08"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs index bcf71170c074..d1e49db4e09d 100644 --- a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -189,7 +189,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.74%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "3.600%"}, - {"Drawdown", "2.000%"}, + {"Drawdown", "0.300%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101736.08"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs index b1921cc3b9e9..99a75a59b56e 100644 --- a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs @@ -203,7 +203,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.89%"}, {"Average Loss", "-7.10%"}, {"Compounding Annual Return", "6.286%"}, - {"Drawdown", "1.900%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0.267"}, {"Start Equity", "100000"}, {"End Equity", "103011.08"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs index 4d32ae6158b4..7fb1e141f109 100644 --- a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs @@ -188,7 +188,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "3.42%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "7.162%"}, - {"Drawdown", "2.900%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "103423.58"}, diff --git a/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs b/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs index 3357afa94d27..c2a0cecf9c1d 100644 --- a/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureSharingTickerRegressionAlgorithm.cs @@ -101,7 +101,7 @@ select futuresContract {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-99.356%"}, - {"Drawdown", "4.600%"}, + {"Drawdown", "4.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96325.06"}, diff --git a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs index b1c38f070935..ab85a2583e82 100644 --- a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs @@ -199,7 +199,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.36%"}, {"Average Loss", "-10.99%"}, {"Compounding Annual Return", "-1.942%"}, - {"Drawdown", "2.100%"}, + {"Drawdown", "2.000%"}, {"Expectancy", "-0.028"}, {"Start Equity", "100000"}, {"End Equity", "98233.93"}, diff --git a/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs index 8a676e203b46..252e96ff0d3f 100644 --- a/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesFrameworkRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-4.59%"}, {"Compounding Annual Return", "-100.000%"}, - {"Drawdown", "33.500%"}, + {"Drawdown", "33.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "79014"}, diff --git a/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs index 697bdb1e1c93..dd29a2052f9f 100644 --- a/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionCallITMExpiryRegressionAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "9.07%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "243.722%"}, - {"Drawdown", "2.600%"}, + {"Drawdown", "2.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109074"}, diff --git a/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs index 9f9afc17d54f..680cc1108da2 100644 --- a/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -172,7 +172,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "4.97%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "99.378%"}, - {"Drawdown", "7.700%"}, + {"Drawdown", "7.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "104974"}, diff --git a/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs index 8c2da0a29ac1..c3ac8a75e13c 100644 --- a/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-9.85%"}, {"Compounding Annual Return", "-77.114%"}, - {"Drawdown", "12.600%"}, + {"Drawdown", "12.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "90146"}, diff --git a/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs index 7ef0bbf30de0..b439ff57964b 100644 --- a/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -184,7 +184,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.01%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "0.142%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100010"}, diff --git a/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs index 07d5de8400a2..76d7e117ecc3 100644 --- a/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionShortPutOTMExpiryRegressionAlgorithm.cs @@ -183,7 +183,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.34%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "4.943%"}, - {"Drawdown", "0.200%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100340"}, diff --git a/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs b/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs index 76e05062f757..af3fff18e5e1 100644 --- a/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs +++ b/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs @@ -151,7 +151,7 @@ public void Score(InsightManager insightManager, DateTime utcTime) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -173,7 +173,7 @@ public void Score(InsightManager insightManager, DateTime utcTime) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs b/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs index 615908a8d400..1dfbe9379159 100644 --- a/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$45000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "ae4986890fe7ab09ddb93059888f34c0"} }; } diff --git a/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs b/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs index 264b3860a5c2..3d0c40e319b8 100644 --- a/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs @@ -101,7 +101,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "-0.12%"}, {"Compounding Annual Return", "239.838%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101576.33"}, @@ -123,7 +123,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$5600000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "379.43%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "b339a5e17142fe5496d80ee26079d8d0"} }; diff --git a/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs b/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs index f75509112332..14b7da9f78e1 100644 --- a/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LimitFillRegressionAlgorithm.cs @@ -121,7 +121,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "9.86%"}, - {"Drawdown Recovery", "1"}, + {"Drawdown Recovery", "0"}, {"OrderListHash", "b25621656830fb81b093f3c315830ea3"} }; } diff --git a/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs b/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs index bb2035b9a0b7..a6473ce5c98e 100644 --- a/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LimitOrdersAreFilledAfterHoursForFuturesRegressionAlgorithm.cs @@ -134,7 +134,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-9.298%"}, - {"Drawdown", "2.900%"}, + {"Drawdown", "2.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "99866.4"}, diff --git a/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs b/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs index f14a86a0f9d2..278346447aff 100644 --- a/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs @@ -125,7 +125,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.01%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "15.617%"}, - {"Drawdown", "1.900%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107578.9"}, diff --git a/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs b/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs index 5e9e966182df..0ea745265122 100644 --- a/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs @@ -134,7 +134,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.39%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "1750.998%"}, - {"Drawdown", "5.600%"}, + {"Drawdown", "5.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "103801.65"}, diff --git a/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs b/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs index 167c338a9c02..125046779e53 100644 --- a/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MarketOrdersAreSupportedOnExtendedHoursForFuturesRegressionAlgorithm.cs @@ -111,7 +111,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-0.626%"}, - {"Drawdown", "2.800%"}, + {"Drawdown", "2.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "99991.4"}, diff --git a/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs b/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs index 450e7f1b828c..87d281eeccaa 100644 --- a/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs @@ -42,7 +42,7 @@ public override void Initialize() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "39.100%"}, - {"Drawdown", "0.600%"}, + {"Drawdown", "0.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100422.84"}, @@ -64,7 +64,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.98%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "8774049eb5141a2b6956d9432426f837"} }; } diff --git a/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs b/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs index 7c47273d5169..a3fd26998691 100644 --- a/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMarginCallExpectedRegressionAlgorithm.cs @@ -120,7 +120,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "2.45%"}, {"Average Loss", "-1.97%"}, {"Compounding Annual Return", "9636.014%"}, - {"Drawdown", "10.100%"}, + {"Drawdown", "9.800%"}, {"Expectancy", "0.346"}, {"Start Equity", "100000"}, {"End Equity", "106028.40"}, diff --git a/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs b/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs index 8a3c609c2adc..014d53e53587 100644 --- a/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs @@ -107,7 +107,7 @@ public override void OnMarginCall(List requests) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-93.216%"}, - {"Drawdown", "7.200%"}, + {"Drawdown", "7.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96499.74"}, diff --git a/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs b/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs index a4b88df0f486..ca64300ba9b4 100644 --- a/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs @@ -102,7 +102,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$63000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "72d5203e9911bad556de371750fe0278"} }; } diff --git a/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs b/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs index a3970d0ea128..ce3d2c31cb9a 100644 --- a/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs +++ b/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs @@ -185,7 +185,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs b/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs index bb6d49c97664..d4867599a759 100644 --- a/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OptionExerciseOnExpiryAndNonTradableDateRegressionAlgorithm.cs @@ -133,7 +133,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.58%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "31.165%"}, - {"Drawdown", "0.400%"}, + {"Drawdown", "0.300%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101172"}, diff --git a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs index 99db1b020912..4a0c6a701dfb 100644 --- a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs @@ -181,7 +181,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-3.85%"}, {"Compounding Annual Return", "-7.754%"}, - {"Drawdown", "4.400%"}, + {"Drawdown", "4.300%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "96148.58"}, diff --git a/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs b/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs index 8442abac4bac..5fb54088b678 100644 --- a/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs @@ -102,7 +102,7 @@ private void PlaceTrade(string ticker) {"Average Win", "0.83%"}, {"Average Loss", "-0.90%"}, {"Compounding Annual Return", "273.871%"}, - {"Drawdown", "3.300%"}, + {"Drawdown", "3.200%"}, {"Expectancy", "0.203"}, {"Start Equity", "100000.00"}, {"End Equity", "101715.67"}, diff --git a/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs b/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs index e5462881f60b..025f2876e038 100644 --- a/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs @@ -154,7 +154,7 @@ public override void Execute(QCAlgorithm algorithm, IPortfolioTarget[] targets) {"Average Win", "0%"}, {"Average Loss", "-1.01%"}, {"Compounding Annual Return", "261.134%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101655.30"}, @@ -176,7 +176,7 @@ public override void Execute(QCAlgorithm algorithm, IPortfolioTarget[] targets) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "059f940ee51f03f94eb0f13ae4b93134"} }; } diff --git a/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs b/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs index 9b2edbb54636..e972576ae513 100644 --- a/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs +++ b/Algorithm.CSharp/RegisterIndicatorRegressionAlgorithm.cs @@ -181,7 +181,7 @@ protected override decimal ComputeNextValue(QuoteBar input) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "22662.692%"}, - {"Drawdown", "2.100%"}, + {"Drawdown", "1.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109332.4"}, diff --git a/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs b/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs index a61f1e430ba7..555ab326fc74 100644 --- a/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs @@ -117,7 +117,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "45.475%"}, - {"Drawdown", "1.000%"}, + {"Drawdown", "0.800%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100497.59"}, diff --git a/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs index fa4bbfedd31b..431232cc467a 100644 --- a/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs @@ -197,7 +197,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs b/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs index d494c9c5d557..6c604d4cf698 100644 --- a/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SecuritySeederRegressionAlgorithm.cs @@ -106,7 +106,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "307.471%"}, - {"Drawdown", "1.800%"}, + {"Drawdown", "1.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101031.62"}, diff --git a/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs b/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs index 52651ff55f3c..e693e8216605 100644 --- a/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs @@ -98,7 +98,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs b/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs index b65cda3392a4..213f5dd97702 100644 --- a/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SetHoldingsLiquidateExistingHoldingsMultipleTargetsRegressionAlgorithm.cs @@ -45,7 +45,7 @@ public override void OnData(Slice data) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "300.863%"}, - {"Drawdown", "2.200%"}, + {"Drawdown", "2.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101791.04"}, diff --git a/Algorithm.CSharp/TimeInForceAlgorithm.cs b/Algorithm.CSharp/TimeInForceAlgorithm.cs index 198fd27945a6..6f18f8ca9fb7 100644 --- a/Algorithm.CSharp/TimeInForceAlgorithm.cs +++ b/Algorithm.CSharp/TimeInForceAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$44000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "0.87%"}, - {"Drawdown Recovery", "2"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "a0588650916ed396fb5793375118e7b3"} }; } diff --git a/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs b/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs index 33dcd30c2713..b16825482d0d 100644 --- a/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs +++ b/Algorithm.CSharp/TotalPortfolioValueRegressionAlgorithm.cs @@ -155,7 +155,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$410000.00"}, {"Lowest Capacity Asset", "BNO UN3IMQ2JU1YD"}, {"Portfolio Turnover", "601.23%"}, - {"Drawdown Recovery", "236"}, + {"Drawdown Recovery", "237"}, {"OrderListHash", "7e35def0ca91b89579b42cf23ef941e2"} }; } diff --git a/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs b/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs index 7b4d2429b893..332015def485 100644 --- a/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs +++ b/Algorithm.CSharp/TrailingStopOrderRegressionAlgorithm.cs @@ -173,7 +173,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "1.833%"}, - {"Drawdown", "0.100%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100023.22"}, diff --git a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs index 74555b0aa951..9f7dfd84badd 100644 --- a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs @@ -158,7 +158,7 @@ protected void AssertDataTime(DateTime start, DateTime end, List times {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "112.304%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100620.7"}, diff --git a/Common/Statistics/AlgorithmPerformance.cs b/Common/Statistics/AlgorithmPerformance.cs index 5d42a61c7175..5b94c81b710d 100644 --- a/Common/Statistics/AlgorithmPerformance.cs +++ b/Common/Statistics/AlgorithmPerformance.cs @@ -44,7 +44,7 @@ public class AlgorithmPerformance /// /// The list of closed trades /// Trade record of profits and losses - /// The equity curve series points + /// The list of daily equity values /// The algorithm portfolio turnover /// The list of algorithm performance values /// The list of benchmark values @@ -56,7 +56,7 @@ public class AlgorithmPerformance public AlgorithmPerformance( List trades, SortedDictionary profitLoss, - List equityPoints, + SortedDictionary equity, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -66,8 +66,9 @@ public AlgorithmPerformance( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { + TradeStatistics = new TradeStatistics(trades); - PortfolioStatistics = new PortfolioStatistics(profitLoss, equityPoints, portfolioTurnover, listPerformance, listBenchmark, startingCapital, + PortfolioStatistics = new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, startingCapital, riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions); ClosedTrades = trades; } diff --git a/Common/Statistics/PortfolioStatistics.cs b/Common/Statistics/PortfolioStatistics.cs index a8934d46ee44..5f8ab2a807dd 100644 --- a/Common/Statistics/PortfolioStatistics.cs +++ b/Common/Statistics/PortfolioStatistics.cs @@ -196,7 +196,7 @@ public class PortfolioStatistics /// Initializes a new instance of the class /// /// Trade record of profits and losses - /// The equity curve series points + /// The list of daily equity values /// The algorithm portfolio turnover /// The list of algorithm performance values /// The list of benchmark values @@ -210,7 +210,7 @@ public class PortfolioStatistics /// The number of losses public PortfolioStatistics( SortedDictionary profitLoss, - List equityPoints, + SortedDictionary equity, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -221,7 +221,7 @@ public PortfolioStatistics( int? lossCount = null) { StartEquity = startingCapital; - EndEquity = Statistics.GetClose(equityPoints.LastOrDefault()); + EndEquity = equity.LastOrDefault().Value; if (portfolioTurnover.Count > 0) { @@ -278,16 +278,11 @@ public PortfolioStatistics( if (startingCapital != 0) { - TotalNetProfit = EndEquity / startingCapital - 1; + TotalNetProfit = equity.Values.LastOrDefault() / startingCapital - 1; } - if (equityPoints.Count >= 2) - { - var lastTime = equityPoints.Last().Time; - var firstTime = equityPoints.First().Time; - var fractionOfYears = (decimal)(lastTime - firstTime).TotalDays / 365; - CompoundingAnnualReturn = Statistics.CompoundingAnnualPerformance(startingCapital, EndEquity, fractionOfYears); - } + var fractionOfYears = (decimal)(equity.Keys.LastOrDefault() - equity.Keys.FirstOrDefault()).TotalDays / 365; + CompoundingAnnualReturn = Statistics.CompoundingAnnualPerformance(startingCapital, equity.Values.LastOrDefault(), fractionOfYears); AnnualVariance = Statistics.AnnualVariance(listPerformance, tradingDaysPerYear).SafeDecimalCast(); AnnualStandardDeviation = (decimal)Math.Sqrt((double)AnnualVariance); @@ -295,7 +290,7 @@ public PortfolioStatistics( var benchmarkAnnualPerformance = GetAnnualPerformance(listBenchmark, tradingDaysPerYear); var annualPerformance = GetAnnualPerformance(listPerformance, tradingDaysPerYear); - var riskFreeRate = riskFreeInterestRateModel.GetAverageRiskFreeRate(equityPoints.Select(x => x.Time)); + var riskFreeRate = riskFreeInterestRateModel.GetAverageRiskFreeRate(equity.Select(x => x.Key)); SharpeRatio = AnnualStandardDeviation == 0 ? 0 : Statistics.SharpeRatio(annualPerformance, AnnualStandardDeviation, riskFreeRate); var annualDownsideDeviation = Statistics.AnnualDownsideStandardDeviation(listPerformance, tradingDaysPerYear).SafeDecimalCast(); @@ -319,7 +314,7 @@ public PortfolioStatistics( ValueAtRisk99 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.99d); ValueAtRisk95 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.95d); - var drawdownMetrics = Statistics.CalculateDrawdownMetrics(equityPoints, 3); + var drawdownMetrics = Statistics.CalculateDrawdownMetrics(equity, 3); Drawdown = drawdownMetrics.Drawdown; DrawdownRecovery = drawdownMetrics.DrawdownRecovery; } diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index 71c3d854efcc..da5813eb04f4 100644 --- a/Common/Statistics/Statistics.cs +++ b/Common/Statistics/Statistics.cs @@ -16,7 +16,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Runtime.CompilerServices; using MathNet.Numerics.Distributions; using MathNet.Numerics.Statistics; using QuantConnect.Logging; @@ -253,46 +252,45 @@ public static decimal DrawdownPercent(decimal current, decimal high, int roundin } /// - /// Calculates the maximum drawdown and recovery time using OHLC equity series points. - /// Uses High for peak tracking and Low for drawdown measurement. + /// Calculates the maximum drawdown percentage and the maximum recovery time (in days) + /// from a historical equity time series. /// - /// Time series of equity OHLC data points + /// Time series of equity values indexed by date /// Number of decimals to round the results to /// A object containing MaxDrawdown (percentage) and MaxRecoveryTime (in days) - public static DrawdownMetrics CalculateDrawdownMetrics(List equityPoints, int rounding = 2) + public static DrawdownMetrics CalculateDrawdownMetrics(SortedDictionary equityOverTime, int rounding = 2) { decimal maxDrawdown = 0m; decimal maxRecoveryTime = 0m; try { - if (equityPoints == null || equityPoints.Count < 2) return new DrawdownMetrics(0m, 0); + if (equityOverTime.Count < 2) return new DrawdownMetrics(0m, 0); - GetHighLow(equityPoints[0], out var peakEquity, out _); - var peakDate = equityPoints[0].Time; + var equityList = equityOverTime.ToList(); + + var peakEquity = equityList[0].Value; + var peakDate = equityList[0].Key; DateTime? drawdownStartDate = null; - for (var i = 0; i < equityPoints.Count; i++) + foreach (var point in equityList) { - var point = equityPoints[i]; - GetHighLow(point, out var high, out var low); - - // Update peak equity using the high price - if (high >= peakEquity) + // Update peak equity if a new high is reached (or matched) + if (point.Value >= peakEquity) { // If we were in a drawdown, calculate recovery time if (drawdownStartDate.HasValue) { - var recoveryDays = (decimal)(point.Time - drawdownStartDate.Value).TotalDays; + var recoveryDays = (decimal)(point.Key - drawdownStartDate.Value).TotalDays; maxRecoveryTime = Math.Max(maxRecoveryTime, recoveryDays); drawdownStartDate = null; } - peakEquity = high; - peakDate = point.Time; + peakEquity = point.Value; + peakDate = point.Key; } - // Calculate current drawdown from peak using the low price - var currentDrawdown = (low / peakEquity) - 1; + // Calculate current drawdown from peak + var currentDrawdown = (point.Value / peakEquity) - 1; if (currentDrawdown < 0) { maxDrawdown = Math.Min(maxDrawdown, currentDrawdown); @@ -314,42 +312,6 @@ public static DrawdownMetrics CalculateDrawdownMetrics(List equity return new DrawdownMetrics(0m, 0); } } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static decimal GetClose(ISeriesPoint point) - { - switch (point) - { - case Candlestick candlestick: - return candlestick.Close ?? 0m; - case ChartPoint chartPoint: - return chartPoint.y ?? 0m; - default: - return 0m; - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static void GetHighLow(ISeriesPoint point, out decimal high, out decimal low) - { - if (point is Candlestick candlestick) - { - var close = candlestick.Close ?? 0m; - high = candlestick.High ?? close; - low = candlestick.Low ?? close; - return; - } - if (point is ChartPoint chartPoint) - { - var value = chartPoint.y ?? 0m; - high = value; - low = value; - return; - } - - high = 0m; - low = 0m; - } } // End of Statistics } // End of Namespace diff --git a/Common/Statistics/StatisticsBuilder.cs b/Common/Statistics/StatisticsBuilder.cs index 7e57e954a556..7fd403b6e0ef 100644 --- a/Common/Statistics/StatisticsBuilder.cs +++ b/Common/Statistics/StatisticsBuilder.cs @@ -33,7 +33,7 @@ public static class StatisticsBuilder /// /// The list of closed trades /// Trade record of profits and losses - /// The equity curve series points + /// The list of daily equity values /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -51,7 +51,7 @@ public static class StatisticsBuilder public static StatisticsResults Generate( List trades, SortedDictionary profitLoss, - List equityPoints, + List pointsEquity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -64,12 +64,14 @@ public static StatisticsResults Generate( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { - var firstDate = equityPoints.Count > 0 ? equityPoints.First().Time.Date : default; - var lastDate = equityPoints.Count > 0 ? equityPoints.Last().Time.Date : default; + var equity = ChartPointToDictionary(pointsEquity); - var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equityPoints, pointsPerformance, pointsBenchmark, + var firstDate = equity.Keys.FirstOrDefault().Date; + var lastDate = equity.Keys.LastOrDefault().Date; + + var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); - var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equityPoints, pointsPerformance, pointsBenchmark, + var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); var summary = GetSummary(totalPerformance, estimatedStrategyCapacity, totalFees, totalOrders, accountCurrencySymbol); @@ -83,7 +85,7 @@ public static StatisticsResults Generate( /// The final date of the range /// The list of closed trades /// Trade record of profits and losses - /// The equity curve series points + /// The list of daily equity values /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -99,7 +101,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( DateTime toDate, List trades, SortedDictionary profitLoss, - List equityPoints, + SortedDictionary equity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -108,13 +110,14 @@ private static AlgorithmPerformance GetAlgorithmPerformance( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear) { - var periodEquityPoints = equityPoints?.Where(x => x.Time.Date >= fromDate && x.Time.Date < toDate.AddDays(1)).ToList(); + var periodEquity = new SortedDictionary(equity.Where(x => x.Key.Date >= fromDate && x.Key.Date < toDate.AddDays(1)).ToDictionary(x => x.Key, y => y.Value)); // No portfolio equity for the period means that there is no performance to be computed - if (periodEquityPoints.IsNullOrEmpty()) + if (periodEquity.IsNullOrEmpty()) { return new AlgorithmPerformance(); } + var periodTrades = trades.Where(x => x.ExitTime.Date >= fromDate && x.ExitTime < toDate.AddDays(1)).ToList(); var periodProfitLoss = new SortedDictionary(profitLoss.Where(x => x.Key >= fromDate && x.Key.Date < toDate.AddDays(1)).ToDictionary(x => x.Key, y => y.Value)); var periodWinCount = transactions.WinningTransactions.Count(x => x.Key >= fromDate && x.Key.Date < toDate.AddDays(1)); @@ -139,9 +142,9 @@ private static AlgorithmPerformance GetAlgorithmPerformance( var listBenchmark = benchmarkEnumerable.Select(x => x.Value).ToList(); var listPerformance = PreprocessPerformanceValues(performance).Select(x => x.Value).ToList(); - var runningCapital = equityPoints.Count == periodEquityPoints.Count ? startingCapital : Statistics.GetClose(periodEquityPoints.First()); + var runningCapital = equity.Count == periodEquity.Count ? startingCapital : periodEquity.Values.FirstOrDefault(); - return new AlgorithmPerformance(periodTrades, periodProfitLoss, periodEquityPoints, portfolioTurnover, listPerformance, listBenchmark, + return new AlgorithmPerformance(periodTrades, periodProfitLoss, periodEquity, portfolioTurnover, listPerformance, listBenchmark, runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear); } @@ -152,7 +155,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( /// The last date of the total period /// The list of closed trades /// Trade record of profits and losses - /// The equity curve series points + /// The list of daily equity values /// The list of algorithm performance values /// The list of benchmark values /// The list of portfolio turnover daily samples @@ -168,7 +171,7 @@ private static Dictionary GetRollingPerformances( DateTime lastDate, List trades, SortedDictionary profitLoss, - List equityPoints, + SortedDictionary equity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -187,7 +190,7 @@ private static Dictionary GetRollingPerformances( foreach (var period in ranges) { var key = $"M{monthPeriod}_{period.EndDate.ToStringInvariant("yyyyMMdd")}"; - var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, equityPoints, pointsPerformance, + var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); rollingPerformances[key] = periodPerformance; } diff --git a/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs b/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs index 06617a2097c6..95590fa2be91 100644 --- a/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs +++ b/Report/ReportElements/MaxDrawdownRecoveryReportElement.cs @@ -51,10 +51,9 @@ public override string Render() Result = backtestDrawdownRecovery; return backtestDrawdownRecovery?.ToStringInvariant() ?? "-"; } - var equityCurve = DrawdownCollection.NormalizeResults(_backtestResult, _liveResult) + var equityCurve = new SortedDictionary(DrawdownCollection.NormalizeResults(_backtestResult, _liveResult) .Observations - .Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, (decimal)kvp.Value)) - .ToList(); + .ToDictionary(kvp => kvp.Key, kvp => (decimal)kvp.Value)); var maxDrawdownRecovery = Statistics.Statistics.CalculateDrawdownMetrics(equityCurve).DrawdownRecovery; Result = maxDrawdownRecovery; diff --git a/Report/ReportElements/MaxDrawdownReportElement.cs b/Report/ReportElements/MaxDrawdownReportElement.cs index 8b7e2def8c9a..9661e22aa465 100644 --- a/Report/ReportElements/MaxDrawdownReportElement.cs +++ b/Report/ReportElements/MaxDrawdownReportElement.cs @@ -53,10 +53,9 @@ public override string Render() return backtestDrawdown?.ToString("P1") ?? "-"; } - var equityCurve = DrawdownCollection.NormalizeResults(_backtest, _live) + var equityCurve = new SortedDictionary(DrawdownCollection.NormalizeResults(_backtest, _live) .Observations - .Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, (decimal)kvp.Value)) - .ToList(); + .ToDictionary(kvp => kvp.Key, kvp => (decimal)kvp.Value)); var maxDrawdown = Statistics.Statistics.CalculateDrawdownMetrics(equityCurve).Drawdown; Result = maxDrawdown; diff --git a/Research/QuantBook.cs b/Research/QuantBook.cs index 01cd6b5f4fa8..c3266e4a7533 100644 --- a/Research/QuantBook.cs +++ b/Research/QuantBook.cs @@ -821,7 +821,7 @@ public PyDict GetPortfolioStatistics(PyObject dataFrame) } // Convert the double into decimal - var equityPoints = dictEquity.Select(kvp => (ISeriesPoint)new ChartPoint(kvp.Key, (decimal)kvp.Value)).ToList(); + var equity = new SortedDictionary(dictEquity.ToDictionary(kvp => kvp.Key, kvp => (decimal)kvp.Value)); var profitLoss = new SortedDictionary(dictPL.ToDictionary(kvp => kvp.Key, kvp => double.IsNaN(kvp.Value) ? 0 : (decimal)kvp.Value)); // Gets the last value of the day of the benchmark and equity @@ -835,7 +835,7 @@ public PyDict GetPortfolioStatistics(PyObject dataFrame) BaseSetupHandler.SetBrokerageTradingDayPerYear(algorithm: this); // Compute portfolio statistics - var stats = new PortfolioStatistics(profitLoss, equityPoints, new(), listPerformance, listBenchmark, startingCapital, RiskFreeInterestRateModel, + var stats = new PortfolioStatistics(profitLoss, equity, new(), listPerformance, listBenchmark, startingCapital, RiskFreeInterestRateModel, Settings.TradingDaysPerYear.Value); result.SetItem("Average Win (%)", Convert.ToDouble(stats.AverageWinRate * 100).ToPython()); diff --git a/Tests/Common/ExtendedDictionaryTests.cs b/Tests/Common/ExtendedDictionaryTests.cs index 80e87d40f6f6..d494227181c7 100644 --- a/Tests/Common/ExtendedDictionaryTests.cs +++ b/Tests/Common/ExtendedDictionaryTests.cs @@ -34,7 +34,7 @@ public void RunPythonDictionaryFeatureRegressionAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "349.409%"}, - {"Drawdown", "2.700%"}, + {"Drawdown", "2.600%"}, {"Expectancy", "0"}, {"Net Profit", "1.940%"}, {"Sharpe Ratio", "10.771"}, diff --git a/Tests/Common/Statistics/DrawdownRecoveryTests.cs b/Tests/Common/Statistics/DrawdownRecoveryTests.cs index 0e125474167d..792a29ee1967 100644 --- a/Tests/Common/Statistics/DrawdownRecoveryTests.cs +++ b/Tests/Common/Statistics/DrawdownRecoveryTests.cs @@ -26,53 +26,18 @@ internal class DrawdownRecoveryTests public void DrawdownMetricsMaximumRecoveryTimeTests(List data, decimal expectedRecoveryTime) { var startDate = new DateTime(2025, 1, 1); - var points = new List(); + var equity = new SortedDictionary(); for (int i = 0; i < data.Count; i++) { - points.Add(new ChartPoint(startDate.AddDays(i), data[i])); + var value = data[i]; + equity[startDate.AddDays(i)] = value; } - var result = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(points).DrawdownRecovery; + var result = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(equity).DrawdownRecovery; Assert.AreEqual(expectedRecoveryTime, result); } - [Test] - public void CandlestickUsesHighForPeakAndLowForDrawdown() - { - // Day 2 High=105 sets the peak: Low=80 -> drawdown = (80/105) - 1 --> 0.24 - var startDate = new DateTime(2025, 1, 1); - - var points = new List - { - new Candlestick(startDate, 100m, 100m, 100m, 100m), - new Candlestick(startDate.AddDays(1), 95m, 105m, 80m, 95m), - new Candlestick(startDate.AddDays(2), 95m, 106m, 100m, 100m), - }; - - var metrics = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(points); - - Assert.AreEqual(0.24m, metrics.Drawdown); - } - - [Test] - public void CandlestickWithNullHighLowFallsBackToClose() - { - // When High/Low are null, Close is used for both peak and drawdown - var startDate = new DateTime(2025, 1, 1); - var points = new List - { - new Candlestick(startDate, null, null, null, 100m), - new Candlestick(startDate.AddDays(1), null, null, null, 90m), - new Candlestick(startDate.AddDays(2), null, null, null, 100m), - }; - - var metrics = QuantConnect.Statistics.Statistics.CalculateDrawdownMetrics(points); - - Assert.AreEqual(0.1m, metrics.Drawdown); - Assert.AreEqual(2, metrics.DrawdownRecovery); - } - private static IEnumerable TestCases() { yield return new TestCaseData(new List { 100, 90, 100 }, 2m).SetName("RecoveryAfterOneDip2Days"); diff --git a/Tests/Common/Statistics/PortfolioStatisticsTests.cs b/Tests/Common/Statistics/PortfolioStatisticsTests.cs index 59708b792c91..c3288b19f228 100644 --- a/Tests/Common/Statistics/PortfolioStatisticsTests.cs +++ b/Tests/Common/Statistics/PortfolioStatisticsTests.cs @@ -148,7 +148,7 @@ public void PortfolioStatisticsDoesNotFailWhenAnnualPerformanceIsLarge() var riskFreeInterestRateModel = new InterestRateProvider(); var tradingDaysPerYear = 252; - Assert.DoesNotThrow(() => new PortfolioStatistics(profitLoss, new List(), portfolioTurnover, listPerformance, listBenchmark, startingCapital, riskFreeInterestRateModel, tradingDaysPerYear)); + Assert.DoesNotThrow(() => new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, startingCapital, riskFreeInterestRateModel, tradingDaysPerYear)); } /// @@ -165,7 +165,7 @@ private PortfolioStatistics GetPortfolioStatistics(bool win, int tradingDaysPerY var profitLoss = new SortedDictionary(trades.ToDictionary(x => x.ExitTime, x => x.ProfitLoss)); var winCount = trades.Count(x => x.IsWin); var lossCount = trades.Count - winCount; - return new PortfolioStatistics(profitLoss, new List(), + return new PortfolioStatistics(profitLoss, new SortedDictionary(), new SortedDictionary(), listPerformance, listBenchmark, 100000, new InterestRateProvider(), tradingDaysPerYear, winCount, lossCount); } diff --git a/Tests/Python/PythonSliceGetByTypeTest.cs b/Tests/Python/PythonSliceGetByTypeTest.cs index 76af25ebfb2b..3bfa68b4e560 100644 --- a/Tests/Python/PythonSliceGetByTypeTest.cs +++ b/Tests/Python/PythonSliceGetByTypeTest.cs @@ -31,7 +31,7 @@ public void RunPythonSliceGetByTypeRegressionAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "284.284%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "0"}, {"Net Profit", "1.736%"}, {"Sharpe Ratio", "8.86"}, From d5b6f6a17926fc86a44e6b07919927a1977d7ea6 Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 17 Apr 2026 01:42:53 -0500 Subject: [PATCH 08/11] Add higher frequency equity sampling for drawdown calculation --- Engine/Results/BacktestingResultHandler.cs | 14 +++++++++++++- Engine/Results/BaseResultsHandler.cs | 13 ++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Engine/Results/BacktestingResultHandler.cs b/Engine/Results/BacktestingResultHandler.cs index 70051f043138..2ba20a18e641 100644 --- a/Engine/Results/BacktestingResultHandler.cs +++ b/Engine/Results/BacktestingResultHandler.cs @@ -39,6 +39,7 @@ namespace QuantConnect.Lean.Engine.Results public class BacktestingResultHandler : BaseResultsHandler, IResultHandler { private const double Samples = 4000; + private const double DrawdownSamples = 40000; private const double MinimumSamplePeriod = 4; private BacktestNodePacket _job; @@ -59,6 +60,8 @@ public class BacktestingResultHandler : BaseResultsHandler, IResultHandler //Processing Time: private DateTime _nextSample; + private DateTime _nextDrawdownSample; + private TimeSpan _drawdownResamplePeriod; private string _algorithmId; private int _projectId; @@ -460,6 +463,10 @@ public override void SetAlgorithm(IAlgorithm algorithm, decimal startingPortfoli ResamplePeriod = TimeSpan.FromMinutes(resampleMinutes); Log.Trace("BacktestingResultHandler(): Sample Period Set: " + resampleMinutes.ToStringInvariant("00.00")); + // Drawdown uses a finer resample period (10x more samples) for more accurate calculation + var drawdownResampleMinutes = totalMinutes < MinimumSamplePeriod * DrawdownSamples ? MinimumSamplePeriod : totalMinutes / DrawdownSamples; + _drawdownResamplePeriod = TimeSpan.FromMinutes(drawdownResampleMinutes); + ConfigureConsoleTextWriter(algorithm); } @@ -738,7 +745,12 @@ public virtual void ProcessSynchronousEvents(bool forceProcess = false) // Invalidate the processed days count so it gets recalculated _progressMonitor.InvalidateProcessedDays(); - // Update the equity bar + // Update the equity bar and sample close for drawdown at finer granularity + if (time > _nextDrawdownSample || forceProcess) + { + _nextDrawdownSample = time.Add(_drawdownResamplePeriod); + UpdateAlgorithmEquityForDrawdown(time); + } UpdateAlgorithmEquity(); if (time > _nextSample || forceProcess) diff --git a/Engine/Results/BaseResultsHandler.cs b/Engine/Results/BaseResultsHandler.cs index b7163cf4923a..cc3e13847432 100644 --- a/Engine/Results/BaseResultsHandler.cs +++ b/Engine/Results/BaseResultsHandler.cs @@ -58,6 +58,7 @@ public abstract class BaseResultsHandler private string _hostName; private Bar _currentAlgorithmEquity; + private readonly List _equityForDrawdown = new(); private List _temporaryPerformanceValues; private List _temporaryBenchmarkValues; @@ -1063,7 +1064,8 @@ protected StatisticsResults GenerateStatisticsResults(Dictionary portfolioTurnover = new Series(); } - statisticsResults = StatisticsBuilder.Generate(trades, profitLoss, equity.Values, performanceValues, benchmarkValues, + var equityForDrawdown = _equityForDrawdown.Count > 0 ? _equityForDrawdown : equity.Values; + statisticsResults = StatisticsBuilder.Generate(trades, profitLoss, equityForDrawdown, performanceValues, benchmarkValues, portfolioTurnover.Values, StartingPortfolioValue, Algorithm.Portfolio.TotalFees, TotalTradesCount(), estimatedStrategyCapacity, AlgorithmCurrencySymbol, Algorithm.Transactions, Algorithm.RiskFreeInterestRateModel, Algorithm.Settings.TradingDaysPerYear.Value // already set in Brokerage|Backtesting-SetupHandler classes @@ -1222,6 +1224,15 @@ protected void UpdateAlgorithmEquity() UpdateAlgorithmEquity(CurrentAlgorithmEquity); } + /// + /// Records the current portfolio close value into the drawdown equity series. + /// Called at a finer sample rate than the chart equity series. + /// + protected void UpdateAlgorithmEquityForDrawdown(DateTime time) + { + _equityForDrawdown.Add(new ChartPoint(time, CurrentAlgorithmEquity.Close)); + } + protected virtual void UpdatePortfolioValues(DateTime time, bool force = false) { _portfolioValue = new ReferenceWrapper(Algorithm?.Portfolio.TotalPortfolioValue ?? 0); From 7f29fb9c07b4a331ff48b54b31ca7a328780c6a6 Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 17 Apr 2026 01:44:59 -0500 Subject: [PATCH 09/11] Update regression algorithms --- ...taIndicatorNewAssetsRegressionAlgorithm.cs | 4 ++-- ...tractFromFutureChainRegressionAlgorithm.cs | 2 +- ...dRemoveSecurityCacheRegressionAlgorithm.cs | 2 +- .../AddRiskManagementAlgorithm.cs | 2 +- ...icatorWarmupDataTypeRegressionAlgorithm.cs | 4 ++-- ...maticIndicatorWarmupRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/BasicTemplateAlgorithm.cs | 2 +- .../BasicTemplateAxosAlgorithm.cs | 2 +- .../BasicTemplateContinuousFutureAlgorithm.cs | 2 +- ...inuousFutureWithExtendedMarketAlgorithm.cs | 2 +- .../BasicTemplateFrameworkAlgorithm.cs | 2 +- .../BasicTemplateFuturesFrameworkAlgorithm.cs | 2 +- ...resFrameworkWithExtendedMarketAlgorithm.cs | 2 +- ...plateFuturesWithExtendedMarketAlgorithm.cs | 4 ++-- .../BasicTemplateIndexAlgorithm.cs | 2 +- .../BasicTemplateIndiaAlgorithm.cs | 4 ++-- .../BasicTemplateOptionsDailyAlgorithm.cs | 6 ++--- .../BasicTemplateOptionsFrameworkAlgorithm.cs | 2 +- .../BasicTemplateTradableIndexAlgorithm.cs | 2 +- ...inanceCashAccountFeeRegressionAlgorithm.cs | 2 +- ...anceMarginAccountFeeRegressionAlgorithm.cs | 2 +- ...tfinexCashAccountFeeRegressionAlgorithm.cs | 2 +- ...inexMarginAccountFeeRegressionAlgorithm.cs | 2 +- ...PortfolioOptimizationFrameworkAlgorithm.cs | 2 +- .../CfdTimeZonesRegressionAlgorithm.cs | 6 ++--- ...ptoYearMarketTradingRegressionAlgorithm.cs | 4 ++-- ...folioSignalExportDemonstrationAlgorithm.cs | 4 ++-- ...tive2SignalExportDemonstrationAlgorithm.cs | 4 ++-- .../CompleteOrderTagUpdateAlgorithm.cs | 2 +- ...teRiskManagementModelFrameworkAlgorithm.cs | 2 +- .../ConfidenceWeightedFrameworkAlgorithm.cs | 2 +- .../ConsolidateRegressionAlgorithm.cs | 2 +- ...ConstituentsUniverseRegressionAlgorithm.cs | 18 +++++++-------- ...usBackMonthRawFutureRegressionAlgorithm.cs | 2 +- ...nuousFutureBackMonthRegressionAlgorithm.cs | 2 +- ...quidationOnDelistingRegressionAlgorithm.cs | 2 +- .../ContinuousFutureRegressionAlgorithm.cs | 2 +- ...ataUniverseScheduledRegressionAlgorithm.cs | 22 +++++++++---------- .../CustomMarginInterestRateModelAlgorithm.cs | 2 +- ...stomOptionAssignmentRegressionAlgorithm.cs | 2 +- .../CustomPartialFillModelAlgorithm.cs | 2 +- ...omPortfolioOptimizerRegressionAlgorithm.cs | 2 +- ...edMarketHoursWarningRegressionAlgorithm.cs | 2 +- ...omChainAndContinuousRegressionAlgorithm.cs | 2 +- ...istedFutureLiquidateRegressionAlgorithm.cs | 2 +- .../DelistedIndexOptionDivestedRegression.cs | 2 +- ...ingFutureOptionDailyRegressionAlgorithm.cs | 6 ++--- ...elistingFutureOptionRegressionAlgorithm.cs | 4 ++-- ...structionModelFutureRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/EquityMarginCallAlgorithm.cs | 2 +- ...ySplitHoldingsMinuteRegressionAlgorithm.cs | 2 +- ...EquityTradeAndQuotesRegressionAlgorithm.cs | 2 +- ...tionModelOrderEventsRegressionAlgorithm.cs | 2 +- ...meratorOutOfOrderBarRegressionAlgorithm.cs | 2 +- .../ForwardDataOnlyFillModelAlgorithm.cs | 2 +- .../FractionalQuantityRegressionAlgorithm.cs | 6 ++--- ...mSelectionTimeWarmupRegressionAlgorithm.cs | 2 +- ...nBuySellCallIntradayRegressionAlgorithm.cs | 6 ++--- ...eOptionCallITMExpiryRegressionAlgorithm.cs | 6 ++--- ...nCallITMGreeksExpiryRegressionAlgorithm.cs | 6 ++--- ...eOptionCallOTMExpiryRegressionAlgorithm.cs | 8 +++---- ...reOptionPutITMExpiryRegressionAlgorithm.cs | 4 ++-- ...reOptionPutOTMExpiryRegressionAlgorithm.cs | 6 ++--- ...onShortCallITMExpiryRegressionAlgorithm.cs | 8 +++---- ...onShortCallOTMExpiryRegressionAlgorithm.cs | 6 ++--- ...ionShortPutITMExpiryRegressionAlgorithm.cs | 6 ++--- ...ionShortPutOTMExpiryRegressionAlgorithm.cs | 8 +++---- ...ryTimeAndLiquidationRegressionAlgorithm.cs | 6 ++--- ...sDailySettlementLongRegressionAlgorithm.cs | 2 +- ...DailySettlementShortRegressionAlgorithm.cs | 2 +- ...onCallITMExpiryDailyRegressionAlgorithm.cs | 2 +- ...nCallITMGreeksExpiryRegressionAlgorithm.cs | 2 +- ...exOptionPutITMExpiryRegressionAlgorithm.cs | 2 +- ...onShortCallOTMExpiryRegressionAlgorithm.cs | 2 +- .../InsightScoringRegressionAlgorithm.cs | 2 +- .../InsightWeightingFrameworkAlgorithm.cs | 2 +- ...ForAutomaticExerciseRegressionAlgorithm.cs | 2 +- .../LeveragePrecedenceRegressionAlgorithm.cs | 2 +- ...uresPositionRolloverRegressionAlgorithm.cs | 2 +- .../MappedBenchmarkRegressionAlgorithm.cs | 2 +- ...rginCallClosedMarketRegressionAlgorithm.cs | 2 +- ...PerSecurityFrameworkRegressionAlgorithm.cs | 2 +- ...PerSecurityFrameworkRegressionAlgorithm.cs | 2 +- .../MinimumOrderMarginRegressionAlgorithm.cs | 2 +- ...lOutsideRegularHoursRegressionAlgorithm.cs | 2 +- ...NoMinimumOrderMarginRegressionAlgorithm.cs | 2 +- ...NullOptionAssignmentRegressionAlgorithm.cs | 2 +- .../ObjectStoreExampleAlgorithm.cs | 2 +- ...iryOrderHasZeroPriceRegressionAlgorithm.cs | 8 +++---- .../OrderSubmissionDataRegressionAlgorithm.cs | 2 +- .../PortfolioTargetTagsRegressionAlgorithm.cs | 2 +- .../Collective2IndexOptionAlgorithm.cs | 2 +- ...caledFillForwardDataRegressionAlgorithm.cs | 2 +- ...ScheduledEventsOrderRegressionAlgorithm.cs | 2 +- .../ScheduledUniverseRegressionAlgorithm.cs | 2 +- ...iverseSelectionModelRegressionAlgorithm.cs | 16 +++++++------- .../SecurityCustomPropertiesAlgorithm.cs | 2 +- .../SecurityToSymbolRegressionAlgorithm.cs | 2 +- ...ustomSettlementModelRegressionAlgorithm.cs | 8 +++---- ...dingsMultipleTargetsRegressionAlgorithm.cs | 2 +- ...oviderOrdersRejectedRegressionAlgorithm.cs | 2 +- Algorithm.CSharp/TimeInForceAlgorithm.cs | 2 +- .../UniverseOnlyRegressionAlgorithm.cs | 4 ++-- .../VolumeShareSlippageModelAlgorithm.cs | 20 ++++++++--------- .../WarmupDataTypesRegressionAlgorithm.cs | 2 +- .../WarmupFutureRegressionAlgorithm.cs | 6 ++--- .../WarmupIndicatorRegressionAlgorithm.cs | 2 +- ...rResolutionSelectionRegressionAlgorithm.cs | 2 +- .../WarmupSelectionRegressionAlgorithm.cs | 2 +- 109 files changed, 192 insertions(+), 192 deletions(-) diff --git a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs index 213ab2824913..0caa97d86a82 100644 --- a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs @@ -128,7 +128,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Start Equity", "10000.00"}, {"End Equity", "10410.99"}, {"Net Profit", "4.110%"}, - {"Sharpe Ratio", "0.332"}, + {"Sharpe Ratio", "0.331"}, {"Sortino Ratio", "0.313"}, {"Probabilistic Sharpe Ratio", "74.084%"}, {"Loss Rate", "90%"}, @@ -140,7 +140,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Annual Variance", "0"}, {"Information Ratio", "-0.495"}, {"Tracking Error", "0.111"}, - {"Treynor Ratio", "2.716"}, + {"Treynor Ratio", "2.708"}, {"Total Fees", "$0.00"}, {"Estimated Strategy Capacity", "$87000.00"}, {"Lowest Capacity Asset", "BTCUSD 2XR"}, diff --git a/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs b/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs index 68c7554e0b68..82ae00e5e44d 100644 --- a/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddFutureOptionContractFromFutureChainRegressionAlgorithm.cs @@ -114,7 +114,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "88398927.578%"}, - {"Drawdown", "5.200%"}, + {"Drawdown", "5.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "111911.55"}, diff --git a/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs b/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs index 673e7081c3f5..a475d122d483 100644 --- a/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddRemoveSecurityCacheRegressionAlgorithm.cs @@ -104,7 +104,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0.00%"}, {"Compounding Annual Return", "271.720%"}, - {"Drawdown", "2.500%"}, + {"Drawdown", "2.200%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "101753.84"}, diff --git a/Algorithm.CSharp/AddRiskManagementAlgorithm.cs b/Algorithm.CSharp/AddRiskManagementAlgorithm.cs index d7aec7762d1d..66ad558ac917 100644 --- a/Algorithm.CSharp/AddRiskManagementAlgorithm.cs +++ b/Algorithm.CSharp/AddRiskManagementAlgorithm.cs @@ -105,7 +105,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$38000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.74%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "5d7657ec9954875eca633bed711085d3"} }; } diff --git a/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs b/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs index f6633f164a02..2bea138642fb 100644 --- a/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AutomaticIndicatorWarmupDataTypeRegressionAlgorithm.cs @@ -167,7 +167,7 @@ protected override decimal ComputeNextValue(QuoteBar input) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "733913.744%"}, - {"Drawdown", "15.900%"}, + {"Drawdown", "16.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "106827.7"}, @@ -189,7 +189,7 @@ protected override decimal ComputeNextValue(QuoteBar input) {"Estimated Strategy Capacity", "$200000000.00"}, {"Lowest Capacity Asset", "ES VMKLFZIH2MTD"}, {"Portfolio Turnover", "351.80%"}, - {"Drawdown Recovery", "1"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "dfd9a280d3c6470b305c03e0b72c234e"} }; } diff --git a/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs b/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs index 47ff2f23905b..bac301eeb6cf 100644 --- a/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AutomaticIndicatorWarmupRegressionAlgorithm.cs @@ -151,7 +151,7 @@ protected override decimal ComputeNextValue(IReadOnlyWindow {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/BasicTemplateAlgorithm.cs b/Algorithm.CSharp/BasicTemplateAlgorithm.cs index 6829d12819ec..460137d0f222 100644 --- a/Algorithm.CSharp/BasicTemplateAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateAlgorithm.cs @@ -118,7 +118,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs b/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs index 1d46a1dfb256..d42c19f49626 100644 --- a/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateAxosAlgorithm.cs @@ -112,7 +112,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.98%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "8774049eb5141a2b6956d9432426f837"} }; } diff --git a/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs b/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs index 4791436519bf..c43d75c0f231 100644 --- a/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateContinuousFutureAlgorithm.cs @@ -138,7 +138,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "2.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "11.325%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "105549.6"}, diff --git a/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs index e606c0e79ce0..0dcdfc036f1a 100644 --- a/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateContinuousFutureWithExtendedMarketAlgorithm.cs @@ -144,7 +144,7 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Average Win", "2.86%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "12.959%"}, - {"Drawdown", "1.100%"}, + {"Drawdown", "1.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "106337.1"}, diff --git a/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs index 968f8b3d7bcb..0dcc7af0a4d0 100644 --- a/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFrameworkAlgorithm.cs @@ -130,7 +130,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/BasicTemplateFuturesFrameworkAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFuturesFrameworkAlgorithm.cs index 03f0a99f989d..aaa981de60da 100644 --- a/Algorithm.CSharp/BasicTemplateFuturesFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFuturesFrameworkAlgorithm.cs @@ -157,7 +157,7 @@ public override IEnumerable CreateTargets(QCAlgorithm algorith {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-81.734%"}, - {"Drawdown", "4.100%"}, + {"Drawdown", "4.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "97830.76"}, diff --git a/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs index e0e3ecb90843..ff640196afe8 100644 --- a/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm.cs @@ -52,7 +52,7 @@ public class BasicTemplateFuturesFrameworkWithExtendedMarketAlgorithm : BasicTem {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-92.667%"}, - {"Drawdown", "5.000%"}, + {"Drawdown", "5.100%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96685.76"}, diff --git a/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs index 693c63a7cd56..53ca5752e2a6 100644 --- a/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs @@ -173,8 +173,8 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Drawdown", "13.900%"}, {"Expectancy", "-0.824"}, {"Start Equity", "1000000"}, - {"End Equity", "861260.7"}, - {"Net Profit", "-13.874%"}, + {"End Equity", "861193.96"}, + {"Net Profit", "-13.881%"}, {"Sharpe Ratio", "-19.346"}, {"Sortino Ratio", "-19.346"}, {"Probabilistic Sharpe Ratio", "0%"}, diff --git a/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs b/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs index debaeb04cf9c..75e936bee34a 100644 --- a/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateIndexAlgorithm.cs @@ -170,7 +170,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$3000.00"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "23.97%"}, - {"Drawdown Recovery", "9"}, + {"Drawdown Recovery", "0"}, {"OrderListHash", "4b560d2a8cfae510c3c8dc92603470fc"} }; } diff --git a/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs b/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs index 19357403245a..721d149d968a 100644 --- a/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs @@ -111,8 +111,8 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Start Equity", "100000"}, {"End Equity", "99992.45"}, {"Net Profit", "-0.008%"}, - {"Sharpe Ratio", "-497.389"}, - {"Sortino Ratio", "-73.22"}, + {"Sharpe Ratio", "-484.926"}, + {"Sortino Ratio", "-71.385"}, {"Probabilistic Sharpe Ratio", "0.001%"}, {"Loss Rate", "0%"}, {"Win Rate", "0%"}, diff --git a/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs b/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs index b6b1f61c6a51..d9e5a75dbe08 100644 --- a/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs @@ -148,8 +148,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "98844"}, {"Net Profit", "-1.156%"}, - {"Sharpe Ratio", "-4.04"}, - {"Sortino Ratio", "-2.422"}, + {"Sharpe Ratio", "-4.039"}, + {"Sortino Ratio", "-2.421"}, {"Probabilistic Sharpe Ratio", "0.099%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, @@ -160,7 +160,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0"}, {"Information Ratio", "1.49"}, {"Tracking Error", "0.289"}, - {"Treynor Ratio", "-3.212"}, + {"Treynor Ratio", "-3.211"}, {"Total Fees", "$1.00"}, {"Estimated Strategy Capacity", "$72000.00"}, {"Lowest Capacity Asset", "AAPL W78ZEO29CFS6|AAPL R735QTJ8XC9X"}, diff --git a/Algorithm.CSharp/BasicTemplateOptionsFrameworkAlgorithm.cs b/Algorithm.CSharp/BasicTemplateOptionsFrameworkAlgorithm.cs index 5b17aa867192..118e74422151 100644 --- a/Algorithm.CSharp/BasicTemplateOptionsFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateOptionsFrameworkAlgorithm.cs @@ -160,7 +160,7 @@ public override IEnumerable CreateTargets(QCAlgorithm algorith {"Average Win", "0.13%"}, {"Average Loss", "-0.30%"}, {"Compounding Annual Return", "-46.395%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0.429"}, {"Start Equity", "100000"}, {"End Equity", "99149.50"}, diff --git a/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs b/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs index fd2b14693819..f8df37d22ace 100644 --- a/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateTradableIndexAlgorithm.cs @@ -89,7 +89,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$3000.00"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "24.03%"}, - {"Drawdown Recovery", "9"}, + {"Drawdown Recovery", "0"}, {"OrderListHash", "691cf4990024b856a0a70255c9fd2545"} }; } diff --git a/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs index 1b7aad6998f8..ae86fd813b0e 100644 --- a/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs @@ -65,7 +65,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "99986.57"}, + {"End Equity", "99985.61"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs index 823b2389af92..51f6f9075cbf 100644 --- a/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs @@ -65,7 +65,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "99986.57"}, + {"End Equity", "99985.61"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs index 1d2ca5ef72a1..56b4171e14a4 100644 --- a/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs @@ -64,7 +64,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "100001.31"}, + {"End Equity", "100001.28"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs index c6aeca81b5e2..a68b0af90be4 100644 --- a/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs @@ -64,7 +64,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "100001.31"}, + {"End Equity", "100001.28"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs b/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs index a61ceccf738e..91847e987450 100644 --- a/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/BlackLittermanPortfolioOptimizationFrameworkAlgorithm.cs @@ -97,7 +97,7 @@ public IEnumerable CoarseSelector(IEnumerable coarse) {"Average Win", "0.00%"}, {"Average Loss", "-0.14%"}, {"Compounding Annual Return", "71.152%"}, - {"Drawdown", "1.100%"}, + {"Drawdown", "1.200%"}, {"Expectancy", "-0.797"}, {"Start Equity", "100000"}, {"End Equity", "100738.86"}, diff --git a/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs b/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs index 2142db6ea32b..b92dcc2853fa 100644 --- a/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs @@ -93,12 +93,12 @@ public override void OnData(Slice slice) {"Total Orders", "279"}, {"Average Win", "0.01%"}, {"Average Loss", "-0.01%"}, - {"Compounding Annual Return", "-33.650%"}, + {"Compounding Annual Return", "-34.134%"}, {"Drawdown", "0.300%"}, {"Expectancy", "-0.345"}, {"Start Equity", "100000"}, - {"End Equity", "99663.4"}, - {"Net Profit", "-0.337%"}, + {"End Equity", "99657.4"}, + {"Net Profit", "-0.343%"}, {"Sharpe Ratio", "-21.957"}, {"Sortino Ratio", "-21.957"}, {"Probabilistic Sharpe Ratio", "0%"}, diff --git a/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs b/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs index 598444164a60..7789aeb16d76 100644 --- a/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs @@ -125,8 +125,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000.00"}, {"End Equity", "99365.56"}, {"Net Profit", "-0.634%"}, - {"Sharpe Ratio", "-7.126"}, - {"Sortino Ratio", "-7.337"}, + {"Sharpe Ratio", "-7.128"}, + {"Sortino Ratio", "-7.338"}, {"Probabilistic Sharpe Ratio", "0.000%"}, {"Loss Rate", "66%"}, {"Win Rate", "34%"}, diff --git a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs index 7e4a1ab222be..1889a9a702f4 100644 --- a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs @@ -168,7 +168,7 @@ public override void OnData(Slice slice) {"Total Orders", "2"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "14.180%"}, + {"Compounding Annual Return", "9.148%"}, {"Drawdown", "0.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, @@ -191,7 +191,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$260000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.00%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "006af1a065fca33ac1f1e9cd6bd02c11"} }; } diff --git a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs index 3db21ab2f84c..b0e8a0a15fde 100644 --- a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnData(Slice slice) {"Total Orders", "2"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "14.180%"}, + {"Compounding Annual Return", "9.148%"}, {"Drawdown", "0.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, @@ -214,7 +214,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$260000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.00%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "006af1a065fca33ac1f1e9cd6bd02c11"} }; } diff --git a/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs b/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs index 4eb147b0e9b4..27ca17ceb01e 100644 --- a/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs +++ b/Algorithm.CSharp/CompleteOrderTagUpdateAlgorithm.cs @@ -200,7 +200,7 @@ private static void UpdateOrderTag(OrderTicket ticket, string tag, string errorM {"Estimated Strategy Capacity", "$210000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.89%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "8fba4f724843997ef421cf26ccabe51b"} }; } diff --git a/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs b/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs index d4bdb22eba18..c4279ed9e82b 100644 --- a/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/CompositeRiskManagementModelFrameworkAlgorithm.cs @@ -106,7 +106,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$23000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "139.03%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "fa7c51aaf284cdc29cb4c0ac8ebd5356"} }; } diff --git a/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs b/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs index d283378101e7..7e92bb7cf3cd 100644 --- a/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/ConfidenceWeightedFrameworkAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$45000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "ae4986890fe7ab09ddb93059888f34c0"} }; } diff --git a/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs b/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs index 297c560ebada..0b34372843df 100644 --- a/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ConsolidateRegressionAlgorithm.cs @@ -210,7 +210,7 @@ public override void OnData(Slice slice) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "665.524%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "109332.4"}, diff --git a/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs b/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs index 526be7f0c97e..60e379f89e92 100644 --- a/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs @@ -177,25 +177,25 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Total Orders", "2"}, {"Average Win", "0.68%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "70.501%"}, + {"Compounding Annual Return", "97.209%"}, {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100684.53"}, {"Net Profit", "0.685%"}, - {"Sharpe Ratio", "13.41"}, + {"Sharpe Ratio", "17.814"}, {"Sortino Ratio", "0"}, - {"Probabilistic Sharpe Ratio", "99.997%"}, + {"Probabilistic Sharpe Ratio", "0%"}, {"Loss Rate", "0%"}, {"Win Rate", "100%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "0.235"}, - {"Beta", "0.15"}, - {"Annual Standard Deviation", "0.04"}, + {"Alpha", "-1.352"}, + {"Beta", "0.207"}, + {"Annual Standard Deviation", "0.043"}, {"Annual Variance", "0.002"}, - {"Information Ratio", "-7.587"}, - {"Tracking Error", "0.19"}, - {"Treynor Ratio", "3.546"}, + {"Information Ratio", "-66.443"}, + {"Tracking Error", "0.143"}, + {"Treynor Ratio", "3.714"}, {"Total Fees", "$32.77"}, {"Estimated Strategy Capacity", "$230000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, diff --git a/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs index 4801a5f69f24..fd9a14d65a79 100644 --- a/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousBackMonthRawFutureRegressionAlgorithm.cs @@ -160,7 +160,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "2.968%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101483.2"}, diff --git a/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs index 0b2eeba0bc96..8f33b789c84f 100644 --- a/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureBackMonthRegressionAlgorithm.cs @@ -176,7 +176,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.48%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "4.603%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "102291.4"}, diff --git a/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs index d4cfacd2674b..c24549c48c76 100644 --- a/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureOpenPositionsLiquidationOnDelistingRegressionAlgorithm.cs @@ -209,7 +209,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs b/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs index 6a9a7e210449..37d4d339904d 100644 --- a/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ContinuousFutureRegressionAlgorithm.cs @@ -194,7 +194,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.84%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "3.380%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101687.3"}, diff --git a/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs b/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs index 851fffb61243..bc81fa73fb21 100644 --- a/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs @@ -131,25 +131,25 @@ public override void OnEndOfAlgorithm() {"Total Orders", "7"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "-65.964%"}, + {"Compounding Annual Return", "-70.821%"}, {"Drawdown", "3.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "97665.47"}, {"Net Profit", "-2.335%"}, - {"Sharpe Ratio", "-3.693"}, - {"Sortino Ratio", "-2.881"}, - {"Probabilistic Sharpe Ratio", "6.625%"}, + {"Sharpe Ratio", "-3.744"}, + {"Sortino Ratio", "-3.163"}, + {"Probabilistic Sharpe Ratio", "7.404%"}, {"Loss Rate", "0%"}, {"Win Rate", "0%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-1.175"}, - {"Beta", "1.621"}, - {"Annual Standard Deviation", "0.156"}, - {"Annual Variance", "0.024"}, - {"Information Ratio", "-9.977"}, - {"Tracking Error", "0.095"}, - {"Treynor Ratio", "-0.355"}, + {"Alpha", "-0.928"}, + {"Beta", "1.695"}, + {"Annual Standard Deviation", "0.169"}, + {"Annual Variance", "0.029"}, + {"Information Ratio", "-7.776"}, + {"Tracking Error", "0.104"}, + {"Treynor Ratio", "-0.373"}, {"Total Fees", "$13.86"}, {"Estimated Strategy Capacity", "$510000000.00"}, {"Lowest Capacity Asset", "NB R735QTJ8XC9X"}, diff --git a/Algorithm.CSharp/CustomMarginInterestRateModelAlgorithm.cs b/Algorithm.CSharp/CustomMarginInterestRateModelAlgorithm.cs index b87ef846e972..4023c2b7583e 100644 --- a/Algorithm.CSharp/CustomMarginInterestRateModelAlgorithm.cs +++ b/Algorithm.CSharp/CustomMarginInterestRateModelAlgorithm.cs @@ -159,7 +159,7 @@ public void ApplyMarginInterestRate(MarginInterestRateParameters marginInterestR {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "3.19%"}, - {"Drawdown Recovery", "8"}, + {"Drawdown Recovery", "9"}, {"OrderListHash", "c0205e9d3d1bfdee958fecccb36413ec"} }; } diff --git a/Algorithm.CSharp/CustomOptionAssignmentRegressionAlgorithm.cs b/Algorithm.CSharp/CustomOptionAssignmentRegressionAlgorithm.cs index 2c2c8c2360b8..462e9659fa3d 100644 --- a/Algorithm.CSharp/CustomOptionAssignmentRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomOptionAssignmentRegressionAlgorithm.cs @@ -63,7 +63,7 @@ public override OptionAssignmentResult GetAssignment(OptionAssignmentParameters {"Average Win", "9.48%"}, {"Average Loss", "-16.73%"}, {"Compounding Annual Return", "-25.790%"}, - {"Drawdown", "0.600%"}, + {"Drawdown", "0.500%"}, {"Expectancy", "-0.478"}, {"Start Equity", "100000"}, {"End Equity", "99538"}, diff --git a/Algorithm.CSharp/CustomPartialFillModelAlgorithm.cs b/Algorithm.CSharp/CustomPartialFillModelAlgorithm.cs index ca6314f44044..ea2e3c6bc790 100644 --- a/Algorithm.CSharp/CustomPartialFillModelAlgorithm.cs +++ b/Algorithm.CSharp/CustomPartialFillModelAlgorithm.cs @@ -162,7 +162,7 @@ public override OrderEvent MarketFill(Security asset, MarketOrder order) {"Estimated Strategy Capacity", "$89000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "10.59%"}, - {"Drawdown Recovery", "1"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "aa14b4a6f4eb5907cb188ed462c14389"} }; } diff --git a/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs b/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs index 27adcaa4288e..b9b70336a9e9 100644 --- a/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomPortfolioOptimizerRegressionAlgorithm.cs @@ -50,7 +50,7 @@ public double[] Optimize(double[,] historicalReturns, double[] expectedReturns = {"Average Win", "0%"}, {"Average Loss", "-0.14%"}, {"Compounding Annual Return", "773.203%"}, - {"Drawdown", "3.300%"}, + {"Drawdown", "3.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "103012.99"}, diff --git a/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs b/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs index 1c1e7e0e8798..13dee2075be3 100644 --- a/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DailyConsolidationExtendedMarketHoursWarningRegressionAlgorithm.cs @@ -128,4 +128,4 @@ public override void OnEndOfAlgorithm() {"OrderListHash", "d41d8cd98f00b204e9800998ecf8427e"} }; } -} \ No newline at end of file +} diff --git a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs index 873f7a015838..26f45ab1f89c 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateFromChainAndContinuousRegressionAlgorithm.cs @@ -167,7 +167,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs b/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs index f1294c24de1f..2f8fdffed7f5 100644 --- a/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistedFutureLiquidateRegressionAlgorithm.cs @@ -128,7 +128,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "7.02%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "34.386%"}, - {"Drawdown", "1.500%"}, + {"Drawdown", "1.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107016.6"}, diff --git a/Algorithm.CSharp/DelistedIndexOptionDivestedRegression.cs b/Algorithm.CSharp/DelistedIndexOptionDivestedRegression.cs index 2e9c1ccf8c4a..5902e1eb2883 100644 --- a/Algorithm.CSharp/DelistedIndexOptionDivestedRegression.cs +++ b/Algorithm.CSharp/DelistedIndexOptionDivestedRegression.cs @@ -141,7 +141,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-26.02%"}, {"Compounding Annual Return", "-99.801%"}, - {"Drawdown", "46.200%"}, + {"Drawdown", "45.700%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "73985"}, diff --git a/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs b/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs index e64888704c58..c4d12a24f63a 100644 --- a/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs @@ -44,8 +44,8 @@ public class DelistingFutureOptionDailyRegressionAlgorithm : DelistingFutureOpti {"Start Equity", "10000000"}, {"End Equity", "9997036.08"}, {"Net Profit", "-0.030%"}, - {"Sharpe Ratio", "-31.58"}, - {"Sortino Ratio", "-7.862"}, + {"Sharpe Ratio", "-31.525"}, + {"Sortino Ratio", "-7.849"}, {"Probabilistic Sharpe Ratio", "2.982%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, @@ -56,7 +56,7 @@ public class DelistingFutureOptionDailyRegressionAlgorithm : DelistingFutureOpti {"Annual Variance", "0"}, {"Information Ratio", "1.511"}, {"Tracking Error", "0.429"}, - {"Treynor Ratio", "-84.756"}, + {"Treynor Ratio", "-84.61"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$540000000.00"}, {"Lowest Capacity Asset", "ES XCZJLDRF238K|ES XCZJLC9NOB29"}, diff --git a/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs b/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs index 79fcc59031c8..907fc6588833 100644 --- a/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs @@ -131,7 +131,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "10000000"}, {"End Equity", "9971576.14"}, {"Net Profit", "-0.284%"}, - {"Sharpe Ratio", "-5.765"}, + {"Sharpe Ratio", "-5.763"}, {"Sortino Ratio", "-0.931"}, {"Probabilistic Sharpe Ratio", "0.062%"}, {"Loss Rate", "89%"}, @@ -143,7 +143,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0"}, {"Information Ratio", "1.495"}, {"Tracking Error", "0.429"}, - {"Treynor Ratio", "-15.266"}, + {"Treynor Ratio", "-15.26"}, {"Total Fees", "$11.36"}, {"Estimated Strategy Capacity", "$65000000.00"}, {"Lowest Capacity Asset", "ES XCZJLDQR8R1G|ES XCZJLC9NOB29"}, diff --git a/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs b/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs index 5d48aea0079e..232fc41634ea 100644 --- a/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EqualWeightingPortfolioConstructionModelFutureRegressionAlgorithm.cs @@ -151,7 +151,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Average Win", "0.69%"}, {"Average Loss", "-2.47%"}, {"Compounding Annual Return", "-99.946%"}, - {"Drawdown", "28.600%"}, + {"Drawdown", "29.300%"}, {"Expectancy", "-0.680"}, {"Start Equity", "100000"}, {"End Equity", "90213.76"}, diff --git a/Algorithm.CSharp/EquityMarginCallAlgorithm.cs b/Algorithm.CSharp/EquityMarginCallAlgorithm.cs index 68fb3e00a8a7..e31ad4ecfff9 100644 --- a/Algorithm.CSharp/EquityMarginCallAlgorithm.cs +++ b/Algorithm.CSharp/EquityMarginCallAlgorithm.cs @@ -127,7 +127,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-6.17%"}, {"Compounding Annual Return", "-100.000%"}, - {"Drawdown", "72.300%"}, + {"Drawdown", "71.600%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "50554.98"}, diff --git a/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs b/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs index 240ba4ee46c0..09fc907dbf75 100644 --- a/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EquitySplitHoldingsMinuteRegressionAlgorithm.cs @@ -178,7 +178,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$41000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, {"Portfolio Turnover", "14.24%"}, - {"Drawdown Recovery", "4"}, + {"Drawdown Recovery", "3"}, {"OrderListHash", "5d7b0658b66b331ba8159011aa2ec5b4"} }; } diff --git a/Algorithm.CSharp/EquityTradeAndQuotesRegressionAlgorithm.cs b/Algorithm.CSharp/EquityTradeAndQuotesRegressionAlgorithm.cs index a37d97ee37d1..fe6329a6e19c 100644 --- a/Algorithm.CSharp/EquityTradeAndQuotesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/EquityTradeAndQuotesRegressionAlgorithm.cs @@ -183,7 +183,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.12%"}, {"Average Loss", "-0.10%"}, {"Compounding Annual Return", "-88.292%"}, - {"Drawdown", "3.300%"}, + {"Drawdown", "3.200%"}, {"Expectancy", "-0.225"}, {"Start Equity", "100000"}, {"End Equity", "97294.97"}, diff --git a/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs b/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs index 4b3d550c0a6a..33c5d80e9c9a 100644 --- a/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ExecutionModelOrderEventsRegressionAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnOrderEvent(QCAlgorithm algorithm, OrderEvent orderEvent) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/FillForwardEnumeratorOutOfOrderBarRegressionAlgorithm.cs b/Algorithm.CSharp/FillForwardEnumeratorOutOfOrderBarRegressionAlgorithm.cs index 801e3a66684b..7b491fa489aa 100644 --- a/Algorithm.CSharp/FillForwardEnumeratorOutOfOrderBarRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FillForwardEnumeratorOutOfOrderBarRegressionAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$150000.00"}, {"Lowest Capacity Asset", "SHY 2T"}, {"Portfolio Turnover", "24.91%"}, - {"Drawdown Recovery", "0"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "9d00701591b363edda102536ec5e75e0"} }; } diff --git a/Algorithm.CSharp/ForwardDataOnlyFillModelAlgorithm.cs b/Algorithm.CSharp/ForwardDataOnlyFillModelAlgorithm.cs index 62a4ea4c2667..863037cd81a3 100644 --- a/Algorithm.CSharp/ForwardDataOnlyFillModelAlgorithm.cs +++ b/Algorithm.CSharp/ForwardDataOnlyFillModelAlgorithm.cs @@ -137,7 +137,7 @@ public override Fill Fill(FillModelParameters parameters) {"Estimated Strategy Capacity", "$62000000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "0.00%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "6"}, {"OrderListHash", "86f6dc102fded318c6264e36a56567b7"} }; } diff --git a/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs b/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs index da5b1d807ca9..1ff46ba8d8ac 100644 --- a/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs @@ -116,12 +116,12 @@ private void DataConsolidated(object sender, TradeBar e) {"Total Orders", "7"}, {"Average Win", "6.02%"}, {"Average Loss", "-2.40%"}, - {"Compounding Annual Return", "1497.266%"}, + {"Compounding Annual Return", "915.597%"}, {"Drawdown", "5.500%"}, {"Expectancy", "1.339"}, {"Start Equity", "100000.00"}, - {"End Equity", "113775.23"}, - {"Net Profit", "13.775%"}, + {"End Equity", "111400.82"}, + {"Net Profit", "11.401%"}, {"Sharpe Ratio", "4.906"}, {"Sortino Ratio", "11.482"}, {"Probabilistic Sharpe Ratio", "63.428%"}, diff --git a/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs b/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs index 815d488f0518..1b9f92409ace 100644 --- a/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs @@ -146,7 +146,7 @@ public override void OnEndOfAlgorithm() {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "13.629%"}, + {"Compounding Annual Return", "12.700%"}, {"Drawdown", "3.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs index 30f7d51069f1..498ed0c940dd 100644 --- a/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs @@ -138,8 +138,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "97715.91"}, {"Net Profit", "-2.284%"}, - {"Sharpe Ratio", "-0.555"}, - {"Sortino Ratio", "-0.069"}, + {"Sharpe Ratio", "-0.558"}, + {"Sortino Ratio", "-0.07"}, {"Probabilistic Sharpe Ratio", "9.827%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, @@ -150,7 +150,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.005"}, {"Information Ratio", "-0.134"}, {"Tracking Error", "0.385"}, - {"Treynor Ratio", "3.785"}, + {"Treynor Ratio", "3.803"}, {"Total Fees", "$2.84"}, {"Estimated Strategy Capacity", "$120000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPBMTJ8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs index f569f7d2140e..99f2139bab87 100644 --- a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs @@ -221,12 +221,12 @@ public override void OnEndOfAlgorithm() {"Average Win", "2.28%"}, {"Average Loss", "-6.80%"}, {"Compounding Annual Return", "-9.373%"}, - {"Drawdown", "5.300%"}, + {"Drawdown", "5.500%"}, {"Expectancy", "-0.332"}, {"Start Equity", "100000"}, {"End Equity", "95323.58"}, {"Net Profit", "-4.676%"}, - {"Sharpe Ratio", "-1.163"}, + {"Sharpe Ratio", "-1.166"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.165%"}, {"Loss Rate", "50%"}, @@ -238,7 +238,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.004"}, {"Information Ratio", "-0.226"}, {"Tracking Error", "0.378"}, - {"Treynor Ratio", "-21.841"}, + {"Treynor Ratio", "-21.899"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$120000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPBMTJ8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs index 0e680bf9f80d..74b6ae495b07 100644 --- a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -186,12 +186,12 @@ public override void OnEndOfAlgorithm() {"Average Win", "16.44%"}, {"Average Loss", "-35.38%"}, {"Compounding Annual Return", "-44.262%"}, - {"Drawdown", "26.200%"}, + {"Drawdown", "26.800%"}, {"Expectancy", "-0.268"}, {"Start Equity", "100000"}, {"End Equity", "75242.9"}, {"Net Profit", "-24.757%"}, - {"Sharpe Ratio", "-0.965"}, + {"Sharpe Ratio", "-0.966"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.060%"}, {"Loss Rate", "50%"}, @@ -203,7 +203,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.098"}, {"Information Ratio", "-0.649"}, {"Tracking Error", "0.483"}, - {"Treynor Ratio", "-18.59"}, + {"Treynor Ratio", "-18.602"}, {"Total Fees", "$7.10"}, {"Estimated Strategy Capacity", "$24000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPBMTJ8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs index 2225385ab1c4..7481849e2a0e 100644 --- a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs @@ -197,24 +197,24 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-3.85%"}, {"Compounding Annual Return", "-7.754%"}, - {"Drawdown", "4.300%"}, + {"Drawdown", "4.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "96148.58"}, {"Net Profit", "-3.851%"}, - {"Sharpe Ratio", "-1.221"}, + {"Sharpe Ratio", "-1.225"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.131%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-0.063"}, + {"Alpha", "-0.064"}, {"Beta", "0.003"}, {"Annual Standard Deviation", "0.052"}, {"Annual Variance", "0.003"}, {"Information Ratio", "-0.198"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-23.065"}, + {"Treynor Ratio", "-23.136"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPHL5L0|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs index f76a2c2b166d..6e807f9be2fd 100644 --- a/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs @@ -227,7 +227,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "94811.08"}, {"Net Profit", "-5.189%"}, - {"Sharpe Ratio", "-1.546"}, + {"Sharpe Ratio", "-1.55"}, {"Sortino Ratio", "-0.209"}, {"Probabilistic Sharpe Ratio", "0.000%"}, {"Loss Rate", "50%"}, @@ -239,7 +239,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.003"}, {"Information Ratio", "-0.248"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-36.3"}, + {"Treynor Ratio", "-36.387"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$79000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FAOOUYYS|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs index 8abe7d085383..38f8476635d3 100644 --- a/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs @@ -200,8 +200,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "94748.58"}, {"Net Profit", "-5.251%"}, - {"Sharpe Ratio", "-1.472"}, - {"Sortino Ratio", "-0.181"}, + {"Sharpe Ratio", "-1.475"}, + {"Sortino Ratio", "-0.182"}, {"Probabilistic Sharpe Ratio", "0.001%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, @@ -212,7 +212,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.003"}, {"Information Ratio", "-0.249"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-32.556"}, + {"Treynor Ratio", "-32.633"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$290000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FBZBR7QC|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs index daf89dbb3b41..707a5f947353 100644 --- a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs @@ -206,24 +206,24 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.24%"}, {"Average Loss", "-6.46%"}, {"Compounding Annual Return", "6.498%"}, - {"Drawdown", "0.900%"}, + {"Drawdown", "3.000%"}, {"Expectancy", "0.292"}, {"Start Equity", "100000"}, {"End Equity", "103111.08"}, {"Net Profit", "3.111%"}, - {"Sharpe Ratio", "0.726"}, + {"Sharpe Ratio", "0.722"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "45.614%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, {"Profit-Loss Ratio", "1.58"}, - {"Alpha", "0.036"}, + {"Alpha", "0.035"}, {"Beta", "-0.003"}, {"Annual Standard Deviation", "0.049"}, {"Annual Variance", "0.002"}, {"Information Ratio", "0.064"}, {"Tracking Error", "0.378"}, - {"Treynor Ratio", "-13.127"}, + {"Treynor Ratio", "-13.056"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$13000000.00"}, {"Lowest Capacity Asset", "ES XFH59UP5OHHG|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs index d1e49db4e09d..50b613ada69c 100644 --- a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -189,12 +189,12 @@ public override void OnEndOfAlgorithm() {"Average Win", "1.74%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "3.600%"}, - {"Drawdown", "0.300%"}, + {"Drawdown", "0.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "101736.08"}, {"Net Profit", "1.736%"}, - {"Sharpe Ratio", "0.596"}, + {"Sharpe Ratio", "0.589"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "49.736%"}, {"Loss Rate", "0%"}, @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.001"}, {"Information Ratio", "0.009"}, {"Tracking Error", "0.375"}, - {"Treynor Ratio", "-11.048"}, + {"Treynor Ratio", "-10.904"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$100000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPNJHMS|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs index 99a75a59b56e..71b0d27de1ac 100644 --- a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs @@ -203,12 +203,12 @@ public override void OnEndOfAlgorithm() {"Average Win", "10.89%"}, {"Average Loss", "-7.10%"}, {"Compounding Annual Return", "6.286%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "0.200%"}, {"Expectancy", "0.267"}, {"Start Equity", "100000"}, {"End Equity", "103011.08"}, {"Net Profit", "3.011%"}, - {"Sharpe Ratio", "1.255"}, + {"Sharpe Ratio", "1.247"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "85.803%"}, {"Loss Rate", "50%"}, @@ -220,7 +220,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.001"}, {"Information Ratio", "0.058"}, {"Tracking Error", "0.375"}, - {"Treynor Ratio", "-41.831"}, + {"Treynor Ratio", "-41.587"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$12000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FAOUTB0K|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs index 7fb1e141f109..8097030dd3c7 100644 --- a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs @@ -188,24 +188,24 @@ public override void OnEndOfAlgorithm() {"Average Win", "3.42%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "7.162%"}, - {"Drawdown", "0.000%"}, + {"Drawdown", "0.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "103423.58"}, {"Net Profit", "3.424%"}, - {"Sharpe Ratio", "1.088"}, + {"Sharpe Ratio", "1.083"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "73.287%"}, {"Loss Rate", "0%"}, {"Win Rate", "100%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "0.04"}, + {"Alpha", "0.039"}, {"Beta", "-0.002"}, {"Annual Standard Deviation", "0.036"}, {"Annual Variance", "0.001"}, {"Information Ratio", "0.075"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-24.076"}, + {"Treynor Ratio", "-23.957"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$110000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FAJQB2N8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs index ab85a2583e82..a76676b2316c 100644 --- a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs @@ -204,19 +204,19 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "98233.93"}, {"Net Profit", "-1.766%"}, - {"Sharpe Ratio", "-1.141"}, + {"Sharpe Ratio", "-1.296"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.020%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, {"Profit-Loss Ratio", "0.94"}, - {"Alpha", "-0.02"}, + {"Alpha", "-0.023"}, {"Beta", "0.001"}, {"Annual Standard Deviation", "0.017"}, {"Annual Variance", "0"}, {"Information Ratio", "-0.602"}, {"Tracking Error", "0.291"}, - {"Treynor Ratio", "-16.65"}, + {"Treynor Ratio", "-18.911"}, {"Total Fees", "$3.57"}, {"Estimated Strategy Capacity", "$16000000.00"}, {"Lowest Capacity Asset", "ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FuturesDailySettlementLongRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesDailySettlementLongRegressionAlgorithm.cs index 8a3fa98d714b..f0cd67e06d82 100644 --- a/Algorithm.CSharp/FuturesDailySettlementLongRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesDailySettlementLongRegressionAlgorithm.cs @@ -196,7 +196,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.89%"}, {"Average Loss", "-0.87%"}, {"Compounding Annual Return", "142.879%"}, - {"Drawdown", "3.800%"}, + {"Drawdown", "3.700%"}, {"Expectancy", "0.349"}, {"Start Equity", "100000"}, {"End Equity", "100905.65"}, diff --git a/Algorithm.CSharp/FuturesDailySettlementShortRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesDailySettlementShortRegressionAlgorithm.cs index 2c9d7533b6e8..dc96704e24fc 100644 --- a/Algorithm.CSharp/FuturesDailySettlementShortRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesDailySettlementShortRegressionAlgorithm.cs @@ -50,7 +50,7 @@ public class FuturesDailySettlementShortRegressionAlgorithm : FuturesDailySettle {"Average Win", "0.83%"}, {"Average Loss", "-0.94%"}, {"Compounding Annual Return", "-64.858%"}, - {"Drawdown", "47.200%"}, + {"Drawdown", "47.100%"}, {"Expectancy", "-0.373"}, {"Start Equity", "100000"}, {"End Equity", "98943.15"}, diff --git a/Algorithm.CSharp/IndexOptionCallITMExpiryDailyRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionCallITMExpiryDailyRegressionAlgorithm.cs index 470c0d737abe..91b9b22f4e4a 100644 --- a/Algorithm.CSharp/IndexOptionCallITMExpiryDailyRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionCallITMExpiryDailyRegressionAlgorithm.cs @@ -76,7 +76,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$0"}, {"Lowest Capacity Asset", "SPX XL80P3GHIA9A|SPX 31"}, {"Portfolio Turnover", "1.90%"}, - {"Drawdown Recovery", "9"}, + {"Drawdown Recovery", "10"}, {"OrderListHash", "b02af3819f796241269614e0ebf49964"} }; } diff --git a/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs index 680cc1108da2..9f9afc17d54f 100644 --- a/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -172,7 +172,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "4.97%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "99.378%"}, - {"Drawdown", "7.600%"}, + {"Drawdown", "7.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "104974"}, diff --git a/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs index c3ac8a75e13c..8c2da0a29ac1 100644 --- a/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionPutITMExpiryRegressionAlgorithm.cs @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-9.85%"}, {"Compounding Annual Return", "-77.114%"}, - {"Drawdown", "12.500%"}, + {"Drawdown", "12.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "90146"}, diff --git a/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs index b439ff57964b..7ef0bbf30de0 100644 --- a/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/IndexOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -184,7 +184,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.01%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "0.142%"}, - {"Drawdown", "0%"}, + {"Drawdown", "0.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100010"}, diff --git a/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs b/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs index af3fff18e5e1..2b0d2b792a72 100644 --- a/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs +++ b/Algorithm.CSharp/InsightScoringRegressionAlgorithm.cs @@ -173,7 +173,7 @@ public void Score(InsightManager insightManager, DateTime utcTime) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "f209ed42701b0419858e0100595b40c0"} }; } diff --git a/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs b/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs index 1dfbe9379159..615908a8d400 100644 --- a/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs +++ b/Algorithm.CSharp/InsightWeightingFrameworkAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$45000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "ae4986890fe7ab09ddb93059888f34c0"} }; } diff --git a/Algorithm.CSharp/InsufficientBuyingPowerForAutomaticExerciseRegressionAlgorithm.cs b/Algorithm.CSharp/InsufficientBuyingPowerForAutomaticExerciseRegressionAlgorithm.cs index 86aff0d031be..acbfc5744a60 100644 --- a/Algorithm.CSharp/InsufficientBuyingPowerForAutomaticExerciseRegressionAlgorithm.cs +++ b/Algorithm.CSharp/InsufficientBuyingPowerForAutomaticExerciseRegressionAlgorithm.cs @@ -192,7 +192,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "8.96%"}, {"Average Loss", "-1.95%"}, {"Compounding Annual Return", "-67.963%"}, - {"Drawdown", "2.900%"}, + {"Drawdown", "2.800%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "98248.35"}, diff --git a/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs b/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs index 3d0c40e319b8..9ba717513618 100644 --- a/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/LeveragePrecedenceRegressionAlgorithm.cs @@ -123,7 +123,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$5600000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "379.43%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "b339a5e17142fe5496d80ee26079d8d0"} }; diff --git a/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs b/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs index 278346447aff..f14a86a0f9d2 100644 --- a/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ManualContinuousFuturesPositionRolloverRegressionAlgorithm.cs @@ -125,7 +125,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "7.01%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "15.617%"}, - {"Drawdown", "1.600%"}, + {"Drawdown", "1.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "107578.9"}, diff --git a/Algorithm.CSharp/MappedBenchmarkRegressionAlgorithm.cs b/Algorithm.CSharp/MappedBenchmarkRegressionAlgorithm.cs index 2058b527cbc8..11d6025fa56c 100644 --- a/Algorithm.CSharp/MappedBenchmarkRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MappedBenchmarkRegressionAlgorithm.cs @@ -104,7 +104,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "2.30%"}, - {"Drawdown Recovery", "4"}, + {"Drawdown Recovery", "5"}, {"OrderListHash", "a27fe8cbd54877fe74d0536e685196fa"} }; } diff --git a/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs b/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs index 0ea745265122..25028f8e0972 100644 --- a/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MarginCallClosedMarketRegressionAlgorithm.cs @@ -134,7 +134,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0.39%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "1750.998%"}, - {"Drawdown", "5.500%"}, + {"Drawdown", "5.400%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "103801.65"}, diff --git a/Algorithm.CSharp/MaximumDrawdownPercentPerSecurityFrameworkRegressionAlgorithm.cs b/Algorithm.CSharp/MaximumDrawdownPercentPerSecurityFrameworkRegressionAlgorithm.cs index 5a71a76661a7..c90be4d1dd85 100644 --- a/Algorithm.CSharp/MaximumDrawdownPercentPerSecurityFrameworkRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MaximumDrawdownPercentPerSecurityFrameworkRegressionAlgorithm.cs @@ -68,7 +68,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$74000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, {"Portfolio Turnover", "6.66%"}, - {"Drawdown Recovery", "0"}, + {"Drawdown Recovery", "1"}, {"OrderListHash", "ab2645a4eeb3bbd6b2862df5260d86b4"} }; } diff --git a/Algorithm.CSharp/MaximumUnrealizedProfitPercentPerSecurityFrameworkRegressionAlgorithm.cs b/Algorithm.CSharp/MaximumUnrealizedProfitPercentPerSecurityFrameworkRegressionAlgorithm.cs index 681d124f1d7f..c51cd933b3ad 100644 --- a/Algorithm.CSharp/MaximumUnrealizedProfitPercentPerSecurityFrameworkRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MaximumUnrealizedProfitPercentPerSecurityFrameworkRegressionAlgorithm.cs @@ -68,7 +68,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$46000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, {"Portfolio Turnover", "6.62%"}, - {"Drawdown Recovery", "0"}, + {"Drawdown Recovery", "1"}, {"OrderListHash", "e954f20bd08ee776fa710a325715354e"} }; } diff --git a/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs b/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs index 87d281eeccaa..3f96566dab8c 100644 --- a/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs +++ b/Algorithm.CSharp/MinimumOrderMarginRegressionAlgorithm.cs @@ -64,7 +64,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$150000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "4.98%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "8774049eb5141a2b6956d9432426f837"} }; } diff --git a/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs b/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs index 014d53e53587..8a3c609c2adc 100644 --- a/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMarginCallOutsideRegularHoursRegressionAlgorithm.cs @@ -107,7 +107,7 @@ public override void OnMarginCall(List requests) {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "-93.216%"}, - {"Drawdown", "7.100%"}, + {"Drawdown", "7.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "96499.74"}, diff --git a/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs b/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs index ca64300ba9b4..a4b88df0f486 100644 --- a/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NoMinimumOrderMarginRegressionAlgorithm.cs @@ -102,7 +102,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$63000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "5.15%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "72d5203e9911bad556de371750fe0278"} }; } diff --git a/Algorithm.CSharp/NullOptionAssignmentRegressionAlgorithm.cs b/Algorithm.CSharp/NullOptionAssignmentRegressionAlgorithm.cs index aa24e13b3123..9a968359cfa5 100644 --- a/Algorithm.CSharp/NullOptionAssignmentRegressionAlgorithm.cs +++ b/Algorithm.CSharp/NullOptionAssignmentRegressionAlgorithm.cs @@ -49,7 +49,7 @@ public override void Initialize() {"Average Win", "9.48%"}, {"Average Loss", "-16.73%"}, {"Compounding Annual Return", "-25.790%"}, - {"Drawdown", "0.600%"}, + {"Drawdown", "0.500%"}, {"Expectancy", "-0.478"}, {"Start Equity", "100000"}, {"End Equity", "99538"}, diff --git a/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs b/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs index ce3d2c31cb9a..a3970d0ea128 100644 --- a/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs +++ b/Algorithm.CSharp/ObjectStoreExampleAlgorithm.cs @@ -185,7 +185,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs index 4a0c6a701dfb..f8ea9f87780e 100644 --- a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs @@ -181,24 +181,24 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "-3.85%"}, {"Compounding Annual Return", "-7.754%"}, - {"Drawdown", "4.300%"}, + {"Drawdown", "4.400%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, {"End Equity", "96148.58"}, {"Net Profit", "-3.851%"}, - {"Sharpe Ratio", "-1.221"}, + {"Sharpe Ratio", "-1.225"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.131%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-0.063"}, + {"Alpha", "-0.064"}, {"Beta", "0.003"}, {"Annual Standard Deviation", "0.052"}, {"Annual Variance", "0.003"}, {"Information Ratio", "-0.198"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-23.065"}, + {"Treynor Ratio", "-23.136"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPHL5L0|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs b/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs index 5fb54088b678..8442abac4bac 100644 --- a/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OrderSubmissionDataRegressionAlgorithm.cs @@ -102,7 +102,7 @@ private void PlaceTrade(string ticker) {"Average Win", "0.83%"}, {"Average Loss", "-0.90%"}, {"Compounding Annual Return", "273.871%"}, - {"Drawdown", "3.200%"}, + {"Drawdown", "3.300%"}, {"Expectancy", "0.203"}, {"Start Equity", "100000.00"}, {"End Equity", "101715.67"}, diff --git a/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs b/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs index 025f2876e038..f004884575db 100644 --- a/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/PortfolioTargetTagsRegressionAlgorithm.cs @@ -176,7 +176,7 @@ public override void Execute(QCAlgorithm algorithm, IPortfolioTarget[] targets) {"Estimated Strategy Capacity", "$27000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "59.86%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "059f940ee51f03f94eb0f13ae4b93134"} }; } diff --git a/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs b/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs index bddb8bfe1e39..d87e187c69f7 100644 --- a/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs +++ b/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs @@ -130,7 +130,7 @@ public override void OnData(Slice slice) {"Total Orders", "10"}, {"Average Win", "0%"}, {"Average Loss", "0.00%"}, - {"Compounding Annual Return", "-0.468%"}, + {"Compounding Annual Return", "-0.364%"}, {"Drawdown", "0.000%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs b/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs index 555ab326fc74..d37c9682f13b 100644 --- a/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScaledFillForwardDataRegressionAlgorithm.cs @@ -117,7 +117,7 @@ public override void OnEndOfAlgorithm() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "45.475%"}, - {"Drawdown", "0.800%"}, + {"Drawdown", "0.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100497.59"}, diff --git a/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs index 431232cc467a..fa4bbfedd31b 100644 --- a/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledEventsOrderRegressionAlgorithm.cs @@ -197,7 +197,7 @@ public override void OnData(Slice slice) {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs index 8e1a1fb4dad7..6aa71ae373b4 100644 --- a/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs @@ -108,7 +108,7 @@ public override void OnEndOfAlgorithm() {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "-87.920%"}, + {"Compounding Annual Return", "-88.441%"}, {"Drawdown", "1.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs index 5c004e021c61..8e79a35bff89 100644 --- a/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs @@ -214,25 +214,25 @@ private void ExpectRemovals(SecurityChanges changes, params string[] tickers) {"Total Orders", "59"}, {"Average Win", "0.28%"}, {"Average Loss", "-0.20%"}, - {"Compounding Annual Return", "73.882%"}, + {"Compounding Annual Return", "76.963%"}, {"Drawdown", "1.100%"}, {"Expectancy", "0.749"}, {"Start Equity", "100000"}, {"End Equity", "105049.17"}, {"Net Profit", "5.049%"}, - {"Sharpe Ratio", "7.048"}, - {"Sortino Ratio", "10.495"}, - {"Probabilistic Sharpe Ratio", "96.425%"}, + {"Sharpe Ratio", "6.259"}, + {"Sortino Ratio", "9.282"}, + {"Probabilistic Sharpe Ratio", "94.397%"}, {"Loss Rate", "27%"}, {"Win Rate", "73%"}, {"Profit-Loss Ratio", "1.39"}, - {"Alpha", "0.458"}, - {"Beta", "0.044"}, + {"Alpha", "0.403"}, + {"Beta", "0.052"}, {"Annual Standard Deviation", "0.066"}, {"Annual Variance", "0.004"}, - {"Information Ratio", "3.893"}, + {"Information Ratio", "3.179"}, {"Tracking Error", "0.083"}, - {"Treynor Ratio", "10.5"}, + {"Treynor Ratio", "7.857"}, {"Total Fees", "$35.53"}, {"Estimated Strategy Capacity", "$2600000.00"}, {"Lowest Capacity Asset", "EURUSD 8G"}, diff --git a/Algorithm.CSharp/SecurityCustomPropertiesAlgorithm.cs b/Algorithm.CSharp/SecurityCustomPropertiesAlgorithm.cs index d6a441586071..f5a4f7607eb7 100644 --- a/Algorithm.CSharp/SecurityCustomPropertiesAlgorithm.cs +++ b/Algorithm.CSharp/SecurityCustomPropertiesAlgorithm.cs @@ -169,7 +169,7 @@ public override OrderFee GetOrderFee(OrderFeeParameters parameters) {"Average Win", "0.43%"}, {"Average Loss", "-0.08%"}, {"Compounding Annual Return", "84.608%"}, - {"Drawdown", "0.800%"}, + {"Drawdown", "0.700%"}, {"Expectancy", "0.628"}, {"Start Equity", "100000"}, {"End Equity", "100786.91"}, diff --git a/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs b/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs index e693e8216605..52651ff55f3c 100644 --- a/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SecurityToSymbolRegressionAlgorithm.cs @@ -98,7 +98,7 @@ public override void Initialize() {"Estimated Strategy Capacity", "$56000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "19.93%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "3da9fa60bf95b9ed148b95e02e0cfc9e"} }; } diff --git a/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs b/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs index 445143394cbe..15cea479eeec 100644 --- a/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs @@ -94,12 +94,12 @@ public override void OnEndOfAlgorithm() {"Total Orders", "0"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "119.460%"}, - {"Drawdown", "0%"}, + {"Compounding Annual Return", "0%"}, + {"Drawdown", "1.000%"}, {"Expectancy", "0"}, {"Start Equity", "10000"}, - {"End Equity", "10101"}, - {"Net Profit", "1.010%"}, + {"End Equity", "10000"}, + {"Net Profit", "0%"}, {"Sharpe Ratio", "-5.989"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "1.216%"}, diff --git a/Algorithm.CSharp/SetHoldingsMultipleTargetsRegressionAlgorithm.cs b/Algorithm.CSharp/SetHoldingsMultipleTargetsRegressionAlgorithm.cs index 347d8df1d8f8..d73eb8535158 100644 --- a/Algorithm.CSharp/SetHoldingsMultipleTargetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SetHoldingsMultipleTargetsRegressionAlgorithm.cs @@ -97,7 +97,7 @@ public override void OnData(Slice data) {"Average Win", "0.00%"}, {"Average Loss", "-0.01%"}, {"Compounding Annual Return", "353.938%"}, - {"Drawdown", "2.300%"}, + {"Drawdown", "2.100%"}, {"Expectancy", "-0.749"}, {"Start Equity", "100000"}, {"End Equity", "101952.99"}, diff --git a/Algorithm.CSharp/ShortableProviderOrdersRejectedRegressionAlgorithm.cs b/Algorithm.CSharp/ShortableProviderOrdersRejectedRegressionAlgorithm.cs index 137414962c37..5b3889e2c4aa 100644 --- a/Algorithm.CSharp/ShortableProviderOrdersRejectedRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ShortableProviderOrdersRejectedRegressionAlgorithm.cs @@ -219,7 +219,7 @@ public RegressionTestShortableProvider() : base("testbrokerage") {"Estimated Strategy Capacity", "$99000000.00"}, {"Lowest Capacity Asset", "AIG R735QTJ8XC9X"}, {"Portfolio Turnover", "0.23%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "4"}, {"OrderListHash", "6d92f0811c31864dfaaccd9eb2edac52"} }; } diff --git a/Algorithm.CSharp/TimeInForceAlgorithm.cs b/Algorithm.CSharp/TimeInForceAlgorithm.cs index 6f18f8ca9fb7..198fd27945a6 100644 --- a/Algorithm.CSharp/TimeInForceAlgorithm.cs +++ b/Algorithm.CSharp/TimeInForceAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnEndOfAlgorithm() {"Estimated Strategy Capacity", "$44000000.00"}, {"Lowest Capacity Asset", "SPY R735QTJ8XC9X"}, {"Portfolio Turnover", "0.87%"}, - {"Drawdown Recovery", "3"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "a0588650916ed396fb5793375118e7b3"} }; } diff --git a/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs b/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs index 4ce566c5931e..2ea91f53ee39 100644 --- a/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs +++ b/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs @@ -104,8 +104,8 @@ private IEnumerable FilterUniverse(IEnumerable c {"Beta", "0"}, {"Annual Standard Deviation", "0"}, {"Annual Variance", "0"}, - {"Information Ratio", "4.947"}, - {"Tracking Error", "0.006"}, + {"Information Ratio", "0"}, + {"Tracking Error", "0"}, {"Treynor Ratio", "0"}, {"Total Fees", "$0.00"}, {"Estimated Strategy Capacity", "$0"}, diff --git a/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs b/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs index bdce60740026..e2b44f8c97a9 100644 --- a/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs +++ b/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs @@ -106,29 +106,29 @@ public override void OnData(Slice slice) {"Total Orders", "4"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "20.900%"}, + {"Compounding Annual Return", "0%"}, {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100190.84"}, - {"Net Profit", "0.191%"}, - {"Sharpe Ratio", "9.794"}, + {"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.297"}, - {"Beta", "-0.064"}, - {"Annual Standard Deviation", "0.017"}, + {"Alpha", "0"}, + {"Beta", "0"}, + {"Annual Standard Deviation", "0"}, {"Annual Variance", "0"}, - {"Information Ratio", "-18.213"}, - {"Tracking Error", "0.099"}, - {"Treynor Ratio", "-2.695"}, + {"Information Ratio", "0"}, + {"Tracking Error", "0"}, + {"Treynor Ratio", "0"}, {"Total Fees", "$4.00"}, {"Estimated Strategy Capacity", "$4400000000.00"}, {"Lowest Capacity Asset", "GOOCV VP83T1ZUHROL"}, - {"Portfolio Turnover", "4.22%"}, + {"Portfolio Turnover", "5.63%"}, {"Drawdown Recovery", "0"}, {"OrderListHash", "9d2bd0df7c094c393e77f72b7739bfa0"} }; diff --git a/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs index db08422c87f9..93204f2bffe3 100644 --- a/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "106.090%"}, + {"Compounding Annual Return", "29.238%"}, {"Drawdown", "0.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000.0"}, diff --git a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs index 9f7dfd84badd..e5a45d36ab1d 100644 --- a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs @@ -157,8 +157,8 @@ protected void AssertDataTime(DateTime start, DateTime end, List times {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "112.304%"}, - {"Drawdown", "1.400%"}, + {"Compounding Annual Return", "71.953%"}, + {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100620.7"}, @@ -180,7 +180,7 @@ protected void AssertDataTime(DateTime start, DateTime end, List times {"Estimated Strategy Capacity", "$120000000.00"}, {"Lowest Capacity Asset", "ES VP274HSU1AF5"}, {"Portfolio Turnover", "28.05%"}, - {"Drawdown Recovery", "1"}, + {"Drawdown Recovery", "2"}, {"OrderListHash", "1b8fcad46bd578e36bbecdf922b2deb0"} }; } diff --git a/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs index 6aef0f39b5b7..f3f32e8deb8e 100644 --- a/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs @@ -94,7 +94,7 @@ public override void OnData(Slice slice) {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "11.962%"}, + {"Compounding Annual Return", "6.648%"}, {"Drawdown", "1.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs index 9ed54dbd089f..c124c0d3e6cd 100644 --- a/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs @@ -127,7 +127,7 @@ public override void OnData(Slice slice) {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "-32.091%"}, + {"Compounding Annual Return", "-28.495%"}, {"Drawdown", "2.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs index 79a7d3b8ffb9..683203472101 100644 --- a/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs @@ -157,7 +157,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Total Orders", "8"}, {"Average Win", "0.64%"}, {"Average Loss", "-0.13%"}, - {"Compounding Annual Return", "11.057%"}, + {"Compounding Annual Return", "9.515%"}, {"Drawdown", "0.900%"}, {"Expectancy", "0.938"}, {"Start Equity", "100000"}, From a8dba9484cec08840c00c02f588c5c284115666f Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 17 Apr 2026 03:03:51 -0500 Subject: [PATCH 10/11] Use separate equity series for drawdown calculation --- Common/Statistics/AlgorithmPerformance.cs | 8 +++++--- Common/Statistics/PortfolioStatistics.cs | 6 ++++-- Common/Statistics/StatisticsBuilder.cs | 17 +++++++++++------ Engine/Results/BaseResultsHandler.cs | 6 +++--- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Common/Statistics/AlgorithmPerformance.cs b/Common/Statistics/AlgorithmPerformance.cs index 5b94c81b710d..d9133b99f5cf 100644 --- a/Common/Statistics/AlgorithmPerformance.cs +++ b/Common/Statistics/AlgorithmPerformance.cs @@ -53,6 +53,7 @@ public class AlgorithmPerformance /// Number of losing transactions /// The risk free interest rate model to use /// The number of trading days per year + /// Equity series used only for drawdown calculation public AlgorithmPerformance( List trades, SortedDictionary profitLoss, @@ -64,12 +65,13 @@ public AlgorithmPerformance( int winningTransactions, int losingTransactions, IRiskFreeInterestRateModel riskFreeInterestRateModel, - int tradingDaysPerYear) + int tradingDaysPerYear, + SortedDictionary equityForDrawdown = null) { TradeStatistics = new TradeStatistics(trades); - PortfolioStatistics = new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, startingCapital, - riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions); + PortfolioStatistics = new PortfolioStatistics(profitLoss, equity, portfolioTurnover, listPerformance, listBenchmark, + startingCapital, riskFreeInterestRateModel, tradingDaysPerYear, winningTransactions, losingTransactions, equityForDrawdown); ClosedTrades = trades; } diff --git a/Common/Statistics/PortfolioStatistics.cs b/Common/Statistics/PortfolioStatistics.cs index 5f8ab2a807dd..b0e47237ebc7 100644 --- a/Common/Statistics/PortfolioStatistics.cs +++ b/Common/Statistics/PortfolioStatistics.cs @@ -208,6 +208,7 @@ public class PortfolioStatistics /// If this and are null, they will be calculated from /// /// The number of losses + /// Equity series used only for drawdown calculation public PortfolioStatistics( SortedDictionary profitLoss, SortedDictionary equity, @@ -218,7 +219,8 @@ public PortfolioStatistics( IRiskFreeInterestRateModel riskFreeInterestRateModel, int tradingDaysPerYear, int? winCount = null, - int? lossCount = null) + int? lossCount = null, + SortedDictionary equityForDrawdown = null) { StartEquity = startingCapital; EndEquity = equity.LastOrDefault().Value; @@ -314,7 +316,7 @@ public PortfolioStatistics( ValueAtRisk99 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.99d); ValueAtRisk95 = GetValueAtRisk(listPerformance, tradingDaysPerYear, 0.95d); - var drawdownMetrics = Statistics.CalculateDrawdownMetrics(equity, 3); + var drawdownMetrics = Statistics.CalculateDrawdownMetrics(equityForDrawdown ?? equity, 3); Drawdown = drawdownMetrics.Drawdown; DrawdownRecovery = drawdownMetrics.DrawdownRecovery; } diff --git a/Common/Statistics/StatisticsBuilder.cs b/Common/Statistics/StatisticsBuilder.cs index 7fd403b6e0ef..12042518e6fa 100644 --- a/Common/Statistics/StatisticsBuilder.cs +++ b/Common/Statistics/StatisticsBuilder.cs @@ -46,7 +46,8 @@ public static class StatisticsBuilder /// The transaction manager to get number of winning and losing transactions /// /// The risk free interest rate model to use - /// The number of trading days per year + /// The number of trading days per year + /// Equity series used only for drawdown calculation /// Returns a object public static StatisticsResults Generate( List trades, @@ -62,15 +63,17 @@ public static StatisticsResults Generate( string accountCurrencySymbol, SecurityTransactionManager transactions, IRiskFreeInterestRateModel riskFreeInterestRateModel, - int tradingDaysPerYear) + int tradingDaysPerYear, + List pointsEquityForDrawdown = null) { var equity = ChartPointToDictionary(pointsEquity); + var equityForDrawdown = pointsEquityForDrawdown != null ? ChartPointToDictionary(pointsEquityForDrawdown) : null; var firstDate = equity.Keys.FirstOrDefault().Date; var lastDate = equity.Keys.LastOrDefault().Date; - var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, - pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); + var totalPerformance = GetAlgorithmPerformance(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, + pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear, equityForDrawdown); var rollingPerformances = GetRollingPerformances(firstDate, lastDate, trades, profitLoss, equity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); var summary = GetSummary(totalPerformance, estimatedStrategyCapacity, totalFees, totalOrders, accountCurrencySymbol); @@ -95,6 +98,7 @@ public static StatisticsResults Generate( /// /// The risk free interest rate model to use /// The number of trading days per year + /// Equity series used only for drawdown calculation /// The algorithm performance private static AlgorithmPerformance GetAlgorithmPerformance( DateTime fromDate, @@ -108,7 +112,8 @@ private static AlgorithmPerformance GetAlgorithmPerformance( decimal startingCapital, SecurityTransactionManager transactions, IRiskFreeInterestRateModel riskFreeInterestRateModel, - int tradingDaysPerYear) + int tradingDaysPerYear, + SortedDictionary equityForDrawdown = null) { var periodEquity = new SortedDictionary(equity.Where(x => x.Key.Date >= fromDate && x.Key.Date < toDate.AddDays(1)).ToDictionary(x => x.Key, y => y.Value)); @@ -145,7 +150,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( var runningCapital = equity.Count == periodEquity.Count ? startingCapital : periodEquity.Values.FirstOrDefault(); return new AlgorithmPerformance(periodTrades, periodProfitLoss, periodEquity, portfolioTurnover, listPerformance, listBenchmark, - runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear); + runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear, equityForDrawdown); } /// diff --git a/Engine/Results/BaseResultsHandler.cs b/Engine/Results/BaseResultsHandler.cs index cc3e13847432..22bd1d90a0ce 100644 --- a/Engine/Results/BaseResultsHandler.cs +++ b/Engine/Results/BaseResultsHandler.cs @@ -1064,11 +1064,11 @@ protected StatisticsResults GenerateStatisticsResults(Dictionary portfolioTurnover = new Series(); } - var equityForDrawdown = _equityForDrawdown.Count > 0 ? _equityForDrawdown : equity.Values; - statisticsResults = StatisticsBuilder.Generate(trades, profitLoss, equityForDrawdown, performanceValues, benchmarkValues, + statisticsResults = StatisticsBuilder.Generate(trades, profitLoss, equity.Values, performanceValues, benchmarkValues, portfolioTurnover.Values, StartingPortfolioValue, Algorithm.Portfolio.TotalFees, TotalTradesCount(), estimatedStrategyCapacity, AlgorithmCurrencySymbol, Algorithm.Transactions, Algorithm.RiskFreeInterestRateModel, - Algorithm.Settings.TradingDaysPerYear.Value // already set in Brokerage|Backtesting-SetupHandler classes + Algorithm.Settings.TradingDaysPerYear.Value, // already set in Brokerage|Backtesting-SetupHandler classes + _equityForDrawdown.Count > 0 ? _equityForDrawdown : null ); } else From 8626fb34da2498ca39e5ff525bef513d2470a80b Mon Sep 17 00:00:00 2001 From: Josue Nina Date: Fri, 17 Apr 2026 03:12:46 -0500 Subject: [PATCH 11/11] Update regression algorithms --- ...taIndicatorNewAssetsRegressionAlgorithm.cs | 4 ++-- ...plateFuturesWithExtendedMarketAlgorithm.cs | 4 ++-- .../BasicTemplateIndiaAlgorithm.cs | 4 ++-- .../BasicTemplateOptionsDailyAlgorithm.cs | 6 ++--- ...inanceCashAccountFeeRegressionAlgorithm.cs | 2 +- ...anceMarginAccountFeeRegressionAlgorithm.cs | 2 +- ...tfinexCashAccountFeeRegressionAlgorithm.cs | 2 +- ...inexMarginAccountFeeRegressionAlgorithm.cs | 2 +- .../CfdTimeZonesRegressionAlgorithm.cs | 6 ++--- ...ptoYearMarketTradingRegressionAlgorithm.cs | 4 ++-- ...folioSignalExportDemonstrationAlgorithm.cs | 2 +- ...tive2SignalExportDemonstrationAlgorithm.cs | 2 +- ...ConstituentsUniverseRegressionAlgorithm.cs | 18 +++++++-------- ...ataUniverseScheduledRegressionAlgorithm.cs | 22 +++++++++---------- ...ingFutureOptionDailyRegressionAlgorithm.cs | 6 ++--- ...elistingFutureOptionRegressionAlgorithm.cs | 4 ++-- .../FractionalQuantityRegressionAlgorithm.cs | 6 ++--- ...mSelectionTimeWarmupRegressionAlgorithm.cs | 2 +- ...nBuySellCallIntradayRegressionAlgorithm.cs | 6 ++--- ...eOptionCallITMExpiryRegressionAlgorithm.cs | 4 ++-- ...nCallITMGreeksExpiryRegressionAlgorithm.cs | 4 ++-- ...eOptionCallOTMExpiryRegressionAlgorithm.cs | 6 ++--- ...reOptionPutITMExpiryRegressionAlgorithm.cs | 4 ++-- ...reOptionPutOTMExpiryRegressionAlgorithm.cs | 6 ++--- ...onShortCallITMExpiryRegressionAlgorithm.cs | 6 ++--- ...onShortCallOTMExpiryRegressionAlgorithm.cs | 4 ++-- ...ionShortPutITMExpiryRegressionAlgorithm.cs | 4 ++-- ...ionShortPutOTMExpiryRegressionAlgorithm.cs | 6 ++--- ...ryTimeAndLiquidationRegressionAlgorithm.cs | 6 ++--- ...iryOrderHasZeroPriceRegressionAlgorithm.cs | 6 ++--- .../Collective2IndexOptionAlgorithm.cs | 2 +- .../ScheduledUniverseRegressionAlgorithm.cs | 2 +- ...iverseSelectionModelRegressionAlgorithm.cs | 16 +++++++------- ...ustomSettlementModelRegressionAlgorithm.cs | 6 ++--- .../UniverseOnlyRegressionAlgorithm.cs | 4 ++-- .../VolumeShareSlippageModelAlgorithm.cs | 20 ++++++++--------- .../WarmupDataTypesRegressionAlgorithm.cs | 2 +- .../WarmupFutureRegressionAlgorithm.cs | 2 +- .../WarmupIndicatorRegressionAlgorithm.cs | 2 +- ...rResolutionSelectionRegressionAlgorithm.cs | 2 +- .../WarmupSelectionRegressionAlgorithm.cs | 2 +- Tests/Python/PythonWrapperTests.cs | 2 +- 42 files changed, 111 insertions(+), 111 deletions(-) diff --git a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs index 0caa97d86a82..213ab2824913 100644 --- a/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs +++ b/Algorithm.CSharp/AddBetaIndicatorNewAssetsRegressionAlgorithm.cs @@ -128,7 +128,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Start Equity", "10000.00"}, {"End Equity", "10410.99"}, {"Net Profit", "4.110%"}, - {"Sharpe Ratio", "0.331"}, + {"Sharpe Ratio", "0.332"}, {"Sortino Ratio", "0.313"}, {"Probabilistic Sharpe Ratio", "74.084%"}, {"Loss Rate", "90%"}, @@ -140,7 +140,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Annual Variance", "0"}, {"Information Ratio", "-0.495"}, {"Tracking Error", "0.111"}, - {"Treynor Ratio", "2.708"}, + {"Treynor Ratio", "2.716"}, {"Total Fees", "$0.00"}, {"Estimated Strategy Capacity", "$87000.00"}, {"Lowest Capacity Asset", "BTCUSD 2XR"}, diff --git a/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs b/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs index 53ca5752e2a6..693c63a7cd56 100644 --- a/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateFuturesWithExtendedMarketAlgorithm.cs @@ -173,8 +173,8 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Drawdown", "13.900%"}, {"Expectancy", "-0.824"}, {"Start Equity", "1000000"}, - {"End Equity", "861193.96"}, - {"Net Profit", "-13.881%"}, + {"End Equity", "861260.7"}, + {"Net Profit", "-13.874%"}, {"Sharpe Ratio", "-19.346"}, {"Sortino Ratio", "-19.346"}, {"Probabilistic Sharpe Ratio", "0%"}, diff --git a/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs b/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs index 721d149d968a..19357403245a 100644 --- a/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateIndiaAlgorithm.cs @@ -111,8 +111,8 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Start Equity", "100000"}, {"End Equity", "99992.45"}, {"Net Profit", "-0.008%"}, - {"Sharpe Ratio", "-484.926"}, - {"Sortino Ratio", "-71.385"}, + {"Sharpe Ratio", "-497.389"}, + {"Sortino Ratio", "-73.22"}, {"Probabilistic Sharpe Ratio", "0.001%"}, {"Loss Rate", "0%"}, {"Win Rate", "0%"}, diff --git a/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs b/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs index d9e5a75dbe08..b6b1f61c6a51 100644 --- a/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs +++ b/Algorithm.CSharp/BasicTemplateOptionsDailyAlgorithm.cs @@ -148,8 +148,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "98844"}, {"Net Profit", "-1.156%"}, - {"Sharpe Ratio", "-4.039"}, - {"Sortino Ratio", "-2.421"}, + {"Sharpe Ratio", "-4.04"}, + {"Sortino Ratio", "-2.422"}, {"Probabilistic Sharpe Ratio", "0.099%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, @@ -160,7 +160,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0"}, {"Information Ratio", "1.49"}, {"Tracking Error", "0.289"}, - {"Treynor Ratio", "-3.211"}, + {"Treynor Ratio", "-3.212"}, {"Total Fees", "$1.00"}, {"Estimated Strategy Capacity", "$72000.00"}, {"Lowest Capacity Asset", "AAPL W78ZEO29CFS6|AAPL R735QTJ8XC9X"}, diff --git a/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs index ae86fd813b0e..1b7aad6998f8 100644 --- a/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BinanceCashAccountFeeRegressionAlgorithm.cs @@ -65,7 +65,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "99985.61"}, + {"End Equity", "99986.57"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs index 51f6f9075cbf..823b2389af92 100644 --- a/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BinanceMarginAccountFeeRegressionAlgorithm.cs @@ -65,7 +65,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "99985.61"}, + {"End Equity", "99986.57"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs index 56b4171e14a4..1d2ca5ef72a1 100644 --- a/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BitfinexCashAccountFeeRegressionAlgorithm.cs @@ -64,7 +64,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "100001.28"}, + {"End Equity", "100001.31"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs b/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs index a68b0af90be4..c6aeca81b5e2 100644 --- a/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs +++ b/Algorithm.CSharp/BitfinexMarginAccountFeeRegressionAlgorithm.cs @@ -64,7 +64,7 @@ public override void Initialize() {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, - {"End Equity", "100001.28"}, + {"End Equity", "100001.31"}, {"Net Profit", "0%"}, {"Sharpe Ratio", "0"}, {"Sortino Ratio", "0"}, diff --git a/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs b/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs index b92dcc2853fa..2142db6ea32b 100644 --- a/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CfdTimeZonesRegressionAlgorithm.cs @@ -93,12 +93,12 @@ public override void OnData(Slice slice) {"Total Orders", "279"}, {"Average Win", "0.01%"}, {"Average Loss", "-0.01%"}, - {"Compounding Annual Return", "-34.134%"}, + {"Compounding Annual Return", "-33.650%"}, {"Drawdown", "0.300%"}, {"Expectancy", "-0.345"}, {"Start Equity", "100000"}, - {"End Equity", "99657.4"}, - {"Net Profit", "-0.343%"}, + {"End Equity", "99663.4"}, + {"Net Profit", "-0.337%"}, {"Sharpe Ratio", "-21.957"}, {"Sortino Ratio", "-21.957"}, {"Probabilistic Sharpe Ratio", "0%"}, diff --git a/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs b/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs index 7789aeb16d76..598444164a60 100644 --- a/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CoinbaseCryptoYearMarketTradingRegressionAlgorithm.cs @@ -125,8 +125,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000.00"}, {"End Equity", "99365.56"}, {"Net Profit", "-0.634%"}, - {"Sharpe Ratio", "-7.128"}, - {"Sortino Ratio", "-7.338"}, + {"Sharpe Ratio", "-7.126"}, + {"Sortino Ratio", "-7.337"}, {"Probabilistic Sharpe Ratio", "0.000%"}, {"Loss Rate", "66%"}, {"Win Rate", "34%"}, diff --git a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs index 1889a9a702f4..cc519e57b8d3 100644 --- a/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2PortfolioSignalExportDemonstrationAlgorithm.cs @@ -168,7 +168,7 @@ public override void OnData(Slice slice) {"Total Orders", "2"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "9.148%"}, + {"Compounding Annual Return", "14.180%"}, {"Drawdown", "0.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, diff --git a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs index b0e8a0a15fde..4a46427b52f5 100644 --- a/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs +++ b/Algorithm.CSharp/Collective2SignalExportDemonstrationAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnData(Slice slice) {"Total Orders", "2"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "9.148%"}, + {"Compounding Annual Return", "14.180%"}, {"Drawdown", "0.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000.00"}, diff --git a/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs b/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs index 60e379f89e92..526be7f0c97e 100644 --- a/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ConstituentsUniverseRegressionAlgorithm.cs @@ -177,25 +177,25 @@ public override void OnSecuritiesChanged(SecurityChanges changes) {"Total Orders", "2"}, {"Average Win", "0.68%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "97.209%"}, + {"Compounding Annual Return", "70.501%"}, {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100684.53"}, {"Net Profit", "0.685%"}, - {"Sharpe Ratio", "17.814"}, + {"Sharpe Ratio", "13.41"}, {"Sortino Ratio", "0"}, - {"Probabilistic Sharpe Ratio", "0%"}, + {"Probabilistic Sharpe Ratio", "99.997%"}, {"Loss Rate", "0%"}, {"Win Rate", "100%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-1.352"}, - {"Beta", "0.207"}, - {"Annual Standard Deviation", "0.043"}, + {"Alpha", "0.235"}, + {"Beta", "0.15"}, + {"Annual Standard Deviation", "0.04"}, {"Annual Variance", "0.002"}, - {"Information Ratio", "-66.443"}, - {"Tracking Error", "0.143"}, - {"Treynor Ratio", "3.714"}, + {"Information Ratio", "-7.587"}, + {"Tracking Error", "0.19"}, + {"Treynor Ratio", "3.546"}, {"Total Fees", "$32.77"}, {"Estimated Strategy Capacity", "$230000000.00"}, {"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"}, diff --git a/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs b/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs index bc81fa73fb21..851fffb61243 100644 --- a/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs +++ b/Algorithm.CSharp/CustomDataUniverseScheduledRegressionAlgorithm.cs @@ -131,25 +131,25 @@ public override void OnEndOfAlgorithm() {"Total Orders", "7"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "-70.821%"}, + {"Compounding Annual Return", "-65.964%"}, {"Drawdown", "3.000%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "97665.47"}, {"Net Profit", "-2.335%"}, - {"Sharpe Ratio", "-3.744"}, - {"Sortino Ratio", "-3.163"}, - {"Probabilistic Sharpe Ratio", "7.404%"}, + {"Sharpe Ratio", "-3.693"}, + {"Sortino Ratio", "-2.881"}, + {"Probabilistic Sharpe Ratio", "6.625%"}, {"Loss Rate", "0%"}, {"Win Rate", "0%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-0.928"}, - {"Beta", "1.695"}, - {"Annual Standard Deviation", "0.169"}, - {"Annual Variance", "0.029"}, - {"Information Ratio", "-7.776"}, - {"Tracking Error", "0.104"}, - {"Treynor Ratio", "-0.373"}, + {"Alpha", "-1.175"}, + {"Beta", "1.621"}, + {"Annual Standard Deviation", "0.156"}, + {"Annual Variance", "0.024"}, + {"Information Ratio", "-9.977"}, + {"Tracking Error", "0.095"}, + {"Treynor Ratio", "-0.355"}, {"Total Fees", "$13.86"}, {"Estimated Strategy Capacity", "$510000000.00"}, {"Lowest Capacity Asset", "NB R735QTJ8XC9X"}, diff --git a/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs b/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs index c4d12a24f63a..e64888704c58 100644 --- a/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistingFutureOptionDailyRegressionAlgorithm.cs @@ -44,8 +44,8 @@ public class DelistingFutureOptionDailyRegressionAlgorithm : DelistingFutureOpti {"Start Equity", "10000000"}, {"End Equity", "9997036.08"}, {"Net Profit", "-0.030%"}, - {"Sharpe Ratio", "-31.525"}, - {"Sortino Ratio", "-7.849"}, + {"Sharpe Ratio", "-31.58"}, + {"Sortino Ratio", "-7.862"}, {"Probabilistic Sharpe Ratio", "2.982%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, @@ -56,7 +56,7 @@ public class DelistingFutureOptionDailyRegressionAlgorithm : DelistingFutureOpti {"Annual Variance", "0"}, {"Information Ratio", "1.511"}, {"Tracking Error", "0.429"}, - {"Treynor Ratio", "-84.61"}, + {"Treynor Ratio", "-84.756"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$540000000.00"}, {"Lowest Capacity Asset", "ES XCZJLDRF238K|ES XCZJLC9NOB29"}, diff --git a/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs b/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs index 907fc6588833..79fcc59031c8 100644 --- a/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/DelistingFutureOptionRegressionAlgorithm.cs @@ -131,7 +131,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "10000000"}, {"End Equity", "9971576.14"}, {"Net Profit", "-0.284%"}, - {"Sharpe Ratio", "-5.763"}, + {"Sharpe Ratio", "-5.765"}, {"Sortino Ratio", "-0.931"}, {"Probabilistic Sharpe Ratio", "0.062%"}, {"Loss Rate", "89%"}, @@ -143,7 +143,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0"}, {"Information Ratio", "1.495"}, {"Tracking Error", "0.429"}, - {"Treynor Ratio", "-15.26"}, + {"Treynor Ratio", "-15.266"}, {"Total Fees", "$11.36"}, {"Estimated Strategy Capacity", "$65000000.00"}, {"Lowest Capacity Asset", "ES XCZJLDQR8R1G|ES XCZJLC9NOB29"}, diff --git a/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs b/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs index 1ff46ba8d8ac..da5b1d807ca9 100644 --- a/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FractionalQuantityRegressionAlgorithm.cs @@ -116,12 +116,12 @@ private void DataConsolidated(object sender, TradeBar e) {"Total Orders", "7"}, {"Average Win", "6.02%"}, {"Average Loss", "-2.40%"}, - {"Compounding Annual Return", "915.597%"}, + {"Compounding Annual Return", "1497.266%"}, {"Drawdown", "5.500%"}, {"Expectancy", "1.339"}, {"Start Equity", "100000.00"}, - {"End Equity", "111400.82"}, - {"Net Profit", "11.401%"}, + {"End Equity", "113775.23"}, + {"Net Profit", "13.775%"}, {"Sharpe Ratio", "4.906"}, {"Sortino Ratio", "11.482"}, {"Probabilistic Sharpe Ratio", "63.428%"}, diff --git a/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs b/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs index 1b9f92409ace..815d488f0518 100644 --- a/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FundamentalCustomSelectionTimeWarmupRegressionAlgorithm.cs @@ -146,7 +146,7 @@ public override void OnEndOfAlgorithm() {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "12.700%"}, + {"Compounding Annual Return", "13.629%"}, {"Drawdown", "3.900%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs index 498ed0c940dd..30f7d51069f1 100644 --- a/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionBuySellCallIntradayRegressionAlgorithm.cs @@ -138,8 +138,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "97715.91"}, {"Net Profit", "-2.284%"}, - {"Sharpe Ratio", "-0.558"}, - {"Sortino Ratio", "-0.07"}, + {"Sharpe Ratio", "-0.555"}, + {"Sortino Ratio", "-0.069"}, {"Probabilistic Sharpe Ratio", "9.827%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, @@ -150,7 +150,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.005"}, {"Information Ratio", "-0.134"}, {"Tracking Error", "0.385"}, - {"Treynor Ratio", "3.803"}, + {"Treynor Ratio", "3.785"}, {"Total Fees", "$2.84"}, {"Estimated Strategy Capacity", "$120000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPBMTJ8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs index 99f2139bab87..862212b74f27 100644 --- a/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMExpiryRegressionAlgorithm.cs @@ -226,7 +226,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "95323.58"}, {"Net Profit", "-4.676%"}, - {"Sharpe Ratio", "-1.166"}, + {"Sharpe Ratio", "-1.163"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.165%"}, {"Loss Rate", "50%"}, @@ -238,7 +238,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.004"}, {"Information Ratio", "-0.226"}, {"Tracking Error", "0.378"}, - {"Treynor Ratio", "-21.899"}, + {"Treynor Ratio", "-21.841"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$120000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPBMTJ8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs index 74b6ae495b07..a9e2754c9623 100644 --- a/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallITMGreeksExpiryRegressionAlgorithm.cs @@ -191,7 +191,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "75242.9"}, {"Net Profit", "-24.757%"}, - {"Sharpe Ratio", "-0.966"}, + {"Sharpe Ratio", "-0.965"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.060%"}, {"Loss Rate", "50%"}, @@ -203,7 +203,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.098"}, {"Information Ratio", "-0.649"}, {"Tracking Error", "0.483"}, - {"Treynor Ratio", "-18.602"}, + {"Treynor Ratio", "-18.59"}, {"Total Fees", "$7.10"}, {"Estimated Strategy Capacity", "$24000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPBMTJ8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs index 7481849e2a0e..a4706b8fb0c2 100644 --- a/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionCallOTMExpiryRegressionAlgorithm.cs @@ -202,19 +202,19 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "96148.58"}, {"Net Profit", "-3.851%"}, - {"Sharpe Ratio", "-1.225"}, + {"Sharpe Ratio", "-1.221"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.131%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-0.064"}, + {"Alpha", "-0.063"}, {"Beta", "0.003"}, {"Annual Standard Deviation", "0.052"}, {"Annual Variance", "0.003"}, {"Information Ratio", "-0.198"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-23.136"}, + {"Treynor Ratio", "-23.065"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPHL5L0|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs index 6e807f9be2fd..f76a2c2b166d 100644 --- a/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionPutITMExpiryRegressionAlgorithm.cs @@ -227,7 +227,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "94811.08"}, {"Net Profit", "-5.189%"}, - {"Sharpe Ratio", "-1.55"}, + {"Sharpe Ratio", "-1.546"}, {"Sortino Ratio", "-0.209"}, {"Probabilistic Sharpe Ratio", "0.000%"}, {"Loss Rate", "50%"}, @@ -239,7 +239,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.003"}, {"Information Ratio", "-0.248"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-36.387"}, + {"Treynor Ratio", "-36.3"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$79000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FAOOUYYS|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs index 38f8476635d3..8abe7d085383 100644 --- a/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionPutOTMExpiryRegressionAlgorithm.cs @@ -200,8 +200,8 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "94748.58"}, {"Net Profit", "-5.251%"}, - {"Sharpe Ratio", "-1.475"}, - {"Sortino Ratio", "-0.182"}, + {"Sharpe Ratio", "-1.472"}, + {"Sortino Ratio", "-0.181"}, {"Probabilistic Sharpe Ratio", "0.001%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, @@ -212,7 +212,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.003"}, {"Information Ratio", "-0.249"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-32.633"}, + {"Treynor Ratio", "-32.556"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$290000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FBZBR7QC|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs index 707a5f947353..8cd5558afec3 100644 --- a/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallITMExpiryRegressionAlgorithm.cs @@ -211,19 +211,19 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "103111.08"}, {"Net Profit", "3.111%"}, - {"Sharpe Ratio", "0.722"}, + {"Sharpe Ratio", "0.726"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "45.614%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, {"Profit-Loss Ratio", "1.58"}, - {"Alpha", "0.035"}, + {"Alpha", "0.036"}, {"Beta", "-0.003"}, {"Annual Standard Deviation", "0.049"}, {"Annual Variance", "0.002"}, {"Information Ratio", "0.064"}, {"Tracking Error", "0.378"}, - {"Treynor Ratio", "-13.056"}, + {"Treynor Ratio", "-13.127"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$13000000.00"}, {"Lowest Capacity Asset", "ES XFH59UP5OHHG|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs index 50b613ada69c..92f5cefb40e7 100644 --- a/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortCallOTMExpiryRegressionAlgorithm.cs @@ -194,7 +194,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "101736.08"}, {"Net Profit", "1.736%"}, - {"Sharpe Ratio", "0.589"}, + {"Sharpe Ratio", "0.596"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "49.736%"}, {"Loss Rate", "0%"}, @@ -206,7 +206,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.001"}, {"Information Ratio", "0.009"}, {"Tracking Error", "0.375"}, - {"Treynor Ratio", "-10.904"}, + {"Treynor Ratio", "-11.048"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$100000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPNJHMS|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs index 71b0d27de1ac..c0ca17862f0c 100644 --- a/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutITMExpiryRegressionAlgorithm.cs @@ -208,7 +208,7 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "103011.08"}, {"Net Profit", "3.011%"}, - {"Sharpe Ratio", "1.247"}, + {"Sharpe Ratio", "1.255"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "85.803%"}, {"Loss Rate", "50%"}, @@ -220,7 +220,7 @@ public override void OnEndOfAlgorithm() {"Annual Variance", "0.001"}, {"Information Ratio", "0.058"}, {"Tracking Error", "0.375"}, - {"Treynor Ratio", "-41.587"}, + {"Treynor Ratio", "-41.831"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$12000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FAOUTB0K|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs index 8097030dd3c7..11f152479779 100644 --- a/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FutureOptionShortPutOTMExpiryRegressionAlgorithm.cs @@ -193,19 +193,19 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "103423.58"}, {"Net Profit", "3.424%"}, - {"Sharpe Ratio", "1.083"}, + {"Sharpe Ratio", "1.088"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "73.287%"}, {"Loss Rate", "0%"}, {"Win Rate", "100%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "0.039"}, + {"Alpha", "0.04"}, {"Beta", "-0.002"}, {"Annual Standard Deviation", "0.036"}, {"Annual Variance", "0.001"}, {"Information Ratio", "0.075"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-23.957"}, + {"Treynor Ratio", "-24.076"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$110000000.00"}, {"Lowest Capacity Asset", "ES 31EL5FAJQB2N8|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs index a76676b2316c..ab85a2583e82 100644 --- a/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs +++ b/Algorithm.CSharp/FuturesAndFuturesOptionsExpiryTimeAndLiquidationRegressionAlgorithm.cs @@ -204,19 +204,19 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "98233.93"}, {"Net Profit", "-1.766%"}, - {"Sharpe Ratio", "-1.296"}, + {"Sharpe Ratio", "-1.141"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.020%"}, {"Loss Rate", "50%"}, {"Win Rate", "50%"}, {"Profit-Loss Ratio", "0.94"}, - {"Alpha", "-0.023"}, + {"Alpha", "-0.02"}, {"Beta", "0.001"}, {"Annual Standard Deviation", "0.017"}, {"Annual Variance", "0"}, {"Information Ratio", "-0.602"}, {"Tracking Error", "0.291"}, - {"Treynor Ratio", "-18.911"}, + {"Treynor Ratio", "-16.65"}, {"Total Fees", "$3.57"}, {"Estimated Strategy Capacity", "$16000000.00"}, {"Lowest Capacity Asset", "ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs index f8ea9f87780e..99db1b020912 100644 --- a/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs +++ b/Algorithm.CSharp/OptionOTMExpiryOrderHasZeroPriceRegressionAlgorithm.cs @@ -186,19 +186,19 @@ public override void OnEndOfAlgorithm() {"Start Equity", "100000"}, {"End Equity", "96148.58"}, {"Net Profit", "-3.851%"}, - {"Sharpe Ratio", "-1.225"}, + {"Sharpe Ratio", "-1.221"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "0.131%"}, {"Loss Rate", "100%"}, {"Win Rate", "0%"}, {"Profit-Loss Ratio", "0"}, - {"Alpha", "-0.064"}, + {"Alpha", "-0.063"}, {"Beta", "0.003"}, {"Annual Standard Deviation", "0.052"}, {"Annual Variance", "0.003"}, {"Information Ratio", "-0.198"}, {"Tracking Error", "0.377"}, - {"Treynor Ratio", "-23.136"}, + {"Treynor Ratio", "-23.065"}, {"Total Fees", "$1.42"}, {"Estimated Strategy Capacity", "$180000000.00"}, {"Lowest Capacity Asset", "ES XFH59UPHL5L0|ES XFH59UK0MYO1"}, diff --git a/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs b/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs index d87e187c69f7..bddb8bfe1e39 100644 --- a/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs +++ b/Algorithm.CSharp/RegressionTests/Collective2IndexOptionAlgorithm.cs @@ -130,7 +130,7 @@ public override void OnData(Slice slice) {"Total Orders", "10"}, {"Average Win", "0%"}, {"Average Loss", "0.00%"}, - {"Compounding Annual Return", "-0.364%"}, + {"Compounding Annual Return", "-0.468%"}, {"Drawdown", "0.000%"}, {"Expectancy", "-1"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs index 6aa71ae373b4..8e1a1fb4dad7 100644 --- a/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledUniverseRegressionAlgorithm.cs @@ -108,7 +108,7 @@ public override void OnEndOfAlgorithm() {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "-88.441%"}, + {"Compounding Annual Return", "-87.920%"}, {"Drawdown", "1.700%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs b/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs index 8e79a35bff89..5c004e021c61 100644 --- a/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs +++ b/Algorithm.CSharp/ScheduledUniverseSelectionModelRegressionAlgorithm.cs @@ -214,25 +214,25 @@ private void ExpectRemovals(SecurityChanges changes, params string[] tickers) {"Total Orders", "59"}, {"Average Win", "0.28%"}, {"Average Loss", "-0.20%"}, - {"Compounding Annual Return", "76.963%"}, + {"Compounding Annual Return", "73.882%"}, {"Drawdown", "1.100%"}, {"Expectancy", "0.749"}, {"Start Equity", "100000"}, {"End Equity", "105049.17"}, {"Net Profit", "5.049%"}, - {"Sharpe Ratio", "6.259"}, - {"Sortino Ratio", "9.282"}, - {"Probabilistic Sharpe Ratio", "94.397%"}, + {"Sharpe Ratio", "7.048"}, + {"Sortino Ratio", "10.495"}, + {"Probabilistic Sharpe Ratio", "96.425%"}, {"Loss Rate", "27%"}, {"Win Rate", "73%"}, {"Profit-Loss Ratio", "1.39"}, - {"Alpha", "0.403"}, - {"Beta", "0.052"}, + {"Alpha", "0.458"}, + {"Beta", "0.044"}, {"Annual Standard Deviation", "0.066"}, {"Annual Variance", "0.004"}, - {"Information Ratio", "3.179"}, + {"Information Ratio", "3.893"}, {"Tracking Error", "0.083"}, - {"Treynor Ratio", "7.857"}, + {"Treynor Ratio", "10.5"}, {"Total Fees", "$35.53"}, {"Estimated Strategy Capacity", "$2600000.00"}, {"Lowest Capacity Asset", "EURUSD 8G"}, diff --git a/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs b/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs index 15cea479eeec..f30383ca7de0 100644 --- a/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs +++ b/Algorithm.CSharp/SetCustomSettlementModelRegressionAlgorithm.cs @@ -94,12 +94,12 @@ public override void OnEndOfAlgorithm() {"Total Orders", "0"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "0%"}, + {"Compounding Annual Return", "119.460%"}, {"Drawdown", "1.000%"}, {"Expectancy", "0"}, {"Start Equity", "10000"}, - {"End Equity", "10000"}, - {"Net Profit", "0%"}, + {"End Equity", "10101"}, + {"Net Profit", "1.010%"}, {"Sharpe Ratio", "-5.989"}, {"Sortino Ratio", "0"}, {"Probabilistic Sharpe Ratio", "1.216%"}, diff --git a/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs b/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs index 2ea91f53ee39..4ce566c5931e 100644 --- a/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs +++ b/Algorithm.CSharp/UniverseOnlyRegressionAlgorithm.cs @@ -104,8 +104,8 @@ private IEnumerable FilterUniverse(IEnumerable c {"Beta", "0"}, {"Annual Standard Deviation", "0"}, {"Annual Variance", "0"}, - {"Information Ratio", "0"}, - {"Tracking Error", "0"}, + {"Information Ratio", "4.947"}, + {"Tracking Error", "0.006"}, {"Treynor Ratio", "0"}, {"Total Fees", "$0.00"}, {"Estimated Strategy Capacity", "$0"}, diff --git a/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs b/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs index e2b44f8c97a9..bdce60740026 100644 --- a/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs +++ b/Algorithm.CSharp/VolumeShareSlippageModelAlgorithm.cs @@ -106,29 +106,29 @@ public override void OnData(Slice slice) {"Total Orders", "4"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "0%"}, + {"Compounding Annual Return", "20.900%"}, {"Drawdown", "0%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, {"End Equity", "100190.84"}, - {"Net Profit", "0%"}, - {"Sharpe Ratio", "0"}, + {"Net Profit", "0.191%"}, + {"Sharpe Ratio", "9.794"}, {"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"}, + {"Alpha", "0.297"}, + {"Beta", "-0.064"}, + {"Annual Standard Deviation", "0.017"}, {"Annual Variance", "0"}, - {"Information Ratio", "0"}, - {"Tracking Error", "0"}, - {"Treynor Ratio", "0"}, + {"Information Ratio", "-18.213"}, + {"Tracking Error", "0.099"}, + {"Treynor Ratio", "-2.695"}, {"Total Fees", "$4.00"}, {"Estimated Strategy Capacity", "$4400000000.00"}, {"Lowest Capacity Asset", "GOOCV VP83T1ZUHROL"}, - {"Portfolio Turnover", "5.63%"}, + {"Portfolio Turnover", "4.22%"}, {"Drawdown Recovery", "0"}, {"OrderListHash", "9d2bd0df7c094c393e77f72b7739bfa0"} }; diff --git a/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs index 93204f2bffe3..db08422c87f9 100644 --- a/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupDataTypesRegressionAlgorithm.cs @@ -119,7 +119,7 @@ public override void OnEndOfAlgorithm() {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "29.238%"}, + {"Compounding Annual Return", "106.090%"}, {"Drawdown", "0.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000.0"}, diff --git a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs index e5a45d36ab1d..24387548f357 100644 --- a/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupFutureRegressionAlgorithm.cs @@ -157,7 +157,7 @@ protected void AssertDataTime(DateTime start, DateTime end, List times {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "71.953%"}, + {"Compounding Annual Return", "112.304%"}, {"Drawdown", "1.500%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs index f3f32e8deb8e..6aef0f39b5b7 100644 --- a/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupIndicatorRegressionAlgorithm.cs @@ -94,7 +94,7 @@ public override void OnData(Slice slice) {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "6.648%"}, + {"Compounding Annual Return", "11.962%"}, {"Drawdown", "1.200%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs index c124c0d3e6cd..9ed54dbd089f 100644 --- a/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupLowerResolutionSelectionRegressionAlgorithm.cs @@ -127,7 +127,7 @@ public override void OnData(Slice slice) {"Total Orders", "1"}, {"Average Win", "0%"}, {"Average Loss", "0%"}, - {"Compounding Annual Return", "-28.495%"}, + {"Compounding Annual Return", "-32.091%"}, {"Drawdown", "2.600%"}, {"Expectancy", "0"}, {"Start Equity", "100000"}, diff --git a/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs b/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs index 683203472101..79a7d3b8ffb9 100644 --- a/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs +++ b/Algorithm.CSharp/WarmupSelectionRegressionAlgorithm.cs @@ -157,7 +157,7 @@ public override void OnOrderEvent(OrderEvent orderEvent) {"Total Orders", "8"}, {"Average Win", "0.64%"}, {"Average Loss", "-0.13%"}, - {"Compounding Annual Return", "9.515%"}, + {"Compounding Annual Return", "11.057%"}, {"Drawdown", "0.900%"}, {"Expectancy", "0.938"}, {"Start Equity", "100000"}, diff --git a/Tests/Python/PythonWrapperTests.cs b/Tests/Python/PythonWrapperTests.cs index be2daf7130f9..dc8cad538022 100644 --- a/Tests/Python/PythonWrapperTests.cs +++ b/Tests/Python/PythonWrapperTests.cs @@ -67,7 +67,7 @@ public void SettlementModelPythonWrapperWorks() {"Average Win", "0%"}, {"Average Loss", "0%"}, {"Compounding Annual Return", "119.460%"}, - {"Drawdown", "0%"}, + {"Drawdown", "1.000%"}, {"Expectancy", "0"}, {"Net Profit", "1.010%"}, {"Sharpe Ratio", "-5.989"},