Skip to content

RegressionResultHandler

QuantConnect.Lean.Engine.Results.RegressionResultHandler

RegressionResultHandler()

Bases: BacktestingResultHandler

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

Initializes a new instance of the RegressionResultHandler class

log_file_path

log_file_path: str

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

has_runtime_error

has_runtime_error: bool

True if there was a runtime error running the algorithm

messages

messages: ConcurrentQueue[Packet]

Live packet messaging queue. Queue the messages here and send when the result queue is ready.

is_active

is_active: bool

Boolean flag indicating the thread is still active.

STRATEGY_EQUITY_KEY

STRATEGY_EQUITY_KEY: str = 'Strategy Equity'

String message saying: Strategy Equity

EQUITY_KEY

EQUITY_KEY: str = 'Equity'

String message saying: Equity

RETURN_KEY

RETURN_KEY: str = 'Return'

String message saying: Return

BENCHMARK_KEY

BENCHMARK_KEY: str = 'Benchmark'

String message saying: Benchmark

DRAWDOWN_KEY

DRAWDOWN_KEY: str = 'Drawdown'

String message saying: Drawdown

PORTFOLIO_TURNOVER_KEY

PORTFOLIO_TURNOVER_KEY: str = 'Portfolio Turnover'

String message saying: PortfolioTurnover

PORTFOLIO_MARGIN_KEY

PORTFOLIO_MARGIN_KEY: str = 'Portfolio Margin'

String message saying: Portfolio Margin

ASSETS_SALES_VOLUME_KEY

ASSETS_SALES_VOLUME_KEY: str = 'Assets Sales Volume'

String message saying: Portfolio Margin

main_update_interval

main_update_interval: timedelta

The main loop update interval

This codeEntityType is protected.

chart_update_interval

chart_update_interval: timedelta

The chart update interval

This codeEntityType is protected.

last_delta_order_position

last_delta_order_position: int

The last position consumed from the ITransactionHandler.order_events by get_delta_orders

This codeEntityType is protected.

last_delta_order_events_position

last_delta_order_events_position: int

The last position consumed from the ITransactionHandler.order_events while determining delta order events

This codeEntityType is protected.

serializer_settings

serializer_settings: Any

Serializer settings to use

This codeEntityType is protected.

current_algorithm_equity

current_algorithm_equity: Bar

The current aggregated equity bar for sampling. It will be aggregated with values from the get_portfolio_value

This codeEntityType is protected.

charts

charts: ConcurrentDictionary[str, Chart]

Storage for the price and equity charts of the live results.

exit_triggered

exit_triggered: bool

True if the exit has been triggered

This codeEntityType is protected.

exit_event

exit_event: ManualResetEvent

Event set when exit is triggered

This codeEntityType is protected.

log_store

log_store: List[LogEntry]

The log store instance

This codeEntityType is protected.

algorithm_performance_charts

algorithm_performance_charts: List[str]

Algorithms performance related chart names

This codeEntityType is protected.

chart_lock

chart_lock: Object

Lock to be used when accessing the chart collection

This codeEntityType is protected.

project_id

project_id: int

The algorithm project id

This codeEntityType is protected.

ram_allocation

ram_allocation: str

The maximum amount of RAM (in MB) this algorithm is allowed to utilize

This codeEntityType is protected.

compile_id

compile_id: str

The algorithm unique compilation id

This codeEntityType is protected.

algorithm_id

algorithm_id: str

The algorithm job id. This is the deploy id for live, backtesting id for backtesting

This codeEntityType is protected.

start_time

start_time: datetime

The result handler start time

This codeEntityType is protected.

runtime_statistics

runtime_statistics: Dictionary[str, str]

Customizable dynamic statistics IAlgorithm.runtime_statistics

This codeEntityType is protected.

state

state: Dictionary[str, str]

State of the algorithm

This codeEntityType is protected.

messaging_handler

messaging_handler: IMessagingHandler

The handler responsible for communicating messages to listeners

This codeEntityType is protected.

