ExecutionModel#
API documentation for tradeexecutor.strategy.execution_model.ExecutionModel Python class in Trading Strategy framework.
- class ExecutionModel[source]#
- Bases: - ABC- Define how trades are executed. - See also - tradeexecutor.strategy.mode.ExecutionMode.- Used directly by BacktestExecutionModel, and indirectly (through EthereumExecutionModel) by UniswapV2ExecutionModel and UniswapV3ExecutionModel - __init__()#
 - Methods - __init__()- create_default_routing_model(strategy_universe)- Get the default routing model for this executor. - execute_trades(ts, state, trades, ...[, ...])- Execute the trades determined by the algo on a designed Uniswap v2 instance. - Get the address where the strat holds tokens. - Get needed details to establish a routing state. - Fix the block number for all checks and actions. - Set up the execution model ready to make trades. - Do we support stop-loss/take profit functionality with this execution model? - Check that we can start the trade executor - repair_unconfirmed_trades(state)- Repair unconfirmed trades. - abstract get_balance_address()[source]#
- Get the address where the strat holds tokens. - Returns:
- None if this executor does not use on-chain addresses. 
- Return type:
- str | None 
 
 - abstract preflight_check()[source]#
- Check that we can start the trade executor - Raise:
- AssertionError if something is a miss 
 
 - abstract initialize()[source]#
- Set up the execution model ready to make trades. - Read any on-chain, etc., data to get synced. - Read EVM nonce for the hot wallet from the chain 
 
 - abstract get_safe_latest_block()[source]#
- Fix the block number for all checks and actions. - At the start of each action cycle (strategy decision, position triggers) we fix ourselves to a certain block number we know is “safe” and the data in at this block number is unlike to change 
- We then perform all deposit and redemptions and accounting checks using this block number as end block, to get a 
 - Returns:
- A good safe latest block number. - Return None if the block number is irrelevant for the execution, like backtesting and such. 
- Return type:
- int | None 
 
 - abstract get_routing_state_details()[source]#
- Get needed details to establish a routing state. - Return type:
 
 - abstract is_stop_loss_supported()[source]#
- Do we support stop-loss/take profit functionality with this execution model? - For backtesting we need to have data stream for candles used to calculate stop loss 
- For production execution, we need to have special oracle data streams for checking real-time stop loss 
 - Return type:
 
 - abstract execute_trades(ts, state, trades, routing_model, routing_state, max_slippage=0.005, check_balances=False, rebroadcast=False, triggered=False)[source]#
- Execute the trades determined by the algo on a designed Uniswap v2 instance. - Parameters:
- ts (datetime) – Timestamp of the trade cycle. 
- universe – Current trading universe for this cycle. 
- state (State) – State of the trade executor. 
- trades (List[TradeExecution]) – List of trades decided by the strategy. Will be executed and modified in place. 
- routing_model (RoutingModel) – Routing model how to execute the trades 
- routing_state (RoutingState) – State of already made on-chain transactions and such on this cycle 
- max_slippage – Max slippage % allowed on trades before trade execution fails. 
- check_balances – Check that on-chain accounts have enough balance before creating transaction objects. Useful during unit tests to spot issues in trade routing. 
- rebroadcast – - This is a rebroadcast and reconfirmation of existing transactions. - Transactions had been marked for a broadcast before, but their status is unknown. 
- triggered – Was this execution initiated from stop loss etc. triggers 
 
 
 - abstract repair_unconfirmed_trades(state)[source]#
- Repair unconfirmed trades. - Repair trades that failed to properly broadcast or confirm due to blockchain node issues. - Returns:
- List of fixed trades 
- Parameters:
- state (State) – 
- Return type:
 
 - create_default_routing_model(strategy_universe)[source]#
- Get the default routing model for this executor. - Returns:
- Parameters:
- strategy_universe (TradingStrategyUniverse) – 
- Return type: