BacktestRoutingIgnoredModel#

tradeexecutor.backtest.backtest_routing.BacktestRoutingIgnoredModel Python class in Trading Strategy framework.

class BacktestRoutingIgnoredModel[source]#

Bases: BacktestRoutingModel

A router that assumes all trading pairs are tradeable with the resever currency.

This is a hypotethical router for backtest different trading scenarios where there is not yet information how the trade could be executed in real life.

  • A router that assumes trades can be just “done”

This ignores realities of

  • Tokens not portable across chains

  • Trading pairs having multiple legs (USDC->WETH->AAVE)

  • Use trading fee assuming we would trade any pair without hops

=

__init__(reserve_token_address)[source]#
Parameters:
  • factory_router_map – Defines router smart contracts to be used with each DEX. Each Uniswap v2 is uniquely identified by its factory contract. Addresses always lowercase.

  • allowed_intermediary_pairs

    Quote token address -> pair smart contract address mapping.

    Because we hold our reserves only in one currecy e.g. BUSD and we want to trade e.g. Cake/BNB pairs, we need to whitelist BNB as an allowed intermediary token. This makes it possible to do BUSD -> BNB -> Cake trade. This set is the list of pair smart contract addresses that are allowed to be used as a hop.

  • reserve_token_address (str) – Token address of our reserve currency. Relevent for buy/sell routing. Lowercase.

  • trading_fee – The trading fee applied to all trades by default, unless a pair overrides.

Methods

__init__(reserve_token_address)

param factory_router_map:

convert_address_dict_to_lower(address_dict)

Convert all key addresses to lowercase to avoid mix up with Ethereum address checksums

create_routing_state(universe, execution_details)

Create a new routing state for this cycle.

get_default_trading_fee()

Get the trading/LP fee applied to all trading pairs.

get_reserve_asset(pair_universe)

Translate our reserve token address tok an asset description.

perform_preflight_checks_and_logging(...)

"Checks the integrity of the routing.

pre_trade_assertions(reserve_asset_amount, ...)

Some basic assertions made at the beginning of the trade() method on child class.

route_pair(pair_universe, trading_pair)

Return Uniswap routing information (path components) for a trading pair.

setup_internal(routing_state, trade)

Simulate trade braodcast and mark it as success.

setup_trades(routing_state, trades[, ...])

Strategy and live execution connection.

trade(routing_state, target_pair, ...[, ...])

Make a simplified trade.

Attributes

trading_fee

__init__(reserve_token_address)[source]#
Parameters:
  • factory_router_map – Defines router smart contracts to be used with each DEX. Each Uniswap v2 is uniquely identified by its factory contract. Addresses always lowercase.

  • allowed_intermediary_pairs

    Quote token address -> pair smart contract address mapping.

    Because we hold our reserves only in one currecy e.g. BUSD and we want to trade e.g. Cake/BNB pairs, we need to whitelist BNB as an allowed intermediary token. This makes it possible to do BUSD -> BNB -> Cake trade. This set is the list of pair smart contract addresses that are allowed to be used as a hop.

  • reserve_token_address (str) – Token address of our reserve currency. Relevent for buy/sell routing. Lowercase.

  • trading_fee – The trading fee applied to all trades by default, unless a pair overrides.

trade(routing_state, target_pair, reserve_asset, reserve_asset_amount, max_slippage=0.01, check_balances=False, intermediary_pair=None)[source]#

Make a simplified trade.

Just fill in the blanks on TradeExecution.

Parameters:
Returns:

List of prepared transactions to make this trade. These transactions, like approve() may relate to the earlier transactions in the routing_state.

Return type:

List[BlockchainTransaction]

setup_internal(routing_state, trade)[source]#

Simulate trade braodcast and mark it as success.

Parameters:
setup_trades(routing_state, trades, check_balances=False)[source]#

Strategy and live execution connection.

Turns abstract strategy trades to real blockchain transactions.

  • Modifies TradeExecution objects in place and associates a blockchain transaction for each

  • Signs tranactions from the hot wallet and broadcasts them to the network

Parameters:
  • check_balances – Check that the wallet has enough reserves to perform the trades before executing them. Because we are selling before buying. sometimes we do no know this until the sell tx has been completed.

  • max_slippage – Max slippaeg tolerated per trade. 0.01 is 1%.

  • routing_state (BacktestRoutingState) –

  • trades (List[TradeExecution]) –

create_routing_state(universe, execution_details)[source]#

Create a new routing state for this cycle.

Parameters:
Return type:

BacktestRoutingState