Lean  $LEAN_TAG$
QuantConnect.Lean.Engine.Results.RegressionResultHandler Class Reference

Provides a wrapper over the BacktestingResultHandler that logs all order events to a separate file More...

Inheritance diagram for QuantConnect.Lean.Engine.Results.RegressionResultHandler:
[legend]

Public Member Functions

 RegressionResultHandler ()
 Initializes a new instance of the RegressionResultHandler class More...
 
override void SetAlgorithm (IAlgorithm algorithm, decimal startingPortfolioValue)
 Initializes the stream writer using the algorithm's id (name) in the file path More...
 
override void OrderEvent (OrderEvent newEvent)
 Log the order and order event to the dedicated log file for this regression algorithm More...
 
override void SecurityType (List< SecurityType > types)
 Send list of security asset types the algortihm uses to browser. More...
 
override void DebugMessage (string message)
 Send a debug message back to the browser console. More...
 
override void ErrorMessage (string message, string stacktrace="")
 Send an error message back to the browser highlighted in red with a stacktrace. More...
 
override void LogMessage (string message)
 Send a logging message to the log list for storage. More...
 
override void RuntimeError (string message, string stacktrace="")
 Send a runtime error message back to the browser highlighted with in red More...
 
override void SystemDebugMessage (string message)
 Send a system debug message back to the browser console. More...
 
override void RuntimeStatistic (string key, string value)
 Set the current runtime statistics of the algorithm. These are banner/title statistics which show at the top of the live trading results. More...
 
override void OnSecuritiesChanged (SecurityChanges changes)
 Event fired each time that we add/remove securities from the data feed More...
 
override void ProcessSynchronousEvents (bool forceProcess=false)
 Runs at the end of each time loop. When HighFidelityLogging is enabled, we'll log each piece of data to allow for faster determination of regression causes More...
 
override void SaveResults (string name, Result result)
 Save the results to disk More...
 
override void Exit ()
 Terminate the result thread and apply any required exit procedures. Save orders log files to disk. More...
 
- Public Member Functions inherited from QuantConnect.Lean.Engine.Results.BacktestingResultHandler
 BacktestingResultHandler ()
 Creates a new instance More...
 
override void Initialize (ResultHandlerInitializeParameters parameters)
 Initialize the result handler with this result packet. More...
 
virtual IEnumerable< BacktestResultPacketSplitPackets (Dictionary< string, Chart > deltaCharts, Dictionary< int, Order > deltaOrders, SortedDictionary< string, string > runtimeStatistics, decimal progress, Dictionary< string, string > serverStatistics)
 Run over all the data and break it into smaller packets to ensure they all arrive at the terminal More...
 
virtual void AlgorithmNameUpdated (string name)
 Handles updates to the algorithm's name More...
 
virtual void AlgorithmTagsUpdated (HashSet< string > tags)
 Sends a packet communicating an update to the algorithm's tags More...
 
virtual void BrokerageMessage (BrokerageMessageEvent brokerageMessageEvent)
 Process brokerage message events More...
 
virtual void SendStatusUpdate (AlgorithmStatus status, string message="")
 Send an algorithm status update to the browser. More...
 
StatisticsResults StatisticsResults ()
 Calculates and gets the current statistics for the algorithm More...
 
void SetSummaryStatistic (string name, string value)
 Sets or updates a custom summary statistic More...
 
- Public Member Functions inherited from QuantConnect.Lean.Engine.Results.BaseResultsHandler
virtual string SaveLogs (string id, List< LogEntry > logs)
 Returns the location of the logs More...
 
virtual void Sample (DateTime time)
 Samples portfolio equity, benchmark, and daily performance Called by scheduled event every night at midnight algorithm time More...
 
- Public Member Functions inherited from QuantConnect.Lean.Engine.Results.IResultHandler
void Sample (DateTime time)
 Method to update the IResultHandler with various performance metrics. Called once a day by scheduled event in AlgorithmManager More...
 

Public Attributes

string LogFilePath
 Gets the path used for logging all portfolio changing events, such as orders, TPV, daily holdings values More...
 
- Public Attributes inherited from QuantConnect.Lean.Engine.Results.BaseResultsHandler
bool IsActive => _updateRunner != null && _updateRunner.IsAlive
 Boolean flag indicating the thread is still active. More...
 

Protected Member Functions

override void SamplePerformance (DateTime time, decimal value)
 Runs on date changes, use this to log TPV and holdings values each day More...
 
override void AddToLogStore (string message)
 Save an algorithm message to the log store. Uses a different timestamped method of adding messaging to interweve debug and logging messages. More...
 
override void ConfigureConsoleTextWriter (IAlgorithm algorithm)
 We want to make algorithm messages end up in both the standard regression log file {algorithm}.{language}.log as well as the details log {algorithm}.{language}.details.log. The details log is focused on providing a log dedicated solely to the algorithm's behavior, void of all QuantConnect.Logging.Log messages More...
 
- Protected Member Functions inherited from QuantConnect.Lean.Engine.Results.BacktestingResultHandler
override void Run ()
 The main processing method steps through the messaging queue and processes the messages one by one. More...
 
override void StoreResult (Packet packet)
 Save the snapshot of the total results to storage. More...
 
void SendFinalResult ()
 Send a final analysis result back to the IDE. More...
 
override void Sample (string chartName, string seriesName, int seriesIndex, SeriesType seriesType, ISeriesPoint value, string unit="$")
 Add a sample to the chart specified by the chartName, and seriesName. More...
 
override void SampleCapacity (DateTime time)
 Sample estimated strategy capacity More...
 
void SampleRange (IEnumerable< Chart > updates)
 Add a range of samples from the users algorithms to the end of our current list. More...
 
- Protected Member Functions inherited from QuantConnect.Lean.Engine.Results.BaseResultsHandler
 BaseResultsHandler ()
 Creates a new instance More...
 
virtual Dictionary< string, string > GetServerStatistics (DateTime utcNow)
 Gets the current Server statistics More...
 
virtual void StoreOrderEvents (DateTime utcTime, List< OrderEvent > orderEvents)
 Stores the order events More...
 
virtual void StoreInsights ()
 Save insight results to persistent storage More...
 
virtual Dictionary< int, OrderGetDeltaOrders (int orderEventsStartPosition, Func< int, bool > shouldStop)
 Gets the orders generated starting from the provided ITransactionHandler.OrderEvents position More...
 
string GetResultsPath (string filename)
 Gets the full path for a results file More...
 
void PurgeQueue ()
 Purge/clear any outstanding messages in message queue. More...
 
void StopUpdateRunner ()
 Stops the update runner task More...
 
decimal GetNetReturn ()
 Gets the algorithm net return More...
 
virtual decimal GetPortfolioValue ()
 Gets the current portfolio value More...
 
virtual decimal GetBenchmarkValue (DateTime time)
 Gets the current benchmark value More...
 
virtual void SampleEquity (DateTime time)
 Sample the current equity of the strategy directly with time and using the current algorithm equity value in CurrentAlgorithmEquity More...
 
virtual void SampleBenchmark (DateTime time, decimal value)
 Sample the current benchmark performance directly with a time-value pair. More...
 
virtual void SampleDrawdown (DateTime time, decimal currentPortfolioValue)
 Sample drawdown of equity of the strategy More...
 
virtual void SamplePortfolioTurnover (DateTime time, decimal currentPortfolioValue)
 Sample portfolio turn over of the strategy More...
 
virtual void SampleSalesVolume (DateTime time)
 Sample assets sales volume More...
 
virtual void SampleExposure (DateTime time, decimal currentPortfolioValue)
 Sample portfolio exposure long/short ratios by security type More...
 
SortedDictionary< string, string > GetAlgorithmRuntimeStatistics (Dictionary< string, string > summary, CapacityEstimate capacityEstimate=null)
 Gets the algorithm runtime statistics More...
 
void SetAlgorithmState (string error, string stack)
 Sets the algorithm state data More...
 
