PandasTraderRunner#

API documentation for tradeexecutor.strategy.pandas_trader.runner.PandasTraderRunner Python class in Trading Strategy framework.

class PandasTraderRunner[source]#

Bases: StrategyRunner

A trading executor for Pandas math based algorithm.

__init__(*args, decide_trades, max_data_age=None, **kwargs)[source]#
Parameters:

Methods

__init__(*args, decide_trades[, max_data_age])

param engine_version:

calculate_live_indicators(timestamp, ...)

Calculate and recalculate indicators in a live trading.

check_accounts(universe, state[, ...])

Perform extra accounting checks on live trading startup.

check_balances_post_execution(universe, ...)

Check that on-chain balances matches our internal accounting after executing trades.

check_position_triggers(clock, state, ...[, ...])

Check stop loss/take profit for positions.

collect_post_execution_data(...)

Collect post execution data for all trades.

is_progress_report_needed()

Do we log the strategy steps to logger?

on_clock(clock, strategy_universe, ...[, ...])

Run one strategy tick.

on_data_signal()

pretick_check(ts, universe)

Check the data looks more or less sane.

refresh_visualisations(state, universe)

Updates the visualisation images for the strategy.

repair_state(state)

Repair unclean state issues.

report_after_execution(clock, universe, ...)

report_after_sync_and_revaluation(clock, ...)

report_before_execution(clock, universe, ...)

report_strategy_thinking(...)

Strategy admin helpers to understand a live running strategy.

revalue_state(ts, state, valuation_model)

Revalue portfolio based on the latest prices.

setup_routing(universe)

Setups routing state for this cycle.

sync_portfolio(...[, end_block, ...])

Adjust portfolio balances based on the external events.

tick(strategy_cycle_timestamp, universe, ...)

Execute the core functions of a strategy.

update_strategy_thinking_image_data(...)

Update the strategy thinking image data with small, small dark theme, large, and large dark theme images.

__init__(*args, decide_trades, max_data_age=None, **kwargs)[source]#
Parameters:
on_clock(clock, strategy_universe, pricing_model, state, debug_details, indicators=None)[source]#

Run one strategy tick.

Parameters:
Return type:

List[TradeExecution]

pretick_check(ts, universe)[source]#

Check the data looks more or less sane.

Parameters:
refresh_visualisations(state, universe)[source]#

Updates the visualisation images for the strategy.

  • Used in Discord (small)

  • Used on the frontend (large)

This is automatically called on trade-executor console startup:

docker compose run enzyme-polygon-eth-btc-usdc console

To call this manually from the same console with pre-set up runner

runner.refresh_visualisations(state, strategy_universe)
Parameters:
update_strategy_thinking_image_data(small_figure, large_figure)[source]#

Update the strategy thinking image data with small, small dark theme, large, and large dark theme images.

Parameters:
  • small_image – 512 x 512 image

  • large_image – 1920 x 1920 image

report_strategy_thinking(strategy_cycle_timestamp, cycle, universe, state, trades, debug_details)[source]#

Strategy admin helpers to understand a live running strategy.

  • Post latest variables

  • Draw the single pair strategy visualisation.

To manually test the visualisation see: manual-visualisation-test.py.

Parameters:
  • strategy_cycle_timestamp (datetime) – real time lock

  • cycle (int) – Cycle number

  • universe (TradingStrategyUniverse) – Currnet trading universe

  • trades (List[TradeExecution]) – Trades executed on this cycle

  • state (State) – Current execution state

  • debug_details (dict) – Dict of random debug stuff

calculate_live_indicators(timestamp, strategy_universe, parameters)[source]#

Calculate and recalculate indicators in a live trading.

  • Calculated just before decide_trades is called

  • Recalculated for every cycle

Returns:

Freshly calculated indicators

Parameters:
Return type:

StrategyInputIndicators