Overall Statistics |
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 100000 End Equity 100000 Net Profit 0% Sharpe Ratio 0 Sortino Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -0.446 Tracking Error 0.16 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
#region imports from AlgorithmImports import * #endregion SUFFIXES = ["*.html", "*.php"] # enums or static class, only CAPITALIZE if in form of <enum>.<member>{space or comma character} ENUMS = [ 'AlphaModelExtensions', 'PortfolioBias', 'with', 'StressSymbols', 'Symbols', 'Equity', 'NotifiedSecurityChanges', 'State', 'State', 'ReturnsSymbolDataExtensions', 'DebuggingMethod', 'DebuggerHelper', 'SeriesType', 'BinaryComparisonExtensions', 'ChartType', 'Currencies', 'Expiry', 'value', 'Extensions', 'BrokerageEnvironment', 'Language', 'ServerType', 'SecurityType', 'AccountType', 'MarketDataType', 'DataFeedEndpoint', 'StoragePermissions', 'TickType', 'DelistingType', 'SplitType', 'Resolution', 'PositionSide', 'OptionRight', 'OptionStyle', 'SettlementType', 'AlgorithmStatus', 'SubscriptionTransportMedium', 'WritePolicy', 'Period', 'DataNormalizationMode', 'DataMappingMode', 'CashBookUpdateType', 'DeploymentTarget', 'AlgorithmMode', 'DateFormat', 'Exchanges', 'ChannelStatus', 'Globals', 'IsolatorLimitResultProvider', 'Market', 'OS', 'Parse', 'ScatterMarkerSymbol', 'StringExtensions', 'SymbolCache', 'SymbolRepresentation', 'Time', 'TimeZones', 'TradingDayType', 'InsightDirection', 'InsightScoreType', 'InsightType', 'CompileState', 'NodeType', 'OptimizationNodes', 'ProductType', 'BrokerageMessageType', 'BrokerageName', 'BrokerageModel', 'FileFormat', 'HistoryExtensions', 'RiskFreeInterestRateModelExtensions', 'SliceExtensions', 'SubscriptionDataConfigExtensions', 'FactorFileZipHelper', 'MapFileZipHelper', 'MappingExtensions', 'PriceScalingExtensions', 'Calendar', 'CalendarType', 'FilteredIdentityDataConsolidator', 'FxcmSymbolId', 'PlaceHolder', 'IntrinioEconomicDataSources', 'BofAMerrillLynch', 'CBOE', 'Commodities', 'ExchangeRates', 'Moodys', 'TradeWeightedUsDollarIndex', 'IntrinioConfig', 'IntrinioDataTransformation', 'Tiingo', 'TiingoSymbolMapper', 'StockType', 'StyleBox', 'MorningstarEconomySphereCode', 'MorningstarSectorCode', 'MorningstarIndustryGroupCode', 'MorningstarIndustryCode', 'FundamentalProperty', 'Period', 'PeriodAsByte', 'BarDirection', 'DataDictionaryExtensions', 'RenkoType', 'FundamentalService', 'UniverseExtensions', 'InsightManager', 'ReadOnlySecurityValuesCollection', 'Insight', 'InsightScore', 'PortfolioTarget', 'FuncBenchmark', 'DefaultBrokerageModel', 'AlphaStreamsBrokerageModel', 'AxosBrokerageModel', 'BinanceBrokerageModel', 'BinanceUSBrokerageModel', 'BrokerageMessageEvent', 'DefaultBrokerageMessageHandler', 'ExanteBrokerageModel', 'FTXBrokerageModel', 'FxcmBrokerageModel', 'CoinbaseBrokerageModel', 'InteractiveBrokersBrokerageModel', 'TradierBrokerageModel', 'TradingTechnologiesBrokerageModel', 'WolverineBrokerageModel', 'RBIBrokerageModel', 'BaseCommand', 'BaseCommandHandler', 'FileCommandHandler', 'OrderCommand', 'DllNotFoundPythonExceptionInterpreter', 'InvalidTokenPythonExceptionInterpreter', 'KeyErrorPythonExceptionInterpreter', 'NoMethodMatchPythonExceptionInterpreter', 'ScheduledEventExceptionInterpreter', 'StackExceptionInterpreter', 'UnsupportedOperandPythonExceptionInterpreter', 'IndicatorDataPoint', 'RollingWindow', 'NotificationEmail', 'NotificationJsonConverter', 'OptimizerObjectivesCommon', 'Constraint', 'ExtremumJsonConverter', 'Objective', 'Target', 'OptimizationParameterJsonConverter', 'OptimizationStepParameter', 'CancelOrderRequest', 'GroupOrderExtensions', 'LimitIfTouchedOrder', 'LimitOrder', 'Order', 'OrderEvent', 'OrderRequest', 'OrderResponse', 'OrderTicket', 'StopLimitOrder', 'StopMarketOrder', 'TrailingStopOrder', 'SubmitOrderRequest', 'UpdateOrderRequest', 'FeeModel', 'AlphaStreamsFeeModel', 'ExanteFeeModel', 'InteractiveBrokersFeeModel', 'TDAmeritradeFeeModel', 'FillModel', 'EquityFillModel', 'DefaultExerciseModel', 'VolumeShareSlippageModel', 'PythonCommon', 'MarginCallModelPythonWrapper', 'PandasConverter', 'PandasData', 'PythonInitializer', 'PythonWrapper', 'AlphaRuntimeStatistics', 'Chart', 'ChartPoint', 'Candlestick', 'Currencies', 'ExtendedDictionary', 'Extensions', 'Holding', 'AlgorithmControl', 'Isolator', 'Market', 'OS', 'Parse', 'SecurityIdentifier', 'StringExtensions', 'Symbol', 'SymbolCache', 'SymbolRepresentation', 'SymbolValueJsonConverter', 'Time', 'TradingCalendar', 'AccountEvent', 'BuyingPowerModel', 'PositionGroupBuyingPowerModel', 'Cash', 'CashBook', 'CashBuyingPowerModel', 'DefaultMarginCallModel', 'DynamicSecurityData', 'EquityPriceVariationModel', 'ErrorCurrencyConverter', 'FuncSecuritySeeder', 'IdentityCurrencyConverter', 'InitialMarginParameters', 'LocalMarketHours', 'MaintenanceMarginParameters', 'MarketHoursDatabase', 'MarketHoursSegment', 'RegisteredSecurityDataTypesProvider', 'Security', 'SecurityDatabaseKey', 'SecurityDefinitionSymbolResolver', 'SecurityExchangeHours', 'SecurityHolding', 'SecurityManager', 'SecurityPortfolioManager', 'SecurityService', 'SecurityTransactionManager', 'SymbolProperties', 'SymbolPropertiesDatabase', 'PositionGroup', 'OptimizationStatus', 'GroupOrderExtensions', 'IndiaProductType', 'OrderError', 'OrderExtensions', 'OrderField', 'OrderRequestStatus', 'OrderRequestType', 'OrderResponseErrorCode', 'OrderSizing', 'OrderType', 'OrderDirection', 'OrderPosition', 'OrderStatus', 'FeeModelExtensions', 'HistoryResultType', 'PacketType', 'PythonInitializer', 'PythonWrapper', 'BuyingPowerModelExtensions', 'MarginCallModel', 'MarginInterestRateModel', 'OrderProviderExtensions', 'SecurityInitializer', 'SecurityProviderExtensions', 'SecuritySeeder', 'MarketHoursState', 'FutureExpirationCycles', 'FutureFilterUniverseEx', 'Futures', 'Grains', 'Currencies', 'Energies', 'Financials', 'Indices', 'Forestry', 'Meats', 'Metals', 'Softs', 'Dairy', 'FuturesExpiryUtilityFunctions', 'FuturesListings', 'FutureSymbol', 'FutureOptionSymbol', 'FuturesOptionsExpiryFunctions', 'FuturesOptionsSymbolMappings', 'FuturesOptionsUnderlyingMapper', 'IndexSymbol', 'IndexOptionSymbol', 'AdjustmentType', 'OptionFilterUniverseEx', 'OptionPriceModels', 'OptionStrategies', 'OptionSymbol', 'ConstantOptionStrategyLegReferenceValue', 'OptionStrategyDefinitions', 'PredicateTargetValue', 'PortfolioMarginChart', 'PositionExtensions', 'PositionGroupBuyingPowerModelExtensions', 'PositionGroupExtensions', 'VolatilityModel', 'VolatilityModelExtensions', 'PerformanceMetrics', 'StatisticsBuilder', 'TradeDirection', 'FillGroupingMethod', 'FillMatchingMethod', 'ComparisonOperator', 'ComparisonOperatorTypes', 'Match', 'CurrencyPairUtil', 'DisposableExtensions', 'EnumeratorExtensions', 'ExpressionBuilder', 'LeanData', 'LinqExtensions', 'ObjectActivator', 'OptionPayoff', 'ReaderWriterLockSlimExtensions', 'Ref', 'SecurityExtensions', 'StreamReaderExtensions', 'Validate', 'RegularExpression', 'XElementExtensions', 'TokenBucket', 'Compression', 'ApplicationParser', 'Config', 'LeanArgumentParser', 'OptimizerArgumentParser', 'ReportArgumentParser', 'ToolboxArgumentParser', 'Initializer', 'FillForwardResolutionOperation', 'SubscriptionDataSourceReader', 'SubscriptionUtils', 'CorporateEventEnumeratorFactory', 'ScheduledEventFactory', 'BaseSetupHandler', 'CorrelationType', 'IndicatorExtensions', 'IndicatorStatus', 'MovingAverageType', 'MovingAverageTypeExtensions', 'OptionPricingModelType', 'PivotPointType', 'SwissArmyKnifeTool', 'CandleSettingType', 'CandleRangeType', 'CandleColor', 'CandleSettings', 'LogHandlerExtensions', 'Log', 'LogType', 'WhoCalledMe', 'CrisisEvent', 'DeedleUtil', 'Metrics', 'ReportKey', 'ResultsUtil', 'Rolling', 'AlgorithmRunner', 'SymbolsKey', 'Symbols', 'TestExtensions', 'TestGlobals', 'TestProcess', 'SecuritySeedData', 'Option', 'PerformanceBenchmarkAlgorithms', 'TestHelper', 'PythonTestingUtils', 'PythonWrapperTests', 'DataProcessor', 'StreamProvider', 'TemporaryPathProvider', 'AlgoSeekFuturesProgram', 'CryptoiqDownloaderProgram', 'DukascopyDownloaderProgram', 'IVolatilityEquityConverterProgram', 'KaikoDataConverterProgram', 'KrakenDownloaderProgram', 'NseMarketDataConverterProgram', 'DataDensity', 'RandomDataGeneratorProgram', 'YahooDownloaderProgram','TimeInForce','Universe','CryptoUniverse' ] SWAPS = { "ETF": "Etf", "FIGI": "Figi", "ID": "Id", "BinanceUS": "BinanceUs", "PERatio": "PeRatio", "CrankNicolsonFD": "CrankNicolsonFd", "OECDRecessionIndicators": "OecdRecessionIndicators", "QuantConnectBrokerage": "QuantconnectBrokerage", "TDAmeritrade": "TdAmeritrade", "VWAP": "Vwap", "OneWeekBasedOnUSD": "OneWeekBasedOnUsd", "SP500EMini": "SP500E_MINI", "CrudeOilWTI": "CRUDE_OIL_WTI", "Gold": "GOLD", } EXCEPTIONS = [ "ElementTree", "SMA", "EMA", "QuantConnect.Data", "QuantConnect.Data.UniverseSelection", "QuantConnect.DataSource", "QuantConnect.Python", "QuantConnect.symbol", "GaussianHMM", "ht_auth.SetToken", "nn.Module", "nn.Sequential", "nn.Linear", "nn.Flatten", "nn.ReLU", "nn.MSELoss", "gym.Env", "gym.spaces.Discrete", "gym.spaces.Box", "tf.Session", "tf.Variable", "tf.train.AdamOptimizer", "json_format.MessageToJson", "json_format.Parse", "tf.MetaGraphDef", "xgb.DMatrix", "Selection.OptionUniverseSelectionModel", "Selection.FutureUniverseSelectionModel", "pd.DataFrame", "pd.Series", "pd.MultiIndex", "opt.TargetWeights", "opt.MaxGrossExposure", "opt.DollarNeutral", "go.Candlestick", "go.Layout", "go.layout.Title", "go.Figure", "go.Scatter", "go.scatter.Marker", "Newtonsoft.Json", "System.Collections.Generic", "JsonConvert.SerializeObject", "Calculators.TaxesCalculator" ]
# region imports from AlgorithmImports import * # endregion class CalculatingTanRat(QCAlgorithm): def Initialize(self): pass import re from exceptions import ENUMS, SWAPS, EXCEPTIONS def get_code_snippet(pre_content): content = str(pre_content).split('>', maxsplit=1)[1].rsplit("</pre>", 1)[0] return content def conversion(content): # do not check for the string in EXCEPTIONS list content_to_check = content for e in EXCEPTIONS: content_to_check = content_to_check.replace(e, "") methods = re.findall(r"def\s+(\w+)\s*\(", content_to_check) for method in sorted(set(methods), key=len, reverse=True): snake_case_method = _title_to_snake_case(method) content = content.replace(f"def {method}(", f"def {snake_case_method}(") methods = re.findall(r"\.(\w+)", content_to_check) for method in sorted(set(methods), key=len, reverse=True): snake_case_method = _title_to_snake_case(method) content = content.replace(f".{method}", f".{snake_case_method}") # Named arguments. E.g.: mappingResolveDate=datetime(2021, 12, 1) methods = [x for x in re.findall(r"\(([^)]+)\)", content_to_check) if '=' in x] for method in sorted(set(methods), key=len, reverse=True): for arg in re.findall(r"(\w+)=", method.replace(' ','')): snake_case_args = _title_to_snake_case(arg) content = content.replace(arg, snake_case_args) # Local variables: E.g.: sortedByDollarVolume methods = re.findall(r"\ (\w+) =", content_to_check) for method in sorted(set(methods), key=len, reverse=True): snake_case_method = _title_to_snake_case(method) content = content.replace(method, snake_case_method) methods = re.findall(r"<\?=\$research \? \"qb\.\" : \"self\.\"\?>(\w+)", content_to_check) for method in sorted(set(methods), key=len, reverse=True): snake_case_method = _title_to_snake_case(method) content = content.replace(f"<?=$research ? \"qb.\" : \"self.\"?>{method}", f"<?=$research ? \"qb.\" : \"self.\"?>{snake_case_method}") methods = re.findall(r"<\?=\$pythonPrefix\?>(\w+)", content_to_check) for method in sorted(set(methods), key=len, reverse=True): snake_case_method = _title_to_snake_case(method) content = content.replace(f"<?=$pythonPrefix?>{method}", f"<?=$pythonPrefix?>{snake_case_method}") for enum in sorted(ENUMS, key=len, reverse=True): wanted_pattern = fr"(?![\.]){enum}\.(\w+)(?!\(|\.)" unwanted_pattern = fr"(?![\.]){enum}\.(\w+)[\(\.]" wanted_methods = re.findall(wanted_pattern, f"{content}<") unwanted_methods = [x[:-1] for x in re.findall(unwanted_pattern, f"{content}<")] for method in sorted(set(wanted_methods).difference(set(unwanted_methods)), key=len, reverse=True): content = content.replace(f"{enum}.{method}", f"{enum}.{method.upper()}") return content def _title_to_snake_case(title): for original, new in SWAPS.items(): if original in title: title = title.replace(original, new) # for whole method is upper case: indicators, ID, ... if title.isupper(): return title snake_case = re.sub(r'(?<!^)(?=[A-Z])', '_', title).lower() return snake_case