transaction_handler

transaction_handler: ITransactionHandler

The transaction handler used to get the algorithms Orders information

This codeEntityType is protected.

starting_portfolio_value

starting_portfolio_value: float

The algorithms starting portfolio value. Used to calculate the portfolio return

This codeEntityType is protected.

algorithm

algorithm: IAlgorithm

The algorithm instance

This codeEntityType is protected.

algorithm_currency_symbol

algorithm_currency_symbol: str

Algorithm currency symbol, used in charting

This codeEntityType is protected.

daily_portfolio_value

daily_portfolio_value: float

Closing portfolio value. Used to calculate daily performance.

This codeEntityType is protected.

cumulative_max_portfolio_value

cumulative_max_portfolio_value: float

Cumulative max portfolio value. Used to calculate drawdown underwater.

This codeEntityType is protected.

resample_period

resample_period: timedelta

Sampling period for timespans between resamples of the charting equity.

This codeEntityType is protected.

notification_period

notification_period: timedelta

How frequently the backtests push messages to the browser.

This codeEntityType is protected.

results_destination_folder

results_destination_folder: str

Directory location to store results

This codeEntityType is protected.

map_file_provider

map_file_provider: IMapFileProvider

The map file provider instance to use

This codeEntityType is protected.

final_statistics

final_statistics: Dictionary[str, str]

A dictionary containing summary statistics

add_to_log_store

add_to_log_store(message: str) -> None

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

This codeEntityType is protected.

Parameters:

Name Type Description Default
message str

String message to store

required

configure_console_text_writer

configure_console_text_writer(
    algorithm: IAlgorithm,
) -> None

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

This codeEntityType is protected.

debug_message

debug_message(message: str) -> None

Send a debug message back to the browser console.

Parameters:

Name Type Description Default
message str

Message we'd like shown in console.

required

error_message

error_message(message: str, stacktrace: str = ...) -> None

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

Parameters:

Name Type Description Default
message str

Error message we'd like shown in console.

required
stacktrace str

Stacktrace information string

...

exit

exit() -> None

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

log_message

log_message(message: str) -> None

Send a logging message to the log list for storage.

Parameters:

Name Type Description Default
message str

Message we'd in the log.

required

on_securities_changed

on_securities_changed(changes: SecurityChanges) -> None

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

order_event

order_event(new_event: OrderEvent) -> None

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

Parameters:

Name Type Description Default
new_event OrderEvent

New order event details

required

process_synchronous_events

process_synchronous_events(
    force_process: bool = False,
) -> None

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

runtime_error

runtime_error(message: str, stacktrace: str = ...) -> None

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

Parameters:

Name Type Description Default
message str

Error message.

required
stacktrace str

Stacktrace information string

...

runtime_statistic

runtime_statistic(key: str, value: str) -> None

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

Parameters:

Name Type Description Default
key str

Runtime headline statistic name

required
value str

Runtime headline statistic value

required

sample_performance

sample_performance(
    time: Union[datetime, date], value: float
) -> None

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

This codeEntityType is protected.

save_results

save_results(name: str, result: Result) -> None

Save the results to disk

security_type

security_type(types: List[SecurityType]) -> None

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

set_algorithm

set_algorithm(
    algorithm: IAlgorithm, starting_portfolio_value: float
) -> None

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

system_debug_message

system_debug_message(message: str) -> None

Send a system debug message back to the browser console.

Parameters:

Name Type Description Default
message str

Message we'd like shown in console.

required

set_summary_statistic

set_summary_statistic(name: str, value: str) -> None

Sets or updates a custom summary statistic

Parameters:

Name Type Description Default
name str

The statistic name

required
value str

The statistic value

required

statistics_results

statistics_results() -> StatisticsResults

Calculates and gets the current statistics for the algorithm

Returns:

Type Description
StatisticsResults

The current statistics.

algorithm_name_updated

algorithm_name_updated(name: str) -> None

Handles updates to the algorithm's name

Parameters:

Name Type Description Default
name str

The new name

required

algorithm_tags_updated

algorithm_tags_updated(tags: HashSet[str]) -> None

Sends a packet communicating an update to the algorithm's tags

Parameters:

Name Type Description Default
tags HashSet[str]

The new tags

required

brokerage_message

brokerage_message(
    brokerage_message_event: BrokerageMessageEvent,
) -> None

Process brokerage message events

Parameters:

Name Type Description Default
brokerage_message_event BrokerageMessageEvent

The brokerage message event

required

initialize

initialize(
    parameters: ResultHandlerInitializeParameters,
) -> None

Initialize the result handler with this result packet.

sample

sample(
    chart_name: str,
    series_name: str,
    series_index: int,
    series_type: SeriesType,
    value: ISeriesPoint,
    unit: str = "$",
) -> None

Add a sample to the chart specified by the chart_name, and series_name.

This codeEntityType is protected.

Parameters:

Name Type Description Default
chart_name str

String chart name to place the sample.

required
series_index int

Type of chart we should create if it doesn't already exist.

required
series_name str

Series name for the chart.

required
series_type SeriesType

Series type for the chart.

required
value ISeriesPoint

Value for the chart sample.

required
unit str

Unit of the sample

'$'

send_status_update

send_status_update(
    status: AlgorithmStatus, message: str = ...
) -> None

Send an algorithm status update to the browser.

Parameters:

Name Type Description Default
status AlgorithmStatus

Status enum value.

required
message str

Additional optional status message.

...

generate_statistics_results

generate_statistics_results(
    charts: Dictionary[str, Chart],
    profit_loss: SortedDictionary[datetime, float] = None,
    estimated_strategy_capacity: CapacityEstimate = None,
) -> StatisticsResults
generate_statistics_results(
    estimated_strategy_capacity: CapacityEstimate = None,
) -> StatisticsResults

Signature descriptions:

  • Will generate the statistics results and update the provided runtime statistics

  • 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.

Returns:

Type Description
StatisticsResults

The current statistics.

get_algorithm_runtime_statistics

get_algorithm_runtime_statistics(
    summary: Dictionary[str, str],
    capacity_estimate: CapacityEstimate = None,
) -> SortedDictionary[str, str]

Gets the algorithm runtime statistics

This codeEntityType is protected.

get_algorithm_state

get_algorithm_state(
    end_time: Optional[datetime] = None,
) -> Dictionary[str, str]

Gets the algorithm state data

This codeEntityType is protected.

get_benchmark_value

get_benchmark_value() -> float

Gets the current benchmark value

This codeEntityType is protected.

get_delta_orders

get_delta_orders(
    order_events_start_position: int,
    should_stop: Callable[[int], bool],
) -> Dictionary[int, Order]

Gets the orders generated starting from the provided ITransactionHandler.order_events position

This codeEntityType is protected.

Returns:

Type Description
Dictionary[int, Order]

The delta orders.

get_net_return

get_net_return() -> float

Gets the algorithm net return

This codeEntityType is protected.

get_portfolio_value

get_portfolio_value() -> float

Gets the current portfolio value

This codeEntityType is protected.

get_results_path

get_results_path(filename: str) -> str

Gets the full path for a results file

This codeEntityType is protected.

Parameters:

Name Type Description Default
filename str

The filename to add to the path

required

Returns:

Type Description
str

The full path, including the filename.

get_server_statistics

get_server_statistics(
    utc_now: Union[datetime, date],
) -> Dictionary[str, str]

Gets the current Server statistics

This codeEntityType is protected.

process_algorithm_logs

process_algorithm_logs(
    message_queue_limit: Optional[int] = None,
) -> None

Processes algorithm logs. Logs of the same type are batched together one per line and are sent out

This codeEntityType is protected.

purge_queue

purge_queue() -> None

Purge/clear any outstanding messages in message queue.

This codeEntityType is protected.

run

run() -> None

The main processing method steps through the messaging queue and processes the messages one by one.

This codeEntityType is protected.

sample_benchmark

sample_benchmark(
    time: Union[datetime, date], value: float
) -> None

Sample the current benchmark performance directly with a time-value pair.

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample.

required
value float

Current benchmark value.

required

sample_capacity

sample_capacity(time: Union[datetime, date]) -> None

Sample estimated strategy capacity

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample

required

sample_drawdown

sample_drawdown(
    time: Union[datetime, date],
    current_portfolio_value: float,
) -> None

Sample drawdown of equity of the strategy

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample

required
current_portfolio_value float

Current equity value

required

sample_equity

sample_equity(time: Union[datetime, date]) -> None

Sample the current equity of the strategy directly with time and using the current algorithm equity value in current_algorithm_equity

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Equity candlestick end time

required

sample_exposure

sample_exposure(
    time: Union[datetime, date],
    current_portfolio_value: float,
) -> None

Sample portfolio exposure long/short ratios by security type

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample

required
current_portfolio_value float

Current value of the portfolio

required

sample_portfolio_turnover

sample_portfolio_turnover(
    time: Union[datetime, date],
    current_portfolio_value: float,
) -> None

Sample portfolio turn over of the strategy

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample

required
current_portfolio_value float

Current equity value

required

sample_sales_volume

sample_sales_volume(time: Union[datetime, date]) -> None

Sample assets sales volume

This codeEntityType is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample

required

save_logs

save_logs(id: str, logs: List[LogEntry]) -> str

Returns the location of the logs

Parameters:

Name Type Description Default
id str

Id that will be incorporated into the algorithm log name

required
logs List[LogEntry]

The logs to save

required

Returns:

Type Description
str

The path to the logs.

set_algorithm_state

set_algorithm_state(error: str, stack: str) -> None

Sets the algorithm state data

This codeEntityType is protected.

stop_update_runner

stop_update_runner() -> None

Stops the update runner task

This codeEntityType is protected.

store_insights

store_insights() -> None

Save insight results to persistent storage

This codeEntityType is protected.

store_order_events

store_order_events(
    utc_time: Union[datetime, date],
    order_events: List[OrderEvent],
) -> None

Stores the order events

This codeEntityType is protected.

Parameters:

Name Type Description Default
utc_time Union[datetime, date]

The utc date associated with these order events

required
order_events List[OrderEvent]

The order events to store

required

store_result

store_result(packet: Packet) -> None

Save the snapshot of the total results to storage.

This codeEntityType is protected.

Parameters:

Name Type Description Default
packet Packet

Packet to store.

required

summary_statistic

summary_statistic(name: str, value: str) -> None

Sets or updates a custom summary statistic

This codeEntityType is protected.

Parameters:

Name Type Description Default
name str

The statistic name

required
value str

The statistic value

required

total_trades_count

total_trades_count() -> int

Helper method to get the total trade count statistic

This codeEntityType is protected.

update_algorithm_equity

update_algorithm_equity() -> None

Updates the current equity bar with the current equity value from get_portfolio_value

This codeEntityType is protected.

update_benchmark_value

update_benchmark_value(
    time: Union[datetime, date], force: bool = False
) -> None

This codeEntityType is protected.

update_portfolio_values

update_portfolio_values(
    time: Union[datetime, date], force: bool = False
) -> None

This codeEntityType is protected.

sample_range

sample_range(updates: List[Chart]) -> None

Add a range of samples from the users algorithms to the end of our current list.

This codeEntityType is protected.

Parameters:

Name Type Description Default
updates List[Chart]

Chart updates since the last request.

required

send_final_result

send_final_result() -> None

Send a final analysis result back to the IDE.

This codeEntityType is protected.

split_packets

split_packets(
    delta_charts: Dictionary[str, Chart],
    delta_orders: Dictionary[int, Order],
    runtime_statistics: SortedDictionary[str, str],
    progress: float,
    server_statistics: Dictionary[str, str],
) -> Iterable[BacktestResultPacket]

Run over all the data and break it into smaller packets to ensure they all arrive at the terminal