Dictionary< string, string > GetAlgorithmState (DateTime? endTime=null)
 Gets the algorithm state data More...
 
StatisticsResults GenerateStatisticsResults (Dictionary< string, Chart > charts, SortedDictionary< DateTime, decimal > profitLoss=null, CapacityEstimate estimatedStrategyCapacity=null)
 Will generate the statistics results and update the provided runtime statistics More...
 
int TotalTradesCount ()
 Helper method to get the total trade count statistic More...
 
StatisticsResults GenerateStatisticsResults (CapacityEstimate estimatedStrategyCapacity=null)
 Calculates and gets the current statistics for the algorithm. It will use the current Charts and profit loss information calculated from the current transaction record to generate the results. More...
 
void ProcessAlgorithmLogs (int? messageQueueLimit=null)
 Processes algorithm logs. Logs of the same type are batched together one per line and are sent out More...
 
void SummaryStatistic (string name, string value)
 Sets or updates a custom summary statistic More...
 
void UpdateAlgorithmEquity ()
 Updates the current equity bar with the current equity value from GetPortfolioValue More...
 

Properties

bool HasRuntimeError [get]
 True if there was a runtime error running the algorithm More...
 
- Properties inherited from QuantConnect.Lean.Engine.Results.BacktestingResultHandler
Dictionary< string, string > FinalStatistics [get]
 A dictionary containing summary statistics More...
 
- Properties inherited from QuantConnect.Lean.Engine.Results.BaseResultsHandler
virtual TimeSpan MainUpdateInterval = TimeSpan.FromSeconds(3) [get]
 The main loop update interval More...
 
TimeSpan ChartUpdateInterval = TimeSpan.FromMinutes(1) [get, set]
 The chart update interval More...
 
int LastDeltaOrderPosition [get, set]
 The last position consumed from the ITransactionHandler.OrderEvents by GetDeltaOrders More...
 
int LastDeltaOrderEventsPosition [get, set]
 The last position consumed from the ITransactionHandler.OrderEvents while determining delta order events More...
 
JsonSerializerSettings SerializerSettings [get, set]
 Serializer settings to use More...
 
Bar CurrentAlgorithmEquity [get, set]
 The current aggregated equity bar for sampling. It will be aggregated with values from the GetPortfolioValue More...
 
ConcurrentQueue< PacketMessages [get, set]
 Live packet messaging queue. Queue the messages here and send when the result queue is ready. More...
 
ConcurrentDictionary< string, ChartCharts [get, set]
 Storage for the price and equity charts of the live results. More...
 
ManualResetEvent ExitEvent [get]
 Event set when exit is triggered More...
 
List< LogEntryLogStore [get]
 The log store instance More...
 
List< string > AlgorithmPerformanceCharts = new List<string> { StrategyEquityKey, BenchmarkKey } [get]
 Algorithms performance related chart names More...
 
object ChartLock [get]
 Lock to be used when accessing the chart collection More...
 
int ProjectId [get, set]
 The algorithm project id More...
 
string RamAllocation [get, set]
 The maximum amount of RAM (in MB) this algorithm is allowed to utilize More...
 
string CompileId [get, set]
 The algorithm unique compilation id More...
 
string AlgorithmId [get, set]
 The algorithm job id. This is the deploy id for live, backtesting id for backtesting More...
 
DateTime StartTime [get]
 The result handler start time More...
 
Dictionary< string, string > RuntimeStatistics [get]
 Customizable dynamic statistics IAlgorithm.RuntimeStatistics More...
 
Dictionary< string, string > State [get, set]
 State of the algorithm More...
 
IMessagingHandler MessagingHandler [get, set]
 The handler responsible for communicating messages to listeners More...
 
ITransactionHandler TransactionHandler [get, set]
 The transaction handler used to get the algorithms Orders information More...
 
decimal StartingPortfolioValue [get, set]
 The algorithms starting portfolio value. Used to calculate the portfolio return More...
 
virtual IAlgorithm Algorithm [get, set]
 The algorithm instance More...
 
string AlgorithmCurrencySymbol [get, set]
 Algorithm currency symbol, used in charting More...
 
