QuantConnect / lean-cli

CLI for running the LEAN engine locally and in the cloud
https://www.lean.io/cli
Apache License 2.0
194 stars 99 forks source link

lean backtest command failed #8

Closed fishstoryyy closed 3 years ago

fishstoryyy commented 3 years ago

Hi,

First of all, really appreciate the work you guys have been doing out there! Lean CLI is such a great tool.

When trying to run backtest locally though, I am getting the following error:

$ lean backtest "My Python Project" --verbose
Running 'quantconnect/lean:latest' with the following configuration:
{'entrypoint': ['dotnet', 'QuantConnect.Lean.Launcher.dll'],
 'mounts': [{'ReadOnly': True,
             'Source': 
'/var/folders/62/8jhxvq556zz_nj_x_d_8k9tr0000gn/T/tmpea7ns7dl/config.json',
             'Target': '/Lean/Launcher/bin/Debug/config.json',
             'Type': 'bind'}],
 'ports': {},
 'volumes': {'/Users/alex/Documents/lean/My Python Project': {'bind': 
'/LeanCLI',
                                                                      'mode': 
'ro'},
             '/Users/alex/Documents/lean/My Python 
Project/backtests/2021-05-16_01-46-37': {'bind': '/Results',

                    'mode': 'rw'},
             '/Users/alex/Documents/lean/My Python Project/storage': 
{'bind': '/Storage',
                                                                              'm
ode': 'rw'},
             '/Users/alex/Documents/lean/data': {'bind': '/Lean/Data',
                                                         'mode': 'rw'}}}
