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/Common/Statistics/AlgorithmPerformance.cs b/Common/Statistics/AlgorithmPerformance.cs index 5b94c81b710d..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,10 +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 equity curve series points public AlgorithmPerformance( List trades, SortedDictionary profitLoss, - SortedDictionary equity, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -64,11 +63,11 @@ 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, + 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 5f8ab2a807dd..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 @@ -210,7 +210,7 @@ public class PortfolioStatistics /// The number of losses public PortfolioStatistics( SortedDictionary profitLoss, - SortedDictionary equity, + List equityPoints, SortedDictionary portfolioTurnover, List listPerformance, List listBenchmark, @@ -221,7 +221,7 @@ public PortfolioStatistics( int? lossCount = null) { StartEquity = startingCapital; - EndEquity = equity.LastOrDefault().Value; + EndEquity = Statistics.GetClose(equityPoints.LastOrDefault()); if (portfolioTurnover.Count > 0) { @@ -276,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); @@ -290,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(); @@ -314,7 +317,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(equityPoints, 3); Drawdown = drawdownMetrics.Drawdown; DrawdownRecovery = drawdownMetrics.DrawdownRecovery; } diff --git a/Common/Statistics/Statistics.cs b/Common/Statistics/Statistics.cs index da5813eb04f4..80fd6f56f24b 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; @@ -252,45 +253,47 @@ public static decimal DrawdownPercent(decimal current, decimal high, int roundin } /// - /// Calculates the maximum drawdown percentage and the maximum recovery time (in days) - /// from a historical equity time series. + /// 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 values indexed by date + /// 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(SortedDictionary equityOverTime, int rounding = 2) + public static DrawdownMetrics CalculateDrawdownMetrics(IEnumerable equityPoints, int rounding = 2) { decimal maxDrawdown = 0m; decimal maxRecoveryTime = 0m; try { - if (equityOverTime.Count < 2) return new DrawdownMetrics(0m, 0); + var pointsList = equityPoints as IList ?? equityPoints?.ToList(); + if (pointsList == null || pointsList.Count < 2) return new DrawdownMetrics(0m, 0); - var equityList = equityOverTime.ToList(); - - var peakEquity = equityList[0].Value; - var peakDate = equityList[0].Key; + GetHighLow(pointsList[0], out var peakEquity, out _); + var peakDate = pointsList[0].Time; DateTime? drawdownStartDate = null; - foreach (var point in equityList) + for (var i = 0; i < pointsList.Count; i++) { - // Update peak equity if a new high is reached (or matched) - if (point.Value >= peakEquity) + var point = pointsList[i]; + GetHighLow(point, out var high, out var low); + + // 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.Key - drawdownStartDate.Value).TotalDays; + var recoveryDays = (decimal)(point.Time - drawdownStartDate.Value).TotalDays; maxRecoveryTime = Math.Max(maxRecoveryTime, recoveryDays); drawdownStartDate = null; } - peakEquity = point.Value; - peakDate = point.Key; + peakEquity = high; + peakDate = point.Time; } - // Calculate current drawdown from peak - var currentDrawdown = (point.Value / peakEquity) - 1; + // Calculate current drawdown from peak using the low price + var currentDrawdown = (low / peakEquity) - 1; if (currentDrawdown < 0) { maxDrawdown = Math.Min(maxDrawdown, currentDrawdown); @@ -312,6 +315,42 @@ public static DrawdownMetrics CalculateDrawdownMetrics(SortedDictionaryThe final date of the range /// 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 @@ -101,7 +99,7 @@ private static AlgorithmPerformance GetAlgorithmPerformance( DateTime toDate, List trades, SortedDictionary profitLoss, - SortedDictionary equity, + List pointsEquity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -110,14 +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 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)); @@ -142,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 = 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, - runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear); + return new AlgorithmPerformance(periodTrades, periodProfitLoss, portfolioTurnover, listPerformance, listBenchmark, + runningCapital, periodWinCount, periodLossCount, riskFreeInterestRateModel, tradingDaysPerYear, periodEquityPoints); } /// @@ -155,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 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 @@ -171,7 +168,7 @@ private static Dictionary GetRollingPerformances( DateTime lastDate, List trades, SortedDictionary profitLoss, - SortedDictionary equity, + List pointsEquity, List pointsPerformance, List pointsBenchmark, List pointsPortfolioTurnover, @@ -190,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, pointsPerformance, + var periodPerformance = GetAlgorithmPerformance(period.StartDate, period.EndDate, trades, profitLoss, pointsEquity, pointsPerformance, pointsBenchmark, pointsPortfolioTurnover, startingCapital, transactions, riskFreeInterestRateModel, tradingDaysPerYear); rollingPerformances[key] = periodPerformance; } 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/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/ExtendedDictionaryTests.cs b/Tests/Common/ExtendedDictionaryTests.cs index cf9caf1afa5a..583b0c3eb4eb 100644 --- a/Tests/Common/ExtendedDictionaryTests.cs +++ b/Tests/Common/ExtendedDictionaryTests.cs @@ -33,7 +33,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/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"); 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); } 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"},