decimal DailyPortfolioValue [get, set]
 Closing portfolio value. Used to calculate daily performance. More...
 
decimal CumulativeMaxPortfolioValue [get, set]
 Cumulative max portfolio value. Used to calculate drawdown underwater. More...
 
TimeSpan ResamplePeriod [get, set]
 Sampling period for timespans between resamples of the charting equity. More...
 
TimeSpan NotificationPeriod [get, set]
 How frequently the backtests push messages to the browser. More...
 
string ResultsDestinationFolder [get, set]
 Directory location to store results More...
 
IMapFileProvider MapFileProvider [get, set]
 The map file provider instance to use More...
 
- Properties inherited from QuantConnect.Lean.Engine.Results.IResultHandler
ConcurrentQueue< PacketMessages [get, set]
 Put messages to process into the queue so they are processed by this thread. More...
 
bool IsActive [get]
 Boolean flag indicating the result hander thread is busy. False means it has completely finished and ready to dispose. More...
 

Additional Inherited Members

- Static Public Attributes inherited from QuantConnect.Lean.Engine.Results.BaseResultsHandler
const string StrategyEquityKey = "Strategy Equity"
 String message saying: Strategy Equity More...
 
const string EquityKey = "Equity"
 String message saying: Equity More...
 
const string ReturnKey = "Return"
 String message saying: Return More...
 
const string BenchmarkKey = "Benchmark"
 String message saying: Benchmark More...
 
const string DrawdownKey = "Drawdown"
 String message saying: Drawdown More...
 
const string PortfolioTurnoverKey = "Portfolio Turnover"
 String message saying: PortfolioTurnover More...
 
const string PortfolioMarginKey = "Portfolio Margin"
 String message saying: Portfolio Margin More...
 
const string AssetsSalesVolumeKey = "Assets Sales Volume"
 String message saying: Portfolio Margin More...
 
- Protected Attributes inherited from QuantConnect.Lean.Engine.Results.BaseResultsHandler
volatile bool ExitTriggered
 True if the exit has been triggered More...
 

Detailed Description

Provides a wrapper over the BacktestingResultHandler that logs all order events to a separate file

Definition at line 39 of file RegressionResultHandler.cs.

Constructor & Destructor Documentation

◆ RegressionResultHandler()

QuantConnect.Lean.Engine.Results.RegressionResultHandler.RegressionResultHandler ( )

Initializes a new instance of the RegressionResultHandler class

Definition at line 73 of file RegressionResultHandler.cs.

Member Function Documentation

◆ SetAlgorithm()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.SetAlgorithm ( IAlgorithm  algorithm,
decimal  startingPortfolioValue 
)
virtual

Initializes the stream writer using the algorithm's id (name) in the file path

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 84 of file RegressionResultHandler.cs.

◆ SamplePerformance()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.SamplePerformance ( DateTime  time,
decimal  value 
)
protectedvirtual

Runs on date changes, use this to log TPV and holdings values each day

Reimplemented from QuantConnect.Lean.Engine.Results.BaseResultsHandler.

Definition at line 111 of file RegressionResultHandler.cs.

◆ OrderEvent()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.OrderEvent ( OrderEvent  newEvent)
virtual

Log the order and order event to the dedicated log file for this regression algorithm

In backtesting the order events are not sent because it would generate a high load of messaging.

Parameters
newEventNew order event details

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 149 of file RegressionResultHandler.cs.

Here is the call graph for this function:

◆ SecurityType()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.SecurityType ( List< SecurityType types)
virtual

Send list of security asset types the algortihm uses to browser.

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 177 of file RegressionResultHandler.cs.

◆ DebugMessage()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.DebugMessage ( string  message)
virtual

Send a debug message back to the browser console.

Parameters
messageMessage we'd like shown in console.

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 189 of file RegressionResultHandler.cs.

◆ ErrorMessage()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.ErrorMessage ( string  message,
string  stacktrace = "" 
)
virtual

Send an error message back to the browser highlighted in red with a stacktrace.

Parameters
messageError message we'd like shown in console.
stacktraceStacktrace information string

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 201 of file RegressionResultHandler.cs.

◆ LogMessage()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.LogMessage ( string  message)
virtual

Send a logging message to the log list for storage.

Parameters
messageMessage we'd in the log.

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 213 of file RegressionResultHandler.cs.

◆ RuntimeError()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.RuntimeError ( string  message,
string  stacktrace = "" 
)
virtual

Send a runtime error message back to the browser highlighted with in red

Parameters
messageError message.
stacktraceStacktrace information string

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 225 of file RegressionResultHandler.cs.

◆ SystemDebugMessage()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.SystemDebugMessage ( string  message)
virtual

Send a system debug message back to the browser console.

Parameters
messageMessage we'd like shown in console.

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 238 of file RegressionResultHandler.cs.

◆ RuntimeStatistic()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.RuntimeStatistic ( string  key,
string  value 
)
virtual

Set the current runtime statistics of the algorithm. These are banner/title statistics which show at the top of the live trading results.

Parameters
keyRuntime headline statistic name
valueRuntime headline statistic value

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 251 of file RegressionResultHandler.cs.

Here is the call graph for this function:

◆ AddToLogStore()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.AddToLogStore ( string  message)
protectedvirtual

Save an algorithm message to the log store. Uses a different timestamped method of adding messaging to interweve debug and logging messages.

Parameters
messageString message to store

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 279 of file RegressionResultHandler.cs.

◆ OnSecuritiesChanged()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.OnSecuritiesChanged ( SecurityChanges  changes)
virtual

Event fired each time that we add/remove securities from the data feed

Reimplemented from QuantConnect.Lean.Engine.Results.BaseResultsHandler.

Definition at line 289 of file RegressionResultHandler.cs.

◆ ProcessSynchronousEvents()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.ProcessSynchronousEvents ( bool  forceProcess = false)
virtual

Runs at the end of each time loop. When HighFidelityLogging is enabled, we'll log each piece of data to allow for faster determination of regression causes

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 316 of file RegressionResultHandler.cs.

◆ SaveResults()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.SaveResults ( string  name,
Result  result 
)
virtual

Save the results to disk

Reimplemented from QuantConnect.Lean.Engine.Results.BaseResultsHandler.

Definition at line 383 of file RegressionResultHandler.cs.

Here is the call graph for this function:

◆ Exit()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.Exit ( )
virtual

Terminate the result thread and apply any required exit procedures. Save orders log files to disk.

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 392 of file RegressionResultHandler.cs.

Here is the call graph for this function:

◆ ConfigureConsoleTextWriter()

override void QuantConnect.Lean.Engine.Results.RegressionResultHandler.ConfigureConsoleTextWriter ( IAlgorithm  algorithm)
protectedvirtual

We want to make algorithm messages end up in both the standard regression log file {algorithm}.{language}.log as well as the details log {algorithm}.{language}.details.log. The details log is focused on providing a log dedicated solely to the algorithm's behavior, void of all QuantConnect.Logging.Log messages

Reimplemented from QuantConnect.Lean.Engine.Results.BacktestingResultHandler.

Definition at line 441 of file RegressionResultHandler.cs.

Here is the call graph for this function:

Member Data Documentation

◆ LogFilePath

string QuantConnect.Lean.Engine.Results.RegressionResultHandler.LogFilePath
Initial value:
=> IsTest
? $"./regression/{AlgorithmId}.{Language.ToLower()}.details.log"
: $"./{AlgorithmId}/{DateTime.Now:yyyy-MM-dd-hh-mm-ss}.{Language.ToLower()}.details.log"

Gets the path used for logging all portfolio changing events, such as orders, TPV, daily holdings values

Definition at line 61 of file RegressionResultHandler.cs.

Property Documentation

◆ HasRuntimeError

bool QuantConnect.Lean.Engine.Results.RegressionResultHandler.HasRuntimeError
get

True if there was a runtime error running the algorithm

Definition at line 68 of file RegressionResultHandler.cs.


The documentation for this class was generated from the following file: