Skip to content

BaseResultsHandler

QuantConnect.Lean.Engine.Results.BaseResultsHandler

BaseResultsHandler()

Bases: Object

Provides base functionality to the implementations of IResultHandler

Creates a new instance

This Class is protected.

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 Property is protected.

chart_update_interval

chart_update_interval: timedelta

The chart update interval

This Property 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 Property is protected.

last_trade_id

last_trade_id: str

The last position consumed from the TradeBuilder.closed_trades by get_delta_trades

This Property 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 Property is protected.

serializer_settings

serializer_settings: Any

Serializer settings to use

This Property 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 Property is protected.

is_active

is_active: bool

Boolean flag indicating the thread is still active.

messages

messages: ConcurrentQueue[Packet]

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

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 Field is protected.

exit_event

exit_event: ManualResetEvent

Event set when exit is triggered

This Property is protected.

log_store

log_store: List[LogEntry]

The log store instance

This Property is protected.

algorithm_performance_charts

algorithm_performance_charts: List[str]

Algorithms performance related chart names

This Property is protected.

chart_lock

chart_lock: Object

Lock to be used when accessing the chart collection

This Property is protected.

project_id

project_id: int

The algorithm project id

This Property is protected.

ram_allocation

ram_allocation: str

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

This Property is protected.

compile_id

compile_id: str

The algorithm unique compilation id

This Property is protected.

algorithm_id

algorithm_id: str

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

This Property is protected.

start_time

start_time: datetime

The result handler start time

This Property is protected.

runtime_statistics

runtime_statistics: Dictionary[str, str]

Customizable dynamic statistics IAlgorithm.runtime_statistics

This Property is protected.

state

state: Dictionary[str, str]

State of the algorithm

This Property is protected.

messaging_handler

messaging_handler: IMessagingHandler

The handler responsible for communicating messages to listeners

This Property is protected.

transaction_handler

transaction_handler: ITransactionHandler

The transaction handler used to get the algorithms Orders information

This Property is protected.

starting_portfolio_value

starting_portfolio_value: float

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

This Property is protected.

algorithm

algorithm: IAlgorithm

The algorithm instance

This Property is protected.

algorithm_currency_symbol

algorithm_currency_symbol: str

Algorithm currency symbol, used in charting

This Property is protected.

daily_portfolio_value

daily_portfolio_value: float

Closing portfolio value. Used to calculate daily performance.

This Property is protected.

cumulative_max_portfolio_value

cumulative_max_portfolio_value: float

Cumulative max portfolio value. Used to calculate drawdown underwater.

This Property is protected.

resample_period

resample_period: timedelta

Sampling period for timespans between resamples of the charting equity.

This Property is protected.

notification_period

notification_period: timedelta

How frequently the backtests push messages to the browser.

This Property is protected.

results_destination_folder

results_destination_folder: str

Directory location to store results

This Property is protected.

map_file_provider

map_file_provider: IMapFileProvider

The map file provider instance to use

This Property is protected.

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.

sample

sample(time: Union[datetime, date]) -> None
sample(
    chart_name: str,
    series_name: str,
    series_index: int,
    series_type: SeriesType,
    value: ISeriesPoint,
    unit: str = "$",
) -> None

Signature descriptions:

  • Samples portfolio equity, benchmark, and daily performance Called by scheduled event every night at midnight algorithm time

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

Parameters:

Name Type Description Default
time Optional[Union[datetime, date]]

Current UTC time in the AlgorithmManager loop

None
chart_name Optional[str]

String chart name to place the sample.

None
series_name Optional[str]

Series name for the chart.

None
series_index Optional[int]

Series chart index - which chart should this series belong

None
series_type Optional[SeriesType]

Series type for the chart.

None
value Optional[ISeriesPoint]

Value for the chart sample.

None
unit Optional[str]

Unit for the chart axis

'$'

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 Class is protected.

Parameters:

Name Type Description Default
message str

String message to store

required

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

Handles updates to the algorithm's tags

Parameters:

Name Type Description Default
tags HashSet[str]

The new tags

required

exit

exit() -> None

Terminate the result thread and apply any required exit procedures like sending final results

format_message

format_message(message: str) -> str

Prefixes the given message with the algorithm time, matching the format used by the algorithm's own log messages (see IAlgorithm.log). Used to normalize the timestamp across all algorithm logs and messages.

This Class is protected.

Parameters:

Name Type Description Default
message str

The message to format

required

Returns:

Type Description
str

The message prefixed with the algorithm time, or the original message if the algorithm is not yet available.

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 Class is protected.

get_algorithm_state

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

Gets the algorithm state data

This Class is protected.

get_benchmark_value

get_benchmark_value() -> float

Gets the current benchmark value

This Class 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 Class is protected.

Returns:

Type Description
Dictionary[int, Order]

The delta orders.

get_delta_trades

get_delta_trades(
    trades: List[Trade],
    last_trade_id: str,
    should_stop: Callable[[int], bool],
) -> List[Trade]

Gets the trades generated starting from the provided TradeBuilder.closed_trades position, which is determined by the last_trade_id and the Trade.id

This Class is protected.

Returns:

Type Description
List[Trade]

The delta trades.

get_net_return

get_net_return() -> float

Gets the algorithm net return

This Class is protected.

get_portfolio_value

get_portfolio_value() -> float

Gets the current portfolio value

This Class is protected.

get_results_path

get_results_path(filename: str) -> str

Gets the full path for a results file

This Class 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 Class is protected.

initialize

initialize(
    parameters: ResultHandlerInitializeParameters,
) -> None

Initialize the result handler with this result packet.

Parameters:

Name Type Description Default
parameters ResultHandlerInitializeParameters

DTO parameters class to initialize a result handler

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

New order event for the algorithm

Parameters:

Name Type Description Default
new_event OrderEvent

New event details

required

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 Class is protected.

purge_queue

purge_queue() -> None

Purge/clear any outstanding messages in message queue.

This Class is protected.

run

run() -> None

Result handler update method

This Class 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 Class 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 Class 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 Class 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 Class 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 Class 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_performance

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

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

This Class is protected.

Parameters:

Name Type Description Default
time Union[datetime, date]

Time of the sample.

required
value float

Current daily performance value.

required

sample_portfolio_turnover

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

Sample portfolio turn over of the strategy

This Class 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 Class 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.

save_results

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

Save the results to disk

Parameters:

Name Type Description Default
name str

The name of the results

required
result Result

The results to save

required

security_type

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

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

set_algorithm

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

Set the Algorithm instance for ths result.

Parameters:

Name Type Description Default
algorithm IAlgorithm

Algorithm we're working on.

required
starting_portfolio_value float

Algorithm starting capital for statistics calculations

required

set_algorithm_state

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

Sets the algorithm state data

This Class is protected.

stop_update_runner

stop_update_runner() -> None

Stops the update runner task

This Class is protected.

store_insights

store_insights() -> None

Save insight results to persistent storage

This Class is protected.

store_order_events

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

Stores the order events

This Class 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 Class 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 Class 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 Class is protected.

update_algorithm_equity

update_algorithm_equity() -> None

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

This Class is protected.

update_benchmark_value

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

This Class is protected.

update_portfolio_values

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

This Class is protected.