20210516 05:46:39.325 TRACE:: Config.GetValue(): debug-mode - Using default 
value: False
20210516 05:46:39.334 TRACE:: Config.Get(): Configuration key not found. Key: 
plugin-directory - Using default value:
20210516 05:46:39.553 TRACE:: Python for .NET Assembly: Python.Runtime, 
Version=2.0.1.0, Culture=neutral, PublicKeyToken=5000fea6cba702dd
20210516 05:46:39.578 TRACE:: Python for .NET Assembly: nPython, 
Version=3.0.0.0, Culture=neutral, PublicKeyToken=null
20210516 05:46:39.810 TRACE:: Config.Get(): Configuration key not found. Key: 
data-directory - Using default value: ../../../Data/
20210516 05:46:39.822 TRACE:: Config.Get(): Configuration key not found. Key: 
version-id - Using default value:
20210516 05:46:39.830 TRACE:: Config.Get(): Configuration key not found. Key: 
cache-location - Using default value: /Lean/Data
20210516 05:46:39.834 TRACE:: Engine.Main(): LEAN ALGORITHMIC TRADING ENGINE 
v2.5.0.0 Mode: DEBUG (64bit)
20210516 05:46:39.851 TRACE:: Engine.Main(): Started 5:46 AM
20210516 05:46:39.864 TRACE:: Config.Get(): Configuration key not found. Key: 
lean-manager-type - Using default value: LocalLeanManager
20210516 05:46:40.000 TRACE:: JobQueue.NextJob(): Selected /LeanCLI/main.py
20210516 05:46:40.401 TRACE:: Config.GetValue(): 
scheduled-event-leaky-bucket-capacity - Using default value: 120
20210516 05:46:40.413 TRACE:: Config.GetValue(): 
scheduled-event-leaky-bucket-time-interval-minutes - Using default value: 1440
20210516 05:46:40.419 TRACE:: Config.GetValue(): 
scheduled-event-leaky-bucket-refill-amount - Using default value: 18
20210516 05:46:40.431 TRACE:: Config.Get(): Configuration key not found. Key: 
algorithm-id - Using default value: main
20210516 05:46:40.447 TRACE:: Config.GetValue(): job-project-id - Using default 
value: 0
20210516 05:46:40.455 TRACE:: Config.Get(): Configuration key not found. Key: 
data-permission-manager - Using default value: DataPermissionManager
20210516 05:46:40.517 TRACE:: AlgorithmManager.CreateTokenBucket(): Initializing
LeakyBucket: Capacity: 120 RefillAmount: 18 TimeInterval: 1440
20210516 05:46:40.540 TRACE:: Config.GetValue(): 
algorithm-manager-time-loop-maximum - Using default value: 20
20210516 05:46:40.601 TRACE:: TextSubscriptionDataSourceReader.SetCacheSize(): 
Setting cache size to 71582788 items
20210516 05:46:41.617 TRACE:: Config.GetValue(): algorithm-creation-timeout - 
Using default value: 90
20210516 05:46:41.629 TRACE:: PythonInitializer.Initialize(): start...
PythonEngine.Initialize(): Runtime.Initialize()...
Runtime.Initialize(): Py_Initialize...
Runtime.Initialize(): PyEval_InitThreads...
Runtime.Initialize(): Initialize types...
Runtime.Initialize(): Initialize types end.
Runtime.Initialize(): AssemblyManager.Initialize()...
Runtime.Initialize(): AssemblyManager.UpdatePath()...
PythonEngine.Initialize(): GetCLRModule()...
PythonEngine.Initialize(): clr GetManifestResourceStream...
20210516 05:46:46.004 TRACE:: PythonInitializer.Initialize(): ended
20210516 05:46:46.016 TRACE:: AlgorithmPythonWrapper(): Python version 3.6.8 
|Anaconda, Inc.| (default, Dec 30 2018, 01:25:33)
[GCC 7.3.0]: Importing python module main
20210516 05:46:46.420 ERROR:: Loader.TryCreatePythonAlgorithm():  
System.Exception: AlgorithmPythonWrapper(): SyntaxError : invalid syntax 
(main.py, line 4) SyntaxError : invalid syntax (main.py, line 4)
at QuantConnect.AlgorithmFactory.Python.Wrappers.AlgorithmPythonWrapper..ctor(St
ring moduleName) in /LeanCloud/CI.Builder/bin/Debug/src/QuantConnect/Lean/Algori
thmFactory/Python/Wrappers/AlgorithmPythonWrapper.cs:line 146
at QuantConnect.AlgorithmFactory.Loader.TryCreatePythonAlgorithm(String 
assemblyPath, IAlgorithm& algorithmInstance, String& errorMessage) in /LeanCloud
/CI.Builder/bin/Debug/src/QuantConnect/Lean/AlgorithmFactory/Loader.cs:line 173
20210516 05:46:46.428 ERROR:: Engine.Run():  
QuantConnect.Lean.Engine.Setup.AlgorithmSetupException: During the algorithm 
initialization, the following exception has occurred: 
Loader.TryCreatePythonAlgorithm(): Unable to import python module 
/LeanCLI/main.py. AlgorithmPythonWrapper(): SyntaxError : invalid syntax 
(main.py, line 4) SyntaxError : invalid syntax (main.py, line 4)
at QuantConnect.Lean.Engine.Setup.BacktestingSetupHandler.CreateAlgorithmInstanc
e(AlgorithmNodePacket algorithmNodePacket, String assemblyPath) in /LeanCloud/CI
.Builder/bin/Debug/src/QuantConnect/Lean/Engine/Setup/BacktestingSetupHandler.cs
:line 104
at QuantConnect.Lean.Engine.Engine.Run(AlgorithmNodePacket job, AlgorithmManager
manager, String assemblyPath, WorkerThread workerThread) in 
/LeanCloud/CI.Builder/bin/Debug/src/QuantConnect/Lean/Engine/Engine.cs:line 119
20210516 05:46:46.432 TRACE:: JOB HANDLERS:
20210516 05:46:46.437 TRACE::          DataFeed:     
QuantConnect.Lean.Engine.DataFeeds.FileSystemDataFeed
20210516 05:46:46.440 TRACE::          Setup:        
QuantConnect.Lean.Engine.Setup.ConsoleSetupHandler
20210516 05:46:46.442 TRACE::          RealTime:     
QuantConnect.Lean.Engine.RealTime.BacktestingRealTimeHandler
20210516 05:46:46.444 TRACE::          Results:      
QuantConnect.Lean.Engine.Results.BacktestingResultHandler
20210516 05:46:46.446 TRACE::          Transactions: 
QuantConnect.Lean.Engine.TransactionHandlers.BacktestingTransactionHandler
20210516 05:46:46.457 ERROR:: Algorithm.Initialize() Error: During the algorithm
initialization, the following exception has occurred: 
Loader.TryCreatePythonAlgorithm(): Unable to import python module 
/LeanCLI/main.py. AlgorithmPythonWrapper(): SyntaxError : invalid syntax 
(main.py, line 4) SyntaxError : invalid syntax (main.py, line 4) Stack Trace: 
During the algorithm initialization, the following exception has occurred: 
Loader.TryCreatePythonAlgorithm(): Unable to import python module 
/LeanCLI/main.py. AlgorithmPythonWrapper(): SyntaxError : invalid syntax 
(main.py, line 4) SyntaxError : invalid syntax (main.py, line 4)
During the algorithm initialization, the following exception has occurred: 
Loader.TryCreatePythonAlgorithm(): Unable to import python module 
/LeanCLI/main.py. AlgorithmPythonWrapper(): SyntaxError : invalid syntax 
(main.py, line 4) SyntaxError : invalid syntax (main.py, line 4)
20210516 05:46:46.462 TRACE::          Alpha:        
QuantConnect.Lean.Engine.Alphas.DefaultAlphaHandler
20210516 05:46:46.466 TRACE::          ObjectStore:  
QuantConnect.Lean.Engine.Storage.LocalObjectStore
20210516 05:46:46.473 TRACE:: DefaultAlphaHandler.Exit(): Exiting...
20210516 05:46:46.480 TRACE:: DefaultAlphaHandler.Exit(): Ended
20210516 05:46:46.482 TRACE:: BacktestingResultHandler.Exit(): starting...
20210516 05:46:46.486 TRACE:: BacktestingResultHandler.Exit(): Saving logs...
20210516 05:46:46.510 TRACE:: Debug: Your log was successfully created and can 
be retrieved from: /Results/main-log.txt
20210516 05:46:46.512 TRACE:: BacktestingResultHandler.Run(): Ending Thread...
20210516 05:46:46.512 TRACE:: StopSafely(): waiting for 'Result Thread' thread 
to stop...
20210516 05:46:46.683 TRACE:: Config.GetValue(): regression-update-statistics - 
Using default value: False
20210516 05:46:46.688 TRACE::
STATISTICS:: Fitness Score 0
STATISTICS:: Kelly Criterion Estimate 0
STATISTICS:: Kelly Criterion Probability Value 0
STATISTICS:: Sortino Ratio 0
STATISTICS:: Return Over Maximum Drawdown 0
STATISTICS:: Portfolio Turnover 0
STATISTICS:: Total Insights Generated 0
STATISTICS:: Total Insights Closed 0
STATISTICS:: Total Insights Analysis Completed 0
STATISTICS:: Long Insight Count 0
STATISTICS:: Short Insight Count 0
STATISTICS:: Long/Short Ratio 100%
STATISTICS:: Estimated Monthly Alpha Value $0
STATISTICS:: Total Accumulated Estimated Alpha Value $0
STATISTICS:: Mean Population Estimated Insight Value $0
STATISTICS:: Mean Population Direction 0%
STATISTICS:: Mean Population Magnitude 0%
STATISTICS:: Rolling Averaged Population Direction 0%
STATISTICS:: Rolling Averaged Population Magnitude 0%
STATISTICS:: OrderListHash d41d8cd98f00b204e9800998ecf8427e
20210516 05:46:46.692 TRACE:: BacktestingResultHandler.SendAnalysisResult(): 
Processed final packet
20210516 05:46:46.699 TRACE:: Engine.Run(): Disposing of setup handler...
20210516 05:46:46.710 TRACE:: Engine.Main(): Analysis Completed and Results 
Posted.
Engine.Main(): Analysis Complete.
20210516 05:46:46.715 TRACE:: Engine.Main(): Packet removed from queue: main
20210516 05:46:46.717 TRACE:: LeanEngineSystemHandlers.Dispose(): start...
20210516 05:46:46.719 TRACE:: LeanEngineSystemHandlers.Dispose(): Disposed of 
system handlers.
20210516 05:46:46.721 TRACE:: LeanEngineAlgorithmHandlers.Dispose(): start...
20210516 05:46:46.724 TRACE:: LeanEngineAlgorithmHandlers.Dispose(): Disposed of
algorithm handlers.
20210516 05:46:46.729 TRACE:: Program.Main(): Exiting Lean...
Traceback (most recent call last):
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
lean/main.py", line 30, in main
    lean.main(standalone_mode=False)
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
lean/click.py", line 80, in invoke
    result = super().invoke(ctx)
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
lean/commands/backtest.py", line 201, in backtest
    lean_runner.run_lean("backtesting", algorithm_file, output, engine_image, 
debugging_method)
  File "/Users/alex/opt/anaconda3/envs/lean/lib/python3.6/site-packages/
lean/components/docker/lean_runner.py", line 110, in run_lean
    f"Something went wrong while running '{relative_project_dir}' in the 
'{environment}' environment, the output is stored in '{relative_output_dir}'")
RuntimeError: Something went wrong while running 'My Python Project' in the 
'backtesting' environment, the output is stored in 'My Python 
Project/backtests/2021-05-16_01-46-37'
Error: Something went wrong while running 'My Python Project' in the 
'backtesting' environment, the output is stored in 'My Python 
Project/backtests/2021-05-16_01-46-37'

Can someone please help?

fishstoryyy commented 3 years ago

It looks like the error is due to the import lines that are needed for autocompletion. Removing those import lines solved the issue.