Skip to content

Today, an error occurred during the Lean live trading session when the Charles Schwab API refreshed the token, causing the live trading session to be terminated. Please investigate the cause. #635

@dujinxin001

Description

@dujinxin001

20260305 17:38:13.397 ERROR:: OAuthTokenHandler.GetAccessToken: Failed to retrieve access token. Response: 
{"AccessToken":null,"TokenType":"Bearer","Expiration":"2026-03-05T18:07:13.388286Z","Success":false,"Errors":["Error refreshing access token."]}. Last known 
expiration: Not requested yet.
20260305 17:38:18.441 ERROR:: OAuthTokenHandler.GetAccessToken: Failed to retrieve access token. Response: 
{"AccessToken":null,"TokenType":"Bearer","Expiration":"2026-03-05T18:07:18.4414824Z","Success":false,"Errors":["Error refreshing access token."]}. Last known
expiration: Not requested yet

2026-03-05T18:03:37.6432557Z TRACE:: Engine.Main(): LEAN ALGORITHMIC TRADING ENGINE v2.5.0.0 Mode: DEBUG (64bit) Host: VM-16-3-ubuntu
2026-03-05T18:03:37.6501993Z TRACE:: Engine.Main(): Started 6:03 PM
2026-03-05T18:03:37.6799564Z TRACE:: JobQueue.NextJob(): Selected /LeanCLI/main.py
2026-03-05T18:03:38.6064590Z TRACE:: AlgorithmManager.CreateTokenBucket(): Initializing LeakyBucket: Capacity: 120 RefillAmount: 18 TimeInterval: 1440
2026-03-05T18:03:38.6249690Z TRACE:: Engine.Run(): Resource limits '0' CPUs. 2147483647 MB RAM.
2026-03-05T18:03:38.6262244Z TRACE:: TextSubscriptionDataSourceReader.SetCacheSize(): Setting cache size to 71582788 items
2026-03-05T18:03:38.6379757Z TRACE:: PythonInitializer.Initialize(): start...
2026-03-05T18:03:38.9706013Z TRACE:: PythonInitializer.Initialize(): ended
2026-03-05T18:03:38.9728441Z TRACE:: AlgorithmPythonWrapper(): Python version 3.11.14 (main, Oct 21 2025, 18:40:40) [GCC 11.2.0]: Importing python module main
2026-03-05T18:03:43.0462967Z TRACE:: AlgorithmPythonWrapper(): main successfully imported.
2026-03-05T18:03:43.0586573Z TRACE:: AlgorithmPythonWrapper(): Creating IAlgorithm instance.
2026-03-05T18:03:43.3245773Z TRACE:: LocalObjectStore.Initialize(): Storage Root: /Storage. StorageFileCount 9999999. StorageLimit 10240MB. StoragePermissions Read=True Write=True Delete=True
2026-03-05T18:03:43.3252605Z TRACE:: LiveTradingDataFeed.GetDataChannelProvider(): will use DataChannelProvider
2026-03-05T18:03:43.3285357Z TRACE:: BrokerageSetupHandler.CreateBrokerage(): creating brokerage 'CharlesSchwabBrokerage'
2026-03-05T18:03:43.3368531Z TRACE:: CharlesSchwabBrokerage.Initialize: found no data aggregator instance, creating QuantConnect.Lean.Engine.DataFeeds.AggregationManager
2026-03-05T18:03:49.7249090Z ERROR:: OAuthTokenHandler.GetAccessToken: Failed to retrieve access token. Response: {"AccessToken":null,"TokenType":"Bearer","Expiration":"2026-03-05T18:32:49.7149281Z","Success":false,"Errors":["Error refreshing access token."]}. Last known expiration: Not requested yet.
2026-03-05T18:03:54.8172245Z ERROR:: OAuthTokenHandler.GetAccessToken: Failed to retrieve access token. Response: {"AccessToken":null,"TokenType":"Bearer","Expiration":"2026-03-05T18:32:54.8133875Z","Success":false,"Errors":["Error refreshing access token."]}. Last known expiration: Not requested yet.
2026-03-05T18:03:59.8644419Z ERROR:: OAuthTokenHandler.GetAccessToken: Failed to retrieve access token. Response: {"AccessToken":null,"TokenType":"Bearer","Expiration":"2026-03-05T18:32:59.8641477Z","Success":false,"Errors":["Error refreshing access token."]}. Last known expiration: Not requested yet.
2026-03-05T18:04:04.9653460Z ERROR:: OAuthTokenHandler.GetAccessToken: Failed to retrieve access token. Response: {"AccessToken":null,"TokenType":"Bearer","Expiration":"2026-03-05T18:33:04.9649866Z","Success":false,"Errors":["Error refreshing access token."]}. Last known expiration: Not requested yet.
2026-03-05T18:04:04.9860062Z ERROR:: Engine.Run(): System.Exception: CharlesSchwabApiClient.SendRequestAsync: Unexpected error while sending request - OAuthTokenHandler.GetAccessToken: Authentication failed. Details: Error refreshing access token.
---> System.InvalidOperationException: OAuthTokenHandler.GetAccessToken: Authentication failed. Details: Error refreshing access token.
at QuantConnect.Brokerages.Authentication.OAuthTokenHandler2.GetAccessToken(CancellationToken cancellationToken) in Brokerages/Authentication/OAuthTokenHandler.cs:line 96 at QuantConnect.Brokerages.Authentication.TokenHandler.Send(HttpRequestMessage request, CancellationToken cancellationToken) in Brokerages/Authentication/TokenHandler.cs:line 106 at QuantConnect.Brokerages.Authentication.TokenHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in Brokerages/Authentication/TokenHandler.cs:line 86 at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient.a(HttpMethod A_0, String A_1, String A_2, String A_3) --- End of inner exception stack trace --- at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient.a(HttpMethod A_0, String A_1, String A_2, String A_3) at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient.a[a](HttpMethod A_0, String A_1, String A_2, String A_3, Boolean A_4) at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient.a[a](HttpMethod A_0, String A_1, String A_2, Boolean A_3) at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient.GetAccountNumber(String accountNumber) at QuantConnect.Extensions.SynchronouslyAwaitTaskResult[TResult](Task1 task) in Common/Extensions.cs:line 3434
at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient..ctor(String A_0, String A_1, TokenHandler A_2)
at QuantConnect.Brokerages.CharlesSchwab.Api.CharlesSchwabApiClient..ctor(ApiConnection leanApiClient, String brokerageName, String baseUrl, String accountNumber, String deployId, Int32 projectId)
at QuantConnect.Brokerages.CharlesSchwab.CharlesSchwabBrokerage.Initialize(String baseUrl, String appKey, String secret, String accountNumber, String redirectUrl, String authorizationCodeFromUrl, String refreshToken, String leanDeployId, Int32 leanProjectId, IOrderProvider orderProvider, ISecurityProvider securityProvider)
at QuantConnect.Brokerages.CharlesSchwab.CharlesSchwabBrokerage..ctor(String baseUrl, String accountNumber, String leanDeployId, Int32 leanProjectId, IOrderProvider orderProvider, ISecurityProvider securityProvider)
at QuantConnect.Brokerages.CharlesSchwab.CharlesSchwabBrokerage..ctor(String baseUrl, String accountNumber, String leanDeployId, Int32 leanProjectId, IAlgorithm algorithm)
at QuantConnect.Brokerages.CharlesSchwab.CharlesSchwabBrokerageFactory.CreateBrokerage(LiveNodePacket job, IAlgorithm algorithm)
at QuantConnect.Lean.Engine.Setup.BrokerageSetupHandler.CreateBrokerage(AlgorithmNodePacket algorithmNodePacket, IAlgorithm uninitializedAlgorithm, IBrokerageFactory& factory) in Engine/Setup/BrokerageSetupHandler.cs:line 137
at QuantConnect.Lean.Engine.Engine.Run(AlgorithmNodePacket job, AlgorithmManager manager, String assemblyPath, WorkerThread workerThread) in Engine/Engine.cs:line 140
2026-03-05T18:04:04.9892661Z TRACE:: JOB HANDLERS:
DataFeed: QuantConnect.Lean.Engine.DataFeeds.LiveTradingDataFeed
Setup: QuantConnect.Lean.Engine.Setup.BrokerageSetupHandler
RealTime: QuantConnect.Lean.Engine.RealTime.LiveTradingRealTimeHandler
Results: QuantConnect.Lean.Engine.Results.LiveTradingResultHandler
Transactions: QuantConnect.Lean.Engine.TransactionHandlers.BrokerageTransactionHandler
Object Store: QuantConnect.Lean.Engine.Storage.LocalObjectStore
History Provider:
Brokerage:
Data Provider: QuantConnect.Lean.Engine.DataFeeds.DefaultDataProvider

2026-03-05T18:04:04.9913904Z ERROR:: Algorithm.Initialize() Error: CharlesSchwabApiClient.SendRequestAsync: Unexpected error while sending request - OAuthTokenHandler.GetAccessToken: Authentication failed. Details: Error refreshing access token. Stack Trace: CharlesSchwabApiClient.SendRequestAsync: Unexpected error while sending request - OAuthTokenHandler.GetAccessToken: Authentication failed. Details: Error refreshing access token.
CharlesSchwabApiClient.SendRequestAsync: Unexpected error while sending request - OAuthTokenHandler.GetAccessToken: Authentication failed. Details: Error refreshing access token.
2026-03-05T18:04:04.9914467Z TRACE:: LiveTradingResultHandler.Run(): Ending Thread...
2026-03-05T18:04:04.9941473Z TRACE:: StopSafely(): Waiting for 'Result Thread' thread to stop...
2026-03-05T18:04:04.9960501Z TRACE:: LiveTradingResultHandler.SendFinalResult(): Starting...
2026-03-05T18:04:05.0606862Z TRACE:: LiveTradingResultHandler.SendFinalResult(): Finished storing results. Start sending...
2026-03-05T18:04:05.0607882Z TRACE:: LiveTradingResultHandler.SendFinalResult(): Ended
2026-03-05T18:04:05.0619448Z TRACE:: Engine.Run(): Disposing of setup handler...
2026-03-05T18:04:05.0631840Z TRACE:: BrokerageSetupHandler.Setup(): did not find any data queue handler to dispose
2026-03-05T18:04:05.0632388Z TRACE:: Engine.Main(): Analysis Completed and Results Posted.
2026-03-05T18:04:05.0701429Z TRACE:: Engine.Main(): Packet removed from queue: L-3457357721
2026-03-05T18:04:05.0704035Z TRACE:: LeanEngineSystemHandlers.Dispose(): start...
2026-03-05T18:04:05.0717107Z TRACE:: LeanEngineSystemHandlers.Dispose(): Disposed of system handlers.
2026-03-05T18:04:05.0720576Z TRACE:: LeanEngineAlgorithmHandlers.Dispose(): start...
2026-03-05T18:04:05.0729703Z TRACE:: LocalObjectStore.Dispose(): start...
2026-03-05T18:04:05.0730085Z TRACE:: LocalObjectStore.Dispose(): end
2026-03-05T18:04:05.0732098Z TRACE:: LeanEngineAlgorithmHandlers.Dispose(): Disposed of algorithm handlers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions